rubikzube

software engineer ¤ yogi ¤ turban cowboy

Wednesday, February 22, 2006

The coffee's stale, but the chord rocks

I never realized how elegant C# was until I started a major project for school using version 5.0 of Java.

Now I find myself missing the little notes that found thier way into the music that is C# and warmed my soul. Notes like delegates, foreach…in, structures, value types, properties… basically everything listed here.

Because its lack of similarly heartwarming features, I feel like I have to hold Java’s hand quite a lot to get it to do several things that I wouldn’t think about doing twice in C#. And while I am sure that there must be some things that are easier to accomplish in Java than in C#, I haven't encountered them yet.

Thankfully, 5.0 has enumerations, or I might have hurled myself out of my window. Stale coffee is no laughing matter.

Update: After several days of working with Java 1.5, I have figured out how to properly take advantage of Javadoc, implement the for...in loop, and use generics to clear away the clutter in my code.

This just proves that everything foreign to a person seems wrong, until they realize that that which is foreign is just foreign in appearance, and everything’s exactly the same. Which is when they feel embarrassed enough to comment on their blog about how embarrassing their previous judgments were.

But I’m still right about all of my other judegments. At least until I'm wrong.

Saturday, February 18, 2006

My father's sense of humor

My dad just sent me a email regarding the following post by Supergirl.

Last night when I arrived home from work, I was tired and a bit grumpy. Zubin didn't care about any of that, he just wanted to RUN! While I got ready to go on a run that I didn't want to par-take in, I made him sit on his green chair. The whining and talking back that I heard was vastly amusing.

This really should help to explain how I got my personality.

Thursday, February 16, 2006

Life threading

In class today, there was a discussion about how context aware devices would integrate with our daily routines in the future. The class analyzed various hypothetical situations, including the classic text message from your refrigerator while shopping at the grocery store to remind you that you are low on chocolate syrup since that swinger’s party last week.

During the discussion, it seemed to me that part of what the research community is doing is perhaps inappropriate. If my refrigerator tells me that I need chocolate syrup, and the grocery store draws me a map right to it, then between them, they have effectively removed my agency during the trip to the store.

There were other examples that we covered in class, to be sure, but they all had a similar feel that I can only describe with the term life threading. I’ll define life threading as the act of using context aware devices to make our lives more efficient by getting us to where we need to be faster with fewer interruptions.

The problem with this approach is that when taken to extremes, such as my refrigerator’s unsolicited opinion or the grocery store’s over eager helpfulness, it also removes some of my agency, as well the opportunity for reveling in the unexpected or acting on curiosity.

Shopping at that point becomes about what my refrigerator told me to do and the instructions I received from the grocery store on how to do it. My brain shuts off. I become a passive participant even though the point of context aware devices should be to make us more fully active participants.

So let’s get old school on this. The rule that I think context aware devices should adhere to is to speak only when spoken to. It’ll make us all a little more empowered and teach the little bastards their place.

Update: After a comment by Don, I checked around and apparently Jen Rode attends Irvine as well... which means that I probably already met her and didn't remember. Now I have to play the "Didn't I meet you before..." game the next time I meet her, which will either be the first or eleventh time. Sigh. I can feel the awkward coming from a mile away.

Auuuuugh!!!

I am being tortured at the rack of DOS shell scripting, having been tasked with coordinating the activities of a VMWare client and a VMWare server. Between the kludgy client API that VMWare provides and the unlimited limitations of DOS shell scripting, I feel stretched to the breaking point and covered in some undesirable wet substance.

Every time I try to align the two sides together in an approach that I would consider rational, I find out that what I am trying to accomplish is not either supported by the underlying framework or so poorly documented that my Google Fu efforts are thwarted and I can't figure out the correct function calls to get the damned thing to work properly.

Not only that, but my hated language enemy, Perl, seems to be revelling in my dismay, flaunting most of the functionality that I need while I suffer.

Man, you know you're in a bad state when you start to anthropomorphize programming languages.

Tuesday, February 14, 2006

The Monastery of Suck

Have you been to Mount Awesome?

I wish I was there. I am currently spending my time at the Monastery of Suck, paying down some kind of karmic debt in California while getting my master's degree in Informatics.

