Saturday, April 12, 2014

More process, more practice

Lately, I've been playing around with Shreddage-2. It's an excellent sample-library for electric guitar and it sounds very, very good. You can hear some of these experiments over at soundcloud.com/jasonrubenstein  - that's where I put my various works-in-progress, ideas, demos, experiments, mistakes, and other noises.

I'm not sure how, or whether, I'm going to use this sample library for the next record. On the one hand, it's pretty fun to mess around with and it sounds good; on the other, I might rather hire a guitarist & record their interpretation of the directions I provide. On the other other hand, this is a great opportunity to use the sample library to create something original rather than just imitate the djenty-dude-of-the-week.  For example, say, how about sending the signal through a bunch of Moog signal processing... I don't know.

Anyway, playing with Shreddage-2 isn't really the point, and thus I bury the lede:  I'm in the middle of a process, again. I'm fishing around for new ideas and techniques for the next record. This is basically hours and hours of practice, play, experiments, and feeling around for ideas. At least a half-hour a day during the week, and as many hours as possible on weekends.
Studying the Master

The process is pretty broad at this point in the work: I practice piano exercises just about every day. Mainly the first ten Hanons, over and over and over. And over. I'll start at around 92bpm to warm up the hands, and end up at about 108bpm. It keeps the chops up, and the skills improving every day. Then, time allowing, improvisation until my hands give up or I have to get up & go to the office.

The other part of this process is to play. Fiddle around. Experiment for new textures, ideas. See how they feel, how they fit.  "Hey", I said, "what if I run a medieval lute sample through a Mesa Boogie amp simulator? Or a rectangle wave while I modulate the width?"  I'll pick weird scales & riff on them for a while. Or substitute distorted B3 for double-tracked guitars in a heavy riff.

The goal of all of this is to widen my palette and vocabulary of sound, texture, feeling. When I start working on the tracks for the next album and start answering the questions "What do I want to hear right now? What do I feel right now? And then what happens? And what happens after that?", I'll have a few more creative choices that are quick-at-hand.

Anyway, today I want back to Bach. I dug up a couple of preludes from The Well-Tempered Clavier and analyzed the chords & scribbled them down.  Then, played around with the chord progressions in various patterns and time signatures. 5/8, 7/8, 11/8, 6/8. I did a lot of "What if..?" stuff.  Most of what I came up with was terrifically uninteresting. But some of it was pretty cool, and I'll keep it for future consideration.

Process, which most of the time feels like "I have no idea what I'm doing -- but I'm doing it anyway."

Friday, March 21, 2014

My New EP is Finally Here!

Monday, March 10, 2014

How to Create 30 Songs in 30 Days. (or, "What worked for me when I wanted to write 30 songs in 30 days")

I posted this up to reddit /r/wearethemusicmakers a few days ago. 

Caveat Emptor: this worked for me. Will it work for you? YMMV.

OK, how to write a song a day for 30 days:
Read this book.
  1. Read this book: "Becoming a Writer" by Dorothea Brande. I know, it says it is about writing. But really, it's about art. All art, including music.
  2. After reading the book, pay attention to the part where the author advises to separate the creative mind from the critical mind. For the next 30 days, you shall create. No judgement of quality, no analysis or editing. Just. Create.
  3. Every morning, fire up your music-making gear (in my case, my studio), and ask yourself "What do I want to hear?". Start writing what you want to hear.
  4. If you don't know what you want to hear, try this: Pick a scale, at random. Pick a time signature, at random. Play anything. record it.
  5. While you're writing, and have a part, or a section, or a riff, or a phrase down, ask yourself "What happens next?" Write (and record) that.
  6. Keep going until it feels done. How will you know it feels done? You won't, probably - it will just feel.. done.
  7. If you think you don't have time to do this, get up 2 hours earlier. Yeah, the ass-crack of dawn sucks. But awesome coffee and time alone to create music is awesome.
  8. In some cases, especially for some genres, you might need a 2nd day for a song. That's fine. "A song a day" is a guideline, not a rule.
  9. When someone says "You should...", walk away. Create what you want to create. Ignore everyone else.
  10. When you have a song done, move on. Do not listen to it. Do not review it. It's done. Next one!
  11. Borrow from anyone from whom you want to borrow. Led Zeppelin? Steely Dan? Pharrell? Joe Bonamassa? Chopin? Meshuggah? Go for it. Don't worry if you sound like someone else for a while. Just create.
  12. Fuck the nay-sayers. Just create.
  13. Don't let anyone hear what you're working on. It's none of their business until you say it is, and now's not the time. Create.
  14. Keep going. At day 10, at day 20, keep going.
  15. Some days will feel meh. Some days will feel awesome. Keep going.
  16. Finally, at the end of 30 days, you'll have a collection of creations.
  17. Congratulations, you've just written around 30 songs in around 30 days. (I had 27 songs in 30 days). Most probably: a few will suck, a few will be absolutely fantastically great, and most will fall in the middle somewhere. But who knows? Maybe they're all great.
Ultimately, I picked 12 sings from the 27 to put on a new LP.

Last piece of advice: once you play your songs for people, remember this:

“Remember: when people tell you something’s wrong or doesn’t work for them, they are almost always right. When they tell you exactly what they think is wrong and how to fix it, they are almost always wrong.” (Neil Gaiman)

Friday, March 07, 2014

A sneak preview of the new EP

All of the music has been mixed and mastered. It's ready to be launched upon the world like some loud, noisy creature with too many sharp teeth, that likes to bite at ankles .

There will be an EP of five songs, followed by a full-length LP.

Here's a preview of a track from the EP.


Tuesday, January 28, 2014

Some music inspired by cold weather

A little 2-minute mood inspired by 90s King Crimson and the cold weather of the Great Lakes midwest.



Friday, January 03, 2014

The New Music Project: A "Calling Card"

So. My new music project is a bit, shall we say, loud.

My previous projects skirted close to the worlds of heavy sounds, incorporating elements of prog-rock, fusion, and even a hint of 90s-era prog-metal, but were always tempered by the ambient-groove genre. I'm happy with those eclectic, hybrid projects - that's where I was at the time and that was how I was feeling back then. 

Yeah. Now, not so much. The latest stuff is loud. Intense. Angry. 

The very first album I put together in 1986 (with my bandmates at the time) was loud, progressive-rock that was tempered by heavy doses of 80s-era metal, Rush-like arrangements, and Ultravox-synthesizers. Another heavy, proggy project like that has been on my mind for decades. Now, it feels like it's time.

"So, JRub, you getting back to that teenage-rage thing?"  No. That's an uncontrolled bonfire of heat, empty bottles and burnt potatoes.  I don't care for that nonsense. This is older, wiser, and focused like a laser. A really pissed-off laser. With a drum kit. A laser with a drum kit.  Alright, then. Now we can get somewhere.

This is a demo - a "beta test", if you will - of a couple of ideas. It won't make the final album in this state. It's a "calling card" of what's to come.

The title contains a little nod to Michael Moorcock. I imagined a horde, tearing across the Sighing Desert out of the pages of an Elric story... and so...


Tuesday, December 31, 2013

Using Software Development/Project Managment Techniques In Your Music Recording Project

