July 27, 2010
Eric Sink: Slides from my presentation at OSCON 2010
Several folks have asked for a copy of the slides from my talk at OSCON last week, so here they are (PDF, 2 MB). They might be a little hard to follow without the narrative that goes with them. A videotape of the talk will be posted in a week or so.
Thanks to all who attended my presentation. The turnout was great, and folks seemed quite enthusiastic about Veracity.
My apologies to the Prophet and SD developers (one of whom attended my talk) for neglecting to mention them. A silly oversight on my part.
I was especially appreciative of the attendance and expressions of support from several members of the original Subversion development team. Subversion is one of the most successful version control tools ever, and I watched its early development closely enough to develop an admiration for the folks who built it. So it was a very pleasant surprise to find a few "celebrities" in attendance at my session. :-)
July 26, 2010
Bob Walsh (47 Hats): The pain is gone!…
…from calculating what time it is across multiple time zones, thanks EveryTimeZone.com by Amy Hoy and Thomas Fuchs.
Besides being a dead-easy way to figure out what time will work for a Skype conference call with three people in three different time zones, it’s:
a) A very cool HTML5 example pointed out by John Allsopp in Lesson 1 of his SitePoint HTML5 course I’m consuming with lunch, and,
b) An excellent example of how creating “non-product” value can get your product – in this case Freckle Time Tracking – generates huge attention from your target market. Way to go Amy and Thomas!

