TweetDeck is a Twitter client that helps you keep track of everything on your timeline. It’s core feature is a multi-column view that lets you group your tweets together however you’d like. You can add friends to groups, so their tweets will always show up in a particular column. A column can also be configured for search, so you’ll see any tweets with your search term in them. I often use search when watching a prime-time TV show live, to see what other people are saying about it, or to see if anyone picks up on some subtlety that I may have missed. It can make TV watching a very interactive experience.

Handbrake is a video transcoding application. Most people use it to shrink videos down to a size that their iPod/Phone can handle. For transcoding software, it’s very easy to use, with presets for a lot of common formats and handheld devices. Select the file and what you’re going to use it on and you’re ready to go. The software also has all of the nitty-gritty options that you could possibly need to fine tune the video output you get from it. Finally, it’s multi-threaded, meaning that it will use all of the available processors on your system which gives it a huge performance increase.

A few months ago Google rolled out Google Mobile Sync. This syncs your Google calendar and contacts to your mobile phone. On Windows Mobile, you don’t even need any software for it. It runs right through the built in Active Sync interface in Windows. Syncing happens very quickly, and it is very smart about resolving conflicts when both the mobile and on-line calendars change. I was surprised to see that Sync also pulled the photos from my phone that are associated with contacts and put them into GMail contacts as well.

Bonus Tip: When you’re using Google calendar, or a widget, use natural language to enter your events. “Lunch with Jim 12:30 Tuesday at Quiznos” Google will figure out and fill in the date, time, event and location and set up the appointment automatically.

My new computer with Vista-64 arrived yesterday, and now that I’ve got the majority of my data copied over and programs installed, I’m compiling my thoughts on both Vista and the 64-bit environment.

The first thing that I noticed is that you need to be careful to look for the 64-bit downloads for the software that you’re installing. I ended up downloading and re-installing things several times after I ran a program and realized that it was running in 32-bit mode.

How can you tell if something is running in 32-bit mode? Open up task manager and look at the processes tab, in the image name column look for a *32 after the name of the file. If it’s there, then it is running in 32-bit mode. I’ve also noticed that programs that run as services, such as backup and AV programs, run their configuration applications in 32-bit mode, but if you look at the all process tab, I’ve found that the underlying engine that actually does the scanning or backing up runs in 64-bit mode.

Here are some of the programs that I use regularly and their 64-bit status.

  • Firefox – The 64-bit version is called “Minefield” You can have this and Firefox installed simultaneously, and they share extensions, preferences, history and cookies. This is convenient so you don’t have to maintain two separate copies.
  • JungleDisk – You’ll need to download the 64-bit version of JungleDisk. Every part of the application runs in 64-bit.
  • Adobe Flash – Flash is not yet supported in 64-bit browsers, both Minefield and Internet Explorer. The good news is that it runs just fine in the 32-bit browsers running in Vista 64.
  • AVG Anti-Virus – The free version of AVG runs in 64-bit mode. Note that only the scanning engine does this, not the front-end configuration application. Also, there’s no need to dig around for a different installer, the 64-bit one is included in the normal Windows installer download.
  • PicasaPicasa does not yet have a 64-bit version for Windows. I have had no problems running the 32-bit version, however.
  • GIMP – The GIMP has an experimental 64-bit version. The installer actually requires you to check a box that reads “I promise I won’t bother the developers if I can’t get this to work” before it lets you install it. I haven’t done a lot of work in GIMP yet, but I have yet to run into any problems with it.
  • VLC – The free Video Lan Client (VLC) does not have a 64-bit version yet. I have had no problems running the 32-bit version, however.
  • Itunes – Itunes has a 64-bit version, you’ll need to do some digging to find it through Apple’s site. Here’s the link to Itunes 8.1, the newest available at the time of this post.

As for drivers, I was able to locate 64-bit drivers for my printer, scanner, bluetooth adapter and video card from their manufacturers’ without any problems. All of this hardware is under 3 years old. I would expect some problems finding updated drivers for hardware that is older.

