I got a tumblelog

I got a tumblelog. Domain wise it’s part of my static site at Basu::shr. Behind the scenes it’s a basic Tumblr weblog with a nice looking theme and little else. I already have a proper weblog (this one) and a static website. I also have Twitter and Identi.ca accounts and I have a Friendfeed which pulls in updates from lots of different services that I use. So why yet another weblog?

The answer is that the web, especially the so-called Web 2.0 has been becoming more UNIX-like as time goes on. There are lots of different webapps out there, and the best ones focus on doing one thing and doing it well. It’s up to others to pull these webapps together via their APIs in a manner similar to the way UNIX shell scripts work. While this is in general a good thing, it can be a hassle for someone like me who would like to keep together all his/her online activity.

For a while I really wished there was One Great Webapp to Rule Them All. It would be this one great system into which I could put all my status updates, my pictures, videos, links, conversations and it would automatically send them out to whichever specific webapp they needed to go to. And much to my delight I found one just like that: Posterous. You send an email to Posterous containing whatever you want to post and Posterous can be setup to direct to a number of different webapps. This is a really cool thing, using email as a web equivalent of UNIX pipes. I tried it for a few days, and while I was happy for to start with, I came to realize some interesting things.

The first thing that I realized was email for all it’s flexibility and usefulness, it can be a bit tedious for some activities. If all you want to do is send out a 140 character update or post a video, it’s just a bit too much to switch to a mail client, copy/paste a link or type a message, select a recipient and then hit ‘Send’. Secondly, for conversation oriented media like Twitter, sending out your message is only half the problem and it makes no sense to use one tool to send out a message (email) and another to see incoming messages (another app or webapp). Add in the fact there are lots of small applications or browser extensions that do a really good job of putting on an easy-to-use layer on top of web services and email starts to lose its silver lining.

However, the greater realization I had was I that I didn’t necessarily wanted all my online activity pulled into one place. For example, this blog is about technology and my experiences with it and it’s not something that my liberal arts friends particularly care about. On the other hand, readers coming to this site to read about my adventures with programming languages probably don’t want to know all that much about what how the dining hall food is today or how tired I am after my creative writing class (things that go into my Twitter stream). I wouldn’t want to mix those two because the result would simply be a mess. I also don’t want to add things like cool videos, art or articles I find to either of these two unless I do want to blog about it (in which case I will write a post about it) or I really want my friends to know about it (in which case I’ll twitter it). By yesterday morning I decided that I still wanted to have an online, accessible record of stuff I found interesting (if anyone else really wanted to see) but I didn’t want to just dump it into the other streams.

Thus came about the tumblelog. I could have just stuck to my Posterous but I like Tumblr better, in part because of the gorgeous themes (which I hear can be used with Posterous, but I couldn’t find an easy way to do it) but also because it seems that Tumblr, especially the bookmarklet, processes excerpts from websites in a smarter way than Posterous. And I already had a Tumblr account that I started a few months ago, but I really didn’t use till now.

The way things stand now, here is how I currently use my multiple web services:

  • The ByteBaker for long-form tech-oriented articles
  • Twitter and Identi.ca for really short observations, ideas and messages
  • Basu::Shr::Weblog as a tumblelog for recording interesting things I find online, mostly videos and images
  • Diigo for interesting links that I want to keep a record of, but don’t care to actively share
  • Friendfeed to pull together everything about (plus a few others) for anyone who’s interested

Considering that this isn’t the first time that I’ve done this dance, I won’t be too surprised if I changed this setup again soon. At the current moment, the services and the tools around seem stable and useful and I’ve been able to use them with very little mental overhead (which is very important for me). Only time will tell if this works out, but I hope it does. On a related note, I’ve also started decoupling Facebook from my online presence because I’m growing increasingly uncomfortable with their “Walled Garden” approach, but that’s a matter for another article.

Sunday Selection 2009-10-11

Reading

Your Blog is Your Mothership With the rise of social media, tumblelogs, vlogs, Twitter and the like, it’s easy to think that the time of full-length blogs is over. This article takes the position that your blog is still very important if you want to make the most of the internet

Media

I’m a Technical Woman A simple but thought provoking video that came out of the latest Grace Hopper Conference.

Required Viewing for All Teens and Young Adults All I’ll say about this is that the title is self-explanatory

Software

Portable Firefox The browser scene has heated up recently up with browsers like Chrome and Safari making an appearance, but Firefox is still my browser of choice. A large part of it’s appeal comes from its extension and I find its functionality reduced if I need to be at a public computer. Thankfully Portable Firefox for OS X and Windows lets me take all my customizations with me.

Let the Geek Week begin

Yesterday I started my first (and hopefully recurring) Geek Week. So whats this Geek Week I speak of? As a computer lover and technology geek there are a lot of things that I would love to do, but more often than not don’t actually get around to (for a number of different reasons). But it’s that time of year when colleges in the United States decide that they want to get rid of all their students for a few days and so declare Fall Break. While my fellow students will by and large be sleeping in and spending time with the folks, I’m going to totally geek out.

