nemorathwald: (2017)
I made a new personal website, matt-arnold.com. I have now completely migrated 21 years of blog posts from here to the blog section of that site, with improved full-text search and filtering. Let me know if you find formatting issues from the migration process!

I've set up a commenting system, although comments here won't transfer over to comments there and vice-versa. I'd appreciate if you'd test it! I know I can count on Sarah Elkins to do so. :)

For several years, every site I've built has used a static site generator, and this one is no exception. It's all focused on Javascript, Markdown files, and YAML flat files, which means I don't set up my own server or database. Instead I use Netlify for the back end (contact page, blog comments, forms, automatically-triggered events, and so on). For this site, I used Github Copilot AI to radically accelerate the development process.

The site also has some galleries of my projects and illustrations, as well as a page of my podcasts, and one collecting my talks and other videos, and links to external websites about board games I've made and events I run.

Expect much more content as time goes on. The Updates page will automatically build a changelog of all content updates, so that you don't have to wonder if you missed some.

The process of testing the blog migration has re-exposed me to an enormous amount of my own past, so I've been quite contemplative about it lately. I might blog about that soon.
nemorathwald: (2017)
I formed the following list of technical skills in front-end web development, helping to develop a career progression track for front-end devs at our company. When do you ask for a title change and a pay raise as a front-end web developer? And which skills do you talk about to justify it? At the higher levels your qualifications will mostly be leadership skills, not just the technical skills. But for the sake of length, I'm going to focus on technical skills here.

There's a lot to learn in front-end web development. So much that you will never need most of it at any given employer you are likely to work for (they'll all require different parts to a greater or lesser degree for different projects). Once you reach the level of a senior front-end developer, or close to it, there are plenty of high-dive boards in the "deep end of the swimming pool". Fortunately, the "pool" has a shallow end which gets deeper on a gradual slope. That's helpful for learning when you're starting out!

Some experienced devs might wonder why some things are not in an earlier level; like why does Local Storage and Web Sockets come so late? That's because the placement of a skill reflects the number of companies and projects likely to need it, more than it reflects its difficulty. And an employer might assign anything on this list to Junior Developers even if it's asking too much of them. That's based on the business need and whether a company can attract enough Senior Developers. So you just never know.
 
A lot of people will probably be upset that testing didn't come earlier, and by "earlier", I mean "first". Most companies will make lip service to testing, and then absolutely not allot the time in which to do so. Or they will do so on the back end, and not allot time for tests of the Javascript. On the one hand, every workplace is a better place to work if it has good test coverage. On the other hand, you won't be using it unless the company you work for is amazing. I'm tailoring this list of skills not to the creme de la creme who work for a Silicon Valley startup, but to non-technical people who are considering a career change and just want income security.
 
I like to divide technical skills into four major categories, each with a large number of skills: HTML, CSS, Javascript, and a smattering of miscellaneous things you're expected to do (version control, task runners, configuring DNS).
 
I also like to divide technical skills in those four categories into five levels: Associate, Level 1, Level 2, Level 3, and Senior Developer. Most companies have no level 3, but there's a lot to learn which should be rewarded with a change of title and a pay raise. With only three or four levels, if you tried to divide technical skills into a schema like the one I'm about to describe, skills within one level would be of such disparate difficulty that the schema would be incoherent. My point is, you're almost certainly underpaid compared to the amount of money you're making for your employer and the job market as it stands. Consider these levels accordingly.
 
Even within each level, there is a gradual slope. Each time you want a raise and promotion, you should get conversant enough to hold a conversation about most the things you need to know at the level you're aiming for, and be solid on a few of them, and passingly familiar with the rest. Also, make sure you're really solid on most of the things in the level you're looking to leave, and passingly familiar with the rest in your current level. And make very sure you've have mastered everything in the level behind you.

Level 1: Associate Developer
 
This is the stuff to teach yourself when you are just starting out. This is pre-Junior, mostly jobs placed through temp agencies working in content management systems.
 
For the HTML category, learn the following in this order:
- Gain the ability to use any HTML at all.
- Make an HTML form.
- Become passably familiar with conventions, best practices, and/or semantic markup.
- The top like five or six things about accessibility. Get the browser extension called Axe, run it on your page, and do what it says. This puts you ahead of a lot of professionals in accessibility. Learn the top like five things and it'll get you most of the way.
 
For the styling category, learn the following in this order:
- Gain the able to use any CSS at all.
- The Box Model.
- Floats and/or Positioning.
- Responsive design & media queries.
 
