Apr 14 2009

Juixe Tweetbox 0.1

Twitter Clients
Writing a Twitter client has become the new Hello, World! There are Twitter libraries in just about every major language such as PHP, Ruby, ActionScript, Python, Java, and more. The Twitter API is simple enough that you don’t need much, you can go a long way with the command line and curl.

As Twitter popularity grows so does the number of Twitter applications. On the iPhone I have tried three of them and on the desktop one. But with all the growth and creativity surrounding Twitter the desktop are essentially all clones of the official Twitter web interface.

To amend for the huge gap in what Twitter client do and what I think they can do in terms of missing features I have thrown my developer hat into the ring. There is a virtual arms race as startups rush to develop Twitter desktop clients. To add fuel to the fire, a few days ago a new Twitter desktop client was announced.

Tweetbox
Tweetbox, released under pre-beta, is my hello, world twitter client. Tweetbox is written mostly in JavaScript and jQuery with a PHP back end that acts as a Proxy to Twitter. Tweetbox also uses Google Gears for added functionality and desktop interactivity. As of the current release of Tweetbox, version 0.1, the key features is the ability to have multiple Twitter accounts. I currently have a huge laundry list of features to complete, including UI plastic surgery, adding support for timelines, retweets, and replies.

I do hope that in the near future Tweetbox will hit the sweet spot for some users. An ultimate goal is to allow extension points to allow for plugins.


Apr 14 2009

Social Protocols

The anatomy of a Twitter status update, at just 144 characters, makes it so easy to manipulate, store, process, and parse. The at replies feature in Twitter makes it a two-way communication medium. The hashtags adds context to the million of tweets running through the system. And the millions of users are finding new and dynamic ways to interact with the system. Twitter is like a web version of the walkie-talkie, some might say that it is the web version of a party line. All of the simplicity, momentum, and openness makes Twitter an interesting platform to play with and develop new social protocols.

There are a growing number of applications that are built on top of the Twitter platform. The first incarnation of Twitter apps piggybacked on your Twitter credentials, including your username and password. These applications include Twitpics, StockTwits, and Twittervision. This is an insecure method authentication and Twitter has announced their plans to move to OAuth

Personally, I think there is a more organic and interesting way to interact with users on Twitter that is just gaining traction and that is via the at replies. Innovative and non-intrusive applications are using the at replies and hashtags as a social protocol. For example if you at reply wefollow with three hashtags it will index you on their Twitter directory under those tags as categories. At reply Mahalo Answers with your questions and they will reply back with an answer. You can also have your tweets read out loud on an audio stream when you at reply a message to No Agenda Stream. Send an at reply Ruby programming language expression to rubx will reply back to you the output value of that expression after the run it through a Ruby parser. All of this is done automatically and programmaticly.

If you want to get started writing your first Twitter application, here is a tutorial that will help you get started with the Twitter Ruby Gem.


Apr 4 2009

The Rubyist: March 2009 Edition

Here is a recap of the top Ruby-related links for the month of March 2009. Links for The Rubyist are provided by A Rubyist Railstastic Adventure, a tumblelog.

Ruby

Rails


Apr 3 2009

Retweets March 2009

From time to time I just blast tweets about software development, project planning, team dynamics, or whatever else comes to mind. Here is a synopsis of recent tweets and rants. You can follow my tweets at techknow, say hello and I’ll be sure to friend back!

