Skip to main content


Showing posts from October, 2012

Dart: Lazily Evaluating Static Variables Leads to Wackiness

It is now possible in Dart to initialize top-level (i.e. static) variables using any expression. The expression gets evaluated lazily. When I first heard about this, my instant reaction was fear because laziness and imperative programming don't really get along. At the time, I hadn't seen the blog post where Gilad admitted that plainly. Hence, I spent a couple hours that night trying to come up with ways this could lead to wackiness. I asked Gilad about it, and he said, "Laziness and statefulness can cause scary problems, I know. You can get into these Hesienbugs, where things only show up when you look, so as you debug the problem disappears." Just to prove the point, I came up with the following Dart program: import "dart:io"; import "dart:math"; var varA = changeVarB(); var varB = 1; int changeVarB() { varB += 1; return 0; } main() { print("$varB"); var seed = new; var nextBool = n

Dart: My Recent Dart Talks

I recently gave two talks on Dart, one at reflections projections|2012 at the University of Illinois at Urbana-Champaign and one at DevOps Live in Plano, Texas. Both of them were recorded. The DevOps Live talk is slightly newer since I updated it for the M1 release of Dart. If you've never seen one of my introduction to Dart talks, now's your chance! reflections|projections 2012 talk DevOps Live talk

Trip to "reflections projections|2012"

I gave a talk and a codelab on Dart at reflections projections|2012 at the University of Illinois at Urbana-Champaign. I can't possibly explain how well organized the conference was, how friendly the students and alumni were, or how much I enjoyed hanging out with everyone there! A big shout out to Kurtis, RJ, Metro, Zed, Danielle, Caitlyn, Ciara, etc.! Since I did manage to attend a few talks, let me blog about those. If you want, you can watch the videos. Garry Tan from YCombinator This was a talk on creating startups. He worked at Microsoft. He co-founded Posterous. "Do everything. Don't box yourself in[to a particular skillset]." The more you know, the better you'll be able to guage the qualities of cofounders. Studying entreprenuership != doing it. Work is for learning. If you plan on doing a startup, don't run out and buy a really nice, brand-new car. Money is capital. Microsoft made $650,000 per year per employee while he was there.

Personal: Life Beyond Startups

I've gone to a lot of talks recently focused on startups. Personally, I've spent more than a decade at more than 10 different startups, and I certainly think startups are a heck of a lot of fun. However, I'm beginning to think they're a bit overrated. Some of the talks I've gone to lately almost suggest that doing your own startup is the only path to happiness and personal fulfillment. Let me dispel that myth. First of all, not everything can be accomplished by two guys and a spare garage. Apple started out in a garage, as did the Wright brothers. However, the sleek MacBook Pro that I'm currently typing on bares little resemblance to the Apple I. There have been thousands of people needed to make Apple what it is today. The same is true of Google as well. Google is way more than just a search engine these days! The Wright brothers may have been the first ones to successfully put a man in an airplane, but a Boeing 747 isn't something that can be accompli

Video Games: TV Latency

I was having a lot of problems with latency on my TV, and my wife and I finally figured out how to fix it. I bought a used TV on Craigslist because my old CRT started smoking. The new one was originally purchased at Best Buy. It's an Insignia model number NS-32L550A11. When I plugged in the Wii, the latency was so bad it was driving my entire family crazy. Here are the steps that my wife and I took to finally fix the problem: First of all, I decided to buy a component adapter / cable to connect the Wii directly to the TV using a component connection. This made the picture look a lot better. We resynced all of the Wii remotes and checked their batteries. Then we went to the Wii settings menu and switched the screen to wide screen mode, and we set the resolution to 480p. Then we made sure that the TV was in game mode. Other versions of this TV called this DCM mode. We tried moving the sensor bar and checking the sensitivity. The most important thing we did was reset t

Software Engineering: Corporate Wormholes

Imagine you have two teams that are located in different offices. It's sad when you lose the ability to just walk up and talk with someone, especially when you notice that they're just walking by. I think spur-of-the-moment meetings are underrated these days. They can really help speed up your team velocity! Although I can't take credit for the idea, I think the solution is what I like to call "corporate wormholes". Setup a computer at each office with an always-on video connection with the other offices. Hence, you can always see when there are people in the other office. You can chitchat when they walk by, etc. If you have 10 small offices, then you can reach out to all the offices quickly if it's important enough to interrupt them (which should be rare, of course). Naturally, you don't need a wormhole to every part of your organization. You only need them for teams that are working on the same thing, but at different localities. In general, corpora

Linux on the Desktop

I'm a Linux guy at heart, but I use a Mac. For a long time, I've had a weird love hate relationship with Apple laptops. I was feeling a bit nostalgic today, and I stumbled across these articles: What Killed the Linux Desktop by Miguel de Icaza, one of the founders of GNOME How Apple Killed the Linux Desktop and Why That Doesn’t Matter which comments on Miguel de Icaza's post Linus Torvalds Ditches GNOME For Xfce Another post by Linux Torvalds on GNOME3 The Linux Haters Blog Evolution of an Ubuntu User It reminds me of The UNIX-Haters Handbook , which as a fantastic read :) Warning, do not read any of the above if you're easily offended! Who would have thought that Linux would be more successful in the mobile world than on the desktop? Who could have guessed that one of the most successful Linux on the desktop projects would actually embrace trusted platform modules and restrict access to the shell by default (unless you put it in developer mode)