The scripting and miscellaneous categories have no skills in this level. You can get a job in which you never even use version control; you just click Publish in a content management system. You're not a Junior Developer yet.
 
Level 2: Junior Developer
 
For HTML, learn the following in this order:
- Rudimentary SEO (search engine optimization). Mostly just put <meta> tags in your page <head>. There is not much that can be done to improve SEO, and if someone says otherwise, it's a scam or dubious at best.
- At least 1 templating language (Razor, Jinja, Mustache, etc).
 
For CSS learn the following in this order:
- Grid.
- Flexbox.
- At least 1 preprocessor (Sass, Less, PostCSS, etc).
- At least 1 CSS-1st framework (Bootstrap, Materialize, etc).
 
For Javascript, learn the following in this order:
- Basic Javascript syntax (loops, functions, types, etc).
- DOM manipulation.
 
Miscellaneous:
- Learn any version control system (you should choose Git if you're given the choice) well enough to clone, pull, merge, & push.
 
Level 3: Intermediate Developer
 
HTML:
- At least 1 thing about security (HTTPS, CORS, CSP, etc).
 
CSS:
- Animations.
- At least 1 architecture (BEM, OOCSS, SMACSS, etc).
 
Javascript:
- Use breakpoints in browser developer tools.
- Fetch API/Ajax (XHR).
 
JS + CSS:
- At least 1 of Styled Components, CSS Modules, Styled JSX, etc.
- At least 1 of Reactstrap, MaterialUI, Tailwind, Chakra, etc.

Miscellaneous:
- Basic usage of any version control repo host (Github, TFS, etc).
- Put static files on a hosting service, buy/use a domain name, set up basic DNS for it.
 
Level 3: Still an Intermediate Developer
 
Javascript:
- Javascript version 6 features (AKA: "EcmaScript 6") including its modular JS features.
- Linters and formatters (Prettier, Eslint, etc).
- At least 1 framework (React, Angular, Vue, ect).
- Scope, hoisting, event bubbling.
- The Prototype concept in Javascript.
 
Miscellaneous:
- At least 1 task runner (npm scripts, Gulp, etc).
- At least 1 module builder (Webpack, Rollup, Parcel, etc).
- Stash/reset/squash (etc) with any version control system.
 
Level 4
 
Javascript:
- Local Storage.
- At least 1 state manager (Redux, RxJS, Vuex, etc).
- Web Sockets.
- At least 1 testing framework (Jest, Cypress, Enzyme, etc).
- At least 1 type checker (Typescript, Flow, etc).
- Shadow DOM and/or Web Components.
- Service Workers.
- Server Side Rendering (SSR) in any framework.
- GraphQL (Apollo or Relay Modern, etc).
 
Dev Ops:
- Measuring/improving performance (PRPL, RAIL, devtools, etc).
 
 
What do you think?
 
nemorathwald: (Default)
A few weeks ago, I applied to Grand Circus as a Javascript instructor. They asked me to fill out a questionnaire about my teaching style. Answering the questions was very thought-provoking, so I'll share my answers with you. Let me know what you think.
You're teaching an 8 week adult bootcamp, from 9am-5pm daily. *
One of your students is very, very overwhelmed. It's week 2 and he doesn't feel that he is understanding the materials or that he will ever catch up to his classmates' progress. What do you do?
One factor in a bootcamp structure is the level of energy-- therefore, the approach of staying afterward for more learning is of limited use after an exhausting day. Very little information is retained when tired. Instead, I would pair students of different achievement levels, to solidify their learning through teaching it to someone else.

I would walk this student through the process of narrowing down each problem he is encountering, until he finds the question behind that problem-- more specific than just "Why doesn't this work?"

I would not be one of those teachers who says "You are all really quiet. I'm not sure whether to back up and explain it again. Someone nod if you understand." Instead, when I am uncertain that a student is following me, I would say "How would you rephrase what I just said in your own words-- if it made sense?"

During the second week it's a bit late in the process to emphasize keeping a TXT file with notes, but it still can't hurt.

I would encourage him to not measure himself against others, but against his past self. No one was born knowing how to do this. There is no one global standard of minimum adequacy. At each level of his development in the future, he will find places where that level fits.

If I get the sense that he has been inculcated with the tech culture's odd standards, I might remind him that software development is a job for normal people. He is going to be competent, and that's all that matters. You know the tech culture I mean. Constant use of terms like "rockstar" or "ninja" imply that you're either a super-genius, or worthless. It's not reality. Apply for jobs anyway, and do them proudly, with an understanding that 99% of devs provide plenty of value to their employers without being superhuman miracle workers.
You're teaching an 8 week adult bootcamp, from 9am-5pm daily. *
There are only 3 women in a twenty person class. Does this affect how you prepare group projects? If so, how?
I would ask other instructors I know, to find out how they have approached this. If I directly ask the students for feedback on how they would like me to approach it, this might discourage them, as studies have shown students perform more poorly when it is pointed out that they are in a disadvantaged group, in an effect called "priming".

It might be better to assign all three women to work in the same group to avoid one woman being in a group with two men, and being talked-over or dismissed. On the other hand, I don't want them to feel segregated. I would need to do more reading and ask for more advice from women who are software developers.
You're teaching a 10 week public course, offered 2 nights a week from 6pm - 8pm. *
One of your students is not showing up regularly but he is still handing in work on time and his work shows relatively thorough understanding of the concepts you're teaching in class. Do you do anything about his lack of presence in class?
I would ask him why he is absent. Is it due to life circumstances, or because he feels it is unnecessary? I would tell him that collaboration with others is one of the most important skills in software development, and that he can greatly improve on where he already is if he helps students who know less about it than he does.

If his absences continue, I would work within the school's certification policies regarding those who did not take the course they signed up for-- for example, is it a graded class in which I can reduce his grade based on number of missed classes? Or is it a "pass or fail" certification?
You're teaching an introductory programming class. *
One of your students clearly has had programming experience in the past. She finishes independent projects quickly and frequently helps classmates understand concepts. However, she occasionally asks questions during class that introduce higher-level concepts than you plan to teach and that the rest of the students do not understand. This often leads to confusion and derails your instruction. How do you handle this situation?
I would thank her for the question and explain that we don't have time to cover that. After class, I would ask her when this happens to jot a note to herself, reminding her to ask me one-on-one or email me. I would then respond either with explanations, or with blog posts which lead to more self-directed learning materials.
You're teaching at a high school for one of our youth programs. The course you are teaching is part of the students' daily schedule. *
One of your students seems distracted and regularly goes on random websites while you are teaching. Her grades are low, which seems to match her understanding of the material. She refuses help from the TA and occasionally falls asleep in class. What do you do?
That's me in high school, in any class I was not interested in. I have been thinking about this ever since. When a student doesn't get a choice about whether to learn, they often don't want to. Without the student's consent, teaching is effectively wasted, especially when they see it as capitulating a power-struggle over their own right to their own lives. Establishing the student's consent seems like step one.

I would make the material as engaging and approachable as possible. I would ask what she does want to do with her time, and springboard from that to see if any of her activities can be improved by creating a website about it.

I would gently ask questions which might indicate whether she has an adequate support network, because of sleeping in class, and I'd see if maybe she needs to go somewhere quiet during my class and get an opportunity to sleep. Maybe give her some food that increases blood sugar.

If none of that works, well, I'm going to be completely up-front and honest with you about my position on high school. The bodily autonomy of being in my classroom is a consent issue. That matters to me more than her parents paying me. I want to be a resource, not a jailer.
nemorathwald: (Default)
I almost certainly have a job, as an office clerk and phone liaison. I'll know by the end of the week. I'll have money for fuel, so you'll see more of me. After I've worked there a few months, my hours will go up from 40 to 54 hours a week. Then you'll see somewhat less of me.

(It's in Warren, so I'll have to move. Again. For the time being, I'm living out of a suitcase in Warren and only going home to Whitmore Lake on weekends. Whitmore Lake is an hour away, so that doesn't work. I have been browsing Ferndale/Royal Oak room-for-rent listings on Craigslist. I feel encouraged by the price ranges.)

This job is managing a huge number of outside contractors; i.e., people who have a tenuous relationship to us and do not necessarily have to do what we tell them to do. All we can do is replace them. Sound familiar? So, during the job interview, I described my experience with Penguicon. Keeping in touch with remote strangers who are never seen. Tracking when work is due, what is late, and when to replace someone. Motivating rather than nagging. Documenting processes. They were impressed, and said this is similar work.

You might be wondering now, "why did you spend a few years and a few thousand dollars to get a web development certificate with a 4.0 GPA?" That is only the first step of a journey. It was a good start, but job interviewers have made it clear to me that I'm still not qualified. I need to do a lot more personal learning, including:

1) Server administration from my laptop, so that I can install whichever additional technologies I want to learn.
2) Javascript libraries such as JQuery and YUI.
3) Python frameworks such as Django, and Ruby frameworks such as Ruby On Rails.
4) More about databases.
5) SASS. I would love to learn SASS.
6) How to inflict bloated, swiss-army-knife Content Management Systems. Hissssss. Actually, never mind this one.

