Rethinking My Hardware Setup

I have had my Windows Phone for almost a month now and it has completely changed my life. Ok, maybe not completely, but I do find myself doing a lot more “computing on the go” than I did a month ago. Thanks to the big screen on the HTC HD7, 3G coverage in my area and my data flat-rate I can now read the news on my way home from work, check email and Twitter between meetings, play a little Flowerz or just browse the web. Quite a few things that I would have needed to sit in front of my computer at home for in the past, I can now do on my phone when I have a couple of minutes of free time. As I will probably be getting a new computer next quarter, I have been pondering what kind of machine I wanted to get given this change in my computing situation.

The way I see it, there are currently the following categories of computers or computer-like devices such as phones:

HardwareCategories

In the absence of any budget constraints, I would probably just get a device in every category, so I always had the right kind of computer handy; maybe with the exception of the feature phone category, because those are dead anyway. However, since I have to make do with finite resources, I have to find the right balance of what kind of devices to get.

Until last month I have been doing fairly well with a simple Windows Mobile Phone, a Windows 7-powered laptop and a Windows Home Server-based server. Had the Microsoft Courier come out, I would probably bought one, meaning I would have had a nice balanced distribution in every other of the aforementioned categories.

Now that I have a large-screen smartphone, there isn’t really a need to get a tablet anymore, because many of the things that I would have done with one, I can now do on my phone. There are a few things, however, like writing longer texts that are extremely painful without a real keyboard (even on an iPad, believe me, I tried). So as my laptop approaches the end of its useful live, I think I will not get another laptop, but opt for a desktop PC and a netbook instead.

I originally bought this laptop when I was in college, because I needed a computer it in class and on the train when traveling. Today, I don’t have these use-cases anymore and my laptop sits on my desk almost 100% of the time. For my current situation it would therefore be cheaper and also better in terms of performance and expandability to get a desktop PC; Core i5 based machines are looking pretty good right now. Also, as the laptop has almost all my data on it, I am hesitant to take it with me on vacation. This role could be better filled by a netbook that is also cheaper to replace should it get stolen or lost. Furthermore, it would be lighter, so I could use it more easily sitting in bed on a lazy Sunday morning, for instance. After I seeing the Dell Inspiron Duo the other day I think, I might be getting one of these when they come out. It’s not just a netbook, but can also (sort of) double as a tablet. Such a device would nicely cover the center of the hardware-continuum outlined above.

There you have it: a complete Windows-based setup to cover all my computing needs. All the way from a nice little Windows Phone 7 based smartphone, to a Windows 7 Home Premium based netbook, to a Windows Home 7 Ultimate powered desktop and to a Windows Home Server machine; with all my contacts, calendar, mail and select data kept in sync by Windows Live in the cloud. All that’s missing from this in order to get the full dose of Microsoft goodness would be an Xbox. However, in spite of how awesome Kinect looks, this isn’t going to happen, unless I somehow got a bigger apartment with a living room large enough to set up the Kinect.

Advertisements

Looking into Ways to Organize my DVDs

The other day I got a copy of and immediately devoured “Snoop: What Your Stuff Says About You” by Sam Gosling. It’s a fascinating read about what our homes, offices et cetera reveal about ourselves. It’s like a scientific approach to what you can see on MTV’s Room Raiders.

I used some of the techniques described there on myself and as it turns out, I am a very organized person (big surprise, I know). And since I’ve already organized my books using LibraryThing, the logical thing to get in order next would be my DVD collection. So far, all I have is an Excel spreadsheet listing all movies and TV box sets I have, which is really laughably low-tech.

image

