 |
Services Offered...
Search Engine Optimization
Embedded
Application Design
Driver Development
Let me help you with your project. If you want to learn more about anything or want a free quote, please contact me. Click here.
Having been involved with the software industry in various capacities for 20-years, I've come to work with various disciplines within the industry. At first glance one would think that embedded software engineering, Windows application development, and marketing have nothing to do with each other, but as I get older and more experienced I see that there is indeed much overlap. Speed, esthetics, hardware operations, project management, interfacing with people are at the core all the same. If anything, my years of working with the Win16/Win32 API, being a consultant, working in industry, and being in integral part of the Association of Shareware Professionals have given me an edge that most people don't have.
|
|
Search Engine Optimization (SEO)
I was always the one that said I suck in marketing. Although I still have a long way to go, more and more each day I see marketing as not that much different than engineering. Trying to get my own company off the ground and becoming an active member of the Association of Shareware Professionals has taught me much. I've grown to like website development and marketing and look forward to learning and growing. I've written a couple articles on search engine optimization, which drew me many compliments. Unlike many companies, when I talk with people about what's wrong and right with their website I talk straight and get to the point. Creating a website with a high page ranking is not an overnight task. It requires a lot of effort over a prolonged period of time.
| |
Meta Tags - Meta tags are largely overlooked in websites. If not overlooked, then are not used properly. For instance, the most common Meta Tag used in websites is the keyword(s) tag, which search engines use as one of the factors to gauge page ranking. When used, people often throw everything including the kitchen sink into this field. In reality, roughly only the first 256 characters get used. Some search engines limit to the first 78 characters. Another mistake is to repeat the same keyword a zillion times or to use keywords that are not appropriate (i.e. sex or Viagra for selling lawn mower equipment). Search Engines are not stupid. These tactics backfire and get you a lower page ranking. |
|
Pay Per Click - Pay per Click (PPC) advertising is an excellent way to get your product or service recognized. You simply choose a keyword, place a bid, and watch people come to your site. Is it really that simple? Well, the first headache is choosing the right keywords. There are several services that help you choose keywords. They tell you how many people typed in that keyword and related keywords last month. The problem is that just because a keyword got clicked doesn't mean that people who type in those keywords will go to your site or if they do are interested in your site. Furthermore, sites like Google have a minimum click-through-rate (CTR). If your account falls below that minimum three times in a row, you'll get whacked $5. Overture.com has its problems, as they reject most descriptions. Overcoming those obstacles still leads to finding out which keywords leads to sales. |
|
Website Text and Website Review - The Internet is filled with many websites; maybe even too many. The problem is that many websites are competing with each other on how to turn people off. Think about it. How many times have you had to struggle with finding information on a website? How many times have you had to wait for a flash introduction? How many times have you had to keep moving the mouse to find the next/previous link when viewing images? Better yet, how many times has the text on a website been overpowering to the point that you click away? Designing a good website takes much thought and work. You don't want the user to wait. Remember when a user enters your site you have about 10-seconds to keep the person's attention before they click away. |

Embedded
If you have an embedded software project done, then we should talk. I've worked on a number of embedded projects varying in complexity over the years. My first embedded project was working on a the video component of a Automatic Test Equipment (ATE) for a mobile air traffic control tower, where the processor used was Zilog Z8002 and all coding was done using Z8002 assembly language. Over the years, I've worked on several projects. Here are a few projects that stand out.
 |
CCM - My all time favorite embedded project has got to be working on the Chassis Control Module (CCM) shown on the left. The CCM is part of an aircraft radar system. It has several missions, which include but are not limited to maintaining an ambient temperature for the radar system, starting up the VME bus for the embedded Sparc system, providing a user interface whereby operators can perform various activities. The developed the CCM initially for the U2. Later on I was asked to rework the project for two other aircraft, the Northrop Global Hawk and the British ASTOR. All aircrafts use a common source base. I borrowed concepts initially developed with my work on Peerless's printer driver. |

|
Crash Test Dummy - Whereas in the CCM I worked on an Intel 80386EX CPU using Intel CAD-UL a custom C++ class, and a custom designed OS, this project involved working on an Intel StrongARM CPU and used Red Hat Linux as the underlying operating system. The embedded device was part of a wireless automotive crash test dummy, which had to collect data in real time, partially process the data, and then store the data for later retrieval. The first version of the device required collecting data at 10,000 samples per second, while the second generation upped the anti to 100,000. My only regret with this project was not being able to see the actual crash test at the trade show. |
|
Defibrillator - With this project I had to write the boot loader for an M-CORE based mobile defibrillator used onboard aircraft and other places. This boot loader had to do more than merely transfer control to the runtime software. The boot loader was responsible for providing dynamic software upgrades via a PC to all components. In addition, the software was responsible for serial communication between each of the two daughter boards, providing POST, and various other activities usually associated with the runtime software. This project used custom C++ classes inside the driver and MFC on used in the PC program. |