A qualified portfolio should include a large number of web applications with polished interfaces and finished-looking designs. I would like at least one to have rich, responsive interaction, such as a game. I would like at least one to be a multi-user database-driven site. The thing is, each such project would take months of spare time. Frankly, I'm not the type who can become a hermit and emerge from my cave with a finished project in a short timespan. I like other humans too much. Other humans are the whole point of a project. Will I some day get a job as a creative or technical professional? In this economy, who knows. Perhaps in a few years. Or perhaps not-- perhaps it's only for hermits. Either way, I'm determined to learn. While I learn, I have to pay the bills, and it looks like my current job prospect is a perfectly pleasant and agreeable way to do that. I'm satisfied.
nemorathwald: (thoughts)
Both a conversation and a document, Google Wave is truly amazing! It won't replace email, instant messenger, and online collaborative document editing tools, but when you need all three at once, it can't be beat.

For instance, Catherine Devlin and I have been collaborating on the InForm source code for "Penguicon The Text Adventure" and I think Google Wave is an ideal space for it. So I would like to move our collaboration there.

The first Wave I have received was a group of roleplayers brainstorming how to run a roleplaying game as a Wave.

I'll also use it for game design documents, because it can import images and videos, and has wiki-like revision control.

It's perfect for collaborating on refining the Lojban language standard and automatically having a record of why each document got to where it ended up.