Here’s what I would want my ideal DVD organization solution to be like:

  • Simple, uncluttered UI: There should be a simple and straight-forward way to add new titles and browse my collection; like a gallery with pictures of all DVDs I own that I can than drill-down into to get further information.
  • Rich meta-data: Upon entering a title or ideally a UPC, I should be able to see a cast list, cover art etc. for all my DVDs with ways to search and cross-references titles (e.g. show me all titles or episodes starring Summer Glau).
  • First class support for TV series: Most of my DVDs are TV series box sets, such as “How I Met Your Mother Season One”. I would want to be able to get a list of all episodes that are contained in the box set with full cast lists and ideally a searchable episode summary.
  • Data Mining: Based on this meta data I would love to be able to perform advanced searches (kind of like a version of six degrees of Kevin Bacon based on my own collection) and answer questions such as “What is the connection between Rachel Nichols and Ed Helms?” (answer: Rachel Nichols starred in Alias together with Jennifer Garner who also starred in Juno together with Jason Bateman, star of Arrested Development, where Ed Helms made a guest appearance in “The One Where Michael Leaves”. Or “How many people from the cast of The Daily Show have appeared on Arrested Development?” (answer: as far as I can tell, four: Ed Helms, Rob Corddry, Rob Riggle and Stacey Grenrock-Woods; cf. List of Notable Guests on Arrested Development). Although, I have to say, this merely a nice-to-have, that I don’t think anyone has implemented anywhere. Yet.
  • Online Sharing: Like my publically viewable book collection I would like to be able to share my DVD collection online. However, since I own a couple of DVDs I am not really proud of (like the occasional chick-flick I watched once and then never again), I would like to be able to flag some titles as “private” so they will only be shown to me. However, now that I think about it, it would probably be best to get rid of those titles once and for all :)
  • Cost: The ideal solution would be free (or ad-supported for a website), but I wouldn’t mind paying a small one-time for a really great solution, like I did for my lifetime membership at LibraryThing.

Unfortunately, I haven’t found any solution that would do all these things. Most fall short on at least one count. Here are (in no particular order) the ones I have looked at so far. Please let me know, if I’ve missed anything or if you know of anyone that does all those things listed above:

  • DVD Profiler: This is a Windows application with a lot of rich meta-data and first class support for TV series. However, I would really like my DVD organizer to be a website so I’m not tied to my PC for browsing and updating my collection. Note that the software isn’t free for collections of more than 50 titles. Regardless, the 30$ one-time license fee wouldn’t be a problem, if it offered all of the must-have features listed above, including decent online access.
  • DVD Corral: This website has a good, clean UI, but I’m afraid that is only so, because it doesn’t have a lot of features to begin with. Meta-data seems to be limited and it kind of feels like the primary purpose of the site was to get people to buy or rent the movies shown (which is I suppose the way they finance the whole thing). It’s free, however.
  • DVD Aficionado: My first impression of this website was “so Web 1.0”. I could look beyond the UI, if there were features that would make it worth my while, but it appears that this is more of a price comparison website than a full featured DVD organizer. Also, while browsing the site, I got a couple of “Internal Server Errors”, for instance when looking at the Bugs page. How ironic.
  • DVDPedia: Mac-Only, that is all there is to say.
  • DvdCrate: This site has a lot of information on individual DVDs, but it appears to be too focused on movies with no inherent support for TV series, like episode lists.
  • DVDCount: This is a very basic site that doesn’t seem to offer any of the search and browsing features I would like.

Based on this (admittedly brief and quite possibly incomplete) research I think I’ll go with DVD Profiler for now. Although it doesn’t have the kind of online features I would like, it does have the best support for TV series, I’ve seen so far. I’ll start adding some more titles to the database so I can further evaluate it, while staying under the 50 titles limit of the free version.

Conrad Wolfram: Teaching Math instead of Calculating

Normally I would use my my Twitter feed to share links such as this one, but this TED Talk by Conrad Wolfram of Wolfram Research warrants more discussion than I could fit into 140 characters. The gist of his talk is that schools shouldn’t teach students math by making them do tons of tedious calculations. Instead, that should be left to computers, so people are free to focus on learning how to formulate real-world problems in mathematical terms, have a computer perform the calculations and then apply the result to their real-world problem, and I couldn’t agree more.

When I was an exchange student in the U.S. in 2000/2001, I was at first excited to see graphing and programmable calculators be used in math class. Back at home we only had simple scientific calculators and I think to this day that’s all students are allowed to use on math exams. However, in spite of these very capable computing machines, the problems we were given to solve were pretty dumbed down, as Wolfram also noted in his talk. As it turns out, technology was merely used to make us do more problems, not empower us work on more difficult and interesting ones.