There can be great similarity in project management between creating and shipping a new software product, E.g., an app or a website, and creating and shipping a new music project, E.g., a digital album or a CD.

(This is a blog post aimed at musicians, but if you're a developer, engineer, or product/project manager, all of this should look very familiar to you).

"Well, how the hell would you know, JRub?", I hear one of you ask. I apply the tools, techniques, and skills learned from developing and shipping software products to producing music projects (and products). Look, I've been programming and shipping software since Napoleon came back from his winter holiday in Moscow, and producing & publishing music since the antediluvian times-of-old when the 33rpm-vinyl-dinosaurs covered in Roger Dean-colored feathers roamed the prairies. In 7/4 time. Uphill both ways in the snow with 300lb Hammond organs strapped to their necks under spangly purple capes. Or spangled leather ponchos. I don't remember. Whatever.

I know what works for me at least, and perhaps this post will help you. Or not, in which case you took a nice little break from learning how to djent on your ukulele.

The typical stages of a project, whether software or music, at a high level look something like this:

  • Burst of creativity and enthusiasm, hard work, weekends and late nights of programming or tracking,
  • Lots of work, some of it tedious, getting the design & code correct/the tracks ready for mixing and mastering (and, if applicable, manufacture), and the product ready for your fans, the consumers.

So lets talk music project. . .

The Fun Part
Creating the music, recording the tracks, dialing in some great tones. This is what a recording musician lives for, right? Creativity, unbounded. The music just pours out of you, unimpeded, like water through your ceiling that time the toilet upstairs blew a seal at 4am. This is awesome. The music, I mean, not the flood. Soon, you have a collection of a few dozen songs ready for review! Right? Wait, you're not writing music every day? Ah. I see. Yeah. Well, that's a blog post for another time. Fine, then, you have ten songs recorded.  Great!

Now what?

The (partially) Tedious Part
Now, you have to get the tracks ready for mixing, mastering, and digital distribution. And, if applicable, for manufacture. 

This is a lot of work you're facing. For now, let's focus on one part of the work: Either you're mixing it yourself, or you're taking to a professional audio engineer. Either way, there are steps you will need to follow to make sure that at the end of all of this work you have high-quality, ready-to-mix tracks.

And this is where basic project management comes in. 

I know, I know, we're musicians, man, project management crap is, like, a day job. Come on, this is like work. 

Yeah, yeah, cry me a D-minor river. Yes, it's work! If you're not willing to slog it out, put in the time, focus, and attention so that at the end you can enjoy the musical fruits of your inspiration and creative effort, then.. I got nothin' for you. 

Still here? Awesome.. cool. Now look, kid, who says work has to suck? Not me. There are techniques and tools to make this step of your project easier and to decrease the probability of mistakes.  I'll use my personal process for this as an example, in a moment. First, a caveat: This is a process that works, and not the only process that works. I'm certain there are many others that work just fine. This is a process that works for me very well, and it's not static: in other words, it's dynamic. In other other words, it changes over time as I see fit, or as the project demands, or as I find parts of the process that are no longer as useful and other parts of the process... you get the idea. I encourage you to find a process that works for you, whether it's this one or some other one.

Right. So how do I get from the "many tracks of recorded brilliance" to the "ready to be mixed by Monte Genius Audio Engineer and his pal Master Agnes the Mastering Master"? (I made those names up. They're not real people). 

First of all, I borrowed from my experiences building and shipping software products and managing teams of software programmers.  A tool I like is a "kanban" board. At the moment, I use Trello.  What the heck is a Trello? It's a cross between a Trombone and a Cello. Sounds like hell. Wait. Sorry. No. Lemme wikipedia this thing, one sec...
Trello uses a paradigm for managing projects known as kanban, a method that had originally been popularized by Toyota in the 1980s for supply chain management. Projects are represented by boards, which contain lists (corresponding to task lists). Lists contain cards (corresponding to tasks). Cards are supposed to progress from one list to the next (via drag-and-drop), for instance mirroring the flow of a feature from idea to implementation. Users can be assigned to cards. Users and boards can be grouped into organizations.

There ya go. 

How do I use this thing? Well, after creating about 30 tracks of music and editing the list down to about a dozen that were superb, I called the mix engineer and asked how he wanted the tracks prepared. (This is a very important step, and there are no stupid questions: ask exactly how he or she wants the tracks, what format, what resolution, and so on.).  I took notes. In this case, I needed to prepare WAV files at a depth of 24bits, and a bit-rate of at least 48k.  

From the notes, I created a bunch of steps I needed to turn the contents of my DAW into the standard described by Mr. Mixing Guy. 

Here's an example, based on but not exactly the steps I took, because a few of the actual steps I needed to take are very idiosyncratic to my project:
  1. Copy project to new file
  2. Zero the faders
  3. Zero the pan
  4. Insure bit-rate of 96k
  5. Set every track to between -6Db and -3Db -18db and -12db range [edit: oops. Too hot for digital]
  6. Remove plugins to be added at mix-time
  7. Bounce tracks to WAV
  8. Verify that all tracks are bounced, within range, and dry or wet as expected
  9. Copy tracks to new folder
  10. Backup folder to local backup and to offsite backup
  11. Write notes for engineer, if applicable
  12. Done!
Each of these steps now becomes a list in the Trello kanban board, in the order listed above.  And, I add a list which will live all the way to the left called "Track To Prepare". So now I have 13 lists: 

Tracks To Prepare
Copy project to new file
Zero the faders
... and so on. 

Now, I start adding cards to my "Tracks to Prepare" list. Each card is the name of the track I need to prepare for Mighty Ms. Mixer.  Working titles, whatever.. but your list and cards will look something like this:

Tracks to Prepare
Rock Ballad 1
Rock Ballad 2
Alt Rock Thingy 1
Alt Rock Thingy 3
Alt Rock Thingy 11
Stadium Rock 12
Hawaiian Post-Progressive Death Folk Metal 3
... and so on

Now you're ready to work. As you work on a track, drag the card ("Rock Ballad 1") from the "Tracks to Prepare" list to the "Copy project to new file" list. As soon as you have completed that step (and remember, these steps are represented by lists in Trello, you with me?), keep working, dragging that "card" to the next list (the "card" represents the song you're working on.. still with me?). 

I love this. It means that I can easily keep track of where I'm at in the process, I can work on more than one track at a time, and I can keep tabs on the state of each track in the workflow.   Your ass, glue it to your chair. Follow the steps you created for yourself and that are now represented by the kanban board. 

Hell, even create a new board for QA (Quality Assurance). Be your own QA engineer and create a series of steps for you to verify, seriously, that the track are ready for Mr. Mix Audiogenius. This is your workflow!

Another point is: whether or not you use a kanban board tool, create a process for your workflow: for your studio work, or the work necessary when getting ready for a tour, or the work of marketing your new release, and so on. 

Hey, by the way, what if you're not hiring an engineer to do the mix? Just create the steps you want to take, every time, for your own mix.  And remember, you can change these around if you want to - remove some, add others, whatever. Workflow process is a living thing, and it will probably change in increments over time. 
  1. Copy the project to a new file
  2. Zero out all faders and pans
  3. Disable all plugins
  4. Drums
  5. Bass
  6. Piano
  7. Guitar(s)
  8. Djent Ukelele
  9. Vocals (clean)
  10. Vocals (filthy)
  11. ... and so on
  12. Done!

So, in summary: break down the tasks and document them, and then use some tool(s) to keep track of your workflow; especially for the non-creative work in your projects. The goal is quality and consistent outcomes, delivered with speed and accuracy.

Saturday, September 08, 2012

7Digital API wrapper in Python

I've been looking at the developer API from 7Digital, the digital media delivery company, and realized that I needed a lightweight, python-friendly wrapper for the API requests and responses.

And so I wrote one. It's called py7D, and it's here: https://github.com/jasonrubenstein/python-7Digital
and the README is here: https://github.com/jasonrubenstein/python-7Digital#readme


Why
I wanted a very thin layer of code that wasn't dependent on ORM-like structures. I don't believe that abstracting out each and every API method/function call to a method on an object makes it "easier for the programmer". If anything, it makes it a pain in the ass to maintain the library every time 7Digital comes out with a new API method/function. I also wanted to keep the separation between function and data cleaner, more obvious, and clearly intended.

Ok, enough with the negative comments. Lets get positive. What I wanted to do: create a library of small, clean modules that do the absolute minimum to get the data from the API; provide the responses in a python-friendly form like a dictionary or a list (rather than in XML, which is what the API returns); make no assumptions about how the data is to be consumed, and therefore just pass it on in as much of an unmodified form as possible; separate data from function and separate disparate functions from each other (for example, relocating API calls from the OAuth module to the API module).  I also wanted to do away with the use of classes where I think it's not necessary. There really wasn't any state being kept here, and the settings that could imply state weren't enough of a deciding factor to go with a class.  Also, if the requirements of a project require the maintenance of state, the modules are written such that wrapping them with a class would be trivial.

I also wanted to update the oauth library used in the existing, legacy library. I upgraded my version to use oauth2 and implemented its convenient Client class for making oauth signed requests.


What
My plan for this thing is to create a service around it. The service would handle an incoming request for information, call the API, and then convert the response from the API into some consumable form (probably a JSON string or an edited dict or list of dicts). It would also handle routing certain responses to a cache in redis.


Notes
The page for 7Digital's API is here,  and a direct link to the docs is here.

Tuesday, July 17, 2012

Process kills developer passion

I'd say "Too much or too little process..."
Now, I’m certainly not advocating some kind of Wild-West approach where nothing is tested, developers code what they want regardless of schedule, etc. But the blind application of process best practices across all development is turning what should be a creative process into chartered accountancy with a side of prison.
Either extreme will kill an engineering team's passion and productivity. Good article by James Turner.

Saturday, May 05, 2012

Twitter for Musicians, Writers, Filmmakers, And Other Malcontents

There is a great way to use Twitter and a terrible way to use Twitter. If you're a writer, musician, filmmaker or in some other arts-related business and you're using Twitter to reach your fans, gain new fans, keep your fans, and "market" your work and it just isn't happening,  this post is for you.

Why me?
I'm a software engineer and a musician. I've produced and published several music projects, and I worked in San Francisco at a social media/games company called "Slide" (which was, alas, acquired by Google and then subsumed into the great, primary-colored googley googleness of a googleplex on the peninsula), most significantly on a Facebook app called "Top Friends", which was a very successful social-network-in-a-social-network. It was also the largest app on Facebook for a long time.  I'm talking, literally, millions of users.

Great. So you probably know what you're talking about. Get on with it, I'm on a deadline.
One of the biggest lessons learned from building successful social products was this:  Fostering personal, meaningful relationships between people was one of the keys to growth, retention, and scale.  

"Well, duh,", I hear you cry, "Isn't this obvious?"  Yeah, I know, I'm stating the simple and obvious. But it isn't always easy, at least not for some people, even though it's simple.1

Well, look. Here's the simplest way I can explain it: speak to people on Twitter like you're speaking to someone in person. Write about you, what you're doing, what interests you, things that happened and are happening right now. Be personal in your conversation, and re-tweet things that personally interest you. Your fans want to connect with you.  What your fans do not want is a spew of advertising copy.

Speak to them as people, and not as targets of online marketing.  

When I follow my favorite writers or musicians, or when I discover new ones, I want to read what they have to say and read about what they're doing or thinking that may or may not be directly related to their projects or products. The speak with me, not to me.  Most of the time I don't reply. I nod in interest or agreement at the screen (figuratively or literally), but the opportunity to reply is implicit in the original tweet.

Think of tweets that could elicit a response from your followers (And by response, I do not mean "OMFG STFU already").

Do not fill their twitter feeds with marketing noise, advertising crap, or other non-personal stuff that's the equivalent of junk-mail. 

There's a lot of horrible advice out there about using twitter as a medium for marketing copy. Don't follow it.  

Build fans and customers, or shoot yourself in one of your toes.
Twitter (and Facebook, among others)  is a great product with which to build and maintain meaningful, valuable relationships between you and your fans & customers. It's also a great product with which to shoot yourself in one of your toes and end up with diminishing fans and decreasing followers. 

Here are some examples of both. 

Bad
"4 out of 5 moviegoers loved what they saw at the screening! You will too! http://..."
(Try something like "Great screening last night at X. Lots of compliments, I'm still grinning like an idiot" instead)

"Big sale today only in our gallery come on down http://"
(Advertising. You're not speaking with me, you're speaking to me.)

"Have you read my new book? http://... "
"Have you read my previous books? http://..."
"Customers love this book I wrote in 2009 http://..."
"Review of X: http://..."
"Review of Y: http://..."
"Review of X: http://..."
(and so on. My twitter feed was filled, FILLED I tell you, with these from a self-published author. I unfollowed in a hurry.)

A good rule of thumb: if you'd hate to see it in your feed, or it's pure advertising copy, or it isn't some form of personal communication, don't tweet it. 

Another good rule of thumb is don't spam your followers. A steady stream of tweets from you in sudden succession looks like spam. And, uh, that's because it is spam.

Good
"Wow. Cool thing on my walk to my office: http:///"
"Dogs barking at a terrifying, aggressive maple leaf on the patio, stopped me at 2200 words. Got my quota for the day."
"Off to Free Jazz CD day. Won't forget to buy something while I'm there"
"Woke up to awesome reviews this morning! Feeling vindicated! http://..."
"Listened to new XYZ music while I painted this morning. Inspiring! New art soon."
"The amazing Fred sketched this from my novel X. Very cool http://..."
"So-and-so's article on free digital music downloads. Agree completely http://..."
"This asparagus is huge. Monsterous. I expect it to start chasing me around the kitchen."
"RT: @someone My book is out today! excited and hopeful"
(re-tweets are personal; they're still a tweet from you, and so are personal communication. 

And so on.  In general, be yourself. Consider tweets about what you're doing, what you're thinking, what inspires you, wild sudden thoughts, what you agree with, what you disagree with, what you hate, what you think deserves attention, sudden flashes of inspiration, what you're doing to procrastinate... all within the scope of what you're comfortable talking about, of course. Look, just be you. And you ain't ad-copy. 

Homework: Ask yourself, "Why do I follow the people I love to follow?"
And, conversely, ask yourself "Why did I just unfollow that person?". 

What is it about your favorite artists, your idols, your mentors, that you enjoy when you read their tweets? What connection do you feel with them?   One author I follow tweeted that the wolf-howls in Skyrim are so realistic that they drive his dogs nuts. Hey, now I know that one of my favorite authors plays Skyrim. I play Skyrim! We're connected!  The meaningful connection between customer and artist  has been reinforced ever-so-slightly-but-significantly. And the image of his dogs freaking out at the sound from the game is pretty amusing.2 Will I be inclined to pay attention to his next release? Yup. The meaningful signal coming from him is greater than the background noise of the interwebs-social-webverse-thingy, so without much effort from me I'm inclined to pay attention to it.3

More Homework
Ok, so what about tweets about upcoming books, performances, and so on? How do you get around just spamming marketing copy in these cases?

Here are some ideas. I'm sure there are more ways out there besides these, but the basic tenet is be personal.

Got a show coming up? How are you feeling about it? When is the last time you were there? Playing new songs that they haven't heard yet? Pick one and add it to your tweet. It has to be real, though - if you're feeling nothing about playing this gig, uh, you may have other problems than gaining Twitter followers. 

Open a word processor and write some tweets about professional events. Make 'em personal.

Here are some (somewhat generic) examples.
(Note: don't spam a bunch of these.. pick one or two and go with it. Maybe two over two days or so. Use your judgement. If it feels like spam, it's probably spam)
"Playing J's Pub on the 16th. Can't wait, haven't been there since '09"
"Playing J's Pub on the 16th. Hope the chandelier doesn't fall this time!"
"Playing J's Pub on the 16th then jumping into the van to Cleveland for next gig. All night drive"
"New book out tomorrow. Can't sleep, critics hiding under bed will eat me".
"Book signing alert: J's Bookstore. See http://... for more info. Come by, it'll be fun"
"I normally hate flying at 3am, but I love the venue for this reading. Beautiful place, can't wait to get there"
"Talking to a distributor today. Fingers crossed. They saw film at the festival, loved it"
"Great time at the awards last night but head now hates me. I drank how much?"
"Film at the festival today at 4. Please come, I'll be hanging out afterwards, come up and say hi" 

That's it
Alright. That's enough lecturing for today. Bottom line: be real. I want to hear from you, not from your marketing copy. 


1. The inspiration for this post came from a new-to-me author whose tweets filled my feed with ad copy. Nothing personal from them, just a rapid-fire spew of reviews, links to books, "buy me now" type stuff that drove me nuts. The post was further inspired by some companies out in the midwest whose approach to twitter was "all-spam-all-the-time" who followed me, expecting a follow-back.  It turns out that their "social media expert" recommended they use twitter as an ad platform. As we say in web engineering circles: FAIL.

2. Back when I owned dogs, I used to record their barks in my music studio and later play it back at random times. The two of them would freak the hell out. They're run around the house, barking, trying to locate the sound of their own voices. "WTF? That sounds familiar! Holy cats, it is familiar! Like, what the crap, where the hell am I? I have got to find me!  Quick, I'll flush me out by running around all of the furniture, barking at me!" Eventually they'd make their way to my studio, tails wagging, and barking at nothing. "Whoa, dude, you sounded just like me! I was like all freaked and shit because I was down there looking for me and I was up here and now I'm not down there looking for me, I'm up here, which is exactly where I was barking when I was downstairs barking at me barking from up here where I am now but I wasn't and, wait... what? Aroo? Oh, fuhgeddit, if you're not gonna gimme a pig's ear, I'm going back to sleep. My head hurts."

3. Another artist I follow posts "found art", which are cel-phone pics of odd shadows, interesting juxtapositions, and so on, and they're usually wildly cool. It gives some insight into how he thinks about art in general. Very interesting.  And there's the writer with an incredible penchant for tweeting puns; I bought a couple of his books based on his sense of humor. Through these two and others I've discovered other writers and musicians as well as podcasts, blogs, articles, and more books and music.  The social-proof that's gained from trusting the tweets of one person can (and usually will) be beneficial to them and to the other artists in your network.  Social-proof itself is a topic for a different blog post.

Monday, April 16, 2012

On Micro-frameworks

Says my friend and former colleague james-m:
I like the idea of micro frameworks, or very compact, loosely coupled library of components that you pick and choose from to create your overall architectures. A micro framework approach has the following benefits: a) because they’re so loosely coupled, you have more choose (sic) for any given component. b) smaller, bite-sized pieces of code are easier to digest, and the more you digest of what a framework is doing under the covers, the better able you’ll be to diagnose problems.
James says succinctly what I've been thinking and saying (much, much less succinctly) about micro frameworks. I've been putting this into practice on my recent projects.