And while school and everything that goes with it is definitely on the path to Mount Awesome, it's kind of getting me down. My girlfriend of four and a half years is three thousand miles away, I'm earning a quarter of what I earned while working full time, Irvine's social scene blows compared to Brooklyn, and I miss my father's cooking.

Not only that, I'm not sure that I like graduate classes in the abstract. Everything moves so fast that I'm not getting a chance to delve deeply into most of the subject matter. Instead of getting in-depth knowledge of one aspect of a topic in a class, most professors assign several readings that give you an overview of the entire topic and then move on.

I think that I would have been happier with a more generalized or more hands on approach, or perhaps a socratic method instead of readings. I love learning about programming and before I came to Irvine I kept up with fifty blogs daily, but somehow the structure of graduate school just makes learning lame for me.

I may be too much of an autodidact for school.

Saturday, February 11, 2006

How many sensors does it take to screw in a light bulb?

I’m getting embroiled in the user of sensors and sensor networks in computer science, and I kind of wonder why computer science doesn’t borrow a page from biology in modeling these kinds of systems and their behavior.

I feel like a lot of the sensors and sensor systems that are being proposed don’t take advantage of the billions of years of knowledge that Mother Nature accumulated when evolving the world into its current state.

For example, GM has been experimenting with self-driving cars during the past couple of years. But if the best way to get a large, moving object to be spatially cognizant required rear facing video detectors, sonar, or infrared vision, I am sure that elephants would have eyes on their butts and antelope would screech like bats.

That they don’t should be taken as a hint, and I have never seen an elephant knowingly back into a wall or an antelope run into another antelope at full speed. Of course, my African wildlife experience is limited, but you get my drift.

P.S. On a relevant interesting note, all of these creatures have ears… hmm.

Friday, February 10, 2006

Leaving footprints in the digital mud

All of the brouhaha over Google Desktop and the privacy of information trails that we leave behind when using the internet has given me reason to pause.

Do people realize that when shopping online from their bedroom, they are as private as if they went to the mall and a store manager was following them in each store they visited? I am serious. That’s the level of privacy we have when shopping online. Not only do online stores know what I bought, they can tell what items I looked at and for how long I looked at them… and that’s just one example.

Another would be the now infamous Google Desktop feature, “Search Across Computers”. Would you take love letters from your ex, your secret plans for cold fusion, and your tax returns, put them in a clearly labeled cardboard box, and give them to someone who agreed to follow you around for a month wherever you went? Because that’s what we’re doing when we use this feature in the new Google Desktop.

It seems to me that companies develop and market new technology with the best intentions for easing our lives, but issues of privacy and information trails are never at the forefront of the discussion because they are uncomfortable topics. This is enough reason to talk about them more.

For example, the amount of information Amazon.com has about me is probably staggering. They definitely know my credit card numbers and address, as well as historical records of both. They can probably infer my occupation, income, level of education, sociopolitical viewpoint, sexual orientation, and god only knows what else by my browsing and purchasing patterns.

I never think about that when I use the site and they never explicitly state that they are doing it, however I presume that they must be creating a unique model of who I am from my behavior on their site in some form, even though they never come out and say it directly. In addition, I know they are not the lone provider of an online service to take this understated position.

Typically, if any provider of an online service even discusses information tracking it is in the context of “enhancing their services”, and all they state is that they will keep the information private. One thing they never mention is what they will keep private.

Maybe we need a required privacy rating system, so that the details of what information is tracked by online services are transparent to thier users. It could even be colored like the homeland security threat advisory... only without the ridiculous penchant for melodrama.

Update: I just found this related posting on Dare Obasanjo's blog. It was only two weeks earlier than this one, meaning that in some small respect I may be catching up to the present.

Monday, February 06, 2006

The Informatics power hour

For one hour each week, the Informatics department has a research presentation. Padhraic Smyth, a faculty member here at Irvine, blew me away with a presentation on probabilistic topic models last Friday.

Probabilistic topic models are a machine learning technique whereby a computer discovers topics in a collection of documents by analyzing the occurrence of words in the documents and the relevance of certain words to each other. Pulling this into the real world, Smyth had an amazing presentation where he analyzed large sets of historical news archives and then moved on to corporate email, sifting each document set into relevant topics and tracing trends in topics over time.