Just got an online training offer from SitePoint – the awesome Australian IT powerhouse: “The course costs just $9.95 and includes eight lessons containing a mix of videos, mini articles, and exercises, as well as two live Q&A sessions where you can ask questions of John directly. You’ll also gain access to a private forum where you can talk HTML5 all day.”
What convinced me to put aside the time for this and do this was this video – John Allsopp is passionate about HTML5 (and the next course, CSS3) and it comes across. I think that will make this a fun way to further my tech education. Now, how are you keeping up with your fellow developers?
Neil Davidson: Freemium and pulling teeth
From the Wikipedia entry on Guignol (the French equivalent of Punch and Judy). My emphasis:
“When hard times fell on the silk trade during the French Revolution, he [Laurent Mourghet, Guignol’s creator] became a peddler, and in 1797 started to practice dentistry, which in those days was simply the pulling of teeth. The service was free; the money was made from the medicines sold afterward to ease the pain. To attract patients, he started setting up a puppet show in front of his dentist’s chair.”
Dharmesh Shah (OnStartups): Startup Culture Lessons From Mad Men
The following is a guest post by Brian Halligan who is my co-founder and CEO at HubSpot (which means he gets to do most of the really hard work).
I recently did a lecture at a Babson MBA summer class on Entrepreneurial Leadership. I got a lot of questions from students about how and why HubSpot won the Boston Business Journal’s #1 place to work award….hmmm….good question.
At the highest level, we are trying to create a “post-modern culture” (I just came up with that term…too high falutin?). Believe it or not, this post-modern culture was inspired by the TV show Mad Men. The show is set in an advertising company 50 years ago and it pokes fun at corporate culture in that era. For example, almost all of the women in the office are secretaries, many of the married men are sleeping with these secretaries, everyone boozes heavily during work hours, etc. While watching Mad Men, I couldn’t help but wonder what a show might look like 50 years from today that poked fun at current working conditions and company culture. That led us to think a bit about what just didn’t make sense anymore given the realities of the Gen Y worker, broadband in the home, constant connectivity via mobile devices, the modern market for hiring exceptional people, etc.
Here are some of the more interesting features of working life at a post-modern company that have come out of that Mad Men inspired thinking.
1. Vacation Policy = No Policy: In our father’s era where people needed to come to the office to collaborate and do real work, a vacation policy made a lot of sense. The reality is that today I get emails from HubSpotters at all hours of the night and have a steady flow during the weekend. No one asks for vacation credit for being on their iPhone while sitting on the beach on the Cape, so why should they have to ask for permission to take vacation during the week.
2. “We don’t care which 80 hours you work”: In the early days of HubSpot, people used to ask us about working unusual hours or working part of the day at home and Dharmesh and I used to always say, “We don’t care which 80 hours a week you work, so long as you put in your 80.” The reality is that most of us don’t work 80 hours, but you get the idea…
3. Extreme Transparency: Other than salaries, there are few secrets at HubSpot and I wonder whether we should just expose those too. One manifestation of this extreme transparency is on the wiki where I personally write a new wiki article a couple of times a week about what is on my mind about the future of the company, problems I see that need to be solved, opportunities that I’d like folks to look into, board meeting notes, etc. The articles are widely commented on and some of our best initiatives get spurred by these discussion threads. Among my favorite articles written by other HubSpotters have the title “If I Were CEO Of HubSpot, I Would…”
4. No door policy: Many companies have an “open door policy,” but we have a “no door policy.” No HubSpotters have an office – we all sit out in the open next to each other. I am currently writing this article wedged between two developers, Michael and Andrew, whose work I’ve gotten to know quite well when I otherwise would have been out of touch in a corner office.
5. Seat rotation: If have been sitting next to Andrew and Michael for about two months, but we are about to do one of our quarterly seat rotations where we pull numbers from a hat to see who we will be sitting next to. This ensures folks get to know different people from around the company. I’m looking forward to seeing whom I’ll be sitting next to next week!
6. HubSpot Fellows: We hired Professor Andy McAfee from MIT Sloan to help us start the HubSpot Fellows Program, which is like an MBA for HubSpotters. Courses offered so far: Strategy HubSpot Style, Statistics, Learning Leadership From Legends, and Improving Written and Verbal Communications. The courses are open to any HubSpotter and are taught by Andy and me. …We did this because we want our employees to learn and we want to attract employees who like to learn.
7. Free beer: I can’t remember how it got started, but we always have free beer in our fridge. I’ve noticed folks seem to wander around and drink a beer or two at the end of the day to unwind. We are up to about 170 people and I’ve yet to see someone do something stupid. HubSpotters seem to be rewarding the trust we put in them here.
8. Friday 4pm Happy Hour: We are certainly not the only ones who do a Happy Hour on Friday, but we have our own unique twist on it. Every Friday at 4pm ET, we film HubSpot.tv live in our office and encourage employees (and community members) to watch the show, play a little ping-pong or foosball, and hang out.
9. Games: We have a west coast style games room where people can play ping-pong, foosball, hang out on the couch, or hit the beer fridge. We do this because it is a good way for folks to get to know each other and refresh their minds.
10. Tournaments: We have frequent tournaments, including ping-pong, foosball, iron chef, and softball. All of these are just plain fun and bring folks together across groups.
11. Dress code = no dress code: Doesn’t made sense to me to tell people what to wear…we’re not in a boarding school -- we are in a company where we want people to be as productive as possible.
12. Big Hairy Mission: Our mission is to “transform the way the world does marketing.” At least to me, that mission is big enough that I can really get psyched about it and be proud to tell others I’m working on it. I don’t know for sure that other employees feel the same way, but I suspect it is the case. Modern workers are more like cathedral builders than brick layers if you give them the right mission.
13. Social media policy = we trust you: Any of our employees can post an article on our blog, can tweet, can blog privately, etc.
This last point of “trust” is a common theme that runs throughout a post-modern culture. If you are hiring exceptional people who have lots of good options, you should trust them to make good decisions that will improve the enterprise value as your interests are strongly aligned.
What aspects of corporate culture do you think are passé? What creative corporate culture things are you doing at your company that you think we could emulate?
Looking for other startup fanatics? Request access to the OnStartups LinkedIn Group. 130,000+ members and growing daily.
Oh, and by the way, you should follow me on twitter: @dharmesh.
July 25, 2010
Bob Walsh (47 Hats): Flipboard Find of the week
Here’s my Flipboard Find of the Week (something worthwhile Flipboard brought to my attention that would have otherwise been lost in the social media noise): Power Friending: Demystifying Social Media to Grow Your Business by Amber Mac. I grabbed the Kindle sample to my iPad, read that, just ordered the full book and am looking forward to reading it. Do I think you should get it (or at least try out the free Kindle sample on your platform of choice)? You bet!
Amber is one of those amazing people who gets tech, gets people and is a delight to be around, even if that being around is listening/watching her podcasts.
One Amazon reviewer summarized the value of this book better than I; “This book is not only my new bible for my business social stuff but explains the bigger picture in a way that allows you to easily grasp the smaller details & be able to make connections for yourself. So many books just give the directions with no oversight of how it works on the inside both technically & personally.”
As for Flipboard, it’s become my social media reader of choice: as one reviewer put it, it makes signal out of noise. Other social media readers do a great job of organizing; Flipboard does a superb job of editing. I don’t want 249 items since this morning to decide if they matter, I want news.
Stephane Grenier (LandlordMax): Taking Summer Holidays from Blogging