Friday, March 30, 2012

Life Hacks for "A"-players Living in SV and SF

Over the last few years, I've observed how some local "Entrepreneurial A-players" execute so-called "life hacks" to make their lives easier, more efficient, and quicker.

I've outlined some of them below, as if they were written as a guide for "A-Players".  And I'm wearing my Hat of Disdainful Sarcasm while I write this.


Starbucks hack
A-players don't wait for coffee - they're too busy working to change the world. Here's a great hack at Starbuck's, or any other coffee place, so you can keep changing the world and keep ahead of the competition without having to waste time.

Grab a seat with your laptop, and start working. Since you're an A-player who can focus on several things at once, keep listening for the coffee you'd like to drink. This shouldn't be a problem - you already have several windows open on your desktop: a spreadsheet, your email, your browser with several tabs open, and either Spotify or YouTube. or both. Go the extra mile and listen for "double cafe mocha with extra whip" or whatever else floats your marshmallow.  Casually stand up, make sure you look like you're thinking about something extremely important and entrepreneurial, grab the coffee and return to your chair. Score!

It doesn't matter who ordered that drink, only that they're too slow to get it when called. They're probably not paying attention and are gabbing on their phone or playing "Sudoku with Friends", unable to focus on more than one thing at a time (hey, they're B or C players). A-players don't wait, they seize the moment.  Or, in this case, they seize the caffeinated water-of-life.

