Steve Krug has written a follow up to his usability classic Don’t Make Me Think. The sequel, Rocket Surgery Made Easy, is a terrific, short, concise, fun… Read more "Rocket Surgery Made Easy"
25 Jan 2010
24 Jan 2010
In my previous blog post, I discussed how git is distinctive among version control system in the way in which it makes the backend model that is being used to store data the most important element of the tool, and that experts use it by having the complete model in their head, and thinking in terms of operations on this…
22 Jan 2010
“As companies expand, the people within them start to specialize. At such a point, some managers will conclude that they have a ‘keep everyone on the same… Read more "A little less conversation"
21 Jan 2010
Yesterday we had a success disaster. An überpopular mashup album that mixed the Wu Tang Clan and The Beatles was released a few days ago and yesterday it got stumbled upon and boing boinged and tweeted to the four winds. Our downloads per minute went through the roof. We’ve dealt with big releases in the […]
18 Jan 2010
I’ve been helping a number of people get started working with git over the last couple of weeks, as Ksplice has brought on some new interns, and we’ve had to get them up to speed on our internal git repositories. (As you might expect from a bunch of kernel hackers, we use git for absolutely everything). While that experience is…
Over the weekend, MacRuby’s trunk became version 0.6 and the bug fixing is currently done in both the 0.5 branch and trunk. Based on MacRuby’s usual release cycle I would expect a 0.5 beta3 or 0.5 final to be released soon so most of the work can be focused on trunk. I’ll let you check on the TODO list to…
17 Jan 2010
Since Mac OS X v10.5, Apple added a technology called Scripting Bridge which allows to control and communicate with scriptable applications such as Mail, iChat or iTunes. A few weeks back, I showed how to control iChat with MacRuby. This time I’m going to show you how to control iTunes. Here is a small script that I wrote to wake…
16 Jan 2010
Unlocking the quirks of human behavior: A fascinating journey into irrationality!
11 Jan 2010
(This is part three of a multi-part introduction to termios and terminal emulation on UNIX. Read part 1 or part 2 if you’re new here) For my final entry on termios, I will be looking at job control in the shell (i.e. backgrounding and foreground jobs) and the very closely related topic of signal generation by termios, in response to…
5 Jan 2010
For Noël, my wife got me a new toy: the Amazon Kindle 2. Kindle vs Nook Before my wife bought what became my new favorite gadget, we checked on the Barnes & Noble Nook. The primary problem with the Nook was that it was out of stock. That pushed me to dig deeper and really compare both devices. The Nook…
1 Jan 2010
This is an archive of an old Google Buzz conversation (circa 2010?) on a variety of topics, including whether or not it's inevetible that a closed platform will dominate social. Piaw: Social networks will be dominated primarily by network effects. That means in the long run, Facebook will dominate all the others. Rebecca: ... which is also why no one…
This is an archive of an old Google Buzz conversation on MIT vs. Stanford and Silicon Valley vs. Boston There's no reason why the Boston area shouldn't be as much a hotbed of startups as Silicon Valley is. By contrast, there are lots of reasons why NYC is no good for startups. Nevertheless, Paul Graham gave up on the Boston…
31 Dec 2009
Here is the geekiest way I found to wish Happy New Year to my IM contacts: framework 'ScriptingBridge' app = SBApplication.applicationWithBundleIdentifier("com.apple.iChat") original_status = app.statusMessage new_year = Time.mktime(2010, 1, 1, 0, 0) loop do now = Time.now time_left = (new_year - now).ceil if time_left > 0 app.statusMessage = "#{time_left} seconds left until 2010 (EST)" else app.statusMessage = "Happy New Year 2010!"…
30 Dec 2009
(This is part two of a multi-part introduction to termios and terminal emulation on UNIX. Read part 1 if you’re new here) In this entry, we’ll look at the interfaces that are used to control the behavior of the “termios” box sitting between the master and slave pty. The behaviors I described last time are fine if you have a…
Microsoft Careers: “If you’re looking for a new role where you’ll focus on one of the biggest issues that is top of mind for KT and Steve… Read more "Secret language"
29 Dec 2009
To be ready for 2010, I’m taking some time off relaxing and spending time with my family in Florida. During my free time, I’ve been reading, catching up on movies and TV shows and worked on the MacRuby book that I am writing for O’Reilly. I wrote a bunch of small apps, played with various APIs and every single time…
22 Dec 2009
If you’re a regular user of the terminal on a UNIX system, there are probably a large number of behaviors you take mostly for granted without really thinking about them. If you press ^C or ^Z it kills or stops the foreground program – unless it’s something like emacs or vim, in which case it gets handled like a normal…
16 Dec 2009
Unlock the secrets of persuasion with this eye-opening guide!
14 Dec 2009
Is your desktop backed up? Did you backup that server? Are your backups on a different machine? Do you have offsite backups? All good questions, all best… Read more "Let’s stop talking about “backups”"
13 Dec 2009
The higher someone’s Stack Overflow reputation, the more likely they are to have submitted a CV to Stack Overflow Careers: This is not entirely surprising, of course:… Read more "Stack stats"
9 Dec 2009
“Like most entrepreneurs, Ryan and I are still learning about how to manage people and teams. And we’re both used to hiring very smart and dedicated people… Read more "When and how to micromanage"
2 Dec 2009
For as long as I’ve been in the industry, which is, I think, about 74 years now, the problem I’ve had with hiring programmers was not interviewing… Read more "Programmer search engine"
30 Nov 2009
If you were at RubyConf 2009 or looked at the schedule, you saw that the big thing happening in the Ruby scene is the maturation of a many of the Ruby implementations: BlueRuby, HotRuby, IronRuby, JRuby, MacRuby, Maglev, MRI, REE, Rubinius, SmallRuby… Ruby developers really have plenty of choice when it comes to choosing an alternative Ruby implementation. Is that…
29 Nov 2009
Nicholas Tang wrote a nice little perl script that shows a basic memcached top display for a list of servers. You can specify thresholds, for instance, and it’ll change color to red if you exceed the thresholds. You can also choose the refresh/sleep time, and whether to show immediate (per second) stats, or lifetime stats. […]
27 Nov 2009
"Uncover the biases that shape our beliefs"
21 Nov 2009
During RubyConf 2009 in San Francisco, CA Matt Aimonetti gave a talk entitled Writing 2D games for the OSX platform in Ruby. ##Description of the talk: Are you a developer who would love to get into video games but get scared when he hears “OpenGL” or “rendering engines”? Or Maybe, you never considered writing a video game because you have…
16 Nov 2009
[caption id=“attachment_638” align=“alignright” width=“300” caption=“Mohandas Karamchand Gandhi”][/caption] My recent ‘Ruby revolution being over’ blog post generated quite a lot of comments. Let’s be honest, I did not expect less from the readers. However, I noticed three types of reactions I would like to address: It was not a Ruby revolution, it was a Rails revolution The revolution has stalled due…
9 Nov 2009
According to wikipedia, a revolution (from the latin revolutio, “a turn around”) is a fundamental change in power or organizational structures that takes place in a relatively short period of time. Somehow, I believe this is exactly what Ruby has done in the programming world, especially with the help of Rails. Over the last few years, Ruby lead a mini…
5 Nov 2009
Do you like your job? Do you enjoy the people you work with? Would you want to have lunch with them? Every day? Alex Papadimoulis thinks that… Read more "Upgrade your career"
3 Nov 2009
My new Inc. column is up. “For a guy who wrote a book on how to hire great programmers, it’s mortifying how incompetent I’ve been at enlarging… Read more "Does Slow Growth Equal Slow Death?"
1 Nov 2009
What is your company about? Recently I got inspired by Kathy Sierra, whose blog Creating Passionate Users and Head First series of books revolutionized developer education. She… Read more "Figuring out what your company is all about"
31 Oct 2009
Adam Bosworth: “All successful standards are as simple as possible, not as hard as possible.” Required reading.
26 Oct 2009
It is amazing how easy it is to sail through a Computer Science degree from a top university without ever learning the basic tools of software developers,… Read more "Capstone projects and time management"
25 Oct 2009
This is yet another pretty simple tip. Use case: let say you want your applications users to choose one or multiple files or folder on their file system. A good example would be that you want the user to choose a file to process or a folder where to save some data. In the example above, I added a browse…
23 Oct 2009
During Rails Summit2009 in São Paulo, Brazil Matt Aimonetti gave a talk entitled The future of Ruby and Rails. ##Description of the talk: Plans for Rails 3 and tour of the various Ruby implementations. ##Slides ##Video The video of this talk is available here. ##Blog post I have had the opportunity to go to and speak at many conferences but…
20 Oct 2009
"Unlocking Memcached's Hidden Treasures: A Developer's Guide"
9 Oct 2009
If you are writing any type of games you might want your users to interact with your application using their keyboards. This is actually not that hard. The approach is simple and fast forward if you are used to Cocoa. Everything starts in Interface Builder, add a custom view instance to your window. Now switch to your project and a…
8 Oct 2009
Why does WiFi work so poorly at tech conferences? Marcus GriepI assume that WiFi wasn’t really designed to handle a big ballroom with 2000 people, all trying… Read more "The “WiFi At Conferences” Problem"
7 Oct 2009
Good news everyone! MacRuby beta 1 has been released! Official announcement here. [caption id="" align=“aligncenter” width=“144” caption=“Download MacRuby 0.5 beta1”][/caption] Note that the download is only for SnowLeopard, intel machines. Lots of great stuff in this new release, the first one based on LLVM. Check the Laurent’s post to learn more about the work done on compilation, optimization, concurrency, compatibility…
6 Oct 2009
Let say you want to release your MacRuby app and use a custom embedded font? You probably don’t want to force your users to install the font. Well, don’t worry, just put the font file in your resources folder and use the following code: font_location = NSBundle.mainBundle.pathForResource('MyCustomFont', ofType: 'ttf') font_url = NSURL.fileURLWithPath(font_location) # in MacRuby, always make sure that cocoa…
Let’s say you would like to play an audio file in your MacRuby app/script, how would you do? It’s actually pretty simple, you just need to use NSSound. If we wanted to use a system sound we could do: NSSound.soundNamed('Basso').play But let’s look at a more advanced example with some Cocoa patterns. We will loop through all the audio files…
5 Oct 2009
Laurent just posted a MacRuby status update on the mailing list and the first official beta of MacRuby 0.5 should be released pretty soon. Let’s quickly look at Laurent’s report: Early backtracing support. Much better AOT compilation. Parts of the standard library are now pre-compiled for testing. Migrated to LLVM top of tree. Dispatcher performance is now back to normal…
2 Oct 2009
Last updated: 21 Feb, 2010 Database replication is an option that allows the content of one database to be replicated to another database or databases, providing a mechanism to scale out the database. Scaling out the database allows more activities to be processed and more users to access the database by running multiple copies of […]
1 Oct 2009
23 Sept 2009
Jamie Zawinski is what I would call a duct-tape programmer. And I say that with a great deal of respect. He is the kind of programmer who… Read more "The Duct Tape Programmer"
19 Sept 2009
A Data Access Layer (DAL) is the layer of your application that provides simplified access to data stored in persistent storage of some kind. For example, the DAL might return a reference to an object complete with its attributes instead of a row of fields from a database table. A Data Access Objects (DAO) is […]
17 Sept 2009
8 Sept 2009
This month we’re starting to get organized for StackOverflow DevDays, a series of one-day, mini conferences in ten different cities. Because of the packed schedule, keeping on… Read more "Countdown challenge"
2 Sept 2009
I’m organizing a half-day startup workshop in San Francisco. This would be a terrific event to attend if you’ve recently started a software company and feel dazed,… Read more "Upcoming startup workshop in San Francisco"
1 Sept 2009
At last year’s Business of Software conference, I gave a talk about designing products that are more than just adequate. How do you make a product that… Read more "Being Number One"
30 Aug 2009
I had people asking me how come I was not blogging as much lately. Well, on top of being really busy, I have been blogging on other blogs such as the official Rails blog. There aren’t a lot of Merb news, we are waiting for Carl and Yehuda to sign out on the 1.1 release and will hopefully soon start…
26 Aug 2009
Unmasking the psychology behind investment marketing: a cautionary tale.
13 Aug 2009
Red Gate Software has launched a startup incubator in Cambridge. Free office space, internet access, room, board, advice, and pocket money. (I’m one of the people giving… Read more "New startup incubator in Cambridge, England"
10 Aug 2009
Queuing up the best message options: A straightforward comparison of popular message queues.
31 Jul 2009
Seth Godin: “If you’re going to interrupt everybody with an ad, it better be something everybody wants to buy. So what do you end up with? Average… Read more "Seth Godin at the Business of Software Conference"
30 Jul 2009
27 Jul 2009
Over the weekend, I spent some time working on a Ruby + Rack +CouchDB project. Three technologies that I know quite well but that I never put to work together at the same time, at least not directly. Let’s call this Part I. Before we get started, let me introduce each component: Ruby : if you are reading this blog,…
26 Jul 2009
O’Neill 2.6: from 2.13, we know that . Suppose that . Thus . And so we must have as required.
23 Jul 2009
“Every single industry was going to be turned upside down! New industries would be created! Start-ups would make people rich! Which is really nice, because it’s awesome… Read more "The Day My Industry Died"
Congratulations to Bob Walsh on publishing his Web Startup Success Guide (to which I wrote the foreword). His interview with GTD Guru David Allen, which is chapter 8,… Read more "Web Startup Success Guide"
Brett Kiefer describes Evidence Based Scheduling 2.0 on the FogBugz Blog: “EBS 2.0 gives you the vocabulary of strict dependencies and start dates. You can now say… Read more "EBS 2.0"
20 Jul 2009
Distracted driving: A deadly habit we can't seem to hang up.
A year ago today, FogBugz development was in disarray. The original roadmap was too complicatedWe had done this big offsite at a beach house in the Hamptons… Read more "Fruity treats, customization, and supersonics: FogBugz 7 is here"
13 Jul 2009
CouchDB is an awesome technology. I’m lucky enough to work on quite a big project where we decided to switch from MySQL to Couch for various reasons. One of the many things I like with Couch is that it handles attachments and can replicate them as well as serve them for you using the Erlang based builtin webserver. (you can…
12 Jul 2009
To celebrate the amazing work being done by Laurent Sansonetti on MacRuby here is a hello world using the new LLVM based compiler. $ echo "p ARGV.join(' ').upcase" > hello_world.rb $ macrubyc hello_world.rb -o macruby_says $ ./macruby_says hello world "HELLO WORLD" Note that to achieve this result, you need to be using the experimental branch of MacRuby and have LLVM…
9 Jul 2009
Mencius Moldbug: “They create an incomplete model of the giant electronic brain in their own, non-giant, non-electronic brains. Of course, since the giant electronic brain is a… Read more "Why Wolfram Alpha fails"
23 Jun 2009
Clear just closed down. Here’s how it worked while it was in business. You paid $200 for a one-year membership. You underwent a big, complicated background check… Read more "The eternal optimism of the Clear mind"
22 Jun 2009
Yesterday an interesting HTTP DoS tool has been released. The tool performs a Denial of Service attack on Apache (and some other, see below) servers by exhausting available connections. While there are a lot of DoS tools available today, this one is particularly interesting because it holds the connection open while sending incomplete HTTP requests […]
16 Jun 2009
Java has no goto statement, to break or continue multiple-nested loop or switch constructs, Java programmers place labels on loop and switch constructs, and then break out of or continue to the block named by the label. The following example shows how to use java break statement to terminate the labeled loop: public class BreakLabel […]
11 Jun 2009
10 Jun 2009
Mastering Mercurial: A step-by-step guide to group-based repository setup.
Dave Winer (in 2007): “Sometimes developers choose a niche that’s either directly in the path of the vendor, or even worse, on the roadmap of the vendor.… Read more "Platform vendors"
From my latest Inc. column: “Giant corporations such as Google and Microsoft are like cities full of relatively anonymous people: You don’t actually expect to see anyone… Read more "A visit to Microsoft and Google"
Andrew emailed to ask why we don’t have a StackOverflow DevDays day in New York City. That’s a fair question! There’s a big software development community here.… Read more "Conferences in New York"
9 Jun 2009
Whoa. Less than a month ago, we announced first Stack Overflow DevDays and opened registration to 300 people in each of five cities. Well, that sold out… Read more "StackOverflow DevDays: Five New Cities"
8 Jun 2009
When you profile a web page with Page Speed, it evaluates the page’s conformance to a number of different rules. These rules are general front-end best practices you can apply at any stage of web development. Google provides documentation of each of the rules, so whether or not you run the Page Speed tool, you can refer […]
3 Jun 2009
The Joel on Software Job Board has been working well since we launched it almost three years ago. It logs about 220,000 unique visitors every 21 days,… Read more "Get a job"
29 May 2009
Server Fault is now in public beta! When Jeff Atwood and I launched Stack Overflow last fall, we really wanted it to be a site for and… Read more "Server Fault now in public beta"
27 May 2009
What’s MacRuby? MacRuby is an Apple-sponsored, open source, full Ruby implementation on top of Objective-C runtime. In other words, whatever code runs on Ruby 1.9, should/will run on MacRuby. Yes, you read correctly, MacRuby can/will be able to run all your Ruby code. That means that eventually you will even be able to run your Rails/Sinatra/new-sexy-ruby-framework app on MacRuby. Unlike…
21 May 2009
The game gets a lot more fun once you can have complex track layouts
20 May 2009
"Fascism: As Tasteless as Its Graphic Design"
18 May 2009
We're getting close to the end of my blog. After today's entry, I only have three left to write. After that, I'll only blog anonymously or (more likely) not at all. This is part three of five in my "Programmer's View of the Universe" series. I struggled for a while with how best to introduce the ideas in this installment,…
17 May 2009
The other night, during our monthly SDRuby meetup, lots of people were very interested in learning more about CouchDB and Ruby. I tried to show what Couch was all about but I didn’t have time to show how to use CouchDB with Ruby. Here is me trying to do that in 10 minutes or less. I’ll assume you don’t have…
13 May 2009
This manual gathers together the key insights into API design that were discovered through many years of software development on the Qt application development framework at Trolltech (now part of Nokia). When designing and implementing a library, you should also keep other factors in mind, such as efficiency and ease of implementation, in addition to […]
12 May 2009
phpWatch is a general purpose service monitor that is able to send notifications of outages via e-mail or text-message (SMS). The purpose of this system is to allow administrators to easily check the status of many different services running on any number of servers and also allow developers to interface with the query and notification […]
Stack Overflow has been going nuts—after just six months in business, we’ve had 3.5 million unique visitors per month. We’ve starting thinking about how to get that… Read more "Stack Overflow DevDays"
10 May 2009
"From Micro Zooides to Civilization: A teenage coder's ambitious journey."
8 May 2009
During RailsConf 2009 in Las Vegas, Nevada Matt Aimonetti gave a talk entitled Rails 3: Stepping off of the golden path. ##Description of the talk: Back in December 2008, the Rails and Merb core teams surprised everybody by deciding to merge their teams and focus their energy on a common release: Rails 3.0. On one hand, Rails is famous for…
7 May 2009
6 May 2009
"GIMP: The Picasa replacement for advanced photo editing."
5 May 2009
“Even as competitors like Circuit City go bust, B&H remains packed with loyal customers. And that makes me very happy. For a business owner, there’s nothing more… Read more "Why Circuit City Failed, and Why B&H Thrives"
29 Apr 2009
Here’s a video of a talk I gave at Google last week about StackOverflow.
14 Apr 2009
"Breaking up with LinkedIn: A professional's guide to digital decluttering."
We made the decision to slightly delay the release of Merb 1.1 as we ended up changing the scope of what we wanted to make available in the 1.1 release. If you have been following our releases, you know that this is not something we usually do, but we strongly believe that this is actually something that will save us…
9 Apr 2009
Over the holidays I read a neat book called Predictably Irrational: The Hidden Forces That Shape Our Decisions, by Dan Ariely. The book is a fascinating glimpse into several bizarre and unfortunate bugs in our mental software. These bugs cause us to behave in weird but highly predictable ways in a bunch of everyday situations. For instance, one chapter explains…
7 Apr 2009
Three years ago, I was invited to New Zealand to speak at Webstock, the local web conference. Now, let me tell you honestly, I go to a… Read more "The Business of Software 2009 speaker lineup"