Turn to Your Left at the End of the Sky

Which Ruby on Rails Gem/Plugin to Use

The following gems and plugins are the most popular as of Nov 12th, 2008:

  • Javascript Framework: jQuery (56%), Prototype (43%)
  • Skeleton: Bort
  • Mocking: Mocha
  • Exception Notification: Hoptoad
  • Full text search: Thinking Sphinx
  • Uploading: Paperclip
  • User authentication: Restful_authentication (keep an eye on Authlogic)
  • HTML/XML Parsing: Hpricot
Advertisements

February 7, 2009 Posted by | Computers & Internet, Engineering, Ruby on Rails, Technology | , , , , , , , , , , , | Leave a comment

Linux for the masses

Every now and then it is forcefully driven home to me that Linux is not yet ready for mass adoption. I have been trying to set up my back / forward mouse buttons on Feisty Fawn. There is no reason why this should be difficult but the official instructions are alarmingly non-deterministic! Exhortations to “experiment” are just plain annoying. Plug and Play (TM) might not be perfect but it gets the job done most of the time.

July 1, 2008 Posted by | Computers & Internet, Engineering, Internet, Technology, Thoughts | , , , , | 5 Comments

A Recovering Programmer

I was once a respected coder. But for 5 years I’d designed ASIC’s using Verilog (where everything happens at once) and then for 5 years I’d turned to business. And it all changes in a decade. I’d let my skills lapse and in the interim C++ had morphed to Java and then suddenly CPU’s got really fast and scripting was back in vogue. 

I realized that my CS undergrad was quickly becoming worthless. Web programming was a complete mystery to me. (Whether that was really a problem is a philosophical question beyond the scope of a humble blog entry). Here is my road to recovery. In bullet point form amenable to PowerPoint and as buzzword compliant as possible.

Jan 1st, 2008: Resolve to brush up on programming skills.

Which language should I learn? Web development seems cool….what’s involved in that? Narrowed it down to a) the LAMP stack or b) Ruby on Rails. Do I want to be a) paid as a programmer or b) hip ?

I went with Hip. Rails it is.

