one man dev team - fatc 2011

85
Jonnie Hallman destroytoday.com ONE MAN DEV TEAM adobe / destroytoday

Upload: destroytoday

Post on 15-Aug-2015

852 views

Category:

Self Improvement


0 download

TRANSCRIPT

Jonnie Hallman destroytoday.comONE MAN DEV TEAM

adobe / destroytoday

HOW I STARTED

WHAT I MADE

WHAT I LEARNED

we got our first computer in 93, a mac performa 476, 25mhz, 4mb ram

Jane Blob

i got really good at clarisworks.jane blob story, couldn’t change license name.i didn’t know much about how digital stuff worked (apps, games, etc)...

I was really into video games and made websites for video game cheats/moves using geocities & angelfire, but they always had banners....

JONHALLMAN.COM

dad noticed my interest, bought me jonhallman.com and hosting for christmas

$300 for lifetime of hosting - he still sends me the $0 invoices

tried really hard to ‘brand’ myself, but was never happy with the result, so the website remained a ‘coming soon’ page for months

it was around this time that i learned about flashi was the tech person for the middle school morning announcements

we needed an intro and i made an animation using shape tweens.

macromedia had a free 30 day trial for their apps, so instead of buying them...

i would reinstall OS 9 every 30 daysdidn’t take too long for a 5 gig harddrive

how i got started

i was inspired by flash gods like joshua davis...

...and robert hodgin, so i made experimentsthey had such cool names, so i thought i needed one myself

FIRST-IN-LINE.NET

jonhallman.com wasn’t cool, so i also got first-in-line.net, possibly the worst domain name to remember

inspired heavily by praystationi’m the kind of person who feels empty when i’m not producingalways had a stack of loose papers with sketches on themcoded the ideas when i got home from school each daysuper lame, had multiple email addresses for no reason

around flash mx 2004, i had enough and gave up on it...I got deep into PHP and made dynamic web apps, like jpixel

it takes a 100x100 image and blows it up 10x, using dot patterns to represent each pixel

i got into graphic design during pre-college at risd and mica and turned my digital work into printI tiled outputted JPixel images, making huge 12x10 ft prints

SHAW JELVEH DESIGN

started working for a small studio called shaw jelveh designfirst thing they asked is whether i can make flash websites

they had me design and develop 3 sites in my first 2 monthswith tight deadlines, i learned how to code fast, esp since i worked 10 hours a weeki also learned to keep things simple

produced a dozen websites in less than a yearsome of them, i only had a week or 2 before they were due

on my friend’s birthday, I was at his house and I challenged myself by coding luke’s site in the duration of high fidelity

as well as learning how to code fast, i also learned how to learn fastgreenbuild, conference for sustainability

in my junior year, I heard about AIR and fell in love with the idea of apps rather than websitesI replaced most of my gd classes w/ independent studies

USERS VS CLIENTS

TOOL VS PRESENTATION

INCREMENTAL VS ONCE AND DONE

I liked app development because of thisyou have to please clients. try to make users happy, but don’t have please them all.

NO RESTRICTIONSANY LANGUAGE

ANY PLATFORM

ANY IDEA

apps became very personal

DESIGNER

DEVELOPER

PROJECT MANAGER

CUSTOMER SUPPORT

YOU

requires many rolesI was ready because of shaw jelveh

1 HOUR

1 HOUR

1 HOUR

1 HOUR

4 HOURS

what takes 1 hour for each person will take you 4 hours

DESTROYFLICKR

i took a photo imaging class.

we used flickr for critiquingi hated the site - white background, static pages, very slow to navigate

i thought of taking this opportunity to make my own app using flickr’s apii started sketching and brainstorming

since i was new to UI design and had such a heavy background in web design, the app looked just like a website, but on the desktop.

(sorry, Ryan)

and i wasn’t an icon designer by any means, so i took inspiration from CS3, since most of my dock was adobe apps.i later met the icon designer during my adobe interview.

(movie of DestroyFlickr too large for download)

the end result was an app that had a better environment for photos (dark background)it was very fast because it only needed to load the imagesyou could page through hundreds of photos in seconds with animated transitions

i tried to make features that were unique and that I would get a lot of use from, like drag and drop downloading.you could drag a handful of thumbnails and it would download the hi-res versions.

I took it a step further and made it so you could drag and drop a contact to download their entire photo library

i released it for free and shared it with friends and famthe install count went from 30 to 3000i started getting tons of emails. some reported bugs, others requested features, and some just said thanks.I tried to respond to every single one.many didn’t realize I was one guy.someone even gave me a ps3

flickr caps the api at 1 query per second, once destroyflickr reached that, instead of throttling DF...