Extra credit: If you're in a place that's actually calling orders by a person's name, just wait until you hear a name that could be you. But pay attention - don't go for a "Linda" when you look like a "Sergei".

Extra extra credit: This also works at the grilled-cheese or hipster curry restaurants. Wait for some order that sounds good, walk up like you're late for a meeting, and take the food. Leave a dollar in the tip jar, though, because it's not nice not to tip.  Go have your lunch while you're working on your deck. A-players eat A-lunches. B players starve.


Queue barger (or: queues are for sheep)
A-players don't wait in line. You know who waits in line? Sheep. Sheep wait in line. You know who else waits in line? Hogs on their way to getting turned into bacon. Don't be waiting for bacon. Queues are for sheep. And bacon-providing hogs.

A-players are much too busy working on changing the world, so don't wait in line. Look for a gap large enough to shoulder-in, look like you're late for a very important meeting, and barge the line. Better yet, time it so that you jump the line entirely - get to the head of the line, right to the service-person, just as the previous servicee is leaving. Ignore anyone who barks at you, you're too busy. The probability is high that the service-person won't want a confrontation and will get you in and out of there as fast as possible. Let the unwashed masses grumble about you as you're leaving - while the door is closing behind you, you've gotten what you needed to get done done. The rest of the sheep-hog-waiting-for-bacon people are still back there. Standing in the line.