For the first time since I started this blog 5 years ago, I’m going to take a summer off. You may have already noticed that I’ve started my holidays, it’s been almost a month since I last posted. I initially thought I would just quietly take a few weeks off, but now that it’s already been a month, I think I’m going to take the whole summer off. After five years, it’s been a nice break that I needed to refresh my creativity.
While I’m gone, please feel free to write comments on post to let me know what you’d like me to cover when I come back. I know what I want to write to about, but if there’s anything you guys want to me to write more about than I do now, please let me know.
And on that note, see you back here in about another month. Have a good summer!!
July 24, 2010
Bob Walsh (47 Hats): Breakthroughs
Everything is always the same – until it isn’t. This week, there’s been two new products – one slammed by demand, the other in alpha – that for all their faults change what at least I thought was possible for software to do. These are breakthroughs – these are things that until you see them, they are not part of the lexicon of what is possible. The IT industry is all about these breakthroughs:
- The Apple iPad – it was the breakthrough that finally after at least 20 years make “slate computing” something real. How many iPad-like devices have been announced now? 100?
- For you Mac Haters out there, how about the IBM PC AT, Lotus 1-2-3, AutoDesk, and a couple thousand other apps that created a whole new way of using a computer?
The defining thing about these Breakthroughs is until someone, somewhere, somehow creates an actual working version of it, most people literally cannot imagine it, and even the most starry-eyed tech idealists will only see the glimmering of what could be.
Until someone does it.
Two such products came out this week I’d like to recommend you get your head around because they will alter your world tech view. Hell, there are both (as of now) free. First is FlipBoard for the iPad. I was lucky to see Flipboard in action about 2+ weeks ago, so I’ve had a little more time to mull it over and have been using it since the hour it became available. You can read all the details starting here but I can tell you two things from my own experience: it redefines for me where news comes from and adds a whole new purpose and reason for “doing” social media. That’s Big.
Here’s the second one: Tab Candy for Firefox:
An Introduction to Firefox’s Tab Candy from Aza Raskin on Vimeo.
For the past decade or so, the only way to interact with a lot of sites, the only way to struggle with all those browser tabs you have open right now was as a set of tabs along the top of your Firefox, IE, Chrome, or Safari browser. Aza Raskin has a working version housed in an edge version of Firefox that delivers a whole new way to relate to and solve the “I have too many browser tabs open” problem. Here’s a quick example I threw together:
Tab Candy lets you create sizable, moveable groups of tabs. Working on one thing with its 8 tabs open, but you need to flip over to the 6 tabs social media tabs you have open? Two. Clicks. Definitely watch the video. Even it it’s a an alpha product on a developer build, this version of Firefox with Tab Candy is 10x more valuable to me than Chrome – my browser of choice.
Of course both FlipBoard and Eye Candy have rough edges, will be copied, probably improved upon, and endlessly lauded over and railed against on the interwebs. My point is you should be on the lookout as a startup or microISV for just these kind of breakthroughes to spark ideas in your head, and if you’re lucky, your own breakthrough. Because everything is impossible – until it isn’t.
July 22, 2010
The Startup Success Podcast: The Startup Success Podcast
This week Bob and Patrick talk with Shawna Pandya, Co-Founder of CiviGuard. What if your smartphone could save your life in a disaster? That’s the ambitious and laudable goal of CiviGuard, a startup getting traction disrupting the established limits of how technology, governments, disasters and survivors interact.
Disasters happen – yet the fundamental technologies public agencies use in emergencies hasn’t changed in a substantial way in 20+ years. How can a city use mobile technology to save lives? If you’ve ever lived through a major earthquake, hurricane, tornado, or terrorist attack, this is an interview you don’t want to miss.
And a quick word about our new sponsor, InfluAds. If your startup’s market is other startups, web developers and designers why not reach out to them through with a small, tasteful ad at sites they already read? That’s how InfulAds works. Act now, mention “SSP” and save 20% on you first ad buy. InfluAds.com – ads for startups by a Startup.
We’d also like to thank Microsoft WebsiteSpark for being our first official show sponsor! Microsoft WebsiteSpark and StartupToDo.com have free Microsoft software for designers and a six month scholarship to StartupToDo.com you may be interested in. For details and how to apply, visit http://startuptodo.com/websitespark/.
Download Show #76 here: Show #76 Or if you prefer, Subscribe to the podcast in Apple iTunes.
Bob Walsh is on Twitter at http://twitter.com/bobwalsh or you can email him at bob.walsh@47hats.com.
Patrick Foley is on Twitter at http://twitter.com/patrickfoley or you can email him at patrick.foley@microsoft.com
URLs mentioned/relevant to this show:
- CiviGuard, Inc.
- Shawna Pandya on LinkedIn.
- CiviGuard on Twitter.
- CiviGuard blog.
- CiviGuard video trailer (not for the easily scared).