Programming

  • Don’t be a one track mind, and don’t be a one stack developer!
  • If a picture is worth one thousand words, a running and working application is worth one thousand specifications!
  • In software development there are more people issues than there are issues with specifications or features or code.
  • Can we use the internal defect tracking software to enter a bug issue on people that bug you?
  • Sophisticated does not need to be complicated.
  • Nerds don’t dance, they programmatically move their limbs in unison.
  • Writing blocks of code and upgrading your whole library dependency is rarely a practical solution that clients are willing to pay for.
  • Will Code for Happiness!
  • I don’t make itineraries, I use public map APIs and RSS feeds and make apps that make travel itineraries for me!
  • Throwing money at a problem only cause other type of problems.
  • Instead of counting backwards, a good sobriety test for a nerd is to recite the Fibonacci sequence or prime numbers or powers of two.
  • Numbers don’t lie, but they omit how they where gathered, analyzed, and crunched.
  • There is no better code than the one I am currently working on, and their is no worst code than the one I wrote a year++ ago.
  • Can’t sleep so I’m hacking memories into dreams, counting tweets instead of sheeps, drinking tequila instead of warm milk.
  • Do you think in a procedural, object oriented, tail recursive, domain specific, prototype, meta, functional or parallel quicksort of way?
  • There is no I in TEAM especially when there is blame to pass around. Sometimes blame get passed around more than the ball.
  • In problem solving some people also prematurely optimize and over think the problem at hand by introducing another problem.
  • Some people have Personal Assistant, I need a Personal Programmer.
  • Some drop bombs, others drop beats, some drop bunker buster knowledge, many more drop opinions, I drop bytecode!
  • In temperate and sunny days like these I develop an allergic reaction to my cube.
  • Textbook answers alone are not solutions. Chanting ‘Interface Singleton Builder pattern’ in meetings does not fix all your design issues.
  • Booksmart peeps give you text book answers, but I’ve never needed to know when two trains arrive in Toledo if the leave opposite directions.
  • Writing a twitter client is the new hello, world!

Business

  • Google New Customer Service Motto: Don’t Be Evil and Don’t Be Available!
  • Google has mapped the streets, oceans, earth, heavens. What will Google map next, the brain, underworld, middle earth?
  • Why doesn’t the iPhone have a good way to delete multiple pictures at once? Am I to wait two years for this just like cut and paste!
  • Can I put a restraining order out on Adobe Acrobat, it always pops up and asked if I want to upgrade! NO LEAVE ME ALONE!
  • Wowza, still downloading more Kindle books on my iPhone. This makes my digital library even more accessible.
  • I should pitch a nre series to ABC, Dancing with the Nerds.
  • Odwalla’s Superfood is the veggie version of the hot dog in a green liquid form, it is mechanically separated and blended roots and fruits.
  • What? Mark Zuckerborg is on Twitter? Is that like eating your own dog food and your competitor’s dog food too? Say hello to Mark: @finkd
  • How do you politely handle a coworker coming to your office and talking about his cat? I rather be clawed to death than hear about it again.
  • Customers want answers not theories.
  • Show more interest in your customers than their money.
  • You can’t win every argument just by being right, just as you can’t win market dominance just by having the superior product.
  • It took years, well over a decade, since it’s invention for slice bread to become the greatest thing since.
  • Eventually everyone sells out, if not to the establishment then to the anti-establishment.
  • It is okay to wear multi hats as long as you wear your kick ass army boots.
  • Save or create jobs? I just saved a job by going to work! I need a tax break and a coffee break.
  • Before you can build a better mouse trap, fix your toaster.
  • I’m going to make a Ol’ McDonald style burger and on this burger I’ll have beef, bacon, turkey… EI EI O
  • Best Job Tittle: Aggression Researcher You Stupid Bastard!
  • Just received an email from the recruiting agency my company uses, the had to layoff some staff.
  • Some people hustle for money, I hustle for deals.
  • There are three forms of questioning: conversation, interview, interrogation.
  • My 401K looks like it did during Y2K
  • Blogging is not a business plan.
  • Which do you prefer first, action or planning?
  • Between action or planning I prefer active planning!
  • Don’t let a show stopper actually stop the show! The show must go on! Break an audience member’s leg if you have to!
  • Rules and regulations should not replace common sense.
  • Talking is not communicating, an idea is not a vision, and an opinion is not a sound argument.
  • Don’t compete with those that are trying to help you.

Twitter

  • Twitter fail whale is over weight and over capacity!
  • Twitter is too big to fail! Twitter’s business model should be asking the Obama administration for a bailout?
  • If you don’t have anything nice to say, retweet.
  • There is famous, 15 minute famous, and then there is Twitter famous.
  • If Twitter is poor man’s email, who is the slum dog millionaire’s email?
  • Can’t hardly tell the diff between a twitter and a tweaker.
  • Twitter should allow you to customize the question ‘What re you doing?’ to anything else like ‘Talk to me.’

Mar 15 2009

Smart and Gets Down