they interviewed me

on top of that, i won an adobe design achievement awardi knew now that maybe app dev was a good direction

enhance!

enhance!

WHAT DID I LEARN?

THE WORD “DESTROY”SCARES PEOPLE

many didn’t use it because they thought it would delete their account.at the same time, many used it because of the name.

DON’T DEVELOP ANAPP YOU WON’T USE

you’ll miss essential features and ux will sucki didn’t use flickr much, so i missed essential features like sets/groups

NO APP SHOULD REQUIREA GIG OF MEMORY

memory - not a concern for web, but definitely for appskeep track of everything you allocate memory for

a feature like this shows complete disregard for memory

MOST GOOD FONTS DON’TSUPPORT A WIDE

RANGE OF CHARACTERS

selecting all the glyphs you want to embed doesn’t mean the font has those glyphsarial ms unicode is the only font with (almost) every glyph

i thought all i needed to do was check these boxes

USE PROVEN METHODSAND CONVENTIONS

i didn’t go to school for programming, so i didn’t know any design patterns or any of the terminologyuse an architecture framework (mvcs, robotlegs)follow a common coding styleotherwise you’ll spend more time refactoring when you discover your way doesn’t work well.

since I only ever dev’d by myself, I didn’t really know what good code looked like.the style I used was based on what I found useful and it was soooo bad

KEEP APPS UP TO DATEWITH DEPENDENCIES

if you want to continue developing an app, keep it current with your librariesI was able to develop DF fast because I had a lib for common classes, like images, text, etc.i forgot to update DF with my libs, and it was too late

TALK ABOUT TWITTER!

To me, Twitter is a background service, like IM. It’s not fulltime, like Photoshop or Flash Builder. When I want to tweet, I’ll open it, tweet, then hide it.All the current apps were bloated and cumbersome, so I made DT super light and super intuitive. Hotkeys galore.

DESTROYTWITTER

spent a day researching others, jotting down pros/consthen coded v1 in 10 days over christmas break

MOST USERS KNEW“DESTROY”

(old people don’t use Twitter)

so it didn’t scare people as much

PERFECT APP FORCOLLECTING FEEDBACK

also made it easier to respond to users, instead of emails bottling up

Ii knew to use a proven framework, like Robotlegs

It was my first persistent app—open for long periods of time. Because of this, I paid extra attention to memory and CPU usage.

And once I got the basic Twitter functionality down (tweeting, streams, etc), I started adding special features I wanted.Because of unfollow drama and events, I added filters. DMs and unfollow notifiers make things awkward, and i’ve been confronted

Since Twitter is reading-intensive, people want it to be easy for them to read. For some, that means black text on white, for others it’s white text on black, so I made themes. Now no one complains.

With so many users, you have thousands of opinions. Everyone wants the app to work different, so I added preferences when anyone wanted something a specific way. It quickly overflowed the preference pane.

Place a file called ‘debug’ here to receive RTEs with full stack traces.I set up a script to email users’ stacktraces to me.

300,000+ INSTALLS

1 MILLION+ TWEETS/MONTH

WHAT DID I LEARN?

A RESIZABLE WINDOWIS A REQUIREMENT

NOT A FEATURE

support a resizable window

DO NOT PUSH AN UPDATEBEFORE YOU GO TO BED

a bug will always existhttp://http:// story

USE A PROPER VERSION CONTROL SYSTEM

...

I kid you not, this is what my version control system was.I didn’t know version control existed, so I’d zip the folder.

NOT EVERY UPDATEIS FROM 1.0 TO 1.1

backwards compatibility

PEOPLE LOVE ANYTHINGPRIVATE & BETA

(especially teen ‘professionals’)

free quality engineers

PUT FRESH EYESON YOUR CODE

working alone on something for too long makes you too familiar and you miss things.go open source or set up code reviews. everyone learns.

we use code collaborator at adobe

AUTOMATE AS MUCHAS YOU CAN

since you’re just one man, the more you set up to run automatically, the more time you have to be productiveuse build scripts, unit testing, continuous integration, make a common lib

use jenkins

FINAL THOUGHTS

MAINTAINING ANAPP IS A HUGECOMMITMENT

(especially alone)

think years and make sure you’re ready to invest your time and energy

MOTIVATE YOURSELFWITH VARIETY

if you code all day for work, the last thing you’ll want to do is code all night.your work will use up all of your creative juices and you won’t have much left for your apps.

HAVE FUN

Enjoy what you’re working on.

THANK YOU

ONE MORE THING...

I AM OPEN SOURCINGDESTROYTWITTER

website destroytoday.comemail [email protected] @destroytoday