Some projects I was involved in, or I'd like to be involved in
I have been involved in a few interesting fields, during my time in University, and I just wanted to share a few (personal) beliefs, and talk about some of these
The most recent, and the more exotic field I have been studying is what is commonly referred as the "Bioinformatics", more precisely "Systems Biology". It was in a world class research facility, with a lot of interesting people, and more importantly almost no computer theorist.
One of the goals was to dig properties out of interaction networks and chemical reactions. One of the major problems in this area is that we know very little. It is very very far from basic computing where the goal is generally attained by asking the user to provide the informations and working from there.
The thing is that the user doesn't know much, so we have to infer as many things as possible, and therefore help the user to find the actual data. Our work is more akin to foresight than it is to computing. We just contribute to free some resources from probable deadends.
I don't really have an opinion on the computational biology as being a simplistic reduction, or on the contrary a wonderful proof that the living is nothing but a very complex machine. The reality is that for some parts of the mechanism, it seems to work quite accurately, and the computer is really a powerful ally and tool.
One thing that strikes me as odd, though, is that most "wet" bio-theorists use the computer merely as a data storage contraption, and consider it as a very fast way to do stuff they usually do by hand. The computer is an automaton, and a fast one, but cannot create anything new.
I had quite a good time there and enjoyed a lot using the computer to actually infer new "knowledge" from the data it was fed with. It seems to be the current Eldorado of computer scientists.
The embedded systems proves to be quite an interesting field as well. It's all about optimization and miniaturization...
Optimization, just like debugging, is in fact a part of the complexity theory, a now widely studied and theorized field of computing and information sciences. Questions as simple as "Will this program actually terminate and give me the correct results?" may seem trivial, but anyone who built a tool that does more than "Hello world" will say that this can prove quite difficult. And the question of whether or not there is a faster way to achieve the same result is even more difficult to answer.
Although some of the theoretical answers are very promising, this is probably the field that has the wider perspective as the current answer are, in my opinion, quite unsatifying...
Since I am a junior developer, I have a rather limited experience, but I do have a few specialties
Extensions : One of my first contacts with professional developments, and a somewhat recurrent aspect of my job is to take something that already works, and add a new functionality, or to improve one aspect. The drawbacks of this work is that you are not in total control and therefore are more or less limited in what you can do, and you are sometimes dependant on weird documentation holes, and API bugs. All in all, it is a job that gives as much satisfaction in actual coding (victory over the machine and the APIs), human relations (different ways of achieving the same goal have to be somewhat streamlined), and learning process (fields you have to learn to work with).
Middleware : As a custom developer, I am often asked to write a piece of software that bridges a gap in a well-known workflow. This tool-making can be automation, replacement of an inadequate tool, or simply a small tool that doesn't exist and will divide by two the time it takes to process the data. As a hobbyist, it is what I prefer (see the Newton DCL, and DesInstaller), and it takes a lot more creativity and learning capabilities than extensions. Somehow it's a bigger step in the same direction.
Full-fledged software : Sometimes, I am involved in creating a product from scratch, and something that is self-sufficient. Such a project is usually hard for custom developers as it requires both the adaptability to the customer's desideratas and the insight on what they actually need. As a rookie, that's the kind of development I find the hardest and I guess I lack experience to conduct big projects on my own.
The Newton really is an extension of myself. If you have ever asked yourself what could remember stuff for you, read your writing, mail, print, organize your thoughts, be used as an electronic book, record, serve web pages, pinpoint your GPS position, and so, oh so, much more, don't look any further.
The stuff is simply incredible. Even though it was discontinued in 1997, the community is still there, and very active.
True enough, if you think that the only thing you'll ever need is a phone book, and maybe a small calendar functionnality, the Newton is probably too big, too heavy, too much for you.
Otherwise, join us or come and have a talk with us. You'll find a bunch of people of every age and profession, and possessing or not the coveted object.
With Paul and Michael, we are working on a library that's supposed to bridge the gap between modern computers ans OSes, and our beloved Newton. Check it out here.
The logical conclusion of all that is that we organized a huge event in september 2004. We had some incredible speakers (litterally worshipped in our community) and some very interesting sessions about the hardware and software as it is today, and the directions we could take from here. A great opportunity to tighten the people, and to talk about the future.