How Can an Old-School Coder Regain His Chops?
I've been developing professionally for 25 years, and used a good many languages and environments in that time, including all of those that you mention.
The vast majority of our development these days is web delivered apps, which in general appears to be the way things are going, certainly in the Enterprise. They might be a bit more work to develop, but from a deployment and maintenance point of view they're fantastic.
Of course, you'll need a server side language, and whilst C# and the Microsoft .NET framework are actually pretty good, you'll be stuck with an IIS back end and therefore Windows on the server. The Mono project will give you a fairly similar environment on other platforms, but I've found that you run into minor problems which are an annoyance, and so would recommend PHP, which is a pretty good language that's a natural fit for web development, can be used in a procedural manner (as that is likely what you're used to) or Object Orientated once you're happy with the concepts, and will run on pretty much any platform.
This setup doesn't however exclude you from developing "local" desktop apps, as something like XAMPP (which you'll probably use for your development environment anyway) will give you a pretty small install that includes a web server, database, PHP and various admin utilities, which can be dropped on the user's machine. In a small production environment, you can also use XAMPP on a server. If the size of your installs is a major issue, then there are a number of tiny web servers which can just be dropped onto a client machine, and I set up one a while ago which included PHP and the relevant libraries that came in at under 2.5Mb when compressed.
If you go the PHP route, also consider using something like CakePHP for building your back end. It's a modern Model-View-Controller framework which provides a simple and scalable way to build a model driven back end, handle routing to give your application structure, and maintain a separate set of presentation pages, which depending on your application may simple be dumping out JSON or XML data. CakePHP will even automatically build you a "scaffold" which is essentially a simple web application for administering your database. You'll probably not want to use this scaffold for anything other than testing, but you get a lot, very quickly, for very little effort, and it's a good way to learn how it all fits together.
There are a lot of very good free applications out there which you can use, especially if you choose PHP as your back-end language, and with one exception (a designer for ExtJS front-ends from Sencha which is great for prototyping) everything I use day-to-day is free, and in most cases cross-platform:
- XAMPP (Apache, MySQL, PHP, FTP server, essentially a full server back-end which you can run locally on your machine)
- Netbeans (in my case the PHP version, which is comfortably the best development environment I've found, with recent versions of Visual Studio coming in a close second)
- MySQL Workbench (a great admin and database modelling tool)
- TortoiseHg (a front-end for the Mercurial version control system, which integrates nicely with Netbeans, but the Windows version also includes a handy shell extension)
- Google Chrome (very fast and includes excellent web developer tools, but also consider Firefox with Firebug)
- ExtJS (you can use the Open Source version until you have your apps ready, and then just pay a very reasonable annual subscription which also includes support)
- IETester (Windows only. Allows testing of your app/website in all versions of IE since v5.5)
- OpenOffice.org (as a development tool, I use it to put together PDF form templates which my back-end applications fill in, but it's also a damn good office package)
- VirtualBox (for setting up test environments, and copies of client production environments if you're in a position to do so)
- AutoHotkey (Windows only. At a basic level allows the setting up of hot-keys for various tasks if you're a keyboard oriented developer, but also offers full scripting if you need it)
- VirtualDimension (again, Windows only, but gives you multiple desktops, allowing you to better organise the applications you have running)
- Filezilla (an excellent FTP client)
- 7zip (very handy and flexible compression/decompression tool)
- The Gimp (you're likely to end up drawing icons and cutting up pieces of artwork if nothing else)
Whilst others will no doubt have different preferences, I've tried a lot of different tools and settled on these as the best for my requirements.
Once you start using these sorts of tools, you'll quickly realise just how good they are, and may like to make a donation to the relevant projects.
The one thing you'll definitely find and absolute ball-ache with web app development is browser compatibility issues. You'll need to test in all of the browsers you can get your hands one, and invariably everything will work fine except some if not all versions of IE, which will require some tweaking. Using ExtJS and/or jQuery will help a lot as they include work-arounds to handle most of the common problems, but there will still be plenty of frustration ahead.
IBM Breaks Open Source Patent Pledge
The point is IBM said they wouldn't use these patents against open source projects, and just did.
Actually, they haven't done anything of the sort.
If you follow the link and read the letter send by IBM to the TurboHercules president, all they have done is inform him that they believe his company is infringing at least 173 of their patents. This is no less true for the two which they pledged not to use against open source projects than it is the other 171. They are still being infringed regardless of whether IBM intends to enforce them or not.
What IBM have not done is make any attempt to enforce these patents, they're just stating facts as they see them. You can be absolutely certain that the two which were part of the patent pledge won't form part of any future case, and therefore IBM haven't broken and I don't expect will break their patent pledge.
When Will AI Surpass Human Intelligence?
Let's say today I develop a piece of software with all the same potential and cognitive power as a full human brain, and connect it up to a series of sensors which provide the same level and quality of information at the same rate as our own human senses do, and link in a series of mechanical limbs and a voice-box etc. with identical capabilities to those in our own bodies, then, when I flick the switch, even if I truly have created something which functions perfectly and in an identical way to a new born baby's brain and systems, it's still going to be up to eighteen months until it utters its first gibberish words, probably a year or more after that before it demonstrates signs of understanding what I'm saying and can respond verbally in a meaningful way, and a further seven or eight until it learns to play chess to even a basic level, let alone take on an IBM chess playing mainframe.
The reality is that not one of these pieces, mechanical or software is anywhere near existing, so I'd say 30 years is nothing like long enough for this to happen, but my point here is really that in order to know whether you'd been successful you'll have to wait a very long time whilst the learning and development process takes places, and we're in an industry that pretty much demands instant results and proof. Worse still, if even one little piece of the puzzle isn't perfect, then the whole thing may never develop at all, and the nature of true learning systems is that once they reach a certain (but still fairly minimal) level of complexity, the millisecond they start to learn they're out of the original developer's control, and so you'd probably never be able to identify why one version of your artificial being was successful but another wasn't.
And would people settle for something that was simply as good as a human? Probably not.
Music While Programming?
Personally I feel music is essential when I'm coding (or doing anything requiring concentration) in a noisy environment.
It does need to be music you know very well though, as otherwise you *will* be distracted. With albums you know and love your brain knows what to expect and is comfortable with the audiable information it's receiving as there are no surprises. This then acts as a mask for the unpredictable noise around you. Listening to your music collection on shuffle/random is much more distracting than listening to it a complete album at a time as subconsciously you're always wondering which track is going to play next.
Listening to the radio is right out as you have no control of the music (or therefore the mood) and it will almost certainly be peppered with adverts and/or a DJ, and will therefore be more distracting than the general noise of even a busy office. The DJ's job is to engage the listener and the advertiser's goal is the same, so you are bound to have your attention repeatedly taken away from the task in hand. Had a colleague who used to listen to the radio on headphones and swore blind that it was no more distracting than music. Suffice to say he was significantly less productive than the rest of us and the attention to detail in his work was generally very poor, so despite being a potentially good developer he was eventually moved to a desktop support role.
One tip - if you have noise canceling headphones, these will allow you to listen to your music at a much lower volume and tend to block out or at least greatly reduce the low frequency and general (non-speech) office sounds around you. As you can now get such headphones which perform really well at a very reasonable price (I'm thinking of the Goldring NS1000 with a street price of around £50, instead of a £300 Bose set) they're a very good investment and would emphasize to your boss that it's all about blocking out the noise around you rather than enjoying your private music collection.
IBM Exec Bemoans Lack of Industry-Specific Linux Apps
We're primarily talking about the desktop here, and as anyone with a Windows desktop can quite happily run RIA apps in their browser, there's no reason for them to switch to Linux.
RIA apps will therefore not encourage people to change from their existing desktop.