Gurock Software: Free TestRail licenses for open source projects
We are happy to announce an offer to provide free licenses of our web-based test management software TestRail to open source projects and teams. As more and more users and organizations depend on open source software, introducing a dedicated test management tool to manage test cases and to ensure great release quality gets more important for projects.
Open source teams already use various tools to manage their software development process such as bug trackers, project management tools and source control. Teams can also benefit from a test management software to manage, organize and execute their tests. TestRail allows contributors to participate in projects’ software testing efforts and even enables non-technical users to contribute to projects.
We decided to make free licenses of our test management software available to open source teams as a way to give back to the community. Gurock Software is using various open source projects to power the infrastructure and development process so this makes a lot of sense for us. Interested open source teams can contact us or learn more about the offer on the dedicated web page.
Learn more: Free TestRail licenses for open source projects
Software by Rob: Three Tips for Getting People to Read Your Email Newsletter
Micropreneur Academy member Ruben Gamez launched Bidsketch five months after joining the Academy, and has experienced quite a bit of success with this niche application for designers.
I’m subscribed to his mailing list, and recently received an email update about a new version of the app; the kind of email I would typically delete without thinking.
But three things about this email drew me in until I found myself reading the entire email and clicking the link contained within. So I am presenting them here as tips for getting people to read your email newsletter.