Extra credit: if your company has a cafeteria, look up and down the line and find some neckbearded engineer-looking type and shoulder in front of him to get at the "green-means-healthy" labeled almond-encrusted sea bream. It's more probable than not that he's some Asberger's afflicted socially-inept asshole who's already pissed-off all of his co-workers, so no one will care that you've barged the line in front of him. And even if he's not an Asberger's PhD-degree-in-CS poster-child, he's still a neckbearded engineering asshole who couldn't deliver product on time if you tied an exploding, loudly-ticking alarm clock to his ass, so who cares? What's the worst he's going to do? Probably call you a "noob level three troll" and some other equally incomprehensible names. Yeah right. Whatever, 'bro, sticks and stones. You're way ahead of him - you're going to go eat lunch while he's still standing in line.


Red lights are for other people
You know that A-players don't wait, right? You don't succeed if you're not aggressive.

When walking, keep walking. Get to a corner and hit a red light? Keep walking. This is a pedestrian-friendly state, therefore cars have to stop for you. We know that the rule says "red light means STOP", but A-types break the rules.  A's are rule-breakers, not rule-followers.  A-types don't ask permission, they apologize later (but only when absolutely necessary. They should be too busy to apologize).   While all of those people are stopped at the corner, waiting for the light to turn green and for the green-walky-guy to light up, you're already way ahead of them.

You can't beat the competition by stopping at the red light.

This also applies when riding a bike. Don't stop for reds, and remember: you can ride on either side of the road and in either direction. Rules are for B and C players.


Get that referral bonus you know you deserve.
Does your company give referral bonuses for referring new employees? If so, here's a great hack. A-players don't wait around for someone to claim the goods. When a new employee is hired, march straight to HR and claim the referral. In most cases, HR is too busy to notice who referred whom, and won't bother to look for an actual email from you or anyone else. Look earnest, sell it to Ms.or Mr. HR with a humble brag about the amazing depth of your professional network (hell, everyone loves you anyway, so it shouldn't be a tough sell), and get that extra money next pay cycle. Score! The lesson: snooze and lose - if the referring party isn't fast enough to get their ass out of the Aeron chair and haul to HR to make their claim, lulz too bads.

Note that this will not always work. Sometimes, HR will have an email from an actual referring employee, so you're out of luck. Look innocent, quickly excuse yourself, and try again next time.


Closing commentary
This kind of behavior really irritates the hell out of me. Over the last few years I've experienced or observed this behavior from aggressive "A-player" startup people, and my love for humanity decreased a few centimeters each time. Stealing coffee? Really? Intercepting referral bonuses? Really??

The bottom line is that this is selfish, rude, anti-social behavior, and these people aren't "A-types". They're just jerks.  I'm all for "don't ask permission, ask forgiveness" in the creative context for which it was intended, not in the social context where you end up "pwning" the people around you.

This behavior sucks. In fact, these "hacks" should be included in a collection that could be called  "How To Be An Asshole", because the people who've done this crap are.. well, you know.

Are these experiences anecdotal examples of individual jerks, or are they examples of symptoms of a deeper problem in our society where rude, selfish behavior is increasingly becoming the accepted standard?

Monday, February 20, 2012

Music review

I finally put in my order for new music software (and a few bits of hardware) from my local music gear shop. It's been a long time coming - my last music project dates back to around 2004 or so.

This is exciting! Music software & hardware have come a long way since then, and my last composing & recording rig dated back to mid-90s synthesizers and software.  Some of the new stuff I'm getting is way, way cool.

But the specifics of gear is not what I want to talk about right now.

This whole gear-purchasing spasm really came about as I've been thinking about music ideas for the last two years or so, especially applying my recent experiences in engineering & product to music composition.  In effect, I've had music rattling around my head for a while now, and it's becoming impossible not to compose and record (as a hobby, and not with aspirations of quitting my day-job. I like my day-job, thanks very much).

I've also been listening to my previous catalog of work & critiquing it, asking myself "What works? What doesn't? What keeps my interest? What moves me to abject ennui? What's too long? What's too short? What takes forEVer to get to the point? Have I engaged the listener? Have I kept their interest? Do I surprise them or delight them or challenge them?"

Specifically, I've been listening to my 2000 effort "Tonecluster" this week, since that was a project in which I was experimenting with space, a limited number of textures, and trying for specific moods. I wanted to hear what worked from a technical perspective, and what my efforts at "slimming down the sound" were like 12 years later.

Some pieces really work for what I intended; some don't, and some are great little experiments that I might never try again, but at the time were real reaches (for me).

Anyway, after listening to this album a few times over the last couple of weeks, I've decided I'm confidently in the "less is more" camp, and will be purchasing the minimum number of virtual instruments necessary to create another album of music that I have boinging (and fizzing and banging and thumping) around my noggin'. And, since 2004, I've sold or given away a crapton of music gear, so I'm left with four different real synthesizers ranging from vintage to modern.

You can hear this old music for yourself, at this link. (You can also download the music, for free, which I encourage if you find you like it enough to add it to your collection).

What will the new music sound like? Heck if I know. I'm all over the place, with ideas for loud rock tumbling around with separate ideas for textures & beats you'd find in a Chillout session.  I will probably end up with a non-genre-specific project (and since genres are arbitrary rubrics anyway why the hell not?),  which is frankly more fun for me anyway. I get to be rust-never-sleeps loud when it suits me, and Tosca-like chilled when it suits me otherwise.

Friday, January 27, 2012

Music on vinyl making a comeback

Old turntable and LP.
(jazzology.blogspot.com)
I've known about the increase of music-industry vinyl sales for few months now, and when I heard about it I was pleasantly surprised.

Not long after I'd heard that sales of music on vinyl were up over the previous year, I was in a conversation about music with some folks at our local bar.

So the kid says to me, "Hey, there's this new thing, it's music on vinyl, like a big disc. You need a special device to hear it, kind of like a DJ turntable. You should check it out, you like music".

Now, either he thinks I'm really young (oh, bless him the little scoundrel), or he's unaware that vinyl pre-dates the recent LP release by Vampire Weekend. I suspect it's the latter, though I'd be happy with the former.

Yes, Virginia, I know what vinyl is.

Tubes.
My first amplifier was my father's hand-me-down Fisher tube amplifier (which started with a primer button - you kept it pressed until the tubes were properly lit). The turntable was some used thing I picked up at the local used-stereo-equipment store (we had those back then), and I'd buy records from the stacks at our local used-record-store (we had those back then).   There was nothing like lying on the floor, album sleeve in hand, reading the back cover. Back then we listened to music. We'd just be there, and listen.

Even when the Walkman cassette players were ubiquitous, we'd still find time to listen to great music. As we were able to buy better gear, the old used stereo rigs were replaced with better-quality amps, speakers, receivers, and so on.  Quality music and listening for the enjoyment of listening hadn't yet been replaced by the convenience of portable, lower-quality music and the use of music simply as a background, a soundtrack, to our (increasingly frenetic) lives.

