Zampus

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.


OuterHTML for the Masses

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)
	});
}


Domain Name Envy

August 8th, 2008

I want this domain name: http://ma.tt/.


Web Admin for Silk

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.


It's Not the User's Fault

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


Why They (And I) Skip Photoshop

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.


I'm Still Alive

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.


AJAX: Not Greek to Me

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.

Wedding Video HD

March 3rd, 2008

The guys at Moving Box Studios are getting into the lucrative wedding video business and, being the web intern, it was my job to create a site that they could refer potential customers to. I whipped up a simple design and gave it brains with Silk—sort of overkill for a whole two pages, but I wanted to test out some new features and get more development time in. All content is in Textile so it will be easy to maintain.

This is the first site I’ve ever made where I didn’t have to change a single thing after cross-browser testing. It even worked out of the box in IE5!

Wedding Video HD Preview

See it live »


Classmate

January 26th, 2008

Classmate is a simple courseware application focused on assignment management and scheduling.

I made it for my senior project at Ithaca College with Tenzin Zingshuk, a fellow IC student. I used this project as an excuse to learn Ruby on Rails, and haven't looked back since. It's not entirely done, we didn't get a chance to implement a few core features (such as messaging and class schedules) and didn't do much cross-browser testing (IE users beware). Nevertheless, I'm pretty happy with the way it turned out, and someday I might go back and finish things up.

Classmate Preview

See it live »


Silk

January 26th, 2008

Silk is a simple PHP web framework for small to mid-sized sites that don’t need (or want) a database to store content. Site content is parsed directly from files and the directory hierarchy is massaged into a tree-based data structure called the “content tree.” Arbitrary metadata can be attached to any piece of content (using YAML syntax); this can be used to create complex named relationships between files.

Silk has templating features that separate content from design, allowing easy content management and updates. Other features include caching, object-oriented page design, an extensible plugin system, and many different content types by default (PHP, HTML, Textile, plaintext, Flash, images, etc; plus, creating parsers for new content types is as easy as writing a single function and adding a line to the configuration file).

Silk is still in its alpha stage. I generally don’t develop it unless I’m working on a web site that uses it, so I can’t really estimate when it will be “done.” Once I feel it’s ready for general consumption, I’ll post more info here. I’m currently expecting to release Silk under an open license.


Schocharie Ridge Farm

January 9th, 2008

I made this site for my mom's horse farm when I was a senior in high school. This was one of the first sites I did after my dark age of web design (frames, tables, DHTML... yikes). I think I came up with a pretty solid design for my first real shot at CSS. The site was originally built entirely with Notepad and MS Paint, though I later went back and photoshopped the graphics to get some decent anti-aliasing. I recently ported this site to Silk to make the update process easier (even though that happens once every blue moon).

Schocharie Ridge Farm Preview

See it live »