i got the coolest present from my parents this christmas, a wacom drawing tablet, but i haven’t had a chance to play with it until this afternoon because i was waiting for my new baby to arrive (see previous post).
using it for the first time (i’ve never played with a graphics tablet before) is exciting and eerie. unlike a mouse, where position/movement is relative to the location of the cursor on the screen (you can pick up the mouse and place it back down and the cursor is still in the same place), with the graphics tablet, the position is relative to the location of the pen on the tablet surface, which maps to the screen area, so if you pick up the pen and move it to another part of the tablet, the cursor mysteriously moves to that spot. it’s like learning how to mouse all over again.
another neat thing is that the tablet senses the location of the pen when it’s hovering over the surface. it only draws (or clicks) when you’re actually dragging along the surface. so you can move the pen and see the location of the cursor without drawing. in other words it acts uncannily like a real pen.
so after writing my signature like 10 times and scribbling in ms paint (the only graphics software i had installed at this point), i thought “well, might as well just draw (er, sketch) what’s right in front of me.” which happened to be a chair.
suffice it to say i’m pretty much blown away at how much fun it was to draw “into” my computer and have it look as good or better than using pen on paper. click on the image above to see the full original version.
the stork arrived with a slightly heavier baby, against some of my earlier pronouncements. after some serious thinking over the holidays, it occured to me that the need for extreme mobility (less than 3lbs) has diminished now that i’m out of school. and what i really wanted was a system that i could use to do more visual/design work, with photos, with a new graphics tablet. but i didn’t want to be glued to a desk.
so i go back to boingboing which i’d opened in a tab (in firefox) earlier, reload the page, and start reading, like ya do. there’s this interesting post about the world’s largest book, which i send to the SILS students listserv. i notice that the post was linking to something jason kottke posted from last october, which struck me as weird (because it was so old), but maybe just something that fell through the cracks.
and i’m thinking to myself, “geez, cory, xeni, etc. are really falling down on the job.” it’s easy to believe that they have a mental catalog of everything they’ve posted to boingboing in 5 years, but i’m sure they’ll post something old once and a while. guess today’s that day.
so i end up reading through like three days of posts (seeing a few more dups) before i realize, “crap, i’ve been reading the archive (that i’d opened earlier today) this whole time!”
which suggested to me at least, from a usability perspective, boingboing might want to do something to visually differentiate their archives from their front page.
with a standard html select box, you can select multiple options if the “multiple” attribute is set, but you’ve got to hold down the appropriate modifier key (ctrl on windows) in order to do so.
standard html select box
as an aside: it would be interesting to study how many people grasp the modifier-key concept and how usable the modifier key is in terms of time to complete a task and number of errors.
nevertheless “experts” tend to bemoan the usability of holding down a modifier key to select multiple options, and i would tend to agree. so after a little digging around the intarweb, i discovered three alternatives. the first is pure javascript (and less than satisfying) while the latter two creatively use checkbox widgets inside an html div to create a custom select box.
the pure javascript multiple select box grafts simple multiple selection onto an existing select box using nothing more than javascript. the downside is that it’s very blinky.
so let me throw my hat into the ring with a modification on the second example above that mixes in a little javascript to improve the visibility of the selected option and works some CSS magic to perfect the borders.
if there were stages marking one’s growth as a programmer (aka hacker, coder), i’d be in the one where the programmer enjoys writing code to do low-level backend tasks that someone has probably already written.
i started working on a database abstraction layer before i left for ghana, basically a bunch of objects that my financial application uses to manipulate data in a database. but i’m not just building the objects that represent actual tables in my database, i’m building the underlying database interface object that they all inherit, which abstracts the difference between SQL inserts and updates, and in its latest incarnation, implements post-insert/update/delete trigger functionality. it’s pretty cool.
in a conversation with patrick, i mentioned that i feel like i’m giving myself a mini-computer science education. except my limited experience with computer science never seemed to focus on this art and evolution of programming. if i ever go back to school, i would like it to be more like art school for programmers. (does such a school exist? are there any good books on computer science/programming pedagogy? one i’ve already read and recommend is esr’s how to become a hacker.)
i think the next stage of development is one where i feel more comfortable putting together blocks of code written by other people to solve larger problems, requiring an almost intuitive understanding of how their code functions based on my experience solving similar problems.
the developmental stages of a programmer (as i see them)
first exposure, tinkering
solving small problems with control structures
solving medium problems that other people have already solved
building large applications using code that other people have written