Archives: Software (Page 2)
The Social Network: A Defence of Programming
November 11, 2010 at 04:57 by Mike McQuaid
I recently saw The Social Network, a dramatisation of the creation of Facebook. It was a thoroughly enjoyable film with brilliant direction, casting (Eisenberg and Timberlake in particular) and writing. It also had an incredibly realistic hacking scene (using wget and perl scripts) and featured KDE on the desktop of most of the programmers in the film. I highly recommend seeing it, regardless of your thoughts on Facebook.
A friend sent me a link to an interesting review that I was writing a long response to but thought I’d turn it into a blog post instead. The review is fantastically written by Zadie Smith but there’s a few glaring holes in it that frustrated this post into existence.
Smith, like many mainstream journalists and writers, seems to fundamentally understand what makes people like us excited about programming. I’ll respond to some choice quotes from the review.
No doubt the filmmakers considered this option, but you can see their dilemma: how to convey the pleasure of programming—if such a pleasure exists—in a way that is both cinematic and comprehensible?
If such a pleasure exists? Really? She mentions in the review she talked to a “software expert” but she must have avoided this topic of discussion. The pleasure in coding combines creativity (like creating art, no-one will ever write a program the same way as you), building to try to simplify the lives of others and mathematical problem solving. I think the film communicates this fairly well but it’s one of these things that’s pretty much impossible to hide the elements of programming that immediately turn some people off it. Some people find the idea that I sit at my computer typing for most of the day fundamentally boring and there’s not much you can do to argue against this viewpoint other than display the great things that can result from it.
E Pluribus Unum—that’s the point. Here’s my guess: he wants to be like everybody else. He wants to be liked.
It’s a shame that for anyone who is or was ever considered “nerdy” that we fall victim to such poor pop psychology. Just because we weren’t all deemed “cool” in high school doesn’t mean our entire careers are driven by this reductionist need to over-compensate for what others thing we missed out on. Zuckerberg I’d imagine, like most software engineers wants to build something that everyone will think “how did I manage before this came along” and, even if they don’t know he made it, he’ll know that he’s simplified the lives of a lot of people. This is why we do it and this is why we love it.
The fact that Zuckerberg open-sourced his earlier applications (not just gave it away for not monetary value, her review misses this) shows this; he values the pleasure of people using his tool over the monetary return that he could have instead. This also points to why Facebook didn’t take the many chances to sell out to large companies earlier in its existence.
I am dreaming of a Web that caters to a kind of person who no longer exists. A private person, a person who is a mystery, to the world and—which is more important—to herself.
The type of web (and person) she mentions already existed and still exists: you can use private email, private Facebook messages, protected Twitter accounts and use other services that guarantee privacy, even relying on end-to-end encryption so only the sender and receiver can see any content. Arguably, this was the first web, the one many of us were using 10 or 15 years ago. The problem is that she fails to see the flip side of her argument: what about those of us who are very public people, how could we share things with the world without relying on a gatekeeper or third-party before the internet and, arguably, before Web 2.0′s concepts became mainstream?
This is why she’s writing her review in the New York Review and not by monetizing a personal blog. She seems to believe in the gatekeeper, the Web 1.0 (or Person 1.0 from her article) and the tight separation of career and personal life, of the private persona that lives their life and the public persona that does their work (or perhaps I’m the one who is spouting pop psychology now).
As said, this was a brilliantly written review even although I disagree with many of the arguments in it. The Social Network (and indeed Facebook itself) is a great advertisement for the beauty and power of software: that someone can produce something that will change the world from their university dorm room with scarce resources, no corporate sponsors, some programming experience and a lot of hard work. It’s the antithesis of programs like X Factor and other reality TV that spouts the lie to society that success comes from being lucky enough to be picked by a corporation and that fame itself is the thing worth striving for.
Start showing films like The Social Network in schools. Get high school kids writing software rather than the letters in Word. Teach them how to write Facebook and mobile applications, programs that they and their friends will use outside of school. Let us, as software engineers, rekindle the passion that got us into this field in the first place and let’s see a return to late-night coding binges and building useful stuff for fun. Let’s see the youth of tomorrow look at our field and think “wow, that’s cool, I want to do that too”.
Why I Left Linux and went to Apple
September 21, 2010 at 20:17 by Mike McQuaid
I originally bought a Macbook to use as a nice Linux laptop and for some iPhone and Qt OSX development. Shortly afterwards I got engaged which made me think about the future and how I spent my time a bit more. Linux is great for many use-cases but I just kept finding myself getting increasingly fed up with trying to use it on the desktop. My problems included having DVD playback not work quite correctly, having to manually edit configuration files in a text editor just to get some piece of hardware that worked instantly in OSX and Windows working and various other issues that wasted my time. Due to a kernel bug in Linux affecting my Macbook, I found myself using OSX more and more for work and finally moved across completely to my Macbook and also removing Linux from my desktop to relegate it to a Windows-only games machine. I’m now only running Linux on my NAS, this server, TV and phone.
I’m a software engineer and I like writing code. I don’t mind doing sysadmin, I did it at my previous employer and do it on this server but my main love with computers will always be programming. Moving to OSX gave me a system that “Just Works” and resulted in me having more time to work on interesting coding projects and wasting less time trying to make my computer do what it is meant to.
I think the reason people become so passionate about Apple’s products is that they really focus on not bothering the user unless they have to through making sensible design decisions rather than worrying about edge cases (an unfortunate affliction for software engineers). A great example of this is the suspend behaviour. Firstly, suspend and resume on Mac is 100% reliable, I’ve never had my machine not come up after suspending. It’s quick, it occurs on you putting the lid down and it quickly becomes second nature to do so. Another great example of Apple’s design focus is what happens when your battery runs out after you’ve already put your lid down and suspended (UPDATE: This feature is know as Safe Sleep and combines hibernate and sleep. This is possible on Linux but isn’t default on any distribution I’ve ever used). On Windows (on older versions at least, haven’t tested this on 7) and on Linux: sucks, you shouldn’t have let your battery run out, you’ve lost all your work. On OSX: it hibernates automatically some time before the battery runs out so your work is saved.
I explained this to my wife and she asked “Why doesn’t everyone do it that way?”. I didn’t know. I suspect because it’s a hard problem and it doesn’t affect many people. The problem is that, although an edge case, when it does affect you it’s mindblowingly frustrating. When I use an Apple product it feels like they care about you enjoying your experience. They care if you lose work so they try and stop you doing so. On Linux, it just felt that whatever went wrong it was my fault for not RTFM. This came across from the OS itself and the developers and users I would ask for help.
Even if you use Linux or Windows, I encourage you to be influenced by Apple when you design your software: do the most sensible thing for the user at all times and don’t bother them. Don’t worry so much about edge cases and just try and transparently help the user without bothering them. This is why people pay a premium for Apple products. Better to make something that’s great at doing a few things in a way the user will love than possible to do everything if the user tries hard enough.
UPDATE: I didn’t mention the distribution I’ve used because the above applied to every one I had used at the stage I left. Even on well supported Dell hardware (Latitude D620) I never had 100% reliable suspend on Fedora, Debian, Kubuntu, OpenSUSE, Arch Linux or Gentoo. I bought the laptop for Linux as a friend had a Macbook; it was really well supported and worked great and he’s a kernel hacker so I thought it was a good bet. Turns out the newer version I bought had the above mentioned kernel bugs causing only one core to be usable (ACPI bug).
Posted in Software