It's ideal for convention sign-up sheets, once enough of the population have their own Wave accounts. And proofreading a convention schedule in a Wave? Absolutely!

I'm sure to find far more uses for it.

Let me know if you would like an invite. However, I only have a few.
nemorathwald: (thoughts)
I daydreamed about this system for years, and now I get to watch it.

World Builder from BranitVFX on Vimeo.

nemorathwald: (Nemo Benmergui Second Life)
Gather round and listen to a story of me, self-surveillance, entrepreneurship, and a miniconference about the Python programming language.

I have always charged a flat rate for art and design.* This time, I wanted to time myself to find out what I earned per hour and adjust my future rates to what I need to bring in, based on accurate estimates of different types of assignments.
Read more... )
nemorathwald: (Default)
Anime-style mjr (original art by Noux)
Marcus Ranum is a security expert in Pennsylvania. (I found out about him in an article in the St. Paul Pioneer Press about Penguicon's Tech Guest of Honor, Bruce Schneier.)

In an essay on his site about "The Farewell Dossier", Marcus Ranum says:
Am I becoming a convert to the notion of Information Warfare? I don't think so. You don't need to worry about InfoWar if you're potentially facing a good old-fashioned ass-whupping. When I was a kid I remember I read a science fiction story about a race that was very technologically advanced but were extreme pacifists. They sold weapons to anyone who wanted them - cheap, good, and mighty powerful weapons. Nobody ever attacked them because they assumed that the species actually was holding back all the really good stuff for their own use. Until one day, someone discovered that, in fact, they had been selling all these weapons as a way of population-controlling the other species in the galaxy. So - the other races attacked in force. And every weapon they had promptly blew up.
It should be an established maxim that you can't go two steps from real-life 21st-century technology questions without encountering a science fiction story.
nemorathwald: (Default)
I'll post a thorough report of my weekend tonight. In the meantime here's a quick post.

Has no one else noticed that the breakthroughs which led to the motion-sensing technologies in the Nintendo Wii can be applied to robotics? Robots have almost never had the slightest clue where their bodies were positioned in space, except through dead reckoning from their memory of commands they sent to their moving parts, from a presupposed starting position. If an exterior object moved them by bumping them, they usually could not tell at all-- or at most, barely. My Robosapien has no idea when he's not standing upright.

Now that ultra-sensitive mechanical accelerometers have been wildly miniaturized, and more importantly the infrastructure is in place to mass-produce them at radical cost reduction for the new generation of game controllers, some hardware hacker is probably already planning to repurpose them for the vestibular (inner ear) and proprioception (body pose) senses of robots.

Entertaible

Sep. 7th, 2006 09:48 am
nemorathwald: (Default)

Entertaible
combines dynamic playing fields & levels found in computer gaming with the social interaction & tangible playing pieces of board games. It is a 32-inch horizontal LCD touch screen with multi-object position detection. It's currently just a concept product, not for sale or production. I have been waiting for this since... I can't remember a time when I wasn't waiting for this.
nemorathwald: (Default)
Goatchurch on the MundaneSF blog posted about his skepticism of molecular nanotechnology. He asked why we think a self-propelled miniature machine can exist, when we still don't have a robot that can vacuum the living room. (Given the existence of Roomba, that's another claim which, in itself, I would highly debate.) Here is the response I put there.

