How an MIT postdoc writes 3 books, a PhD defense and 6+ peer-review papers and finishes by 5:30. One of the best and worst things about being in a PhD program is that it is opened: it can take as long as you want it. Though being at a world class research university like MIT or Cornell is certainly a wonderful experience, I’m not at the point in the life where I want to spend more than a few years in one place. I want to do good work, do it in a focused manner without killing myself and hopefully have a life and get done in a reasonable amount of time.
Thrust, Drag and the 10x Effect Managing your time goes hand in hand with managing your energy and your activities. In the software world there’s a claim that the best engineers are often ten times as productive as mediocre ones. This article aims to give you some tools to help you on your way toward being ten times as productive.
Why Emacs? I make no secret of the fact that I think Emacs is the best text-editing environment on the planet. This post gives a very straightforward but informative introduction to the question of “Why Emacs?”
Derek Sivers’ Speech to Berklee College of Music I have a tremendous amount of admiration for Derek Sivers. While this speech is geared towards music majors, most of his lessons and advice can be generalized to your profession and life in general. There’s a lot of wisdom packed into a few minutes.
Readability is an awesome tool in the fight for a reading-focused, cleanly designed web experience. They started as a browser plugin that strips a page of unnecessary clutter and presents just the text in a clean, visually pleasing format. They’ve released upped their game with a payment model for publishers, a rich web application and a review-pending iOS app. If you read a lot on the web you probably want Readability in your toolbar.
In my day-to-day work I end up using a number of physical machines and all three major operating systems. I do most of my work on Linux, but I use Windows machines for all my electrical engineering work (mostly MATLAB and a few design programs). I use my Mac Mini for my music and videos and if I need to use a computer at the library I prefer using their iMacs. I often find myself needing to transfer files between machines (especially if I need to print something). Even the school gives students a gigabyte of space on a network drive, I never got it to work on Linux. In the past I’d use a combination of email and USB drives to moce stuff around, but a few weeks ago I started using Dropbox and I’m quite happy with it.
I haven’t been able to quite pin down what makes Dropbox successful when other similar applications haven’t done so well. I think a large part of the reason is that Dropbox seamlessly melds the cloud and the desktop. They have desktop apps for Windows, OS X and Linux that all actually work. The way I use it Dropbox acts as simple folders on my local machines and are immediately synced with the corresponding folders on all the other machines. And whenever I’m at a computer where I can’t install Dropbox, I can just use their web interface (which is well done and very frictionless). It also helps that Dropbox gives me 2GB completely for free. I have friends who are pushing that limit already, but since I just put stuff like homework I need to print off, that should last me a while.
Part of the reason for why Dropbox feels so easy to use (and I becoming very popular) is that it seamlessly fits in to the way you work. Dropbox doesn’t sell itself as a backup or some kind of complex, high powered auto-syncing solution. It does one thing well — keeps a folder exactly the same on all your machines. You don’t have to manually upload files to a webservice or specify which folders you want to sync and what not to. You just put everything in one place (your Dropbox) and rest assured that it will be the same on whatever computer you’re on.
As Anil Dash says, the key to apps like Dropbox and Evernote (which I don’t use myself) is that they inhabit a sort of “in-between” space that exists across both the web and the desktop. They don’t try to deny to deny the presence of the desktop by offering an all-powerful web UI. Instead they embrace the idea that you’ll be using multiple heterogeneous platforms. The web is just yet another interface. They also offer an API meaning that developers can’t extend it for purposes that the original service provider doesn’t support. Another aspect of these apps that I find refreshing (as compared to Delicious for example) while they allow for sharing and a certain social environment, it isn’t central to the service’s operation.
I’m hoping that these sort of “cloudtop” services get more traction as time progresses. In particular, I’d love to see things like user preferences be synced as well as folders and data. On a parallel note, I’d like to export services already present in applications get streamlined as well. As an example, iPhoto allows for export plugins so that you can directly upload your photos to places like Flickr, Picasa or Facebook. Unfortunately the upload process generally blocks the whole app instead of happening seamlessly in the background. I think we’re getting closer to a future where all our data is available seamlessly everywhere. I hope there isn’t too much fragmentation in the area as it would a pain to have to use half-a-dozen different apps to keep my data in sync (especially if they’re all using a different way to do it). This market is still in its infancy but apps like Dropbox are leading the charge and they promise to make computing much easier all involved.
I come to work this morning and the intertubes are shaking with Google’s latest announcement: the coming of it’s Linux-based, web-oriented operating system for netbooks: Google Chrome OS. You’ve probably already read a lot of the other posts about the Chrome OS and know something about how it works. It’s an operating system at the core, but more importantly its a platform tuned to running web apps. It’s a clear signal from Google to pretty much every other operating system maker out there, including Microsoft and Apple, but also the Linux distribution providers like Red Hat and Canonical. The message is simple and clear; move over OS makers, the browser is the new application platform.
Though the reactions from around the web are mostly positive, there are some articles that are raising real issues. ZDNet Australia criticizes Chrome OS on the grounds that it will further fragment the Linux community (who will be contributing the kernel of the new OS) and a better solution would have been to join with Ubuntu which already has pushed Linux to new heights. A prediction from The Next Web makes the claim that Chrome OS will be “the beginning of the end for Ubuntu & co” and the real battle will be between Apple and Google, leaving everyone else in the dust. There’s also concern about the fact that Google already has a operating system for the web: Android, even though it’s only for mobile devices (though it has been ported to x86). Personally, I feel that these criticisms and fears surrounding Chrome contain the more interesting food for thought.
Chrome OS is undoubtedly going to be interesting, both in terms of technology and in terms of the market forces that it will affect. Also certain is that Google is more clearly than ever taking a swipe at Microsoft. Even though Google may have become the most powerful player in the web sphere, the desktop operating system stronghold was undoubtedly held by Microsoft. Even many of Google’s own applications (including Chrome) target Windows as the primary platform. Microsoft is still a force to be reckoned with. Windows 7 is shaping up well and they have a few tricks up their sleeve, including a new browser project: Gazelle and even a cloud-centered operating system called Midori in the works. They also have a powerful research wing which does some really interesting work and a very big budget (which is enough for them to sit things out for a few years while they make a better product). Whether or not they will actually do so is still questionable, but lets not write them off just yet.
And there is Apple. The last few years have seen Apple’s gradual re-rise to stardom starting with the beautiful new OS X and continuing today with it’s dominance of the online music store arena and the strength of the iPhone platform. Not many people seem interested in pitting Google against Apple, especially since Apple has stayed out of the mainstream operating system and netbook markets. However, when it comes to the internet, Apple has a considerable stake. The iPhone is as much a portable internet device as it is a phone. And though it has carefully stayed away from the low-cost netbook market, it’s unlikely that they’ll sit by while Google plays its hand in the portable computer market.
However Apple’s strength in the current situation probably stems directly from the closed, proprietary nature of it’s technology. Apple has a reputation for both creating and support great desktop apps. Good design has always been a hallmark of software running on a Mac and most web apps are still far for matching the polish that Apple has to offer. The user experience offered by the complete OS X operating system by virtue of the way it can tie together information across different apps is still something that web applications (even suites like Google Apps) have not matched to a large extent. I agree with the Next Web post that Apple probably has the most chance of retaining its user base as Google begins it’s foray into the operating system arena. With the iPhone they’ve shown that they’re still capable of market-shaking innovation and that will probably help them survive the coming OS wars.
One more important player in this market is Linux. Thanks in no small measure to Canonical, desktop Linux has gained some ground in the last few years. However, it’s still holding a very small piece of the desktop market. It’s a valid concern that Google’s entry into the market might eat into the Linux market share. Though it’s certainly possible, I’m not quite sure if this will come to pass. A lot will depend on how easy it is to get things working on Chrome OS besides the browser and web apps. What new webapps have to offer will also be influential. I personally have never been very hopeful of Linux’s position on the consumer desktop. It’s great for hacker-types like me, but I’m still not fully convinced if I would recommend it for everybody. In my opinion, most Linux desktop apps still lack some amount of external polish. That being said, I wouldn’t recommend Vista either. I do think that OS X is the best OS for most users. I don’t see Chrome as contributing to the ‘fragmentation’ of the Linux distribution scene because I expect it to be very different from traditional distros, but in this case, only time will tell.
So what can we expect in the months to come before and after Chrome OS hits the markets? Undoubtedly Google’s announcement will cause the other big players in the field to sit up and take notice. I think this move might consider other companies, especially Microsoft to push out web-centric products sooner than they otherwise would have. Google is clearly looking to shake things up in the near future and it would be folly not to plan to do something about it. However, it’s also worth keeping in mind that Chrome OS is still some time away and there is a lot of work to be done — Chromium works on Linux, but only just.
Before we make and declarations about drastic change in the OS market, it would be prudent to wait and watch and see what Chrome OS actually looks like when it releases. There is also the fact that Google will have to get people to actually use it and that may be easier said than done (considering the fact that most netbooks run Windows XP). Of course, as the iPhone has shown, there is room in the market for a sleek new product if it is made right. I will be interested in seeing how Chrome OS turns out, but I certainly won’t be giving up my Linux laptop or my Mac Mini anytime soon. I wish Chrome OS luck and hope to see some good ideas being implemented. As Yoda would say, ‘Begun the Chrome Wars have’, I’m not ready to pick sides just yet.
With the rise of Web 2.0 and the push to make the users of the internet producers and not just consumers, there has been a rise in “crowdsourcing” — if you need an answer to question, ask a large number of people and someone will give you the right answer. Websites like Digg and Reddit (and to some extent, Wikipedia) have risen to power on the basis of this concept and a good argument could be made that crowdsourcing actually does work. A few days ago, another crowdsourcing project went into public beta — StackOverflow. This is the brainchild of two software-engineers/ bloggers whom I have a fair amount of respect for: Joel Spolsky and Jeff Atwood. The basic idea is that there is a large amount of very good and useful out there on the web, but most of it is in the form of random blog posts, long forum posts, IRC transcripts, so on and so forth and so it’s not really accessible to people looking for a straight answer. The goal of StackOverflow is to unlock that knowledge by being a hybrid of forum, wiki, blog and digg/reddit style rating systems.
While I certainly understand the goal of the project and understand it’s value, I’m not quite convinced if it will work the way it’s supposed to. As a programmer, a lot of the time I really don’t want to read through detailed documentation or long mailing list discussions. I just want a simple “What does this button do?” style answer. And as any programmer who has gone digging through documentation knows, that’s not an easy thing to come by. StackOverflow hopes to promote a community of developers in the hopes that someone has already solved the problem you’re facing, and is ready to come out and help. There has been some criticism that StackOverflow will only attract mediocre developers looking for quick fixes and superficial knowledge thereby leading to the lowering of the competence of the people who are there. I think that this argument holds for crowdsourcing in general. There has been a pretty good answer made to this criticism and I suggest you go read it for a fair evaluation of the problem.
But let’s explore the alternative. If you don’t want to be pulled down to the lowest common denominator of competence, you’ll have to learn from someone better than you, not someone worse. Of course, the best way to do that is probably to find an expert in the problem you’re looking at. While this looks like a good solutions, there are as always, a number of problems. The one you’re likely to run into first is that the so-called experts are often far too busy to answer your questions. After all, they didn’t become experts without spending a lot of time actually working on stuff. Secondly, I have personally found that experts are often prone to give you a packaged answer without telling you all the inner details. This isn’t because they are arrogant or trying to confuse you, but rather because the underlying reasons are so clear to them that they don’t bother mentioning them. They are telling you their approach to the problem, which may not be the same as your own. Finally, just because they are considered to be experts doesn’t necessarily mean that they are the fountain of all knowledge. They can be wrong, imprecise or may just not have the answers.
So can crowdsourcing actually provide the easy-to-get, mostly correct information that so many of us are looking for so much of the time? I don’t think there is a real consensus and I can’t quite tell if there can ever be a definitive answer to this question. In a perfect world we would each have our own personal AI that plugged into various search mechanisms and databases and gave us the information we wanted, tuned to our needs. Of course this AI would keep evolving to better anticipate what we want to know. Think of it as a digital butler to serve our informational needs. I have personally not had to rely on crowdsourcing very much. Living in a small liberal arts college environment, I’ve had professors at arms reach, most of whom are very willing to help out and explain things to me. However, I understand that I am probably a special case in the programming world. Probably as a direct result of that, I have come to favor direct communication between myself asking a question and someone who has the answer (or can at least point me in the right direction). At the same time, I find the ideas of digital communities very interesting and I would love to see StackOverflow grow into something genuinely good and useful. I will be keeping my eyes on it and maybe in a few months it might be time to revisit my opinion of crowdsourcing.
So the intertubes are resounding with word of Google’s latest offering: a next-generation browser called Chrome. Chrome certainly embodies some really cool ideas and could just pave the way for a new generation of browsers that are designed to support rich web apps and not just the text and images of web 1.0. But honestly, how far is Chrome going to go and how soon?
Chrome is being touted by some as being a full-blown web operating system that will soon supercede Windows. Ahem. Allow me to respectfully disagree. Sure the cloud is becoming an important part of everyone’s computing experience, but the desktop isn’t going anywhere soon. Let’s keep in mind the fact that the majority of computer users aren’t really tech savvy and aren’t continuously on the move. The most common use that people have for computers is word-processing, spreadsheets, maybe presentations, email and Facebook. Let’s face it: your grandmother doesn’t really want or need her cookie recipes to be kept on remote servers using Amazon S3.
Though personally I do quite like Google Chrome, there are some things that really trouble me. First up is memory usage. Google Chrome takes up about 267MB of memory which is more than IE8 which in turn is more than Windows XP. Seriously, all that for a browser so that I can run webapps which for the most part have features I could find in mid-90s software? Wasn’t it the promise of cloud computing that we would have trillion of clock cycles and terabytes of storage at our fingertips just for the asking? Webapps still have quite some way to go before I can justify a quarter of a gigabyte just to run a browser. Let’s not even talk about things for which there aren’t any webapps yet. I’ve recently begun moving away from word processors to Latex for my writing. There isn’t an online Latex environment. Nor are there full-scale online development environments (though CodeIDE is pretty cool). As a programmer, I’m not quite ready to move onto the cloud full time.