Here are the steps (and mistakes) I took on the road to recovery:

  1. Linux – I remember that: “ls -al” and all that. It’s the sine qua non for a real programmer.
  2. F@(k. That’s a lot of variants of Linux. Go with Ubuntu because I’m semi-African.
  3. Hmm… Windows XP is standard issue at work.
  4. Get an old PC from my IT guy. Spend an entire day installing Ubuntu. Realize I’m now a web programmer so start again and install the server version. What the hell? What’s involved with web programming anyway. Will I be writing the client or the server?
  5. Call college roommate who is on “tiger team” at Yahoo. He says: “Buy Pickaxe“. Sold. In a flash of environmental sympathy I buy the PDF version. It also saves $10. Print it out on corporate printer. Double sided to save the environment.
  6. Need the Rails part: Buy “Agile Web Development with Rails“. We invested in an Agile software company so “agility” must be good.
  7. Start reading. In the interest of time and an anxiety to see the global greeting I dispense with Linux and deploy InstantRails on Windows –> Instant gratification. (Nice to see those programmer types have dropped their antipathy towards Microsoft. I’m a web programmer. Even if it’s only on localhost. (Wow: It’s only February and I could compete with Amazon if I wanted to and if I knew where to buy all the books for my bookstore)
  8. I have a bookstore up and running. No one can see it. That’s ok….how hard can deployment be.
  9. March. Deploytment is hard. People don’t recommend Windows. Could I be the only person writing Ruby code in a Rails environment on Windows XP. Seems to be from my google searches.
  10. Let’s reinstall Ubuntu Linux.
  11. Install ruby gems. Rinse. Repeat. Rinse. Repeat. Check dependencies. Rinse Repeat. Rinse. Repeat.
  12. Install MySQL. (It’s nice that I don’t need to think too much about the database. Seems like something business people should concern themselves with).
  13. Stuff is working. Slow as all hell on this ancient PC but what the hell. People will wait for the page to load.
  14. Becoming a problem that I can only work on my hobby at work. Can’t afford another PC at home.
  15. VMware to the rescue. Downloading an Ubuntu VM on my home PC is a cinch. And hip. Which is important.
  16. Realize I need a real hosting service. (Weeks of agonizing research). Settle on Dreamhost. (I love those guys!)
  17. Deploy app. Hmmm…this is a f@(k1ng nightmare!
  18. Passenger (mod_rails) is released a few days later. I realize I’m back on the cutting edge. Deployment is now piss easy.
  19. www.assetcorrelation.com (Live as of June 1st, 2008 — 5 months start to finish)
  20. Start to harass Google to show me some organic search love.

It’s been a wild ride. And not as hard as I thought. In the end, we return to the beginning. I still hate writing test benches. Hacking is still fun. And not having deadlines is the way to go. 🙂

June 25, 2008 Posted by | Computers & Internet, Engineering, Internet, Ruby on Rails, Technology | , , , , , , , , | Leave a comment

Enabling Skype HD Video

To enable 640×480 video in Skype (instead of the usual 320×240 resolution), add the following lines to the config.xml file in the Skype user directory

<Video>
    <CaptureHeight>480</CaptureHeight>
    <CaptureWidth>640</CaptureWidth>
    <Fps>30</Fps>
</Video> 

There will probably already be a <Video> … </Video> section in the file so just add the middle three lines in that section.

The config.xml file is typically located in:

c:\users\<win_username>\AppData\Roaming\Skype\<skype_username>

Note: The “AppData” folder is a hidden folder so you’ll have to search for it. Either that, or just make all the folders in c:\users\<win_username> visible.

I’m running Windows Vista 64-bit so your location might be different. (If you do have the location for a different OS please leave a comment and I’ll update the post). If you enable “Display technical call info during calls” under Skype->Options->Advanced->Connection, you will be able to monitor the resolution and frame rate. (Hover your mouse over the main Skype tab and a yellow box will pop up with all the technical Skype data, including frames per second, transfer and receive resolution. This is useful for testing whether you are indeed sending the higher resolution image.)

Also, make sure you have the latest Logitech webcam driver installed. You don’t need the Logitech app, just the driver. I use the Logitech Quickcam Ultra Vision  and the image quality is very good.

Skype has gone to great lengths to differentiate this “hack” from their HQ (high quality) video (which requires Skype-endorsed webcams) but I think the difference is marginal if you have decent hardware and bandwidth. It appears that as of Skype 3.8 you will no longer see the usual HQ Video logo but you will still be transmitting video at the higher resolution. Your frame rate might take a slight hit depending on your uplink bandwidth. 

(As an aside: I highly recommend not upgrading to the current Skype 4.0 beta)

May 24, 2008 Posted by | Computers & Internet, Engineering, Technology | , , , , | 8 Comments

The Popularity of Programming Languages

The Tiobe Programming Index gives an indication of the popularity of programming languages. I’m pleased to see that Ruby (and consequently Ruby on Rails) continues to move up the rankings. I guess I’m going to have to learn Java at some point.

May 8, 2008 Posted by | Engineering, Ruby on Rails, Technology | , , , , | Leave a comment

Why Engineers Are Not Wealthy

I am an engineer at heart. Now, however, I work in the world of finance. I once asked why engineers in start up companies earn so little despite creating so much of the value. My partner’s answer was disturbing. Engineers, he said, want credit for being smart and that’s what we give them. Everyone else wants money, and that’s what they get.

I have another theory too. I have observed that engineers in private companies often have no idea how much of a company they own. They know how many stock options they have, but they have never thought to ask how many shares there are in the company. I once encouraged an engineer to ask the HR manager what fraction of the company she was being granted with her options. She was told that that information isn’t typically divulged and was advised to treat her options like a lottery ticket. I haven’t bought a lottery ticket recently but I understand that they’re only worth a dollar or so!

If you work for a private company, here’s how you can estimate the economic value of your stock options.

First, you need to answer the following questions (ask your friendly CFO for the answers):

  1. How many shares are outstanding
  2. What was the share price of the last financing
  3. How much common stock is outstanding
  4. How much preference there is in the company and if there is any multiple
  5. Whether the preference has participation.

Ideally, all this information is contained in a one page document called the “cap table” but the company probably won’t just hand it over to you.

What you really want to know is how much preference there is ahead of you. Basically, it works as follows:

Assume there have been 3 financings, series A, B and C. Those 3 financings are all preferred stock and will get paid out before any of the common stock (which is your options). So, as an example, let’s assume that the following financing’s happened:

A: $ 8M
B: $11M
C: $16M

The total is $35M. This is the preference which is “ahead of your options”. Thus, if the company is sold for $50M, the investors in Series A, B, C will first be paid out their $35M and then the remaining $15M will be split amongst the common stock. This is why you need to know what percentage you are of the common stock. Typical %’s of the total stock are

  • CEO: 6-8%
  • VP: 1-2%
  • Dir: 0.5 – 1%
  • Eng: 0.2-0.5%

Sometimes, though, the investments are structured with what is called a “multiple” (1.5x, 2x etc). For instance, a 2x multiple on all 3 rounds of investment would mean that there is actually $70M ahead of you, in which case, the company will have to be sold for $70M before the common stock will start to get paid out since the investors will first get double their money before any of the management team and employees get anything.

The other term often specified is something called “participation”. If the preferred stock has full participation, then, (assuming the 2x multiple) after the first $70M is paid out to the investors, what is remaining is then split between the common stock as well as the preferred stock.

If you’ve read this far and know engineers in a private company who can’t answer the question: “How much will you make if your company is sold for $150M?” then please refer them to this article. There’s no need to unionize. But there is a need to demand information.

November 10, 2006 Posted by | Engineering, Investing | 2 Comments

Management Fees Kill

If you don’t believe that high management fees represent a massive transfer of wealth from the public to the investment bankers who charge the fees then consider the following: You leave college at the age of 21 with a hard-earned engineering degree and your head full of Maxwell’s equations, the Church-Turing thesis and Graham’s Law of Diffusion. Your starting salary is $75,000 per year, grows with inflation, and you dutifully save 5% each year until you retire at the age of 65. By the age of 78 you will have $1,500,000 if you invest in mutual funds which return 7% (a conservative, long-term equity return) and charge you a fee of 2%.

If, instead, you bought a low-cost index fund which returned an identical 7% but only levied an annual fee of 0.2%, you would have $3,000,000 at the age of 78. And your mutual fund manager’s trust fund kid wouldn’t be driving past you in a Ferrari.

September 11, 2006 Posted by | Engineering, Investing | 10 Comments