The failure of modern robotics is a software problem. But whether or not that is solvable is not relevant to nanotechnology, which rarely considers molecular robots. There is vast potential in nanotech products and materials that are not only dumb, but downright inert and permanently motionless. The potential of nanosystems which, while not motionless, are nevertheless dumb and sessile, is even more vast.


Look at this computer animation concept. Note that nothing in the assembly line depicted here involves individual nanorobots with independent self-propulsion, self-guidance or decision-making. Independence and intelligence are not required of molecular machinery. Don't confuse the "Universal Assembler/Disassembler" myth with the nanosystems that are actually being proposed.

Read more... )
nemorathwald: (Default)
MIT's Technology Review has a video documentary series titled "The Impact of Emerging Technologies" which is exclusively online. It's really interesting! It covers stem cells; robotic prosthetics with a mind/machine interface; artificial polymer muscle; computer interpretation of body language; nano-scale valves; and more.

The video about using lab yeast instead of lab mice for a 50,000-fold decrease in cost and slowness of new drugs showed them using robot laboratory systems. It reminded me of an article on Edge.org by Kevin Kelly, editor of WIRED Magazine, about using robots, Google, Wikis, "Zillionics" and more, to practice science in the future.

Wow.
nemorathwald: (Matt 4)
I hadn't previously heard of a few of the speakers at Stanford's Singularity Summit, but I know every single one of the following eight names, and it's the most exciting lineup of Guests of Honor ever. It's interesting to finally find out from their photos what some of them look like.

- Ray Kurzweil, inventor, futurist, author of "The Singularity Is Near"
- Douglas Hofstadter, cognitive scientist, author of "Gödel, Escher, Bach"
- K. Eric Drexler, nanotechnology pioneer, author of "Engines of Creation"
- Nick Bostrom, director of the Oxford Future of Humanity Institute
- Cory Doctorow, science fiction author, blogger, technology activist
- Eliezer Yudkowski, Director and Research Fellow, Singularity Institute
- Christine Peterson, VP Public Policy, Foresight Nanotech Institute
- Tyler Emerson, Executive Director, Singularity Institute

The "What others have said" section shows Marvin Minsky, Hans Moravec, Vernor Vinge, Ben Goertzel, Jamais Cascio and Jaron Lanier. I wonder if they'll be at the summit? That section also lists Bill Gates, Bill Joy and Stephen Hawking.

But it's not a science fiction convention, it's an academic conference. These aren't really Guests of Honor, because that implies the presence of their fans at the event. This is by RSVP only. That's fine-- it's important that specialist professionals gather to do valuable work on the problems and promises of the Singularity in peace. That having been said, it would also be fantastic to get any of these to speak at Penguicon, especially since it's a Linux and Open Source software expo in addition to a science fiction convention. Many of them would probably demand an appearance fee, which all-volunteer not-for-profit SF conventions don't pay. And many of them probably would not want to be seen to be associated with a science fiction event (except for Cory Doctorow, who has already been our Guest of Honor). But Christine Peterson says in her Singularity Summit promotional blurb "If you're trying to project the long-term future, and what you get sounds like science fiction, you might be wrong. But if it doesn't sound like science fiction, it's definitely wrong."

I enjoyed reading the comment by Glenn Harlan Reynolds, Professor of Law, University of Tennessee, which is extremely signifigant to me as a non-specialist:

Read more... )

TactaPad

Mar. 9th, 2006 01:09 pm
nemorathwald: (Matt 2)
I've dreamed of an input device like the TactaPad for years. It resembles a little overhead projector. The camera on the stem is watching your hands and portraying a grey transparent sillhouette of them on the screen so that you don't have to look at your hands. It's a touch-sensitive tablet that can detect the touch of all of your fingers simultaneously, not just one point, and can detect differences in pressure and velocity. The surface gives you force feedback sensations.

Watching the demo movie of TactaDraw makes it clear why someone like me who has used art software for years would drool over this. I also would love to play a real time strategy game with this input method.

Of course, just as with its countless wonderful predecessors in the field of alternative input devices, there is no reason to expect this to be developed into a product that makes it to market, much less a product that succeeds in the market. Each application would have to be rewritten to accept the unique aspects of its input, and that doesn't tend to happen.
nemorathwald: (Matt 4)
Ray Kurzweil is a guest blogger on Non-Prophet, to promote the ideas in his latest book, "The Singularity Is Near."
Read more... )