Although it got a bad rap to start, I’m quite impressed with Vista overall. Some of my favorite features that I’ve found so far include:

  • Start menu search – Open the start menu and start typing. Windows will immediately show you what matches your search from both programs on the start menu and your documents folder. If the one at the top of the list is the one you’re looking for, just press enter, otherwise select it from the list on the left side of the start menu.
  • Windows Flip 3D – Instead of switching between windows using Alt-Tab, try Win-Tab. If you’ve got Aero Glass Enabled, you’ll get a cascaded preview of each open window to flip through. A nice effect, and it can help locate the window you want when you’ve got a lot of windows open.
  • Aero Glass – The top-of-the-line theme for windows. It includes translucent window borders, minimize and maximize animations and glowing window controls. Normally I’ve immediately turned off all of the eye-candy on a new install of XP, even reverting back to the Windows 2000 style taskbar, but Microsoft got it right this time. The animations and other eye candy do not seem to effect the performance, and with a decent graphics card, are actually handled in the GPU and not in the main processor.
  • User Account Control – Although many people are annoyed by just how often this pops up, I find it an excellent tool for securing your computer. The theory behind it is that any time a program wants to make changes to a protected area of the system (install a program for example) Windows will alert you to this and require you to enter the password for the administrator account. This is an excellent way to keep malware from installing itself automatically in the drive-by download fashion. It’s unfortunate that so many people turn it off.

Syntax is structure of the programming language. It can be thought of as the verbs, nouns and parts of speech that make up English, or a foreign language. Syntax can typically fall under 3 different categories: High level, low level, and graphical.

High level is what is most common today. This includes languages such as C, Visual Basic, PHP and others. These languages use human-readable elements such as if, then, else, while and return to control the flow of a program. Many of these languages share enough common elements that a programmer familiar with one language can often look at code written in a different language an often have an understanding of what it accomplishes. However, each of these languages is unique and many of them are designed around a particular task or programming concept. A thorough understanding of this underlying concept can help a programmer to make a decision on which language to use to accomplish a particular task.

A graphical language is a high level language that is often represented in a flowchart form to facilitate human readability. Flowcharts are mainly made up of decision branches, and function blocks, not unlike ones that are used to describe a process in a user manual. These languages are typically programmed using drag and drop. Grab the block you need and drop it in the appropriate place on the screen. Each block often has a few parameters associated with it. For example a decision block will have a two input values and a comparison operator, not unlike an if statement in a text based language. From this block you can then branch to a yes or no function block. Function blocks, like decision blocks, also have inputs. A block that performs and addition function, for example, would have two inputs for the values being added, and one output for the result. These languages often become very complex to follow because it is often difficult to place comments within the flowchart structure to help another programmer understand exactly what is happening, unlike comments in a text based program which can be placed nearly anywhere. Additionally, as the program becomes more complex, the flow of the program can become very difficult to follow as it will quickly begin to cover several pages, and connecting blocks between these pages can often be a challenge depending on exact language used.

Another example of a graphical language is ladder logic. It is typically used in industrial control systems, and is based directly on electrical schematics that look a lot like rungs of a ladder. This design was intentional, as an electrician familiar with common electrical symbols could very easily transition to programming in a ladder language, as the symbols and functions of the symbols was essentially the same. Over time, the language has evolved to add instructions and symbols that do not have an electrical counterpart. Ladder based languages also have the distinction of running continuously, unlike the text languages also discussed in this section. Again, this design is intentional as it is modeled after electrical schematics and components, which behave like a continuously running program, as long as the machine is turned on.

Low level languages are ultimately what is run on a processor, and the other two types of languages discussed here are ultimately turned into a low level language before they are executed. Low level languages often use mnemonics that help to make the language readable to programmers. A few lines from a typical low level language might read as follows:

LD A, 10
INC A
JP A,Z

In the above example LD, INC and JP are all opcodes, and are actual instructions that the processor carries out. The values following the opcodes are parameters for each code. In this case A is a register, 10 is a constant and Z is a label to jump to. Each of these opcodes is turned into a binary value that is the actual sequence of bits that the processor must see to carry out the command entered. Even though this has been made easier to read through the use of mnemonics, at first glance it is not entirely clear that this code loads the value 10 into register A, increments the value in A by 1 and then jumps to label Z if A is not zero. Programming in an assembly language requires a good understanding of the actual architecture of the processor, how memory is laid out, what functions it can perform and how to combine the rather primitive functions provided into more common functions such as if-then-else statements.