When asked about the key traits of new Google hires, Marissa Mayer has repeatably stated the following soundbite: smart and gets things done. This also happens to be title of Joel Spolsky’s book on finding great technical talent.

In Smart and Gets Things Done breaks down how to go about to find, attract, and retain top talent.

A key advice is to be selective, but not just in the people you hire but in how you advertise your job opening. You increase the signal to noise ratio by advertising not in your local Craigslist but on programming sites and forums that attract the sort of developer you are looking for.

To attract top talent, Spolky recommends spending top dollar. Go all out to recruit and impress star programmers. Pick them up in chauffeur cars, put them up in swanky hotels, create a creative atmosphere where people want to work. Every developer in your office should have the no less than two monitors and a Herman MIller Aeron chair. Your office space should ooze kewl, not software sweatshop.

One controversial selection criteria that Spolky advocates is scoring resumes on their English. I tend agree here with Spolky even though I’ve encountered some great programmer that get things done, but just can’t communicate with the rest of the team. Code is not the only form of communication that developer should proficient, written and verbal communication is important in writing specifications, debating designs, cooperating with clients, and ultimately managing other developers.

Another piece of advice handed out by Joel on hiring was to piggy back on other selection process. It helps your selection process if your candidate has proved themselves in other highly competitive situations, like top school, companies, or institutions.

After reading Smart and Gets Things Done, I feel that there is a lot than a soundbite. If I could characterize the traits I like look for in a candidate into a catchy phrase it wouldn’t be so catchy. I tend to seek smart, gets things done, shows passion, and it’s a jerk sort of candidate.

Their is a tight balance of the traits you find important in a candidate and the business needs at hand. Someone that is really smart and get a lot done might just want to rewrite the entire system in Scheme and undermine your management team. To me, ‘gets things done’ means someone that rolls up their sleeves and digs in whether it’s a VBS or bat file or Java program or Python script.

Here are some sample quotes from Smart and Get Things Done:

  • The great software developers, indeed, the best people in every field, are quite simply never on the market. The average great software developer will apply for, total, maybe, four jobs in their entire careers.
  • One good way to snag the great people who are never on the job market is to get them before they even realize there is a job market: when they’re in college.
  • Most programmers aren’t just looking for a gig to pay the rent. They don’t want a “day job”: they want to eel like their work has meaning. They want to identify with their company.
  • Years of experience have taught me that programmers who can communicate their ideas clearly are going to be far, far more effective than programmers who can only really communicate with the compiler.
  • Brilliant programmers who have trouble explaining their ideas just can’t make as much of a contribution.
  • Our company criterion for selective is usually getting into a school or program that accepts less than 30% of its applicants, or working for a company that is known to have a difficult application process, like a whole day of interviews.
  • The entire industry of professional headhunters and recruiters is bizarrely fixated on the simple algorithm of matching candidates to positions by looking for candidates who have the complete list of technology acronyms that the employer happens to be looking for.
  • I always reassure candidates that we are interested in how they go about solving problems, not the actual answers.
  • The Econ 101 manager assumes that everyone is motivated by money, and that the best way to get people to do what you want them to do is to give them financial rewards, and punishments to create incentives.
  • The real trick to management is to make people identify with the goals you’re trying to achieve.

Mar 2 2009

Retweets February 2009

From time to time I just blast tweets about software development, project planning, team dynamics, or whatever else comes to mind. Here is a synopsis of recent tweets and rants.

