After several years of programming in various languages for several different platforms there are several things I’ve come to realize about programming. I’ve broken it down into 3 separate topics, each with their own discussion. Each discussion will be added over the next few days.

The heart of any program is the algorithm that actually performs a task at hand. There are often plenty of auxiliary functions that typically must also occur in a program, but what makes each and every piece of software unique is how these functions are tied together to perform a task. Often the algorithm is the piece of code that requires the most debugging, the most attention to detail, and most importantly, a new and often creative idea. Auxiliary functions frequently are written by a third party, or in the case of many high level languages, may actually be features of the language itself. In PHP, as an example, there are functions available to query a database, write HTTP headers to a browser, read data from a web page or sort an array. All of these functions typically require no more than a line or two of code for them to perform a lot of work more or less automatically.

Let’s apply these functions to a basic model of the Google search engine. Things start off with a web crawler, an auxiliary function that gets a web page. The crawler then finds links on the page, opens them and continues on indefinitely.

The crawler feeds its data to Google’s algorithm called Page Rank. This is the core of their process. It counts up the number of links to a given page, and what context the page is linked to. Note that there are no pre-defined functions to handle this task, thus it is the main algorithm because it contains the new and creative idea mentioned above.

Next we move back to some auxiliary functions. The data that is generated by Page Rank is then stored in a database, another built in function in many programming languages. Then, when a user does a search, the database is queried and returns a response that contains pages that match the user’s input. Finally, this data is then sent to the user’s web browser, all of which can be handled by various functions that are already built into a programming language.

Please understand that this is a very simplified analysis of Google, and it was intentionally designed to show how an algorithm is a small part of an overall program, but is what makes every program unique.

I just purchased a new computer from Dell with Vista 64-bit. I’ve heard that the transition to 64-bit is often a rough one, so I’ll be keeping track of my progress here. To start, I visited the Windows Vista Compatability Center and checked that my major hardware will still work with the OS. This included my laser printer, scanner, and of less importance a card reader, Bluetooth adapter and a new TV tuner. The existing hardware was 1-3 years old and all of it will work just fine.

I opted to go with Vista Home Premium and I’ll save my money until Windows 7 comes out later this year and upgrade to the highest level then. With the exception of remote desktop, there’s nothing that I’ll be missing out on by having Home Premium.

I didn’t go with top of the line components but close. I do a bit of video editing, a lot of photo editing, and not much gaming. Here are the specs:

  • Dell Studio XPS 435MT
  • Core i7-920 processor, 2.66GHz, quad core
  • 6GB DDR3 1067MHz
  • 22″ Widescreen Full HD LCD Dell monitor
  • ATI Radeon HD4670 with 512MB memory
  • 640GB SATA Hard drive, 7200 RPM
  • Vista Home Premium 64-bit
  • 2-16X DVD+/-RW Drives

This is a major step up from my current 7+ year old system (frequently updated) that I built myself. Current specs are:

  • AMD Athlon 1.2GHz
  • 1GB PC133
  • 17″ 4:3 LCD Dell Monitor
  • ATI Radeon All-In-Wonder 7500 64MB
  • 500GB PATA hard drive, 72oo RPM
  • XP Pro 32-bit
  • 16X DVD+/-RW Drive
  • 52X CD-RW/-RW Drive
  • Unidentified burning smell (main reason for upgrade)

Look for my new 64-bit M@’s Picks, and anything else that I learn about taking the step to 64-bit in the next month or two.

Downloading videos from Youtube is easier than ever. Simply change youtube.com in the title bar to pwnyoutube.com when you’ve viewing a video. It will bring you to a page with the option to download either the standard quality or the high quality video. Just click one of the links to start downloading.

VideoLan Client (VLC) is a media player that works with many OS’s. Unlike Windows Media Player, and many others, VLC has all of the codecs that you might need built in. So if you’re having trouble playing a particular file, give it a try. Also, there are several advanced features of the software that allow you to do transcoding, live streaming, and video capture.