A network music player that doesn’t look like a box

General 1 Comment »

I’ve been searching for a nice music player that would connect to my existing tunes on my PC and play them wirelessly. I’ve seen many offered but they all look like computer devices and the room I want to put the player in doesn’t have a computer so I wanted something that looked nice (not like a computer device). I came across the Roku and will be trying it out shortly. It doesn’t look like a computing device but does act like one.
Read the rest of this entry »

How to use VMWare for Software Development

General No Comments »

Most CIOs and technical managers think of virtual machine (VM) software like VMware as a server consolidation tool. While it’s great for server consolidation, I’ve been advising many clients to start putting VMware on every software engineer’s and quality assurance engineer’s workstation as well. Having used it for many years, I find that I can’t live witout the ability to run multiple virtual machines within my single workstation. My Windows XP workstation has 2GB of RAM, dual monitors, about 400GB of disk space, and dual CPUs so that dealing with VMs is a piece of cake. I have differerent virtual machines for the following purposes:

  1. I keep a VM per customer so that if a customer requires a special desktop or VPN connection I can keep the VPN connection going while continuing to do my normal work on other networks. Each customer provides me special VPN software and that VPN software often restricts network connectivity to my default network so using a VM for each client allows me to isolate their work.
  2. I keep a separate VM for trying out new software. This way, if something breaks, I simply “rollback” the VM to the previous state by using VMware’s snapshot mechanism. It’s much safer than just installing it on my physical machine and easier to undo anything that breaks.
  3. I keep a VM for testing software that I write. This keeps a “pristine” machine so that if anything breaks, it’s unlikely to be some rogue DLL. I keep a fresh machine with no other software other than what I am testing for QA purposes and it allows me to test in a much more controlled manner.
  4. Even though I spend most of my time on my Windows XP box, some of my clients expect me to use Linux so I’ve installed a virtual machine for RedHat, Mandrake, and Debian. Works like a charm!

Exploiting Software: How to Break Code

General No Comments »

Last night I invited Dr. Gary McGraw to give a talk on his new book Exploiting Software: How to Break Code at our monthly IEEE Computer Society Northern Virginia Chapter meeting. We had almost 100 people attend a wonderful talk on computer security with a focus on software security (as opposed to network security). If you haven’t heard Gary give a talk before, you should definitely attend one in the future (given that he’s a renowned expert he’s a prolific speaker at most industry conferences and many local events). Usually technical talks are are boring, but Gary presented the software security subject in an entertaining, insightful, and engaging manner. Exploiting Software is Gary’s fifth security book and I’ve read 3 of the previous ones as well but found this latest one to be the most applicable to the work I do for my clients. The other ones are nice, too, but this one just seems more relevant because I talk about the same things with my customers all the time. Exploiting Software’s content (the book and the talk last night) is crisp, doesn’t waste time with theories, and provides useful guidance on how to make sure your software doesn’t do “stupid things”. Gary started the meeting off with an amusing anectode about how it seems that people are more likely to listen to you if you write a book about bad things (like breaking code) instead of positive ways of securing software (like his previous books). I was heartened to hear him talk about many of the same things I deal with on a daily basis: that security is emergent property of the system and not a feature that is added by tossing in a username and password; that developers of software (the builders) can do more to protect software than the operators; that network security is only the first of dozens of steps to securing software and data.
Read the rest of this entry »

Throwing away the first version of a project

General No Comments »

This afternoon I was contemplating the idea of “throw away” applications and whether that was a Good Thing. One of my clients is just training new developers who are more versed in desktop computing applications (like VB, Delphi, etc.) to migrate them to Java/J2EE. My suggestion to them was to plan to throw away their first project because even if the requirements were well known, even the smartest developers will get the Java/J2EE design and development wrong. After thinking more about it, I think we will probably regularly throw things away during the first few iterations (instead of throwing away the first production version). Although the idea of the first version of an app being throw-away is quite old (comes from Brooks’ essay from a while back) I think that with proper Agile programming techniques we can throw away iterations of a spiral development effort instead of throwing away an entire effort. Given the availability of so many options and choices in the J2EE community it seems there’s no right or wrong to do almost anything. So, if the first version of the app is successfully installed and the user experience is good, there’s no need to throw anything away.

Get on the Enterprise Service Bus

General No Comments »

Over the past couple of years the Service Oriented Architecture (SOA) model of system architecture has become a popular way of getting management consultants and technology evangelists like me into enterprise application integration (EAI) projects. SOA is pretty high-level term that conjures up visions of a panacea where monolithic applications have gone the way of the dodo and loosely coupled, distributed, highly-specialized resuable services have taken over the world. Of couse reality is much less appealing than that fantasy world, but SOA and its variations have definitely started to make the IT world think less about applications and more about services. But, what are services? Basically, a service is a focused resource (an agent, a tiny application, a specialized class) that has a defined set of inputs and outputs and performs a particular function. The idea behind an SOA is that businesses will have all sorts of services and the applications simply use one or more services in a particular order along with the rules that govern the business processing and exception handling, and event management. The management of services within an SOA is often referred to as service orchestration. A little while after SOA was formulated as a marketing buzz word, ESB’s (enterprise service buses) were touted as the means by which SOA could be implemented and the real value of an SOA could be achieved.
Read the rest of this entry »

Learning Java/J2EE and best tools for the job

General 2 Comments »

A friend of mine who was recently put in charge of a decent size programming team talked with me about the best way to consolidate multiple development tools and paradigms (such as PowerBuilder, VB, C/C++, etc) into a single set of tools and processes centered around the Java platform. He mentioned their work centers mainly around data-centric web-based applications and wanted to mentor his programmers in best approaches to learning Java and J2EE. It seemed like a simple question but as we began to talk about it I thought back on my own learning curve with Java/J2EE and how I could best help my friend answer his question about training. So, after talking through it with him, I came up with the following basic plan.
Read the rest of this entry »

Simulaneously running Linux and Windows

General No Comments »

Over the past few years I’ve been using PC virtualization software such as VMware and Virtual PC to run multiple operating systems simulatneously (I’ve got a dual-CPU AMD with 2GB RAM and about 400GB disk space so computing power is not a problem). For example, to connect to my a client’s office network using a VPN I created a separate virtual workstation and run Cisco’s VPN software in the virtual workstation. That way, I can connect via both the VPN and my local network connection at the same time. It works like a charm. Also, I’ve created some “play workstations” that I can install new software in without affecting my “real” workstation. I run Debian Linux as a virtual workstation too. So all this works great, but sometimes I want to be able to run Linux software in the same address space (instead of a separate PC) and have to use something like Cygwin. However, a few weeks ago I ran across a new Linux distribution called coLinux that allows you to run Linux software under Windows (allowing Linux to cohabitate with Windows). Although the software is pretty new and not quite bug-free, it’s worth taking a look at if you want run Linux software and your Windows applications side by side.

Put a slick calendar on your desktop

General No Comments »

I just discovered a neat little free utility called Rainlendar that can read my Microsoft Outlook calendar and put a {{popup rainlendar.gif rainlendar 377×174}}slick transparent window on my desktop that shows my schedule. I’ve been looking for a utility like this for a while and this one’s perfect because it installed in about 30 seconds, read my information right from outlook, and keeps it synchronized; now i don’t have to open up Outlook all the time just confirm my schedule. Rainlendar also works without Outlook but I haven’t tried out that feature. It manages to-do lists and notes as well.


WordPress Theme & Icons by N.Design Studio
Entries RSS Comments RSS Login