Tip #1: Use a Custom Design
I’m typically a fan of text-only newsletter email due to the challenge of getting things to display correctly in email clients. But the design of this email is branded, yet simple. It immediately caught my eye as something I wanted to at least take a peek at.
Tip #2: Use Bullets
This email is made up almost entirely of bullets. This makes it very skimmable, and if you want to find out more information you can click through to the blog. The email is also super short so it’s hard not to read the entire thing.
Tip #3: Be Funny
The writing is clever without trying too hard. It draws you in, and not only makes you want to read more, but puts a human face on the company. The company happens to be run by a human, so this is a good thing.
(Bonus) Tip #4: Personal Reply-To Email
When I replied to the email to tell Ruben what I liked about the email, the reply-to address appeared as “ruben@bidsketch.com.” Not “noreply@bidsketch.com” or “support@bidsketch.com.” Another nice way to put a human face on your company.
Phil Wright (Component Factory): Krypton Suite 4.2 Released
This new release is smaller than usual but does contain a new Toolkit control called the KryptonTrackBar. It acts like the standard windows version allowing the user to drag a position indicator along a track. It also has the ability to draw the track as a triangle and so giving the appearance of a volume control. Always provided are a number of bug fixes and more minor additions.
Please download using the following direct link…
July 20, 2010
Casey Software: SQLite in Flex
When we spec'd out the Web2project Desktop Client, the Vision was to build a simple client that would retrieve a user's list of tasks, allow them to log time against any or all of them, and update the server with the time and comments. While the vast majority of the time the user would be online, there are times - either by choice or necessity - when the user may not be able to connect to their server. Therefore, we needed a simple local datastore.
While I could attempt to have mysql installed locally, that's a huge dependency that will scare away non-developers. Alternatively, some file-based XML monstrousity might work but then I'd have the fun of dealing with XML. Without a doubt, SQLite was the only logical choice, especially once I found out Flex has support built in.
If you've only worked with a "normal" database engine like MySQL or SQL Server, then you'll quickly realize that SQLite is whole other beast..
First of all, there's no separate engine to install. You don't download an executable and set it up within the operating system, instead the application that uses the database includes the engine itself. In this case, an AIR application will package the SQLite engine automagically with a simple import:
import flash.data.*
That one line gives you access to all of the SQLite functionality and features immediately. There's nothing else required except to use them.
Next, there's no "real" database to install. Yes, there is definitely a database and you have to connect to it, but the setup step is not separate from running the application itself. Further, we don't have to create users and permissions to go with it. In our case, we have some simple steps:
var dbFile:File = File.applicationStorageDirectory.resolvePath("web2project.db");
var sqlConn:SQLConnection = new SQLConnection();
var statement:SQLStatement = new SQLStatement();
private function init():void
{
sqlConn.open(dbFile);
createDatabase();
}
private function createDatabase():void
{
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = sqlConn;
statement.text = "CREATE TABLE IF NOT EXISTS tasks (id INTEGER PRIMARY KEY AUTOINCREMENT, task_id INTEGER, task_module TEXT, task_name TEXT, task_desc TEXT, task_start INTEGER, task_end INTEGER)";
statement.execute();
}
This takes care of both initializing the database and creating the core table of the desktop client. There's really nothing else involved. Of course, if you're concerned about security, you can have Flex encrypt/decrypt the database specifically for your application.
Next, while you can interact with SQLite using string concatenation or prepared statements, Flex favors prepared statements. If you come from the PDO school of thought, this is easy to get a handle on. If not, you should get familiar with them. Prepared statements make the driver handle all the escaping so SQL Injection becomes a thing of the past. In our case, after we download and process a list of tasks from web2project, we want to store or update them as appropriate:
private function storeEvent(uid:String, summary:String, startDate:Date, endDate:Date, description:String):void {
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = sqlConn;
var module:String = uid.substring(0, uid.search('_'));
var id:int = parseInt(uid.substring(uid.search('_') + 1));
statement.text = "SELECT * FROM tasks WHERE task_id = :id AND task_module = :module";
statement.parameters[":id"] = id;
statement.parameters[":module"] = module;
statement.execute();
statement.clearParameters();
var result:Array = statement.getResult().data;
if (result == null) {
statement.text = "INSERT INTO tasks (task_id, task_module, task_name, task_desc, task_start, task_end) VALUES (:id, :module, :task_name, :task_desc, :task_start, :task_end)";
statement.parameters[":id"] = id;
statement.parameters[":module"] = module;
statement.parameters[":task_name"] = summary;
statement.parameters[":task_desc"] = description;
statement.parameters[":task_start"] = startDate.valueOf();
statement.parameters[":task_end"] = endDate.valueOf();
statement.execute();
} else {
//TODO: at some point, we should update
}
}
Finally, we can interact with SQLite data with the standard SQL we know and.. love. For testing purposes, I've added a simple Flush function that should look quite familiar:
protected function button1_clickHandler(event:MouseEvent):void
{
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = sqlConn;
statement.text = "DELETE FROM tasks";
statement.execute();
gridTasks.dataProvider.removeAll();
}
Not surprisingly, this deletes everything from the tasks table and clears our datagrid. On the display side of things, we have:
sqlStatement.sqlConnection = sqlConn;
sqlStatement.text = "SELECT * FROM tasks";
sqlStatement.execute();
var result:Array = sqlStatement.getResult().data;
//TODO: provide a default sort... by end date?
gridTasks.dataProvider = result;
All this does is retrieve the list of tasks and assigns it to a datagrid but the SQL is key. It's what we already know and write all the time. Even better, if we combine this with my previous research in detecting connectivity, the application can know whether to load the task list from the local SQLite or connect and download the new list.
Overall, the most complicated part of getting started with SQLite and AIR was not getting them to play nice together... but designing a proper database schema. I made a point of spending so much time and thought on that portion in order to get it right the first time. While there are methods and recommendations on how to update an existing SQLite database, detecting versions and upgrading accordingly is a problem that I don't want to deal with yet. Hopefully, I can save that for version 1.1..
In case you're interested in the web2project AIR Desktop Client, you can follow development on GitHub. It is nowhere near production-quality yet.
Disclosure: Through Blue Parabola, we're working with Adobe and Flex in a number of things. Regardless, I choose to explore Flex for the first time long before that.
Bob Walsh (47 Hats): How to be a successful iPhone developer
I came across this YouTube video of Brian Greenstone from Pangea Software talking about how his company made $1.5 million on a two-week port of a Mac OS game over in the comments of my online friend Andy Brice’s blog.
Andy’s post concerned the media reality distortion field cast over the iPhone, rightly pointing out that while some developers do quite well, most make more like bus fare.
“Before you write your iPhone App I think you should ask yourself if it has got a realistic shot at making the top 10 in its App store category. If not, don’t give up the day job just yet,” Andy concludes.
While that’s true enough, I don’t draw the same conclusions as Andy does about the iOS market. I think there’s more to the story than the odds are against you, so why bother?
- I think the number one reason most iOS apps fail is that they are poorly executed knock-offs of common ideas and approaches. For example, I went looking this weekend for a different kind of checklist app. I found a good hundred that would let you create a checklist – and not one that would let you reuse and improve a checklist. Those hundred shared a common view: A checklist is something you make and use once. But, if you’ve read Atul Gawande’s, The Checklist Manifesto: How to Get Things Right (and you should), there’s a entirely different way checklists can be created, maintained, improved and used than the make a list once approach.
- Another reason software companies large and small fail when they get on the iOS bandwagon is they start from the point of view of “How do we squeeze our app from the desktop to an iPhone?” They ignore/disrespect the platform. And by the way, the iPhone and the iPad may share an OS, but they are emphatically not the same platform. Same thing happens when Windows software makers try to “cash in” Mac users or the reverse.
I find the reason some developers succeed beyond their wildest dreams more interesting:
- They passionately believe in not doing what is commonly expected.
- They are willing to take a risk.
- They work hard at getting their execution right.
What do you think?