I'm glad to see vinyl making a comeback. The quality of the LPs are better now then they were at the end of the LP-era; they're thicker, heavier, with deeper grooves.  The quality of music from the big black disc should be high, provided you're using an analog signal chain (whether tube or solid-state) or a digital signal chain containing an excellent DAC (digital-analog-converter).  The LP master (for manufacturing) is probably cut from a 24-bit, 96k sample-rate studio master (or better, if you're artist's producer had the foresight to record at 24/192). In some cases the original may be 16/48k (16 bit, 48k sample rate), but that's still better quality on analog vinyl than you'll get from an mp3.  These days, 24/96 in the music studio is common, so what you're hearing via vinyl is much better than you'll get either on CD (16/44.1) or mp3 (a conveniently small file at the cost of degraded audio quality).

Now, what I really want is a convenient, portable high-quality music I can listen to as the soundtrack for my increasingly frenetic life and an analog system at home with LPs for recreational listening.

Tuesday, September 20, 2011

Good, bad math joke

An infinite number of mathematicians walk into a bar. The first one tells the bartender he wants a beer. The second one says he wants half a beer. The third one says he wants a fourth of a beer. The bartender puts two beers on the bar and says “You guys need to learn your limits.”


Oof.

Sunday, August 28, 2011

Change (again)

Last Thursday, we at Slide (now a part of Google) got word that we were officially shut down, and we'd be moving to other (very interesting) opportunities within Google.  Slide is over, and it's been an interesting and educational run.

Last January, my team was directed to a new project: Photovine. We launched to the public just over a week ago, so one week from launch to dead-pool is about the quickest death of a project I've yet to experience. It was also the best product I've been a part of, and one of the ones about which I'm most proud ("Just Three Words" being the other, outside of a couple of my music projects).

During the time to launch, from January through last week, I had the opportunity to learn how to develop software for the iPhone (iOS, Objective-C), how to be a better engineer in python, and had the opportunity to take what I'd learned from my previous products at Slide and apply them - and so improving overall as an engineer. If any mistakes were to be made, they'd be new mistakes and not repeats of old ones.  ("Tomorrow, make better mistakes". - old sign at old Slide offices)

The Photovine team was comprised of some of the smartest and most talented people I've ever had the good fortune which which to work. To say that it was a collection of creative, smart, hard-working, professional, self-directed and pleasant people would be an understatement.

In the end, we delivered an absolutely fantastic product. Here's what some of the tech writers and bloggers had to say about it during it's short run:

"...and we think it goes without saying Photovine was Google’s best designed piece of software. Period."
"The concept is certainly fun...Definitely worth checking this one out."
" Design-wise it’s beautiful....The community is growing at an exponential rate and there are some seriously clever, interesting and beautiful photos being shared already."
I'm very proud of the work we did on this app. It could have been just another photo-sharing app, but it was most definitely not that - it was a way to discover people via the medium of a topical, shared photograph. The fact that a community sprung up almost immediately around Photovine (within days of launching our restricted-access beta version) does not surprise me.

As an engineer, I had a great time - we went from knowing next to nothing about iPhone development to becoming very proficient in a very short time, and I had the opportunity to work with engineers whose styles and proficiencies in many ways complemented my own. I learned a lot from those guys, and I can only hope that they in turn learned something from me as well.


So now, on to new things. I don't know what these new things are yet - the upcoming weeks are filled with meetings and planning - but I'm certain it will be interesting.   New opportunities, and new possibilities, and although every day offers nearly endless possibilities, at the moment that fact has a clarity of focus that is pretty exciting.

In the meanwhile, I've started up some music projects again. It's been six or seven years since my last music work - you can hear it over at www.jasonrubenstein.com and all of my music is free for download, and free for listening. I'm seeing more and more work being done (and more and more companies started) in the intersection of music and social, and am keeping my eyes open on this one.

And I'm still fiddling around with the website project I started many weeks ago. It's on my personal (non-public) server at home, and now that I'm out of a "OMG we're launching a product" kind of schedule, I'll get back to it.


Saturday, June 25, 2011

How to survive identity theft

Waitasecond. Someone out there is pretending to be me? Attempting to get credit? In my name? Why those dirty bastards!

This, dear readers, is how to prepare for, and deal with, identity theft.


What happened?
Someone, persons unknown to me, pretended to be me in order to attain credit at department stores and buy things. Expensive things. Really expensive things.


How'd they do this, JRub?
They had my name, my SSN, my phone number, and a driver's license with my current address.  They walked into a few really swish department stores and, pretending to be me, tried to buy designer-label goods. Little do they know I'm an Armani or a Zegna kind of man, and clearly not a Ferragamo or a Paul Smith dude. Pfft. Idiots.


How'd they get that info!?
I haven't a clue. I have some guesses, all semi-educated, as to how they might fish up my personal info. But lets leave it at that - they got it, and they used it.


What happened?
Very little. Most credit for this schmuck was denied. And I found about it out so quickly that the door of felonius opportunity slammed shut so fast that the dumb bastard couldn't get away with very much.


How'd you find out?
  • I subscribe to a credit-monitoring service (see below) and received an alert of several credit inquiries against my report.

  • One of the retail stores called me to ask ..."if I still wanted the Ferragamo". I did not; That was not me; I was not in the store that day (or week, or month). This confirmed the credit-monitoring alert that someone was pretending to be me. I got as much information as I could from the store clerk who called me.

  • I received a letter from another retail credit company asking for verification of identity. Again, it wasn't me.

  • Once I knew there was fraud going on, I called each and every credit fraud dept at each business for each incident of which I was made aware by the credit monitoring service. I asked for as much information from them as possible and answered all of their questions. 


How to protect yourself before any fraud occurs. Or: the paranoid, proactive part of the story
Years ago I purchased a subscription to one of those credit-monitoring services. Whenever there is a change of any kind to my credit on any or all of Experian, Equifax, or Trans-Union reports, I receive an email indicating the change and the approximate date of activity.

This, it turns out, was a wise move:
  • Good: I received an email within days of several credit inquiries against my credit history.

  • Bad: Some (but not all) of the reporting was up to 4 days behind the actual credit inquiry event, and two days behind a fraudulent credit event. I'd have liked the notification to have been within hours of every, and not just some, activity, but: a few days at most is better than nothing, or than a month.

  • Summary: GOOD, because I found out that something fishy and illegal was going in within days, and not weeks, of the event(s). I was able to respond very quickly and shut the door of criminal opportunity.
Without this service, I would not have known that some loser was out there lining up credit in my name, using my personal information, as quickly as I did.