The applications of this technique are staggering when you think of the amount of unsorted data that's floating around both in the ether and in libraries around world. Automatic indexing and cross-referencing of collections of documents by topic is an unbelievably powerful search and visualization tool. Just think of all of the potential research that this could enable.

Saturday, February 04, 2006

Windows script files and pedagogy

While toiling away at work on a Saturday afternoon, trying to figure out how to communicate between real and virtual machines, I encountered this article by geekstar Eric Lippert on the Windows Script Files.

As far as I can tell, Windows Script Files are a nifty bastardization of the declarative power of XML and the dynamic power of scripting languages. They enable Windows system administrators and glue coders access to a lot of features that already exist in HTML scripting and ASP, but have been missing from the system administration world, such as include files and access to type libraries.

This is obviously useful if one wants to manage a truly complicated sets of glue code in a way that eliminates cut-n'-paste anarchy. But one statement that Lippert made as he talked about the inevitable comparison of VBScript over Windows Scripting Files seemed unusually relevant to the current Python vs. Java discussion:

Pedagogic code must be short and easily understood, but code is designed to manage complexity.

In his article, Lippert was explicitly referring to the fact that people can smugly prove that writing "“Hello, world" in VBScript requires far less code than using a Windows Script File, but the latter is not designed for little snippets of code. It is retarded to compare the two using that kind of example. The latter was designed for complex situations. Of course it takes more lines of code to produce the same function, but Windows Script Files are required to in order to deal with exponential levels of complexity they allow a programmer to manage.

The sad thing is, I see the same kinds of comparison over and over with Python vs. Java. Examples that are used to hype the newer and less formal object-oriented languages such as Python over traditional languages such as Java by necessity will favor the sleeker less formal languages because the examples are too trivial. And that is equally retarded. Can't we all just get along?

Friday, February 03, 2006

Al Gore wishes his network was this tasteless

Somehow in the midst of forgetting something important I've wound up on Google Video, which is sort of like late night public access television as envisioned by a crack addict with an attention deficit disorder.

In less than ten minutes I saw a Wachowski brothers inspired ping-pong match, Carmen Electra demonstrating the aerobic advantage of acting like a slut, and a Ferrari get its ass handed to it by a Mitsubishi Evo.

Thursday, February 02, 2006

And now, for dessert...

kolywater: this class was supposed to be easy
kolywater: wf happened
rubikzube: No clue
kolywater: i was told by several people that it was cake
kolywater: HOW
kolywater: HOW IS THIS CAKE
kolywater: ugh
rubikzube: Maybe cake with a glass shard filling?

Wednesday, February 01, 2006

Should software development be a science?

As I was leaving a meeting today, I stepped aside for a short conversation with my boss, a very intelligent product manager. We were discussing a tool that I am working on, a framework to test new versions of a product that can be commonly configured in well over forty different ways, and uncommonly configured in many, many more.

All of these different configurations and versions make it important to have a tool that can automate the testing of various combinations of versions and configurations, so that we can exterminate bugs that only appear within the context of certain combinations. Preferably that extermination will be as lethal and final as a healthy dose of rat poision stew, but the thing stuck in my head after the conversation is that my boss excitedly said this tool was finally going to turn our development cycle into a science.

"Wha...?"

I always thought of software development as a craft, a combination of art and science). I thought of myself as an artisan, someone with the ability to reason, but be expressive and insightful in my reasoning. Being an artisan gives me a sense of pride and a desire to contribute to the furthering of the craft, which is why I enrolled in graduate school to begin with. Now that I study Informatics and work at an enterprise-level software company, however, I find my artisanal view of development assaulted.

Both my employer and my class readings on software architecture want the whole development process to be measurable, analyzable, controlled. They want software constructed in a formal, rigid and methodical process rather evolved through a combination of heuristics and agile methodologies.

Now maybe I’m a pragmatist at heart, but I think one should use “low” technology where one can afford it. I believe in Einstein’s statement, “As simple as possible, but no simpler”, and I believe that should be the goal not only of software itself, but also of the software development process. Heuristics and agile methodologies may not be strictly scientific, but they are effective when properly applied within most contexts of software development.

Science should not be the goal of software development. It should be a path to get there.