November 8th, 2008
The reason it’s been so quiet around here lately is because I’ve been doing something I swore I’d never do: working at a non-freelance full time salaried job.
I started working at Zampus (a local web development start-up) in August. At the beginning I worked four days a week (I had a few freelance projects I wanted to finish up) but I quickly moved to doing full time work. The hours are flexible, which is nice. I started out coming in at 11 and leaving around 7 but I soon got tired of not having much free time in the evenings, so I slowly worked my way earlier towards my current 9ish start time. I’m not much of a morning person, so it took some time to adjust my internal clock, but now waking up early is much easier.
The transition from having so much freedom in the ways that I work into a more structured environment was less challenging than I expected. Part of this I can attribute to the casual and flexible nature of Zampus. Being a small start-up lacking all of the overhead of a traditional corporate bureaucracy, we can focus more on what we need to do and let individuals complete tasks on their own terms. Training my attention span to last 7-8 hours and adapting my work habits accordingly were the most difficult parts. Doing freelance projects, I usually didn’t work for more than an hour or two at a time, and I’ve adapted this style to Zampus work by switching tasks about that often to keep myself from getting stuck in ruts. Trying to find a middle ground between all of the developers’ different coding styles and skills has been tough as well, but now I’m starting to feel like we’re finally becoming a well-rounded and cohesive team.
When I started this job, we were spread across a few projects, but since then we’ve focused all of our efforts on our namesake, Zampus.com. It’s an “insider’s guide” to college life. Part review site, part forum, part video sharing site, and much more. The site is built around “entries,” which can be anything from local restaurants to TV shows to fraternities to whatever else college students have on their minds. Instead of encouraging users to create certain types of content, we provide a basic structure and let the content evolve naturally. Users can attach photos, videos, maps, and more to entries, and categorize them with tags. Entries may have one or more “definitions” (this term might not stick) that can be provided by any user. This usually amounts to reviews or personal opinions of whatever the entry happens to be about. Right now we’re Cornell-only, but we’ll soon begin work making the site expandable to other colleges and universities, without losing the community feel for each school.
The site currently runs off a Fedora server and is coded in PHP. Our data lives in a MySQL database (except for images and videos). The frontend makes heavy use of AJAX to provide a dynamic and free-flowing user experience. Unfortunately, this means javascript is required to do anything except basic actions—which goes against my progressive-enhancement instincts—but I’ve been justifying this by keeping our target market in mind (who almost always browse the web from a javascript-enabled browser) and making sure that accessibility sacrifices are only taken where real usability gains can be had.
Since starting, I’ve moved up to a CTO/CIO position, which puts me in charge of two full-time developers and several part-timers. Being in a managerial position is a big change for me, and I’ve learned a lot about how to mediate different development styles and skill sets. I still spend most of my day coding, but I also have to keep track of what everyone else is working on and the state of individual features/bugs/modules/etc. It’s crazy to think of how quickly I went from working for myself to having other people work for me.
Anyways, we’ve just finished up our alpha version, and are starting user testing. We’re using this cool program called Morae that captures on-screen actions and uses a webcam to record facial expressions of the tester. The first round of testing is 20 people and isn’t quite feature-complete. We’re going to use the results of the test to improve usability and decide how to implement the missing features, and then do two more test/development cycles first with 100 then 1000 users. Hopefully by the end of all this we’ll have a polished and intuitive application.
If you go to Cornell and want to help us with testing or anything else, the first step is to take our user survey.
September 15th, 2008
// add the outerHTML setter/getter to browsers that don't support it
if(!document.documentElement.outerHTML) {
HTMLElement.prototype.__defineGetter__('outerHTML', function() {
var wrapper = document.createElement(this.parentNode.tagName);
wrapper.appendChild(this.cloneNode(true)); // thanks Cristi
return wrapper.innerHTML;
});
HTMLElement.prototype.__defineSetter__('outerHTML', function(value) {
Element.replace(this, value); // requires prototype (http://prototypejs.org)
});
}
August 8th, 2008
I want this domain name: http://ma.tt/.
July 20th, 2008
I’ve started working on a web-based admin interface for Silk. I’m focusing it around basic CRUD actions and adding bonus features once those are polished. My goal is to make it as simple for end users as possible, while allowing developers to customize what features are presented based on user needs. Eventually I’d like to decouple it from Silk so that it can be used as a general-purpose web-based file manager.
Initially, I’d looked in to re-purposing an existing
PHP file manager to fit my needs, but it was hard to find something that had:
- file management features
- text editing
- simplicity (both in the UI and codebase)
So, I ended up deciding to start from scratch. It’s been smooth going so far. I’ve got most of the features except file uploads and user authentication implemented and am working on the UI at the moment.
Power users will still probably want to use the command-line or regular desktop apps to manage their content (after all, this is what Silk was designed for), but some less-technical people who may be uncomfortable connecting to their web server via ftp or ssh will be thankful. I’m developing the admin interface as a plugin, so it can be easily removed/disabled, since it does introduce some potential security holes.
I’ll update this entry once I have something pretty to show everyone.
July 17th, 2008
This article almost perfectly echoes my programming philosophy and reasons I’m interested in software in general (to rid the world of crappy HCI). Read it.
These Things I Believe – Not the User’s Fault
June 23rd, 2008
I just found an article by the guys at 37signals: Why we skip Photoshop. I trashed Photoshop (and pixel-perfect mockups in general) five or six sites ago and haven’t looked back. In addition to their reasons, I’d add that I’m generally faster at creating interfaces in HTML/CSS than Photoshop anyways, so why even bother? Working in code from the beginning also forces me to get a first-hand feel at how difficult certain interface aspects are to implement—I used to come out of Photoshop with something that looked pretty simple only to find that it took all amounts of fugly wrapper divs and CSS hax to accomplish. I’d like to keep my code as slim, semantic, and generally “pure” as possible, thankyouverymuch.
For fairness’ sake, here’s a post by Jeff Croft of Blue Flavor: Why we don’t skip Photoshop. Personally, his reasons for using the ‘shop don’t ring true for me: I’m not sure I have a firmly established visual aesthetic, and while I do tend to err on the side of simplicity, I think my approach benefits the user in the end. But, as Jeff says, to each his own.
The deeper issue here was, I think, communicated nicely over at A List Apart: Sketching in Code: the Magic of Prototyping. They attack it from the “mockup vs. prototype” angle, and point out many of the practical benefits (and faults) of rapid prototyping. It’s a good read for anybody looking to tweak their design process.
May 22nd, 2008
I officially graduated from Ithaca College on May 18th, 2008 with a B.A. degree in Computer Science. Let me tell you, it feels really good to know that there won’t be any more homework, lectures, or exams in my life any time soon. I evolved a lot during my college career, developing my skills and figuring out new ways to deal with life in the “real world” (as if there is such a place). Some of this came out of my classes, but a lot of it I sort of figured out on my own—both in and out of the collegiate environment. Kind of makes me wonder if all that tuition was worth it, especially since the degree itself isn’t very meaningful to my current freelance work. I suppose a lot of the pain remains to be felt since I have a few months before the my student loan bills start showing up. Don’t get me wrong, I’m happy I went to college here, and it was a good four years, but I’m even happier to finally just be done with it all.
The ceremony itself wasn’t anything special. Pretty boring actually, though much less drawn-out than my high school graduation, which was appreciated. Our commencement speaker was Alan Page, former professional football player and Minnesota supreme court justice. His speech was alright—the typical “you can do anything if you set your mind to it” message sprinkled between self-praise and IC-loving (at least that’s what I got out of it, I had only slept a few hours and was drawing during most of the ceremony, so I only caught bits and pieces). My favorite part, though, was when our student body president compared our college experience to womens’ underwear, which seems about right on more than one level.
I was one of only about three people to actually throw their hats.
The faculty and graduate students looked like wizards.
My school gave out commencement bling.
April 29th, 2008
I just read an awesome article by Clay Shirky about social change, gin, the cognitive surplus, and why televisions don’t come with mouses:
And this is the other thing about the size of the cognitive surplus we’re talking about. It’s so large that even a small change could have huge ramifications. Let’s say that everything stays 99 percent the same, that people watch 99 percent as much television as they used to, but 1 percent of that is carved out for producing and for sharing. The Internet-connected population watches roughly a trillion hours of TV a year. That’s about five times the size of the annual U.S. consumption. One per cent of that is 100 Wikipedia projects per year worth of participation.
Read it »
April 25th, 2008
Here’s two pirate-themed essays recycled from my sophomore-year Creative Writing class. My professor was big on activities and these are both the result of weird writing exercises.
Shiver Me Timbers
This is one of the first poems we wrote for the class. We drew topics out of a hat and I got “pirates.”
I’ll swashbuckle my way to fortune
Fearing none except the sea
Though I am but a businessman
It’s a pirate’s life for me
I rode astern on Monday morn
Across the seven seas
Down to the accounting office
And said “Yar, listen thee:
I need the budget data for the 2005 software development project
And be quick about it, Lee”
He looked at me and said “but sir,
That won’t be ready for a week”
I had no choice, Lee should have known
(That scurvy-ridden tweed,
He walked the plank from floor 13)
Pirates don’t concede
My ship is but an Altima
I once sailed her cross country
I’m worried about the gas prices
But they’re sure not stopping me
Perhaps you wonder why
A pirate (yours truly)
Has found himself working
In this corporate bureaucracy
And not slashing, shouting, sailing
And drinking merrily
With my crew of buccaneers
Plundering carefree
Well, the reason I’m not pirating
As these very words I speak
Is because of a slight complication:
I forgot where me treasure be
So if perchance you come across
My chest full of booty
You can call me during regular office hours
At (918) 242-5793
Slam, Dunk, Hook
We had to write a mini-essay based off a title that was assigned to us. I wasn’t sure quite what to write about my obviously basketball-themed title, but once I had the idea of doing the back of a DVD box, it was easy.
The year is 2023 and giant alien robots rule the earth. After being forced into early retirement from professional basketball by a family tragedy, Johnny “Hook” Conami (Vin Diesel) decides to follow his life-long dream of becoming an interstellar space pirate. When a deep space mission goes wrong, Hook finds himself in the clutches of his robotic overlords. They force Hook to return to the court and play on their team, and when he finds out that his father (Sean Connery) is still alive, Hook must confront him to find out what really happened to his family. After falling in love with the android queen, EK4-12 (Jennifer Lopez), Hook must face The King (Ben Affleck) in an epic game of one-on-one streetball with the fate of the universe and true love on the line.
“One of the best films of all time!” – Ryan Sucher, Showtime
“My advice: Go with someone who knows CPR!” – Joel Siegel
“One of the best sci-fi films ever! Extraordinary! A true classic that’s not to be missed! Vin Diesel is ecstatically superb.” – Shawn Edwards, Fox TV
Note: those are actual film critics’ quotes taken from Vin Diesel movies.
April 21st, 2008
It’s been awhile since I posted anything new here, but it’s because I’ve been hella (that’s right, hella) busy over the past month. Here’s a brief rundown of what I’ve been up to:
- Much time has been put towards a group project for my Database Design class. We’re creating a database and some simple applications to keep track of college student/faculty/course records. Lots and lots of diagrams and documentation.
- I created a UNIX shell from (basically) scratch as part of a lab for my Operating Systems class. It’s tiny, and not incredibly useful, but here’s the source in case anyone is interested (I did a lot of this late at night while alternately drinking myself stupid and smashing my head into the keyboard, so the code is a tad messy).
- I learned AJAX.
- I updated the Moving Box Studios site with AJAX spicyness and worked on making things a bit more accessible (though it’s still got some ways to go).
- As always, I put a lot of work into AuditionHQ.
- I got paid for hooking these guys up with a custom version of Silk to manage their site.
- A bunch of other miscellaneous schoolwork (“it’s almost over” is my new mantra) and dealing with stuff in my personal life.
You can expect to see some more of my old essays soon.
March 19th, 2008
UPDATE: Finally after switching gears for awhile to catch up on some of my schoolwork (because it would suck to fail my senior year), I had some time to go back and make the Moving Box portfolio work more or less the way I wanted it to. Then I did it all over again for IE (everyone’s favorite part of web design), and now it’s finally live. You can check it out here.
I taught myself
AJAX yesterday. It’s something I’ve been wanting to do for a long time, but I finally had an excuse thanks to the Moving Box portfolio page (I’ll put up a link when it’s finished). Basically, I needed to load a bunch of different flash movies from a menu, and it seemed like a waste having to reload the whole page just to do it. I briefly considered using
(gasp) an iframe, but soon decided that it probably wasn’t a good idea.
Thanks to Prototype, I went from ideas to having a working page in about an hour. They’ve got a bunch of nifty AJAX objects for most common needs, and even a nice tutorial-style article that helped me get started. I’d recommend it to anyone who wants to learn the technique but doesn’t want to get too bogged down with details.
Since the Moving Box site runs Silk, I did everything as a plugin. I’m working on making it more general-purpose to try and expose pretty much all of the features of the framework via AJAX calls (Silk’s architecture actually makes this pretty easy). Soon it might be possible to run an entire site from one page load.
First thing’s first, though; I need to make things more accessible. A well known problem with
AJAX is that it breaks bookmarking, the back button, and history. I’ve found a few
useful articles that talk about ways to get around this, but haven’t started implementing anything yet. I’m definitely going to do so before unleashing this beast into the tubes, though.
March 12th, 2008
Part two in the continuing series of “stuff I done wrote,” this one’s from way back in high school. It was originally part of a personal memoir collection, but most of my other essays for that were crap and I’ve since thrown them out. If you couldn’t guess by the title, it’s about skiing.
Skiing. It frees me. Plummeting down those icy slopes at near-mach speeds somehow allows me to forget about all the troubles of life and simply be. All that matters is the texture of the snow and the friction between it and my skis. Left, right. Down I go. Turning only occasionally to slow myself. This is what I was put here to do. I am one with the mountain. Anything and everything is superficial when contrasted with the pure nonthinking bliss of something so simple as getting to the bottom. Why? I have no idea. Nevertheless, I love it.
That last question hangs for a moment in my head, a slash of red against the black void of thoughtlessness within which I usually reside. Distant sensations slide across my mind: scratchy sweater tickling my skin, a cold wind freezing tears and raising goosebumps on my arms, excited voices and the buzz of the snow makers and the soft whoosh-whooshing sound of metal edges on fresh powder—all inconsequential as I race myself to the ski lift. I arrive at the rope barriers to find no prize waiting for me, no crowd of cheering fans. Just a long line of babbling strangers and a lift chair ride between me and the top.
The line is slow, but eventually I make it to the front. The light turns green. I push off of the gate and wait for my chair to approach. The edge of the unpadded seat thwacks against the back of my knees, forcing me to a hard sit as I grumble under my breath at the lift attendant. I pull the lap bar down and tuck my poles snugly under my leg as the chair begins to rise into the air. My thoughts wander through time as I make the long ascent.
I’m five again, and it is my first day skiing anywhere besides my own backyard. I’m with my family and ready to test out my brand new Christmas-present skis. My mom has decked me out with the hippest in late-80’s winter apparel: a bright purple-and-green snowsuit, multicolored knit hat (complete with flaps to cover my ears) and over-sized wool mittens. I hit the bunny slope and, after some initial troubles with the tow lift, am sliding down with relative ease. My dad is teaching me to snowplow and after a few runs I am able to do it on my own. The air is cold, and before long I find myself back at home sipping hot chocolate, but not before signing up for weekly ski-wee lessons.
I’ve always looked back on those lessons with disgust. They were only really helpful for the first year or two, until I found my sense of balance and began to conquer the trails on my own. They were a substitute for daycare, really. Somewhere for me to stay while my dad skied the big stuff.
The year is 1999, and I am thirteen. I glance again at my watch and wonder when yet another painfully boring lesson will be over, how long it will be until I can ditch those unskilled brats with whom I have the misfortune of sharing an instructor and get back to skiing the fun trails. “That’s it for today’s lesson, guys. Have fun skiing.” I bolt for the metal gate that marks the entrance to the ski lift. The lines are oddly short today, and I suddenly find myself staring at an ant-sized Salt Lake City more than a mile below me, searching for the small hotel room I share with my father. My hair whips in the breeze as I fly down the slopes, cutting through trees and flying over jumps.
I am snapped back to the present by pole number 117, onto which someone has slapped a sticker that assures me “mean people suck, nice people blow.” Conditions are good today: not too much wind, still-fluffy powder from yesterday’s snowfall, temperatures warm enough for a mere three layers. A flock of sparrows flies overhead, looking like little black pieces of paper floating against the gray and blue sky.
Rewind to last year. I’m at Blue Mountain – a small but local ski resort – with two of my good friends. We’re about to ski the unfortunately small terrain park. Todd goes first, skipping the first jump to get more speed for the second, then popping into the air and touching the tips of his skis. I start down, pushing with my skis to get going faster, faster, then suddenly up the steep incline and sailing through the air over the flat tabletop, grabbing my bindings as I go. I land with a satisfying thump on the downhill slope and keep going, sliding across the top of a mailbox rail and launching myself into space again at the second jump. I meet Todd at the lift and we talk while waiting for Igor to arrive.
The minutes tick past and still he hasn’t shown up. Finally, we see him slowly skating his way towards us. Apparently, Igor had attempted a back flip on the big jump and landed face first in the snow. The whole ride up the lift he was asking strange questions and acting confused. We thought he was just joking around, but it turns out he had received a minor concussion from the fall.
I’ve been lucky enough to not have been seriously injured in all my years of skiing (if you don’t count one high speed meeting of elbow and tree and a few twisted ankles here and there), even though I tend to ski somewhat dangerously, oftentimes leaving the designated trails in favor of woods or jumping down rocks or cliffs that no sane man would go near. I feel that a large part of the exhilaration comes from the knowledge that one tiny slip-up is all that it would take to put me in a bad place.
A sign telling me to “prepare to unload” whizzes by as the lift I’ve been riding nears its destination. I raise the lift bar, grip my poles tightly, and elevate my ski tips so that they don’t catch the ground.
As I push myself from the cold, hard plastic of the chair, I get the feeling that I am just about the happiest person on earth. Gravity pulls me down the small lift hill. I pause for a moment to adjust my gloves and admire the view, then make my way over to the seeming drop to oblivion (which bears the appropriate name “Outer Limits”). Again, I pause, eyes scanning for the best route. I see a middle-aged woman lose her balance. Her arms flail and before she knows it she is laying face down thirty feet below her skis. She was not meant for this trail.
I smile to myself as I move over the edge.
March 5th, 2008
This site is too good not to post a link to. The pictures are pretty hilarious, but the commentary is really what does it for me. Nowhere else can you get:
It’s like watching the Mona Lisa cop a squat and take a dump on the floor of the Louvre.
Right next to photos of pretty ladies and ridiculous haircuts. Classic.
http://www.hotchickswithdouchebags.com/
March 3rd, 2008
Here are some podcasts that I’ve been nerding out to recently (these are direct links to the feeds):
February 26th, 2008
I spent a lot of my college career in writing classes, having originally planned to pursue a writing degree of some sort. Long story short, that never happened, and now I’m left with all of these essays, poems, and stories that I spent a lot of time on but which don’t really have anything to do with my life right now. All of this stuff is just sitting on my computer eating up the kilobytes so I’ve decided to post some of it here for kicks. Also, this way I can be lazy about blogging until I run out of old stuff to post.
This first one is a fiction piece I wrote for my creative writing class. I’m not really sure what the assignment was, but it’s a stream-of-consciousness thing from the point of view of an elementary-school kid named Tim.
“What did you do at school today, Timmy?”
Mom always asks that stupid question. Sometimes Dad will ask it first, but he has work so he’s not home yet. I think Mom said she was gonna make tuna casserole for dinner tonight. Yuck. Well, it’s ok once you take all the peas out. Billy told me today that one time he stuck two peas so far up his nose that he couldn’t get them out, and when he told his mom she made him go to the doctor’s so he could get them out. Billy is one of my best friends, except for the time when we dumped jello in Emily Nelson’s backpack. I got in trouble for it because he told the teacher that it was all my idea. But we’re friends again now.
I brought my new Green Ranger to school today. It’s pretty much the coolest one, except maybe the white one. It comes with a sword and gun and everything. Miss Willington took it away when I was playing with it under my desk during math. She always sees stuff like that. I was worried all day but she gave it back to me before we went home. At recess Greg found a frog, so we chased the girls around with it for awhile until Ms. Green made us stop. Freddie says that Ms. Green is a werewolf because she has all these little black hairs on her chin, but I think he’s making it up.
There was a spelling test today. I knew most of the words but Kyle kept trying to cheat off me so I handed mine in fast before I could check over it. Mom got mad at me last time I did bad on a spelling test, she thinks I could be really smart if I tried more in school, but I don’t think it’s worth it. I want to be a roller coaster designer when I grow up anyways, and they don’t need to spell much.
For lunch we had hot dogs. They were green like usual, which is gross because I normally like hot dogs. I wish my mom would pack me lunch like Billy’s mom always does. Billy gave this first-grader an Indian burn today. It was pretty funny because his arm turned all red and you could tell he was trying not to cry, but then he did anyways when we told him that his arm was going to stay red forever.
I had to go to the nurse’s office when I accidentally shut my finger in the door and it started bleeding. It hurt real bad, but I pretended like it didn’t so no one would make fun of me. I hate the nurse’s office. It always smells weird and Mrs. Feeny isn’t very nice. This one time Kyle told me something really mean that she did to him, but I can’t tell it because I pinky swore that I wouldn’t.
Tommy is usually the school bully, but he was wearing a cast on his leg today so he was nicer than usual. He wouldn’t tell anyone how it happened but I heard that he got in a fight with a gorilla at the zoo. Tommy is always coming to school with bruises and stuff, but they just make him look scarier. One time he had a black eye and when the teacher asked him what happened he started crying. I think I was the only person who saw, but then he looked up at me and gave me a real mean look so I ran away. Since he was being nice for a change I signed his cast and drew a cat on it. When I was six I broke my arm and had to wear a cast for a long time, so I know how it feels. They didn’t have any blue ones, which is my favorite color, so I had to get boring old white instead. I remember we played volleyball in gym class when I had my cast and Mr. Tolatta wouldn’t let me play but I wanted to because I knew I’d be able to hit the ball really far with my cast.
Greg told this really funny joke at lunch today and it made Jenny squirt milk out of her nose. The joke was about three people at the top of a cliff and a watch and some stuff. Greg knows lots of funny jokes. This one time he brought these cards with pictures of naked ladies on them to school and got in really bad trouble and had to go to Principal Sophworth’s office. They called his mom and she was really mad. I don’t really like going over to Greg’s house because his mom always looks sick and walks around really fast and doesn’t make us snacks. Greg told me once that his mom was a zombie and that’s why she looks like that and gets a lot of nosebleeds, and that since he’s half person and half zombie that he has to eat brains sometimes.
On the bus ride home Billy sat with me and we played with his Sonic the Hedgehog toys. He’s always Knuckles, but I got to be Super Sonic today so it was ok. Us two and that weird girl named Melissa are the last people on the bus, so we always move all the way to the back where the fourth-graders sit after everyone else gets let off. Today Billy went so high when we hit that big bump near his house that his head hit the ceiling. The bus driver yelled at him like she always does. I wish I could be a grown up so that I could yell at people and get away with it. Billy got let off and then after we drove down the road a little I could see my house. My mom was standing in the yard watering the garden, and when I got off she hugged me and asked “what did you do at school today, Timmy?”