What happens when someone steals your identity (Or: the reactive part of the story):
  1. As soon as you get notice from your credit-monitoring service (usually via email, but you can get notices via SMS) that funny business is going on with your credit history, read this: The FTC Guide to Recovery from Identity Theft.

  2. Place a fraud alert on your credit reports at all three agencies.

  3. Place a security freeze on your credit reports at all three agencies.

  4. Immediately, and I do mean immediately, contact the creditors' credit-fraud departments and get the credit lines canceled (or suspended).
    Get as much information as you can from them as possible as to what information the thief had, what they purchased, when, and where. Get the mailing address and email (or fax number) of the credit fraud department, and if they have their own fraud claim form, have them send one to you. You'll need the information you receive from them in later steps, below.

  5. File a police report with your local police. (I walked to my local police station with all the paperwork I needed, organized, and prepared. The officer was very helpful: I made his job easy and he went the extra mile for me).

  6. File an FTC Identity-theft complaint form. You can use this to help get the fraudulent credit canceled by the creditors as well as removed from the credit agencies' reports. This is where you'll need the information you asked for from the credit fraud department (above).

  7. Send a copy of the FTC form, and any police reports if available (you should at least have the report or case number) to the creditors' fraud claims department. Send it via fax, email, and regular mail. If the fraud department(s) have their own form, of course fill that out and return it as well.

  8. Contest any fraudulent credit reporting with each credit bureau. You may need to send them copies of the reports as well.

  9. Don't let up until the fraud has been removed from your credit reports, and you're not responsible for paying anything. Not one thin dime. Keep contesting the credit report, and keep at it.

  10. Watch your mail over the coming months. You may receive a bill for credit you've never asked for, or a letter requesting clarification of identity, or a bill for some new service, or a collections notice. This is indication of additional fraud the credit monitor may not have picked up or been alerted to, and you'll need to act.
In summary: Do not fuck around. Act, and act immediately. Show the world (and the would-be creditors, and the credit bureaus) that you are like-a-goddam-heart-attack serious.


WTF are these credit bureau or credit agency things you're talking about, Mr. Rubble?
If you don't know what a credit bureau is, and you're in the U.S., read this: http://en.wikipedia.org/wiki/Credit_bureau#United_States


Can't I get a free copy of my credit report?
Why yes; yes, you can. Read here for more info:


What else can I do to prevent loss, web identity theft, hacking, or other financial damage?
Here are some general tips that can help you reduce the probability of significant financial loss.
  1. Register with a credit-monitoring service that covers all three major bureaus, or with the credit-monitoring service of one (or all) of the credit bureaus.

  2. If the monitoring service alerts you to activity that you did not initiate, act immediately. (see above)

  3. Use complex passwords for every website you use.
    • a simple password is one that reads like a real language or sequence: examples are "fluffy", "fido", "123 Main Street", "123456789", "1020304050" or even keyboard patterns that are easily guessed like "1q2w3e", "qwerty", "asdfgh", and so on. Also, any proper name like "Chicago", "Dixon", "Sacramento", "OMalley", "Goldberg", "Lee", "Twilight", "Harry Potter", "Serenity".   Do Not Use These.

    • a complex password is a password made up of a wild mix of UPPERCASE letters, lowercase letters, digits, and if possible symbols ("@#$%&_.").  A great example of a complex password looks nothing like a real language: for example "nj2.TXd5", "A7&M20vkL", or "788$jK6b00Y4H!".

  4. Never, ever, ever, ever, ever use the same password at more than one website.

  5. No, really, I'm not kidding. Re-read that until you are ready to puke potted-violets. Never, and I mean never, use the same password twice. Don't complain to me about how hard it is to remember crazy complicated passwords all over the place! This is YOUR bank account / IRA / 401k / Level 85 Night Elf Warrior. Not mine. I'm just trying to give some reasonable advice here. Use unique passwords.

  6. If possible, for banks and other sites that have access to your money (whether cash or credit), use the longest password possible. If you like, use a password manager. Some of my passwords are 32-characters long. No kidding. And they look like a someone left a box of Alpha-Bits on a live land-mine.

  7. And, whenever possible, use different user names (login IDs, whatever you want to call it). Some sites restrict you to using your email address  ("johndoe@some-email.com"), but if you can use different ones for different sites, go for it: "john.doe", jdoe1975, johnqdoe, johndough, and so on.

  8. Shred any documents at home before tossing them into the recycling bin.  (Hey, look! Shredders!) Believe it or not, some people like to dive into the dumpster behind your apartment building and look for documents that contain personal information. Yes, I know: these people are losers. But rather that sit there and psychoanalyze these jerks, instead do yourself a favor and buy a shredder.

  9. Go through your email and delete any email that has a password from a website in it. On the odd, but possible, chance your email is compromised, at least the thief won't be able to get to any other accounts whose credentials are lurking in your email. Make sure you "Empty the trash" of your email service, if possible. 
There are probably more things you can do to protect your credit and your assets. This is  a good start. 

There is no such thing as perfect security. But remember: "Perfect is the enemy of Good". These steps should reduce the probability that your online identity will be compromised.

Sunday, May 22, 2011

Finally, a new project

I'm finally working on a new personal website.

It will be jasonrubenstein.com.

I haven't worked on a personal project of any kind in a few years. I haven't had the interest, really, but in the last few weeks something has been nagging at me. I needed to build something because NOT building anything was Driving. Me. Nuts.

So, a new personal website, my little "ME!" on the interwebs.

I'll have my music up there, and some words made into sentences corralled into paragraphs, and some photos, and some other things.

Yesterday morning, after the rolling up of sleeves and the brewing and drinking of coffee, I dove into hand-coding html and css to create a basic prototype of the design I have in mind. The design is minimalist, with at most three fonts (two sans-serif and one serif). Much like in music, where what is between the notes is as important (and sometimes more important) than the collected notes, what's not in space is as important (and sometimes more important) than what is collected in other parts of the space. I'm keeping this in mind as I go.

Back to yesterday: once I had a working prototype of a webpage, I shattered it into several pieces.

Those pieces became the building-blocks for several web pages.

Once I had the pieces of the shattered webpage, I jumped into python and built a little webpage-builder function that consumes shards of  shattered prototype-webpage and produces several new, different, webpages.  This little, and simple, html rendering engine builds the pages for my new website.

Once I turned the webpage-shards into proper webpages, I used a couple of open-source packages to set up a webserver. Using Greenhouse and Feather, I set up a little server in the comfort of my own home. (The future! It is here!)

I made a deliberate and certain decision to eschew the use of a templating engine (Cheetah, Mako, etc). I'm having more fun writing my own rendering functions.  I'm not using a framework because, well, what fun would that be? That and I'm not framing a subdivision of houses, I'm building a little mid-century-modern joint with big windows and Helvetica.

I may use jQuery or some other javascript library, but at the moment have no need for one.

I'm shooting for simple.

I decided against more commonly used http server solutions as I want to work with a newer open-source package and help work out the kinks in whatever way I can.

Yesterday, from 7am through 7pm, was really, exceptionally, fun.

I've been experimenting with fonts with the intention of beautiful web typography. I love typography and clean, minimalist design, and I'm going to see if I can get what's in my imagination out onto the screen.

I'm learning different things than I learn at work, and remembering things I have forgotten I knew. (Or at least I've forgotten that I remembered how to do some of this stuff a few years ago but in the meantime of non-use had forgotten to remember it, or simply forgot it, and now have remembered where I put some of this knowledge).

This project is going to take a while. I have a few pages of content to work through followed by wrestling some css into submission. Not to mention some spit&polish of the http server, the image server, and deciding from where the hell to serve the mp3 files of music.

But since I have an addiction to shipping product, this thing will be live relatively soon.

The most important thing, the thing that is most important, the point that makes the point is: I'm finally, Finally, finally working on a project for the love of working on, and shipping, a project. I want to learn, hands-on,  how servers along the lines of Greenhouse and Eventlet really work, and how something like Feather or Spawning really work. I want to hack at css to make pretty san-serif to happen on my computer screen, even though the problem has been solved 132,619 times already.