Application Design
Whereas I've been working on embedded projects in my various places of employment, Windows application design has always been my hobby. I started developing Windows software applications back in the Windows 2.0 days. I started playing with Windows applications and thinking about developing my own application back with Windows 1.01. I started coding applications, when coding was done using the Win16 API, C, and CodeView. I was part of a small team of testers working on developing dual monitor support for Microsoft CodeView using the IBM 8514/A display adapter as the primary display and the onboard PS2 VGA controller as the secondary display. Anybody here remember copying the "command.com" module over as the "win.com" module, so that one can go to the debug version of Windows? I was also part of Microsoft's OS/2 effort, which finally became Windows NT. Dave Cutler watch out!
 |
JobFish® - I started JobFish® based as a tool to help myself and other people laid off from work find a new job. Conventional wisdom states that the best way to find a job is through friends and former colleagues. That works fine for some of us. The rest of us must be content to work with job boards and staffing services. Both of these services are designed with the employer in mind. JobFish ® is an organizational tool to help the job seeker. If you are interested in learning more about the product, please click here. From a technical perspective, JobFish uses VB6 and C++ talking to a SQL-based database through ADO . I chose VB6 rather than MFC, .Net, or C# as VB6 is the only platform outside of possibly Delphi , where one can generate a small executable, not have to distribute the .Net framework over the Internet, and really do Rapid Application Development. Check it out! Let me know what you think. Inquiring minds want to know. |

|
SI-Metric Office - SI-Metric Office started life as a class project for my false half. The resultant application was the initial version of SI-Metric Kids. We came out with an upgraded version that was more targeted to schools and offices by including more sophisticated features, such as synchronizing the computer's clock to one of several atomic servers, displaying a world map, and many more units. I added a time and task reminder. One of the features that I really like was the addition of integrated voice technology using Microsoft's speech engine v4.0. I stayed with the previous version, as the newer version requires a bigger distribution. Since the early days, I've integrated JobFish and SI-Metric Office. I'm already planning on the next major version, which will feature a SQL database and completely redesigned forms. I'm even contemplating moving away from VB6 to Delphi, Power Basic, or maybe even C#. |
|
VB6/C++/C# and ADO - I first got involved with databases for Windows back before Raima Corporation came out with the first database for Windows. I wrote my own B-Tree based Windows database, followed by an even more elaborate file-based database. Having had those routes I can honestly say that Windows development has come a long way. I'm a big fan of ADO and ADO.Net. Using ADO along with either PHP in the case of a web application or VB6/Delphi in the case of Windows development, let's me develop powerful databases that can be either client-server based or strictly client based. I first started interfacing to a SQL database with ODBC and DAO. Today, I use ADO exclusively. |

Driver Development
Over the course of my career, I've worked on several different classes of drivers. The two classes of drivers that I have the most experience with is more recently with serial drivers and in the past monolithic printer drivers for both ink jet and laser printers. That being said, I've also worked on Windows kernel mode drivers a bit creating an interface layer between a Serial ATA RAID kernel mode driver and a Visual C++-based application. I should also include here is all the hardware that I talked with for the various embedded devices. Most of them were memory mapped, which made controlling the hardware relatively simple. The I2C devices required a bit more work.
 |
Monolithic Printer Drivers - I got my start developing printer drivers, when I worked at Northrop back in 1985. I used to send PCL5 commands to an HP LaserJet using BASICA. In 1997 I landed a job at Peerless Systems Corporation working under the stewardship of Steve Schwartz. He was a wonderful manager that allowed me to learn and blossom from a person, who was proficient with the Windows API to being a lead engineer, who was responsible for the development of the Windows NT driver effort. Although I achieved quite a bit during my years at Peerless, I'm most proud of what has become known as PPUNI, or the Peerless Powered Universal Printer Driver. When I first started working at the company, Peerless had one printer driver for every PDL (PCL5, PCL5C, PCL6, etc.). I saw working on the driver that there was much overlap. I took it upon myself to create a unified driver-architecture. My effort resulted in a single driver that supported all the various page description languages. Eventually, this same driver compiled both as a Windows 3.X/9X driver and as a Windows NT Unicode compliant driver. I later used this same concept to create a unified driver for the CCM (see above), whereby one driver supports various aircrafts. |
|
Serial Drivers - These past two to three years has seen surprisingly quite a bit of RS232 serial driver work and a bit of USB work. I got my first real foray into serial driver development working on the CCM project. On that project another engineer developed the core driver. I merely had to take it over. Due to additional usage requirements, the addition of an additional port, and the fact that the driver was never really finished, required me to take the driver over and debug the interface. More recently, I inherited the boot loader for the defibrillator project. I wound up writing the driver from scratch using the serial driver present in the runtime code as a template. This driver had to communicate using both the internal UART present on the M-CORE and a FPGA-based 16550 UART. I managed to create a base class that handled the specifics and an abstracted class used by the driver to communicate to the various devices. There were also a couple of projects that required communicating across a USB link. |
| |
|

|