I have a number of projects on hold that I really want to make some progress on. Some, but not all of these projects are related to computers and code. Others are things which aren’t related to technology, but just that I would like to do. I wan to make it clear that this isn’t just another catch up on backed work time, I will be doing absolutely no school work (aside from implementing some algorithms) and will think as little about school as possible.

Another aspect of Geek Week is that I’m not working to a fixed schedule or deadline. While I want to get a lot done, I do want to enjoy myself while I’m doing it, so I won’t kill myself to be productive. I’m not ruthlessly scheduling or setting up extremely precise. Rather I’m just making a list of projects and I’ll be moving between them as I have the inclination. While working on a demanding project (especially a creatively demanding one) I’ve found that it helps to able to mode-switch to something else, if only for a while. So having a number of interesting projects at hand should be a way to get things done without burning out.

As you can imagine, this will also be an experiment in seeing how my creative process works. Since I’ve almost always worked in a school environment, I’ve never really been in a situation where I have the chance to do focused creative work around the clock (and even when I did I was generally more interested in relaxing or something like that). I’m going to try to keep an eye on how I’m working and see if I work best in bursts, or in long ‘flow’ modes or something in between. Ideally I would like to do this on a time scale longer than a week, but we do what we canwitht the time that is given to us.

I’ve already started on one of my projects and done some preparation for another. Before I go back to geeking out, here’s the mostly complete list of what I’ll be doing:

  1. Working some more on the problem analysis that I worked at over summer
  2. Building a static site generator (a la Jekyll) in Python
  3. Starting on a interpreter for a BASIC-like language to explore programming language design
  4. Reading Orson Scott Card’s ‘Shadow Puppets’
  5. Catching up on some TV thanks to the wonders of the Internet

Did I mention that I love Fall Break?

I’m going on a Facebook diet

Before I say anything else, let me make it clear that I think that Facebook is a very interesting social and technological phenomenon which will continue to impact our society (for better or for worse) for years to come. However, on a personal level I have come to the conclusion that I need to go on a Facebook diet.

By lowering the barrier to instant, informal communication Facebook has made it very easy to get in touch with your ‘friends’ on the network, whether or not they want such a connection to exist. While this is a good thing in some cases, I have found that in my case at least, it encourages patterns of communication that I would otherwise avoid. At the same time, I found it difficult to use Facebook as more broadcast-oriented medium which in turn means that the ratio of time spent to people reached is rather small (especially in relation to my blog and proper forums). The net result is is that I spend an inordinate amount of time on activities that are, simply put, worthless.

Facebook has an almost unique ability to encourage short, but often pointed and intense discussions. But this is not its main purpose and there are far less fruitful things to do. In particular, the Chat application can be quite distracting and very irritating for users on both ends, especially since you often sign on and make yourself available without actually wanting to do so. From a technological perspective Facebook Chat is the perfect example of being just good enough and can become succesful because it is simply more insidiuous than existing IM applications. But from a personal productivity perspective, it’s a disaster waiting to happen.

Finally there is the fact that Facebook blurs the line between private and public like almost nothing else before it. While it can be very empowering and interesting if you consciously decide to put parts of your life on public display, it can also be very disconcerting and disturbing if you are someone who places a higher value on privacy and would prefer to be left alone. While I personally don’t mind placing significant aspects of my life on display (and am quite careful about what I do and don’t put online), I know that other people don’t feel the same way, and I continually find myself questioning whether or not I should engage in some conversation or the other.  I would rather not have to think about this. I would love to live in a world where everyone is conscious of their privacy and properly sets their privacy settings. But lacking such awareness, there are ample opportunities for misunderstanding and confusion which makes communication all that much more difficult. Once again, dealing with those difficulties is not a good use of my time.

Keeping all the above in mind: I can’t help but come to the conclusion that in many ways it’s best if I go on a Facebook diet, hopefully resulting in more productivity on my part and less intrusion on others’ activities. In particular, I’m completely giving up on Facebook chat, most applications (including all games), messages (which are an adhoc, half-assed, proprietary reimplementation of email anyway) and photos. I’ll also be commenting only if I know the person really well and might even start removing people who I don’t really know all that well. I started mirroring my blog on Facebook Notes a few months ago, hoping it would spark more conversation, but that has not been the case and so I’m going to stop that as well. I used to check Facebook whenever I sat down at a computer, but that will stop as well.