I think Wolfram is really onto something when he suggests that once we have basic arithmetic covered (the kind of math you would need in everyday activities like shopping), we should use computers and in particular programming, to teach people to formulate tough problems in a way that computers can solve them and then interpret the results.

Excursus: Domain-specific languages

I don’t suggest that everybody learn a general purpose programming language like C# or Java in school, of course, because let’s face it, not everybody is cut out to be a programmer (at least by today’s definition of programmer). But with the advent of domain-specific languages (or DSLs for short), I think programming in a language specifically designed for a certain problem area could become common in many professions that would traditionally enlist the services of programmers to write custom software for them.

As a software developer at a bank I regularly talk with people on the business side that rely on my software in their day-to-day work. They know the business-side of their problem area and I know the technical side and somehow we have to come together to build a program that provides a technical solution for their business problem. Traditionally, there has been a huge disconnect between business people and us technical folks. Many a times it seems we are speaking two completely different languages. Of course, it’s hard to write software to solve a problem one doesn’t fully understand, and this is one of the reasons many software projects are finished late, over-budget or outright fail. But I don’t think it has to be that way, if we can somehow narrow the gap between the business and the technical side. Enter DSLs:

Let me give you a simple example from my own experience: One of the departments I have been working with is responsible for reconciling front- and back-office systems. Basically they are making sure that every transaction from the front-office system is accounted for in the back-office system and vice-versa. There are a lot of different transactions taking place in a bank, so there is a lot of reconciling to be done, but most jobs follow the same kind of pattern: There are two lists of transactions (one from the front-office system, one from the back-office system) and each transaction has certain properties that need to match in the two lists. For instance for a money transfer this would be source account number, destination account number, amount, currency, value date et cetera. Of course, there a bunch of little details, exceptions and corner-cases that need to be taken into account, but let’s ignore those for simplicity’s sake.

From a business perspective this is to the reconciliation job. Yet using a general purpose programming language it’s still hard to write a program to perform this job. So what I ended up doing was creating a sort of reconciliation framework that one can configure to perform any job that fits this general pattern plus some advanced functionality to cover the other gritty details. The configuration is declarative, based on XML,  which is a vast improvement over the previous approach of using Delphi to hand-code a new application based on a few shared components for every single job. However, it still requires a rather technical person to configure the framework for use as the business people don’t even want to go near the XML.

So wouldn’t it be great if there was a language of sorts that would allow the reconciliation department to create their own reconciliation jobs? I wouldn’t even call it a programming language as that would imply one needed to be a programmer to use it. No, this would be a language for people on the business side that knew the ins and outs of problem area but currently lack the tools to develop the solution themselves. It would be a language with first class support for strongly-typed variables such as “Todays money transfers from system A” and operations such as ”Compare data from systems A and B based on the fields source account number, destination account number, amount, currency and value date”. The compiler for this language would then translate this into the proper SQL query required to actually retrieve the data and some kind of list iteration to execute the comparison; but that would be an implementation detail no business person would have to concern themselves with. All they would see were a couple of commands that almost read like sentences. The closer such a DSL was to a natural language, the easier it would be for practitioners to use. Also, it would almost eliminate the need to write documentation for the program, because it says right there in plain English what it is this job does. Of course, as in any programming language, the user to would have to adhere to certain semantics and syntax. This is where it gets difficult for non-technical users that are not used to using precise language to describe their problems; a common source of frustration for programmers working with business people.

More mathematical practitioners, more practical math

But getting back to Wolfram’s point about teaching programming in school: I think that narrowing the gap between business and technical people needs to be done from both sides. For one, we as software developers need to develop tools that are better tailored to the problem area of our users and that give them the power to solve their own problems without relying on us to develop individual solutions for them every time. Second, as Wolfram suggests, we should enable all people to develop the quantitative skills necessary to use these tools (precise problem formulation among them) by making math class more about developing quantitative solutions rather than performing calculations by hand, a skill no one needs ever again once they leave school.