Programming

  • JavaFX Script is a zig zag cross between Java class system, JavaScript vars, XML declerativeness, Groovy Builders, and Ruby duck typing.
  • JavaFX Script has multiple inheritance and the extends keyword is overloaded to mean implements too.
  • Tread.sleep(UNTIL_TOMORROW)
  • Some software developers don’t know how to develop end-user focused application so they overcompensate and write an enterprise application.
  • One of the pillars of Ruby on Rails is convention over configuration, but it is not always backward compatible.
  • Codepath Uncertainty Principle: Debugging, and often times logging, code can change it’s behavior.
  • Current development meme: Jeff Atwood (@codinghorror) is wrong!
  • Running Find Bugs plugin for Eclipse… An out of memory error occurred, you think it found any bugs?
  • The most recommended fixes from Find Bugs are inefficient obj creation of nums and bools, and !static inner classes, !final static fields
  • I’m a programmer not a short order cook, scrambling bits is not the same as scrambling eggs.
  • The most common bug, next to null pointers and objects, is not escaping special characters from XML, SQL, strings, or expression languages.
  • Autoboxing an object reference to a primitive can cause NullPointerException that are hard to track down.
  • In the zone, in the machine, in the debugger, in the code looking out my window and thinking I rather be outside!
  • There will be blood, there will be bugs.
  • Can’t sleep so i’m hacking memories into dreams, counting tweets instead of sheeps, drinking tequila instead of warm milk.
  • Instead of counting backwards, a good sobriety test for a nerd is to recite the Fibonacci sequence or prime numbers or powers of two.
  • Haven’t seen a version control do a good job of with renaming/moving a file. At best they delete old and add new file without the history.
  • Each dev here wears too many proverbial hats, it often feels like we are a team of one man bands mixing it up with too many cooks.
  • “It’s snowing in NY and server is freezing to death!”

Business

  • Some entrepreneurs don’t know how to bootstrap a profitable business so they fund venture backed corporations.
  • Some productivity metrics seem like modern alchemy and pseudo science for dogmatic middle manager to put in powerpoints slides and charts.
  • I want to do the software startup version of Hell’s Kitchen… you donkey.
  • User Generated Content is one way to have users do work for sub minimum wage/free.
  • If you’re running a web service whose sign up page asks for birthday, you best be prepared to send me a birthday gift.
  • Companies should not require paying customers to sign up or register to use all features of a product or received upgrades.
  • Just because a store is going out of business is no reason for false advertisement.
  • Eventually everyone sells out, if not to the establishment then to the anti-establishment.
  • Will Open Source apps, like Open Office and GIMP, gain more traction in a down market? Will Open Source contribution retract?
  • Asking five questions get you closer to the truth than merely asking one, and yet most people don’t ask questions, they demand answers.
  • You don’t want your boss to speculate that you are dead.
  • Sometimes you have to rethink the problem, other times you have to retool the solution.
  • For the average commuter in our office, working from home can save about $20 (gas, toll, wear & tear, food) and 1.5 hours travel time a day.
  • Companies should get a tax incentive for having employees work from home.
  • Is the bailout a new liquidity event? Some bankers are using the bailout to cash out.

Products

  • The Flip is a point and shoot sort of camcorder.
  • I wish my life would upgrade every year just like iLife.
  • The game Age of Empires or Monopoly should come out with a social media version.
  • Spammers are the terrorist of my inbox. I wish that instead of ‘delete’ the spam GMail provide the option to bomb, rip, shread, incenerate
  • The problem of drawing a great piece of art with the Pulse Smartpen is that if you forget to turn it on you have to draw it all over again.
  • Looking at my iPhone properties, it says I have taken 10,487 pictures.
  • Vista needs to warm up on start up just like my old ’69 skylark, I need to let it run for like 10 minutes before I can get up and going.
  • Wii Fit is brutally honest
  • If Microsoft is the new IBM, then is Google the old Microsoft?
  • Just spoke with Amazon customer support for the nth time, they still don’t got my white Google phone in stock. Been waiting for a month++.
  • Huge food lines at costco, you’ve think it was a soup kitchen…
  • I wish the funnies of my Sunday edition of the local newspaper had a syndication of LOLcatz.
  • Publisher not in Action: If Manning Publications makes available PDF versions of their books, why don’t they have Kindle editions?
  • Why would anybody buy a technical book from the publishers own website when Amazon undersells them anywhere from 15% to 30%?
  • Since when does Amazon charge for a restocking fee?
  • If Apple power adapter cost nearly $80, I don’t think Apple will come out with a sub $300 netbook.
  • Playing Portal, I think I have two more levels to go. It’s very addictive, I want to keep going but I need to teleport to tomorrow.

Interview Obstacle Course

  • Just helped a super senior software engineer how to change the printer ink cartridge. How did this guy get through our vetting process?
  • Maybe the interview/hiring process should include some hands on, live technical trouble shooting obstacle course.
  • How can a self respecting engineer not know how to change the printer ink cartridge, get the coffee machine going, or read a python script?