So, I'm doing this because not doing it was becoming impossible. Well, and the vanity of my name on a live website that's all about me.

Vanity might have a little to do with this.

Update: At lunch, a friend asked me if I thought I was over-engineering a solution for a very simple project (a static website). Yes, I am! The website is the macguffin , the thing that gives me the reason to go on this journey of coding. I could just set up nginx and serve html and be done with it. But that's not the point to me; the point to me, right now, is rolling up my sleeves and playing with some tech.   Next round, I'll work on something that solves a real problem.  This round, the problem I want to solve is personal, and not technical.

Monday, March 21, 2011

"What qualities make a good startup engineer?"

My answer on Quora.com to the question "What qualities make a good startup engineer?" (originally written on Quora and copied below):

1. The ability to "get s*** done. This is too vague a description for an attribute, so: The ability to recognize a "best fit" solution to a particular (product) problem or requirement and implement it as quickly as possible, also recognizing that the best solution for the product **right now** may mean acquiring some technical dept to be paid later. Another way to say it is the ability to ship as quickly as possible probably without adherence to some engineering dogma. Ship! 

1a. Very important: knowing when to pay off technical debt. It can be more of an art than a science, and at times it's blatantly obvious; I'm not sure whether this is an acquired or a native skill, but it's important. 

1b. Love your own code, and love to rewrite your own code. Don't be precious with it. Your code is not you, you are not your code. Rewriting your own work is a perk of the job, not a chore. 

2. The ability to learn very quickly. I believe this implies some (high) level of intellectual curiosity, as the best learners (in my experience) are also very intellectually curious. This doesn't just mean learning new-to-them engineering knowledge, but also new-to-them people/management/social/etc. knowledge. 

3. The ability to suspend the behavior most commonly associated with jerks, a**h***s and know-it-all software engineers. Also, see #2, as a part of working in groups is learning how to work in groups as a civilized person and not akin to a chimpanzee throwing your poo at people you think are idiots. This is especially important (it seems) for extremely intelligent engineers accustomed to being the smartest person in the room in most other situations. 

4. Related to #3 is learning to trust the other people in your startup, and trusting that they are just as smart (and in some areas of expertise, smarter) than you. Trust that the people around you are fantastic. And learn from as many of them as possible. 

5. Also related to #2 is learning very quickly how to handle stress. I must put the emphasis here on learning what shifts in behavior and habit will get you through it all over purely cognitive solutions. Changing diet, getting enough sleep (where "enough" is relative, but learning when "enough" is enough if you get my meaning), and other changes in lifestyle are what I'm suggesting (among others). It's one thing to convince yourself that you're handling the stress, it's another to actively take action to counteract the effects of stress. Pro-tip: breakfast cereal at every meal and 3 hours of sleep per night only get you so far - probably to MVP. After that, you're in a marathon; learn to run a marathon. I'm not suggesting a "work/life" balance. I'm suggesting a "work/recharge-for-more-work" balance. 

6. Experience. If possible. If not, see #2. 

7. Somewhat related to #6 is knowing what tools to use in your trade. For example, knowing when something is more appropriate to use (I.e., well-established, broad base of support, very active and numerous community) vs. when some new, hot, (probably fashionable) new technology is at least not entirely inappropriate (brand new, not proven to scale, but so very very cool new tech) but probably inappropriate for the immediate task at hand. And vice-versa - when it is OK to use some yet-to-be-annealed-in-the-furnace-of-a-quickly-growing-product-of-a-successful-startup technology.

8. Honesty, personal responsibility. I've seen otherwise honest engineers show their compulsive-liar side when put under extreme pressure (usually after very little sleep), or called-to-task for some error of judgement. Stand up, admit mistakes, and see #2 as usual. Learn from the error

Monday, February 21, 2011

Avoiding Burnout

Sure, all-nighters can be fun once in a while. And 16-to-20-hour-days can be very rewarding when you're starting your own company or working at one about which you're excited. But no one, even you the 20-something hyperactive borderline-ADD super-evil-genius engineer, can keep it up for weeks on end and remain effective.  Beware burn-out!

How do I know?
The Mayo Clinic advises the following as possible signs of burn-out:

  • Have you become cynical or critical at work?
  • Do you drag yourself to work and have trouble getting started once you arrive?
  • Have you become irritable or impatient with co-workers, customers or clients?
  • Do you lack the energy to be consistently productive?
  • Do you lack satisfaction from your achievements?
  • Do you feel disillusioned about your job?
  • Are you using food, drugs or alcohol to feel better or to simply not feel?
  • Have your sleep habits or appetite changed?
  • Are you troubled by unexplained headaches, backaches or other physical complaints?


Advice for the Engineer
Learn to run a marathon, not a sprint. Learn how much sleep you need every night to perform at a consistently high level for many years. Consider vacation a part of your compensation; the way you consider a paycheck. (Would you really want your boss withholding a paycheck because "it just isn't a good time right now"?)  Learn when you need to recharge your batteries, and go away and recharge them.

Live, sleep and eat in such a way as to maximize your cognitive abilities.

Find something away from work on which to focus. Whether it's the gym, cooking, riding a bicycle, reading.. whatever, as long as it isn't coding. Do this thing most days of the week.

Find a manager you trust, and trust your co-workers to carry the load while you're away. If you can't trust them, find some to trust.

When you're working - work. Focus, concentrate, pay attention, do your absolute best. The same goes for when you're not working: when you're asleep, your job is to sleep. Focus on that and don't worry about work. Divide your time into highly-focused, separate cycles. When you're not working, focus on not working.

Find the number of productive hours per day that works for you. I bet it's many more than 8 and less than 18. How many of those hours are ones in which you're working on difficult problems that require highly-focused cognition, and how many are those in which you're only good for answering emails, perusing CSS, tuning documentation, or catching up on Hacker News? And at what point are you a useless, over-caffeinated lump in a hoodie, only useful for converting O2 into CO2? Figure out what works for you.

It's more fun to be pleasant, happy, and fun to be around! Being a cranky, burned-out curmudgeon sucks, for you and for people around you. If you see someone who's work habits are leading them to a crispy end, try to mentor them a bit into a better work cycle:

Take responsibility for your people. Work on lowering the probability that someone will burn-out. If you see someone who's burned out (and they report to you), get them out of the office and in a vacation. It's either that or work them until they quit - or get fired. 

If your employees (or subordinates) are not important to you, and if the intellectual property in their heads is not valuable to you, by all means work them to the bitter-end, until they quit.  

If you care about your company and want to keep talented, very-hard-working engineers in your employ, help them prevent burning-out and make sure they take vacation (as a manager, you should worry that your best and/or most enthusiastic engineers won't take vacation at all rather than worry they'll take too much). Assist them in their "work-life" balance. For many engineers, work is their life and their life is their work; instead, you may need to assist them in their "work-recharge" balance.

Take responsibility for yourself; if you start to feel edge, cranky, cognitively dull, stressed and unable to sleep you may need to get away. Better yet is to plan vacations months in advance, and make them indelible in your calendar. Be proactive with your "recharge" time. Take responsibility for it; it's best to be the engineer your manager never has to watch for signs of burn-out because you've already preempted the possibility.