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.”


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:

    What to do if your identity is stolen

  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.