What this means for my friends is:

  1. I will not be responding to any messages you send me on Facebook (use email or IM)
  2. I will not be putting any photos up (though you are welcome to put my photos up
  3. I will probably ignore any application/quiz invitations you send me
  4. Please don’t depend on event invitations to let me know that something is happening
  5. I’ll still be using my Wall, but don’t expect a response in less than a few hours

I would still like to use Facebook as a discussion medium (as opposed to a communication medium) but only if the time/energy investment pays off. Without Facebook as a major time sink, I plan on refocusing time and effort on this blog, my website ( http://basushr.net ), email for direct communication and involved conversations and Identi.ca/Twitter for more informal, short length communication.

Communicate Away!

The role of the Software Toolsmaster

The first time I heard the term ‘Tools Master’ was in Steve Yegge’s Wizard School essay a few years ago. If you haven’t read that one, go read it. Now. I’ll wait. Read it? Good, now lets go on. Yegge didn’t really talk about what a Tools Master was, or what the job entailed, but from the title itself and the fact that Jamie Zawinski holds it in the essay, it’s not too hard to make a rough guess. Zawinski was one of the moving forces behind the XEmacs text editor and the Netscape (later Mozilla) browser. Now, I consider both the text editor and the browser to be very important tools, both from a software user and a software maker standpoint. For the purposes of this article, let me define a Tools Master to be someone who is an expert in the software development tools (IDEs, compilers, debuggers, test frameworks) used by a particular team. I’m going to advance the hypothesis that having at least a part time Tools Master makes for a better development team.

I’ve been thinking about this matter on and off for a while, but what brought it to my full attention was this article on Dream Development Teams. In it the author talks about an ‘Operations Guy’. An operations guy would be responsible for making sure that the underlying systems used by the team (build farms and their configurations, test environments etc) are all up to date and working well. I think this is a subset of the role of Tools Master that I envision. In his classic The Mythical Man Month, Fred Brooks recommends having a tool master to reduce the burden on the rest of the team (and streamline communication).

Software development itself uses a lot of software and like all other software, development tools are often buggy, incomplete, poorly documented or just not designed for the specific situation they’re being used for. When I was in my software engineering class last semester, we were using the KDevelop IDE. The version we were using (which was one or two versions behind the cutting edge) only had rudimentary Subversion support. As a result, we would often have to drop into a terminal to use Subversion before moving back to KDevelop. It wasn’t exactly painful, but it was certainly something that we would have liked to have fixed. This is a perfect job for a Tools Master. Since KDevelop is open source, he or she could have patched the source to add the functionality that we wanted. Of course, this would have meant that we would be running our own internal branch of KDevelop, but we would also send the code to be merged with the upstream.

Having a Tools Master certainly doesn’t mean that the team should be writing their own editors and compilers and test frameworks all the time. I believe in software reuse and like free stuff as much as the next guy, but sometimes what’s out there is simply not enough. Having read about startups and successful companies, I’m coming around to the idea that if you want to launch a really innovative product, you might want to stray a little bit of the mainstream. For example, Paul Graham’s Viaweb (which was arguably the first webapp) was written in Common Lisp, not a typical development environment unless you’re an AI researcher. Joel Spolsky’s company uses a custom internal language called Wasabi. In such cases, having a Tools Master would be indispensable.

The Tools Master isn’t just relegated to supporting the main development or fixing bugs. The tools that a Master would create would be proper pieces of software in their own right, just as the infrastructure used by modern applications (Google File System, Ruby on Rails) are robust software systems on their own. In fact, I think being a Tools Master might be the best job on the team. Not only would you get to play with cutting edge technology (compilers often have algorithms straight from research papers), your clients would be programmer’s themselves who would have a better idea of what they want than well-meaning customers with no software development experience.

At the same time, being Tools Master would also be very demanding. If developers in the field are anything like the people I’ve worked with, they take their work environments pretty seriously and can be very whiny if the situation demands it. A lot of programmers (including me) have an intense desire to play with the latest and greatest piece of technology and keeping that desire in check can be a very trying experience. After writing software for a while you also learn to love some tools and hate others. I love Emacs and wasn’t very happy when I needed to use KDevelop for my software engineering class. I’m not sure how real work software shops work in terms requiring common tools, but I think  that a Tools Master is likely to get lots of complaints if the tools in use aren’t up to par with those the developers are used to.

Considering the very important duties that the Tools Master would have on a team, it’s important that he or she be a very competent hacker. Having systems that are broken, buggy or just a pain to use can dramatically reduce a team’s efficiency. Any software team also uses a wide variety of tools, and the Master would have to be fairly proficient at all of them. I think that a large part of the job might involve lashing together existing systems, so a good knowledge of scripting tools would be necessary. At the same time, such scripts can have a tendency to become unreadable and unmaintainable since they’re written in the heat of the moment. If such scripts eventually become the backbone of the development system they need to be cleaned up and kept in proper shape. It’s no wonder that Steve Yegge picked Jamie Zawinski to be his fictional ace Tools Master. You could easily consider him a real world Tools Master.

Unfortunately, I don’t know enough of software development in the real world to say how much of what I said actually happens. However, if I ever get to lead my own development team (or start a company), I’m definitely going to have a Tools Master. Considering my interest in programming languages and dev tools, I might want the job myself (if I’m good enough).

I envision Tools Masters as being the blacksmiths of our times. Knights with shining Mac Pros riding their trusty Quad Cores into battle might get all the glory, but skilled blacksmiths are no less important. They need to know a lot about how weapons are used and wars are fought in order to create good weapons. You can’t be a good Tools Master without knowing about software development. I’m going to be keeping a look out for examples of Tools Masters on the Internet and trying to learn from them. If you have any examples you know of or admire, you should share them in the comments. Happy Hacking!