These days I split my computing time between a desktop computer at work, a desktop computer at home, a tablet device, and a smartphone. Frequently I find myself wanting to save data in the form of a bookmark, a link to a web pace, or a note on one of these devices to access later on others. Fortunately, there are a number of applications which make this easy. Here are the applications I've picked to do the job.
Dropbox - Installing this application on computers and mobile devices allows effortless sharing of all types of files between devices. Dropbox gets used by a number of other applications like PlainTest (listed below) to make life easier.
PlainText - Allows easy viewing and/or editing of text files stored on your Dropbox account from your mobile devices. Only available on iOS devices like iPhone and iPad but you can find similar applications for Android devices.
Xmarks - Makes keeping bookmarks synchronized between browsers on desktop and laptop computers dead simple.
Instapaper - Ideal for those URLs you stumble upon on an application on one device that you want to save for later viewing. A number of mobile device applications such as Twitter feature integration with Instapaper to simplify the task of saving interesting web pages.
This blog gives me a place to comment on things which strike my fancy, hence the title. Topics may include computer software/hardware, science, space, beer, books/movies/television programs of a geeky nature, or almost anything else. It is not marked as containing adult content but be warned that I occasionally post about beer and sometimes forget to watch my language. I've been writing systems software since the days of core memory, paper tape, and front panel lights/switches.
Sunday, March 17, 2013
Saturday, February 09, 2013
Windows development tools
It's no secret that given my own choice, I'd abandon the use of Windows PCs altogether. However it's a sad fact of life that many of development tools I need to use at work are commercial Windows based tools. In order to make using a Windows PC on a daily basis more bearable, I add the following tools. An unmodified Windows PC is almost unusable to me these days. I've no idea how anyone can get anything done on an unmodified Windows PC.
All of the following tools are free except VMware.
All of the following tools are free except VMware.
- 7zip - The best archive utility I've found for Windows. It handles all the archive formats I need to use like ZIP, RAR, and TGZ.
- Ack - A handy little Perl script similar but superior to Grep which searches only source files.
- ctags - Creates tags files which many editors, including Vim, can use to make source code navigation dramatically easier.
- cygwin - Well worth it for the Unix style shell alone but you can add Windows ports of most Unix tools using this.
- DropBox - Makes sharing files between multiple systems possible. I take it one step further and have added it to my phone as well so my files are now easily portable.
- FeedReader - I'm faced with periodic downtime at work where I have to wait for software builds, downloads, and tests to complete. This RSS reader allows me to stay up-to-date on development tools and techniques during these intervals.
- Sumatra PDF reader - Using a less popular PDF reader lowers the chances that you'll fall prey to malware using PDF files as a delivery mechanism.
- Irfanview - Handy for cropping screenshots and other light image file manipulation.
- Pidgin - Our office uses IM to stay in touch. This is a nice little IM program with support for multiple IM protocols.
- putty - I periodically need to connect to remote systems using telnet or ssh protocols. This program makes that easy.
- source navigator - Useful for familiarizing yourself with large bodies of source code.
- sysinternals - These utilities proved so handy that Microsoft purchased the company which developed them.
- TeraTerm - A decent terminal emulator. Handles both telnet and serial port connections but I only use it for its serial capabilities.
- Thunderbird - I use this to monitor my home email account.
- TortoiseSvn - Integrates the Subversion source code control system with Windows Explorer.
- TrueCrypt - A useful program for encrypting files, directories, and disk images. I use it for some of the files I store on DropBox.
- VMware - I need to run Linux software occasionally. VMware is the fastest and easiest method I've found of doing this without using a separate PC.
- Winmerge - This is the best visual tool I know of for displaying differences between files and for merging changes from one file to another.
- winscp - Handy for transferring files between systems using ftp, sftp, or scp protocols.
- Wireshark - The best Ethernet packet sniffer. It understands lots of protocols and can be extended to understand new ones if necessary.
- Vim - My favorite editor. It's a Vi clone with modern features like color syntax highlighting and column editing.
- Xvi32 - My favorite hex editor.
Sunday, January 27, 2013
Using grep in vim
One of the things I like about Vim (and vi) is the ability to invoke Unix utilities to manipulate text in ways that might be hard or impossible with just the regular editor commands. It's definitely written with the Unix Philosophy in mind.
One thing I do frequently while debugging problems is to add log messages with a distinct pattern so I can find them easily in the log file. For purposes of this example, let's assume the pattern I use is XYZ. If I open the log file in Vim, I can issue the following command to isolate just the lines in the log file which contain XYZ.
^[ggVG!grep XYZ^M
That looks like a pretty complicated command, doesn't it? But if we examine it piece by piece, it's not really that bad.
At the beginning of the command we've got ^[ which is the escape key. Look at this ASCII chart if you're not familiar with the caret followed by a letter shorthand for control characters. I issue the escape key to make sure Vim is in command mode. While we're talking about control characters, the ^M at the end of the command is shorthand for the carriage return (AKA the Enter key). That causes the command to be executed.
The ggVG in the command serves to do a visual selection of all the text in the file. The gg causes the cursor to be placed at the first line of the file. The V invokes visual marking of text. And finally, the G causes the cursor to be placed on the final line of the file. That causes the marked area to contain all the lines of the file.
The real meat of the command is the next part - !grep XYZ. The exclamation mark pipes the marked text to the external Unix utility which follows which is the grep command. This particular command line searches for lines which match a pattern of XYZ.
Issuing this command will cause Vim's current data buffer (the full contents of the log file) to be replaced with the output of the external Unix utility which will be just the lines within the log file which contain the pattern XYZ.
That makes it really simple to isolate just the log commands I've added. Once I'm done, I can either exit Vim without saving or just issue the u command (undo last text manipulation) to leave the log file untouched.
One thing I do frequently while debugging problems is to add log messages with a distinct pattern so I can find them easily in the log file. For purposes of this example, let's assume the pattern I use is XYZ. If I open the log file in Vim, I can issue the following command to isolate just the lines in the log file which contain XYZ.
^[ggVG!grep XYZ^M
That looks like a pretty complicated command, doesn't it? But if we examine it piece by piece, it's not really that bad.
At the beginning of the command we've got ^[ which is the escape key. Look at this ASCII chart if you're not familiar with the caret followed by a letter shorthand for control characters. I issue the escape key to make sure Vim is in command mode. While we're talking about control characters, the ^M at the end of the command is shorthand for the carriage return (AKA the Enter key). That causes the command to be executed.
The ggVG in the command serves to do a visual selection of all the text in the file. The gg causes the cursor to be placed at the first line of the file. The V invokes visual marking of text. And finally, the G causes the cursor to be placed on the final line of the file. That causes the marked area to contain all the lines of the file.
The real meat of the command is the next part - !grep XYZ. The exclamation mark pipes the marked text to the external Unix utility which follows which is the grep command. This particular command line searches for lines which match a pattern of XYZ.
Issuing this command will cause Vim's current data buffer (the full contents of the log file) to be replaced with the output of the external Unix utility which will be just the lines within the log file which contain the pattern XYZ.
That makes it really simple to isolate just the log commands I've added. Once I'm done, I can either exit Vim without saving or just issue the u command (undo last text manipulation) to leave the log file untouched.
Sunday, January 20, 2013
Unix tool: xargs
One of the reasons I like Unix style operating systems so much is the Unix Philosophy. One of the principles is it's better to include a bunch of small, fast tools which can be combined together to accomplish a variety of tasks than it is to build large special purpose tools which are complicated to use. One of my favorite of these Unix tools is xargs. What xargs is good at is taking a bunch of separate lines of input and changing those into arguments for another command.
Perhaps an example will serve to illustrate better than a dry explanation.
Let's imagine we want to find all the source files from the current directory (recursively) which contain the string "stdio.h" and to edit each of those files using vi. The following line will accomplish that. Of course in Unix, there are numerous ways to accomplish the same task. This happens to be my favorite way to perform the task and serves to illustrate the use of xargs nicely.
find . -name "*.c" -print | xargs grep -l "stdio.h" | xargs vi
The first part of the command (that before the first pipe character) is a simple find command. The only thing worthy of explanation is the quotes around the file pattern. Unix shells will substitute matches for a wildcard such as this before the find command gets invoked. If we invoke this long command in a directory containing files which match the pattern *.c, the matches would be substituted on the command line instead of the actual *.c pattern.
The second part of the command is a simple grep command but combined with the xargs command. This passes the file names output by the find command to be used as arguments to the grep command. The grep command is looking for files which contain the string "stdio.h", a common c library header file.
The third part of the command simply takes the matching files found by grep and passes them to vi.
This example should work on either Linux or Mac OS X. It will also work on Windows provided you've installed a Unix environment such as Cygwin. Cygwin is one of the first things I install on any Windows machine I have to use on more than a casual basis.
Play around with the xargs command to get a feel for what it can do. It's a handy part of any Unix tech's grab bag of tricks.
Perhaps an example will serve to illustrate better than a dry explanation.
Let's imagine we want to find all the source files from the current directory (recursively) which contain the string "stdio.h" and to edit each of those files using vi. The following line will accomplish that. Of course in Unix, there are numerous ways to accomplish the same task. This happens to be my favorite way to perform the task and serves to illustrate the use of xargs nicely.
find . -name "*.c" -print | xargs grep -l "stdio.h" | xargs vi
The first part of the command (that before the first pipe character) is a simple find command. The only thing worthy of explanation is the quotes around the file pattern. Unix shells will substitute matches for a wildcard such as this before the find command gets invoked. If we invoke this long command in a directory containing files which match the pattern *.c, the matches would be substituted on the command line instead of the actual *.c pattern.
The second part of the command is a simple grep command but combined with the xargs command. This passes the file names output by the find command to be used as arguments to the grep command. The grep command is looking for files which contain the string "stdio.h", a common c library header file.
The third part of the command simply takes the matching files found by grep and passes them to vi.
This example should work on either Linux or Mac OS X. It will also work on Windows provided you've installed a Unix environment such as Cygwin. Cygwin is one of the first things I install on any Windows machine I have to use on more than a casual basis.
Play around with the xargs command to get a feel for what it can do. It's a handy part of any Unix tech's grab bag of tricks.
Tuesday, January 15, 2013
Portable tools
Having written software on a variety of development systems including Sun workstations, Windows PCs, Linux PCs, and Macs, I've never regretted the decision to choose easily portable tools for use in my daily work. By doing so, I learn a tool once and am able to use it regardless of what type of development system I am given at a new company. I also have a preference for free software. In the past it's been difficult if not impossible to get companies to pay for software tools. Having a ready arsenal of free tools for any system I use is a huge bonus.
My editor of choice these days is one of the GUI versions of Vim (MacVim at home and GVim on the Windows PCs at work). Besides the obvious enhancements which either version of Vim adds to the standard vi commands, the developer who started the project, Bram Moolenaar, runs the project as charity-ware with donations going to help children in Uganda. I've got no problems donating to such a worthy cause.
I continue to use vi clones because vi was available on most of the systems I've used over the past 20+ years. Using PCs in the early days, I chose vi over emacs because early ports of emacs were extremely resource intensive. While vi would fit easily in a 40 KB .COM file which could be executed from a floppy disk on base PCs, the emacs .EXE file (necessary because it required more than 64 KB of code space) typically required a PC with an expensive EMS board.
Were I to be starting out these days, I believe I'd probably choose to learn UltraEdit or SlickEdit since both have Linux, Windows, and Mac versions. Both editors also have a much less daunting learning curve. At best, vi commands are perplexing to new users. You really need to understand the history of vi to grasp why the commands are designed the way they are. In a nutshell, software in the early days of Unix had to support a variety of dumb terminals. Commands had to be formed from the common subset of keys available on all terminals.
If you combine Vim with Exuberant CTAGS, you have a very powerful programming editor which makes it easy to learn and to navigate unfamiliar source code.
I've also chosen the Bash shell as my daily command line interface. It's available on Linux and Mac. It can also easily be added to Windows systems as part of Cygwin. Bash is much more powerful than the standard Windows command shell. I've heard good things about PowerShell but since it's only available on Windows, it's not really an attractive option for me.
Aside from the tools above, I'm fond of AWK and SED. Used either separately or combined with their Unix based brothers like xargs, find, and grep, they give an nearless endless variety of ways to manipulate text files.
I've got one last recommendation. There's a great grep replacement for software developers called ack. It makes it easy to restrict the files searched to just source files. You can do the same thing with grep but the command line gets very complicated.
My editor of choice these days is one of the GUI versions of Vim (MacVim at home and GVim on the Windows PCs at work). Besides the obvious enhancements which either version of Vim adds to the standard vi commands, the developer who started the project, Bram Moolenaar, runs the project as charity-ware with donations going to help children in Uganda. I've got no problems donating to such a worthy cause.
I continue to use vi clones because vi was available on most of the systems I've used over the past 20+ years. Using PCs in the early days, I chose vi over emacs because early ports of emacs were extremely resource intensive. While vi would fit easily in a 40 KB .COM file which could be executed from a floppy disk on base PCs, the emacs .EXE file (necessary because it required more than 64 KB of code space) typically required a PC with an expensive EMS board.
Were I to be starting out these days, I believe I'd probably choose to learn UltraEdit or SlickEdit since both have Linux, Windows, and Mac versions. Both editors also have a much less daunting learning curve. At best, vi commands are perplexing to new users. You really need to understand the history of vi to grasp why the commands are designed the way they are. In a nutshell, software in the early days of Unix had to support a variety of dumb terminals. Commands had to be formed from the common subset of keys available on all terminals.
If you combine Vim with Exuberant CTAGS, you have a very powerful programming editor which makes it easy to learn and to navigate unfamiliar source code.
I've also chosen the Bash shell as my daily command line interface. It's available on Linux and Mac. It can also easily be added to Windows systems as part of Cygwin. Bash is much more powerful than the standard Windows command shell. I've heard good things about PowerShell but since it's only available on Windows, it's not really an attractive option for me.
Aside from the tools above, I'm fond of AWK and SED. Used either separately or combined with their Unix based brothers like xargs, find, and grep, they give an nearless endless variety of ways to manipulate text files.
I've got one last recommendation. There's a great grep replacement for software developers called ack. It makes it easy to restrict the files searched to just source files. You can do the same thing with grep but the command line gets very complicated.
Sunday, April 15, 2012
Long hours
For years I've been subscribing to Jack Ganssle's excellent newsletter, The Embedded Muse. It's a must read for anyone working with embedded systems. It's also very good as a general resource for engineers who work with any type of hardware or software. If you're a software or hardware engineer, I urge you to take a look at a few back issues and then sign up for the free newsletter.
The issue which arrived today contains an interesting discussion about the number of hours engineers are asked to work. I fall heavily into the camp which questions the wisdom of working more than 40 hours. Lest you think I'm a slacker, consider that I worked for 8 straight years at startup companies, and I probably averaged 55-60 hours per week during most of that period. I can speak from personal experience that the weeks with extremely long hours were not nearly as productive as those where I worked 40-45 hours.
Of particular significance are the stories where upper management gets upset when they find no one in the lab after hours. Whenever you find upper management in the lab after hours, that's also a result of poor management. Good managers will be able to communicate with line managers without checking up on them. Good upper managers will also be sufficiently removed from day to day operations that they realize they may not have the entire picture. Employees connected to lab equipment from home are awfully hard for anyone to detect. If you think that you can only achieve results by having a negative impact on the engineer's personal life, I can safely say I don't want to work for you and I suspect most experienced engineers would say the same.
I would suggest that any project where management asks for a long term commitment of long hours is a direct result of inexperienced or poor management. Any manager with a reasonable amount of time in the industry knows that while you may get a delivery out with a short burst of concentrated effort but if you ask for it over a period of months (or more), you're going to get a product which requires more and quicker maintenance releases thanks to the mistakes even the best engineers make when they're overtired. You're also asking for a large turnaround in your engineering team unless you're able to offer some form of extreme compensation (large bonuses and/or stock options).
For young engineers, I would advise that you consider what you're getting out of any company which is asking for extreme time commitments. If you're getting some form of financial compensation or some form of experience which will prove extremely valuable in the future, I'd say go for it although I'd get it in writing if at all possible. Otherwise, I would suggest that you update your resume and start looking around for a company whose management might not be so out of touch with reality.
The issue which arrived today contains an interesting discussion about the number of hours engineers are asked to work. I fall heavily into the camp which questions the wisdom of working more than 40 hours. Lest you think I'm a slacker, consider that I worked for 8 straight years at startup companies, and I probably averaged 55-60 hours per week during most of that period. I can speak from personal experience that the weeks with extremely long hours were not nearly as productive as those where I worked 40-45 hours.
Of particular significance are the stories where upper management gets upset when they find no one in the lab after hours. Whenever you find upper management in the lab after hours, that's also a result of poor management. Good managers will be able to communicate with line managers without checking up on them. Good upper managers will also be sufficiently removed from day to day operations that they realize they may not have the entire picture. Employees connected to lab equipment from home are awfully hard for anyone to detect. If you think that you can only achieve results by having a negative impact on the engineer's personal life, I can safely say I don't want to work for you and I suspect most experienced engineers would say the same.
I would suggest that any project where management asks for a long term commitment of long hours is a direct result of inexperienced or poor management. Any manager with a reasonable amount of time in the industry knows that while you may get a delivery out with a short burst of concentrated effort but if you ask for it over a period of months (or more), you're going to get a product which requires more and quicker maintenance releases thanks to the mistakes even the best engineers make when they're overtired. You're also asking for a large turnaround in your engineering team unless you're able to offer some form of extreme compensation (large bonuses and/or stock options).
For young engineers, I would advise that you consider what you're getting out of any company which is asking for extreme time commitments. If you're getting some form of financial compensation or some form of experience which will prove extremely valuable in the future, I'd say go for it although I'd get it in writing if at all possible. Otherwise, I would suggest that you update your resume and start looking around for a company whose management might not be so out of touch with reality.
Sunday, March 25, 2012
Golden age of nerds
It suddenly struck me today that nerds today have it much easier than nerds of my generation. It's easy to feed unconventional tastes in books, comics, music, TV, movies, food, beer, etc than it's ever been before.
It struck me as I was having a very enjoyable but quiet lunch by myself (thanks to a last minute cancellation by a friend who wasn't feeling well) at my favorite craft brew establishment. In my youth, I would have never considered dining solo but luckily my iPhone affords me ample entertainment for such occasions so there's no need to skip an tasty lunch. I have more media than I could consume in several weeks at my beck and call.
In my misspent youth, nerds were forced to read a wide range of magazines and visit geeky bookshops run by knowledgeable staff to keep up with upcoming media they might find of interest. Proximity to a great bookshop could spell the difference between keeping in touch with new happenings in your slice of the nerd universe and playing a perpetually unsatisfying game of nerd culture catchup. Fortunately I was close enough to a couple great bookshops that on weekends I could convince my Mother (who instilled the love of reading in me) to drive me to one or the other to spend my hard earned paper route money on another stack of books.
Now I can accomplish the same thing with a few subscriptions to e-magazines, email newsletters, RSS feeds, and podcasts. Ordering said items of nerdy desire are usually just a matter of pointing at the correct website and furnishing a valid credit card.
I chuckle when I hear geezers (not that I'm not one myself) bemoaning the death of paper books, magazines, newspapers as well as vinyl as a storage medium for music). They're missing the point that the artist's message is becoming easier than ever for the public to consume and frequently without the unnecessary middlemen who have all too often served as unwanted arbiters of what the public was ready to accept.
I for one embrace this golden age of nerds. Let the mass consumption begin!
It struck me as I was having a very enjoyable but quiet lunch by myself (thanks to a last minute cancellation by a friend who wasn't feeling well) at my favorite craft brew establishment. In my youth, I would have never considered dining solo but luckily my iPhone affords me ample entertainment for such occasions so there's no need to skip an tasty lunch. I have more media than I could consume in several weeks at my beck and call.
In my misspent youth, nerds were forced to read a wide range of magazines and visit geeky bookshops run by knowledgeable staff to keep up with upcoming media they might find of interest. Proximity to a great bookshop could spell the difference between keeping in touch with new happenings in your slice of the nerd universe and playing a perpetually unsatisfying game of nerd culture catchup. Fortunately I was close enough to a couple great bookshops that on weekends I could convince my Mother (who instilled the love of reading in me) to drive me to one or the other to spend my hard earned paper route money on another stack of books.
Now I can accomplish the same thing with a few subscriptions to e-magazines, email newsletters, RSS feeds, and podcasts. Ordering said items of nerdy desire are usually just a matter of pointing at the correct website and furnishing a valid credit card.
I chuckle when I hear geezers (not that I'm not one myself) bemoaning the death of paper books, magazines, newspapers as well as vinyl as a storage medium for music). They're missing the point that the artist's message is becoming easier than ever for the public to consume and frequently without the unnecessary middlemen who have all too often served as unwanted arbiters of what the public was ready to accept.
I for one embrace this golden age of nerds. Let the mass consumption begin!
Saturday, January 21, 2012
Advice for the family tech support person (or mechanic)
An acquaintance of mine has been roped into providing computer tech support for a family friend and is entirely too polite to complain about the situation to the correct people to prevent a reoccurrence. I've got friends who are mechanics or at least very mechanically inclined who face similar problems in their field.
Hearing about the headaches associated with this has brought back memories of being in similar situations. Once people realize you have expertise in computers, or any other field for that matter, you may find yourself getting pressured into providing computer or car maintenance assistance. It has made me wish there were a tactful way of establishing guidelines for providing help to friends and family members. What better way than an anonymous blog post you can point to as a gentle suggestion of how to behave when asking for help?
1) Use Google to see if you can't solve your own problem or at least narrow down the possible causes. You'd be surprised at how many problems can be solved without intervention from experts.
2) Just because your friend or family member is willing (or at least too polite to refuse) to offer you assistance, don't assume that he or she wants to extend the same courtesy to your friends or coworkers. Don't volunteer them to do so without asking first and take "no" for a answer gracefully. Just because they're good at their job, don't expect them to be thrilled about volunteering extra hours above and beyond their normal work week on related problems.
3) Should your indentured tech support servant be kind enough to agree to help, don't make the imposition any worse by being picky about where or when the service should be offered. No one enjoys being stuck in a cramped back room working on a computer or on a cold, hard driveway working on a car. If they ask you to bring the PC or vehicle to their place, do so cheerfully. If they do agree to come to your house, clean up a bit to make service less painful. I can't tell you how many times I've had to ask for vacuum cleaners to clean off fan vents sufficiently to make disassembly possible without a big mess. No one enjoys working with a jumble of cables or surrounded by so many knick-knacks that it's difficult to get to the computer. Be flexible about time too. Remember, your potential tech support person has a life too. Don't interfere with work or their other commitments.
4) Find a way to reciprocate and make sure it's something of comparable value. If your tech support person has spent 2 hours fixing your computer, don't let a plate of cookies be your only thanks for their efforts. Think about some skill you have that they may need and offer that, be it mowing their lawn or taking them to dinner. Remember how much you would have spent at the local big box electronics store.
5) If the support you're asking for is advice or if advice is offered as a method of preventing future problems, don't blithely ignore it. You've asked this person for help because of their expertise. If you ignore it or instead follow advice from some less experienced friend or coworker or even worse, fall prey to some slick advertising or advice from one of the poorly trained hourly grunts at your local big box electronics store, how likely do you think it is that your tech support person will ever give you meaningful advice again?
6) Do whatever preventive maintenance is recommended to try to prevent future problems. No family tech support person wants to hear your plaintive cries about how you can't afford to lose some valuable file. So do your backups (or oil changes in the case of cars) and don't expect your family tech support to perform miracles on neglected PCs or cars.
Following these steps will help ensure less resentment on the part of the person helping you.
Hearing about the headaches associated with this has brought back memories of being in similar situations. Once people realize you have expertise in computers, or any other field for that matter, you may find yourself getting pressured into providing computer or car maintenance assistance. It has made me wish there were a tactful way of establishing guidelines for providing help to friends and family members. What better way than an anonymous blog post you can point to as a gentle suggestion of how to behave when asking for help?
1) Use Google to see if you can't solve your own problem or at least narrow down the possible causes. You'd be surprised at how many problems can be solved without intervention from experts.
2) Just because your friend or family member is willing (or at least too polite to refuse) to offer you assistance, don't assume that he or she wants to extend the same courtesy to your friends or coworkers. Don't volunteer them to do so without asking first and take "no" for a answer gracefully. Just because they're good at their job, don't expect them to be thrilled about volunteering extra hours above and beyond their normal work week on related problems.
3) Should your indentured tech support servant be kind enough to agree to help, don't make the imposition any worse by being picky about where or when the service should be offered. No one enjoys being stuck in a cramped back room working on a computer or on a cold, hard driveway working on a car. If they ask you to bring the PC or vehicle to their place, do so cheerfully. If they do agree to come to your house, clean up a bit to make service less painful. I can't tell you how many times I've had to ask for vacuum cleaners to clean off fan vents sufficiently to make disassembly possible without a big mess. No one enjoys working with a jumble of cables or surrounded by so many knick-knacks that it's difficult to get to the computer. Be flexible about time too. Remember, your potential tech support person has a life too. Don't interfere with work or their other commitments.
4) Find a way to reciprocate and make sure it's something of comparable value. If your tech support person has spent 2 hours fixing your computer, don't let a plate of cookies be your only thanks for their efforts. Think about some skill you have that they may need and offer that, be it mowing their lawn or taking them to dinner. Remember how much you would have spent at the local big box electronics store.
5) If the support you're asking for is advice or if advice is offered as a method of preventing future problems, don't blithely ignore it. You've asked this person for help because of their expertise. If you ignore it or instead follow advice from some less experienced friend or coworker or even worse, fall prey to some slick advertising or advice from one of the poorly trained hourly grunts at your local big box electronics store, how likely do you think it is that your tech support person will ever give you meaningful advice again?
6) Do whatever preventive maintenance is recommended to try to prevent future problems. No family tech support person wants to hear your plaintive cries about how you can't afford to lose some valuable file. So do your backups (or oil changes in the case of cars) and don't expect your family tech support to perform miracles on neglected PCs or cars.
Following these steps will help ensure less resentment on the part of the person helping you.
Saturday, August 07, 2010
iPhone/iPod Touch databases
One of the many things I use my iPod Touch for is to store databases of information I want access to on the go such as books I have, books I'm on the lookout for, car maintenance histories, etc. Bento fits the bill nicely for my purposes and there's a Mac version which allows you to synchronize your databases between a Mac desktop or laptop and your mobile device.
It's a full featured database with optional field types such as check boxes, choice boxes, text, dates, numbers, and other options. It makes data entry very easy which is important on a mobile device. One of the things I like about Bento is it's one of the few inexpensive lightweight single user databases available these days. In the old days there were lots of database choices for users on a budget.
I read today that there's a version of Filemaker Go for the iPhone/iPod Touch/iPad. It synchronizes with Filemaker Pro which is available for Mac or Windows. Filemaker Pro finally makes it easy to sync between a mobile device and Windows. The upside is it's a more powerful database than Bento is if your database requirements are a bit more advanced than Bento's feature set. The downside is it's more expensive than Bento.
So you've got another database option if you're a iPhone/iPod Touch/iPad user. It's good to have choices, eh?
It's a full featured database with optional field types such as check boxes, choice boxes, text, dates, numbers, and other options. It makes data entry very easy which is important on a mobile device. One of the things I like about Bento is it's one of the few inexpensive lightweight single user databases available these days. In the old days there were lots of database choices for users on a budget.
I read today that there's a version of Filemaker Go for the iPhone/iPod Touch/iPad. It synchronizes with Filemaker Pro which is available for Mac or Windows. Filemaker Pro finally makes it easy to sync between a mobile device and Windows. The upside is it's a more powerful database than Bento is if your database requirements are a bit more advanced than Bento's feature set. The downside is it's more expensive than Bento.
So you've got another database option if you're a iPhone/iPod Touch/iPad user. It's good to have choices, eh?
Wednesday, September 16, 2009
iPod Touch update
I'm relieved to report my enthusiasm for the iPod Touch as a replacement for the long line of Palm PDAs continues unabated. This little device continues to amaze me.
I managed to find this very useful article which helped me get secondary calendars in Google Calendar syncing with the iPod Touch. That was really the last piece of the PDA puzzle I needed to solve.
Tonight I downloaded the free Apple Remote application which allows me to control our Apple TV from the iPod Touch. It's not earth shattering but rather a bit of fun with a device which is already ranks among the best technical purchases I've made.
I typically find several reasons to be dissatisfied with any new gadget after a month of using it. Not so with the iPod Touch. It makes using a PDA type device fun again. I recall feeling this sense of enjoyment when I first started playing with most of the new Palm devices I've owned (aside from the Centro which was horribly disappointing).
By the way, the iPod Touch serves as a very nice music and video player in addition to its stellar performance as a PDA. It also works nicely to do some light web browsing at night. The mobile version of Safari is by far the most useful web browsing experience I've seen on a small device.
If you're in the market for a small device which can serve multiple purposes, investigate the iPod Touch. You won't be sorry.
I managed to find this very useful article which helped me get secondary calendars in Google Calendar syncing with the iPod Touch. That was really the last piece of the PDA puzzle I needed to solve.
Tonight I downloaded the free Apple Remote application which allows me to control our Apple TV from the iPod Touch. It's not earth shattering but rather a bit of fun with a device which is already ranks among the best technical purchases I've made.
I typically find several reasons to be dissatisfied with any new gadget after a month of using it. Not so with the iPod Touch. It makes using a PDA type device fun again. I recall feeling this sense of enjoyment when I first started playing with most of the new Palm devices I've owned (aside from the Centro which was horribly disappointing).
By the way, the iPod Touch serves as a very nice music and video player in addition to its stellar performance as a PDA. It also works nicely to do some light web browsing at night. The mobile version of Safari is by far the most useful web browsing experience I've seen on a small device.
If you're in the market for a small device which can serve multiple purposes, investigate the iPod Touch. You won't be sorry.
Wednesday, August 26, 2009
Life after Palm
I've finally settled upon using my iPod Touch as the best PDA replacement device for my Palm. Having used Palm PDAs since I bought my first one at the employee price working for U.S. Robotics in 1996, I've come to rely heavily on a number of key applications to keep my life organized. Fortunately the iPhone application market has matured to the point that I could easily find replacements for all my "must have" applications.
First and foremost, I needed a way to sync my contact information from my Mac to the iPod Touch. Luckily, Apple anticipated that by adding that capability into iTunes.
It was also imperative that I be able to sync memos between my desktop computer and the iPod Touch. Mark/Space has a product called The Missing Sync which takes care of that problem for me.
It was also important that I be able to sync calendars between my desktop system and the PDA. Fortunately a combination of iCal on my Mac, iCal on the iPod, and Google Calendar was able to handle that thorny issue. This article on using CalDAV with Google Calendar and iCal helps explain the rather tricky configuration.
For a number of years I've been using a Palm application called SplashID to keep my passwords secure and yet easily accessible. The good folks at SplashData have created a version which runs on the iPod Touch. Using a new version of the same application made conversion very simple.
I've also grown reliant on having access to a simple database application on my PDA to keep track of things such as books I'm interested in reading as well as a number of other topics. I've used a great little Palm application called JFile for many years to fill this need. One of the best known names in Mac databases, FileMaker, has recently released a personal database application called Bento. They also have an iPhone/iPod Touch version available which can sync with the Mac version of Bento.
The last important thing I required on my PDA was a way to read books. I'd been using the mobile version of Adobe's Acrobat Reader on the Palm. I discovered that there's a free product called Stanza Desktop which is available for both Mac and Windows machines. They also have an iPhone/iPod Touch version which can sync books from the desktop version. Couple this with the fact that Google Books has announced that they have over a million public domain books available in the EPUB format (which Stanza supports) and my needs for a PDA book reader is more than met.
It's been a bit of a challenge but I've finally got all these applications installed and my data transferred. The only problem which remains is I'm still not able to see subordinate calendars from Google Calendars yet. Aside from that, I'm very happy with the new device. It's thinner, easier to read, and has better battery life than my Palm did. Plus it functions as a very good music player to boot.
First and foremost, I needed a way to sync my contact information from my Mac to the iPod Touch. Luckily, Apple anticipated that by adding that capability into iTunes.
It was also imperative that I be able to sync memos between my desktop computer and the iPod Touch. Mark/Space has a product called The Missing Sync which takes care of that problem for me.
It was also important that I be able to sync calendars between my desktop system and the PDA. Fortunately a combination of iCal on my Mac, iCal on the iPod, and Google Calendar was able to handle that thorny issue. This article on using CalDAV with Google Calendar and iCal helps explain the rather tricky configuration.
For a number of years I've been using a Palm application called SplashID to keep my passwords secure and yet easily accessible. The good folks at SplashData have created a version which runs on the iPod Touch. Using a new version of the same application made conversion very simple.
I've also grown reliant on having access to a simple database application on my PDA to keep track of things such as books I'm interested in reading as well as a number of other topics. I've used a great little Palm application called JFile for many years to fill this need. One of the best known names in Mac databases, FileMaker, has recently released a personal database application called Bento. They also have an iPhone/iPod Touch version available which can sync with the Mac version of Bento.
The last important thing I required on my PDA was a way to read books. I'd been using the mobile version of Adobe's Acrobat Reader on the Palm. I discovered that there's a free product called Stanza Desktop which is available for both Mac and Windows machines. They also have an iPhone/iPod Touch version which can sync books from the desktop version. Couple this with the fact that Google Books has announced that they have over a million public domain books available in the EPUB format (which Stanza supports) and my needs for a PDA book reader is more than met.
It's been a bit of a challenge but I've finally got all these applications installed and my data transferred. The only problem which remains is I'm still not able to see subordinate calendars from Google Calendars yet. Aside from that, I'm very happy with the new device. It's thinner, easier to read, and has better battery life than my Palm did. Plus it functions as a very good music player to boot.
Thursday, June 25, 2009
e-audiobooks rock!
For a long time I've been listening to audiobooks to make commuting or exercise more bearable. Our local library used to have a great selection of audiobooks on cassette. The last time I checked, they were slowly transitioning to CD based audiobooks. I never borrowed a book in that form as they only seemed to stock recent bestsellers and I don't find most recent books as engrossing as some of the old classics by authors like Nevil Shute, Rudyard Kipling, and Robert Louis Stevenson among others.
Fast forward to a couple years ago. I discovered that our local library had started carrying e-audiobooks which could be downloaded to an MP3 player with support for Windows Media DRM aka protected WMA files). With mixed feelings, I purchased a refurbished MP3 player capable of playing protected WMA files. It irked me that I couldn't play this protected media on the iPod I used for most of my music. The MP3 player gave me a years worth of service before developing some interface quirks which became so bothersome as to be unbearable. It's hard to believe that with an iPod as a model of how to design a decent user interface, other manufacturers do such an abysmal job.
The refurbished replacement I purchased from another manufacturer was slightly better but still paled in comparison to the iPod's interface. It lasted me another year before refusing to connect using its USB interface without jumping through a strange series of steps I found on a user forum for a different model player from the same manufacturer. The prospect of spending more money on yet another unsatisfactory MP3 player didn't thrill me.
Fortunately, my library wasn't sitting idle during this time. They've recently made available a new service from Overdrive, the company which offers e-audiobooks for download. They offer an MP3 version of some of the e-audiobooks. Sadly this is a fledgling service at the moment so the selections aren't nearly as extensive as the WMA selections are yet but I'm hoping this will improve with time.
So far I've listened to Kipling's Captains Courageous and Stevenson's Kidnapped. Both were wonderful and made me choose longer paths when walking the dog so I could listen longer. If you've got activities which might benefit from distractions such as a good book being read by a skilled narrator, I recommend you check with your local library to see whether the offer e-audiobooks.
Fast forward to a couple years ago. I discovered that our local library had started carrying e-audiobooks which could be downloaded to an MP3 player with support for Windows Media DRM aka protected WMA files). With mixed feelings, I purchased a refurbished MP3 player capable of playing protected WMA files. It irked me that I couldn't play this protected media on the iPod I used for most of my music. The MP3 player gave me a years worth of service before developing some interface quirks which became so bothersome as to be unbearable. It's hard to believe that with an iPod as a model of how to design a decent user interface, other manufacturers do such an abysmal job.
The refurbished replacement I purchased from another manufacturer was slightly better but still paled in comparison to the iPod's interface. It lasted me another year before refusing to connect using its USB interface without jumping through a strange series of steps I found on a user forum for a different model player from the same manufacturer. The prospect of spending more money on yet another unsatisfactory MP3 player didn't thrill me.
Fortunately, my library wasn't sitting idle during this time. They've recently made available a new service from Overdrive, the company which offers e-audiobooks for download. They offer an MP3 version of some of the e-audiobooks. Sadly this is a fledgling service at the moment so the selections aren't nearly as extensive as the WMA selections are yet but I'm hoping this will improve with time.
So far I've listened to Kipling's Captains Courageous and Stevenson's Kidnapped. Both were wonderful and made me choose longer paths when walking the dog so I could listen longer. If you've got activities which might benefit from distractions such as a good book being read by a skilled narrator, I recommend you check with your local library to see whether the offer e-audiobooks.
one blind mouse

My old bluetooth mouse, a Logitech which I really loved, recently developed a problem which caused it to skip erratically. Needless to say this served to annoy me greatly. I finally got fed up with the problem and being a bit reluctant to get another mouse which might fail prematurely, purchased a Microsoft Notebook Mouse 5000 (see image above) instead.
The new mouse is smaller than the Logitech which means it doesn't fit my hand quite as well as the Logitech did. On the plus side, at 1000 dpi the tracking is incredibly precise. That's a nice change from the way the old mouse had behaved recently. I'm pretty sure that's much better tracking resolution than the old mouse had when it was new.
One thing I don't care for is the scroll wheel which moves in a jerky fashion. I guess it's designed to keep you from scrolling too quickly and going past whatever you're trying to find. I prefer the smoother scroll wheels which Logitech mice typically have.
The manual estimates the battery life at 3 months on two AAA batteries. If it really lasts that long, that will be slightly better than the old mouse. I've got to get more rechargeable AAA batteries now.
All in all, I think I like this mouse. The fact that it was cheaper than replacing the old one with another Logitech would have cost me more is a nice bonus too.
Tuesday, June 09, 2009
Less than perfect
In case anyone thinks I'm one of the Apple fanboys oblivious to their shortcomings, I'll disclose my top pet peeve about Macs. Their default HFS file system is case insensitive. This can cause problems for software engineers like me as some engineers use the file extension .C for C++ source code (I prefer .cpp myself) and .c for C source code. It's not out of the question to want to have source files with identical base names and with file extensions which would be identical aside from their case within the same directory. In a development environment with both Linux and Mac systems available, this can cause Macs to fail to be able to check out source directories with these potentially duplicate filenames.
With the last few versions of OS X version 10.5, there has been an option to format disks with a case sensitive version of HFS. This should not be undertaken lightly. I've read accounts that this can cause problems for older programs (backup programs seem particularly vulnerable for some reason).
I've taken the approach that the devil you know is preferable to the devil you don't. I know how to avoid difficulties on a case sensitive file system. I'm not sure I can find workarounds for some of my older software were I to make the switch to case sensitive HFS.
With the last few versions of OS X version 10.5, there has been an option to format disks with a case sensitive version of HFS. This should not be undertaken lightly. I've read accounts that this can cause problems for older programs (backup programs seem particularly vulnerable for some reason).
I've taken the approach that the devil you know is preferable to the devil you don't. I know how to avoid difficulties on a case sensitive file system. I'm not sure I can find workarounds for some of my older software were I to make the switch to case sensitive HFS.
Friday, June 05, 2009
Happy 40th birthday to my favorite OS
Unix celebrates its 40th anniversary this summer. This article from ComputerWorld recounts the history of the world's most productive OS.
Not a week goes by that I'm not somehow reminded of just how powerful Unix is. Treating all devices as files was brilliant. Being able to combine command line utilities via I/O redirection gives an amazing amount of power and flexibility to the Unix/Linux user interface.
It's no wonder the first thing I do whenever presented with a stock Windows PC is to download the Cygwin utilities. I still can't see how anyone can get any work done using only the built-in Windows commands.
Not a week goes by that I'm not somehow reminded of just how powerful Unix is. Treating all devices as files was brilliant. Being able to combine command line utilities via I/O redirection gives an amazing amount of power and flexibility to the Unix/Linux user interface.
It's no wonder the first thing I do whenever presented with a stock Windows PC is to download the Cygwin utilities. I still can't see how anyone can get any work done using only the built-in Windows commands.
Monday, May 04, 2009
XnView proves handy
One complaint my wife had was after the data restoration I spent much of the weekend on, all of her photos ended up with yesterday's date. This causes her problems locating photos because while she can typically remember the approximate date when she took a picture, she always can't recall for certain what she named the directory. Recently she's taken to my simple approach of prefacing the directory name with a date. I use a date of the form YYYYMMDD (year, month, day) which causes the directories to sort nicely.
I remembered JPG files contained metadata fields which stored useful information like landscape or portrait orientation (for cameras which have appropriate sensors), GPS data (for cameras with a GPS installed), photo settings, and the date the photo was taken. There's even a standard for how these metadata fields are recorded called EXIF.
A bit of searching turned up some software called XnView which allows one to perform a number of date related functions including the following:
- changing the create and/or modified file time stamps based on the date from the EXIF fields (very useful in this case)
- changing the EXIF time stamps based on the current file time stamp (useful when the camera's date was not set when the photo was taken)
As you might imagine, I was very happy to discover I didn't have to cobble together a solution on my own. While I enjoy writing the odd bash or Python script, doing so unnecessarily didn't strike me as much fun.
I remembered JPG files contained metadata fields which stored useful information like landscape or portrait orientation (for cameras which have appropriate sensors), GPS data (for cameras with a GPS installed), photo settings, and the date the photo was taken. There's even a standard for how these metadata fields are recorded called EXIF.
A bit of searching turned up some software called XnView which allows one to perform a number of date related functions including the following:
- changing the create and/or modified file time stamps based on the date from the EXIF fields (very useful in this case)
- changing the EXIF time stamps based on the current file time stamp (useful when the camera's date was not set when the photo was taken)
As you might imagine, I was very happy to discover I didn't have to cobble together a solution on my own. While I enjoy writing the odd bash or Python script, doing so unnecessarily didn't strike me as much fun.
Windows data recovery
Last night while poking about the web in my typical pseudorandom fashion, I found a new tool which may help prepare for the next time Windows decides not to boot. TestDisk is a tool designed to run under multiple OSes which can perform lots of handy data recovery functions including repairing and restoring an NTFS boot sector.
It turns out it's already available on the System Rescue CD I've been using. I just needed to poke around a bit more.
I'll be making backups of the MBR and boot record since I don't expect this to be the last time that Windows goes belly up. *sigh*
It turns out it's already available on the System Rescue CD I've been using. I just needed to poke around a bit more.
I'll be making backups of the MBR and boot record since I don't expect this to be the last time that Windows goes belly up. *sigh*
Sunday, May 03, 2009
Windows strikes again
Despite the fact I made the switch to a Mac about 6 years ago, Windows still manages to be a thorn in my side from time to time. Yesterday morning my wife discovered that her XP laptop which had been working Friday night had decided not to boot. What was even more entertaining was it decided to display a completely blank screen so there was no clue what was causing the boot to fail. What's even more disturbing is this is the second time I've seen these same symptoms.
I poked around a bit after booting the system under Linux using a System Rescue CD. That allowed me to see which files had been added or modified since the last full backup a month ago. To do so, I had to issue a few Linux commands.
Here's the command to mount the Windows NTFS file system on the /mnt/windows mount point.
ntfs-3g /dev/sda1 /mnt/windows
Here's the commands to mount an external USB disk containing a Windows FAT32 file system on the /mnt/usbdisk mount point. Note that you have to create the mount point first. Also note that the device name of the USB drive may be different than /dev/sdb1. You can figure this out by issuing the command "ls -l /dev/sd*" before and after connecting the USB disk. The device name which appears after connecting the disk will be the correct one.
mkdir /mnt/usbdisk
mount -t vfat /dev/sdb1 /mnt/usbdisk
Here's the command to show you the files which have a later modification date than the last backup. This will give us an idea of what files need to be backed up before we perform any potentially destructive operations to the old disk.
find /mnt/windows -newer /mnt/usbdisk/backup -print
Once I did this, I had a quick look at the partition table/MBR to see if that might be the cause of the failure to boot. That required dumping sector 0 via a program which can display binary data in hexadecimal form. The xxd command will display hexadecimal equivalents for binary data and we can use the dd command to copy the first sector to xxd. Here's the command I used.
dd if=/dev/sda1 count=1 | xxd
A cursory glance indicated the partition table looked okay. It ended with the required 0xaa55 (since PCs are little endian this appears as 0x55aa when viewed as bytes).
I verified the rest of the files involved in the early portion of the XP boot process appeared to be present and had a reasonable size and time stamp. All appeared fine.
Now I was almost ready to try to fix the problem. Since this involved issuing some potentially destructive commands, I booted from the Acronis True Image CD to create a new "since save" backup of the data which had changed since the last full backup.
First I tried booting into the XP Recovery Console to issue the fixmbr command. Sadly, that didn't fix the problem. It did issue some stern looking warnings about the drive having a nonstandard partition table. Since I had used Windows to set up the disk, I found this very irritating. Why would Windows use a partitioning scheme which it would later declare to be nonstandard, especially when the default method is chosen? By this point, there aren't many of Windows' quirks which surprise me. They do make me all the happier that I deal mostly with MacOS and Linux these days.
I also tried an XP Repair Installation. Strangely enough that didn't change the boot failure symptoms at all.
What finally fixed the problem? Doing a full restore with Acronis True Image followed by a restore of the Acronis "since save" data. I may be completely disillusioned with Windows but Acronis makes a very nice product. I don't think I'd consider running Windows without it.
I poked around a bit after booting the system under Linux using a System Rescue CD. That allowed me to see which files had been added or modified since the last full backup a month ago. To do so, I had to issue a few Linux commands.
Here's the command to mount the Windows NTFS file system on the /mnt/windows mount point.
ntfs-3g /dev/sda1 /mnt/windows
Here's the commands to mount an external USB disk containing a Windows FAT32 file system on the /mnt/usbdisk mount point. Note that you have to create the mount point first. Also note that the device name of the USB drive may be different than /dev/sdb1. You can figure this out by issuing the command "ls -l /dev/sd*" before and after connecting the USB disk. The device name which appears after connecting the disk will be the correct one.
mkdir /mnt/usbdisk
mount -t vfat /dev/sdb1 /mnt/usbdisk
Here's the command to show you the files which have a later modification date than the last backup. This will give us an idea of what files need to be backed up before we perform any potentially destructive operations to the old disk.
find /mnt/windows -newer /mnt/usbdisk/backup -print
Once I did this, I had a quick look at the partition table/MBR to see if that might be the cause of the failure to boot. That required dumping sector 0 via a program which can display binary data in hexadecimal form. The xxd command will display hexadecimal equivalents for binary data and we can use the dd command to copy the first sector to xxd. Here's the command I used.
dd if=/dev/sda1 count=1 | xxd
A cursory glance indicated the partition table looked okay. It ended with the required 0xaa55 (since PCs are little endian this appears as 0x55aa when viewed as bytes).
I verified the rest of the files involved in the early portion of the XP boot process appeared to be present and had a reasonable size and time stamp. All appeared fine.
Now I was almost ready to try to fix the problem. Since this involved issuing some potentially destructive commands, I booted from the Acronis True Image CD to create a new "since save" backup of the data which had changed since the last full backup.
First I tried booting into the XP Recovery Console to issue the fixmbr command. Sadly, that didn't fix the problem. It did issue some stern looking warnings about the drive having a nonstandard partition table. Since I had used Windows to set up the disk, I found this very irritating. Why would Windows use a partitioning scheme which it would later declare to be nonstandard, especially when the default method is chosen? By this point, there aren't many of Windows' quirks which surprise me. They do make me all the happier that I deal mostly with MacOS and Linux these days.
I also tried an XP Repair Installation. Strangely enough that didn't change the boot failure symptoms at all.
What finally fixed the problem? Doing a full restore with Acronis True Image followed by a restore of the Acronis "since save" data. I may be completely disillusioned with Windows but Acronis makes a very nice product. I don't think I'd consider running Windows without it.
Monday, April 20, 2009
Apple makes switching phones incredibly easy
One of the things I've always dreaded about switching phones the laborious process of entering the phone numbers of friends and family members. I've got all those in my Mac Address Book so why can't I sync it straight to my phone? I've gotten used to doing so with my Palm Centro but wasn't sure it was easily accomplished using my old Razr.
Apple comes to the rescue again. It turns out they've included enough intelligence in their Bluetooth software that I can choose groups of contacts from my Address Book to sync.
But wait, there's more. I was also able to add my favorite wallpaper image to the old phone by using Apple's Bluetooth browsing feature. In the future, I'll be able to transfer photos taken with my cell phone via Bluetooth instead of being charged a fee for using the phone's data connection.
The procedure for accomplishing this was pretty easy to figure out... after all, it is an Apple. But here's the procedure spelled out if you don't feel like noodling it out yourself.
I did a little work with Google but I didn't see a similar procedure available for Windows. That doesn't mean it doesn't exist but if it does, it must not be quite so obvious as Apple's.
Apple comes to the rescue again. It turns out they've included enough intelligence in their Bluetooth software that I can choose groups of contacts from my Address Book to sync.
But wait, there's more. I was also able to add my favorite wallpaper image to the old phone by using Apple's Bluetooth browsing feature. In the future, I'll be able to transfer photos taken with my cell phone via Bluetooth instead of being charged a fee for using the phone's data connection.
The procedure for accomplishing this was pretty easy to figure out... after all, it is an Apple. But here's the procedure spelled out if you don't feel like noodling it out yourself.
I did a little work with Google but I didn't see a similar procedure available for Windows. That doesn't mean it doesn't exist but if it does, it must not be quite so obvious as Apple's.
Sunday, April 12, 2009
A farewell to Palms
The phone portion of my Palm Centro has been slowly dying for the past few months. The signal strength varies wildly over time. Occasionally I'll look at the Centro's status display and see the full 4 bars indicating a strong signal. Minutes later at the same location it may show a single bar or worse yet, the dread "SOS Service Only" message. A visit to Google indicates that this is a very common problem with Centros.
So much for my attempt to combine PDA and phone functionality into a single device. I had such high hopes for the Centro. Having been a Palm PDA user since I got the original Pilot as part of a special employee purchase back when I worked for U.S. Robotics, I've grown to depend on my PDA heavily. Palm PDAs provided the ideal combination of application support and built-in features. If only their phone capability worked as well as the rest of the device.
I've been doing a bit of research and so far I don't see a suitable replacement device, at least not among the subset of devices available from my cellular provider. The iPhone comes closest but I'm too cheap to want to be saddled with a $30 per month data plan when a little planning can make it completely unnecessary. The iPhone doesn't make any sense without the data plan. Many of the other smart phones suffer from poor battery life, poor signal quality, crashes, or insufficient application support.
For the time being I've switched back to my old Motorola Razr phone which despite its age has much better signal strength and battery life than the Centro did when it was new. I'm using the Centro without a SIM card as a standalone PDA device.
I'm considering the Motorola Q Windows Mobile device. I can find Windows Mobile equivalents for all the applications I've come to depend upon (contact management, calendar, to-do list, memos/notes, database, and secure password storage). I've got a few months before I'm eligible for a reduced cost equipment upgrade. I'm hoping a better option presents itself between now and then as the prospect of switching to a Windows Mobile device doesn't thrill me.
So much for my attempt to combine PDA and phone functionality into a single device. I had such high hopes for the Centro. Having been a Palm PDA user since I got the original Pilot as part of a special employee purchase back when I worked for U.S. Robotics, I've grown to depend on my PDA heavily. Palm PDAs provided the ideal combination of application support and built-in features. If only their phone capability worked as well as the rest of the device.
I've been doing a bit of research and so far I don't see a suitable replacement device, at least not among the subset of devices available from my cellular provider. The iPhone comes closest but I'm too cheap to want to be saddled with a $30 per month data plan when a little planning can make it completely unnecessary. The iPhone doesn't make any sense without the data plan. Many of the other smart phones suffer from poor battery life, poor signal quality, crashes, or insufficient application support.
For the time being I've switched back to my old Motorola Razr phone which despite its age has much better signal strength and battery life than the Centro did when it was new. I'm using the Centro without a SIM card as a standalone PDA device.
I'm considering the Motorola Q Windows Mobile device. I can find Windows Mobile equivalents for all the applications I've come to depend upon (contact management, calendar, to-do list, memos/notes, database, and secure password storage). I've got a few months before I'm eligible for a reduced cost equipment upgrade. I'm hoping a better option presents itself between now and then as the prospect of switching to a Windows Mobile device doesn't thrill me.
Saturday, March 28, 2009
FAT32 sucks!
I'm doing my monthly offsite backups and am seriously frustrated by the limitations of the FAT32 file system again. FAT32 is something of a de facto standard since most external hard drives and USB flash storage devices come pre-formatted with FAT32. However FAT32 carries with it the limitation that the size of an individual file may not grow beyond 4 GB. Many backup programs don't handle this limitation gracefully since this requires the backup program create multiple output files.
So what are my options for getting around this limitation? I'm currently using external drives with 2 partitions equally split between FAT32 so the Windows machines can write to it and HFS so our Macs won't be limited by the arbitrarily small maximum file size. Another option is formatting the entire drive with NTFS and using MacFUSE/NTFS-3g to allow the Macs to read and write to the NTFS partition. I like this approach better as it doesn't force me to correctly predict how much space I'll need for each type of machine.
Ultimately I think I'd prefer to use drivers to allow me to mount, read, and write to Linux EXT file systems but this requires more investigation. This is mainly because I really hate the thought of trusting my Mac data to NTFS.
So what are my options for getting around this limitation? I'm currently using external drives with 2 partitions equally split between FAT32 so the Windows machines can write to it and HFS so our Macs won't be limited by the arbitrarily small maximum file size. Another option is formatting the entire drive with NTFS and using MacFUSE/NTFS-3g to allow the Macs to read and write to the NTFS partition. I like this approach better as it doesn't force me to correctly predict how much space I'll need for each type of machine.
Ultimately I think I'd prefer to use drivers to allow me to mount, read, and write to Linux EXT file systems but this requires more investigation. This is mainly because I really hate the thought of trusting my Mac data to NTFS.
Vim continues to amaze me
Every time I think I've learned all of Vim's tricks, it manages to surprise me with some new feature. There are two things I've discovered recently which have made it more enjoyable to use.
The first is Vim's ability to edit files on remote systems which can be reached via scp or ftp. Since I frequently need to edit files on embedded Linux systems which don't have X11 installed, this feature is a huge timesaver for me. The following commands illustrate the basic commands for either editing a file over scp or ftp.
gvim scp://username@system//home/username/filename
gvim ftp://username@system//home/username/filename
This feature is referred to as NetRW.
The other thing I discovered was completely by accident. I was using MacVIM (my favorite Mac port of the GUI version of Vim made available from the fine folks at Google) when I found I could drag the file icon off the titlebar and into a bash shell. Once dragged into the window containing the bash shell, the full pathname of the file being edited was placed on the command line. Granted this isn't something I need to do often but when I do, it saves me from having to manually type a long pathname.
The first is Vim's ability to edit files on remote systems which can be reached via scp or ftp. Since I frequently need to edit files on embedded Linux systems which don't have X11 installed, this feature is a huge timesaver for me. The following commands illustrate the basic commands for either editing a file over scp or ftp.
gvim scp://username@system//home/username/filename
gvim ftp://username@system//home/username/filename
This feature is referred to as NetRW.
The other thing I discovered was completely by accident. I was using MacVIM (my favorite Mac port of the GUI version of Vim made available from the fine folks at Google) when I found I could drag the file icon off the titlebar and into a bash shell. Once dragged into the window containing the bash shell, the full pathname of the file being edited was placed on the command line. Granted this isn't something I need to do often but when I do, it saves me from having to manually type a long pathname.
Saturday, February 28, 2009
Python is slowly winning me over
I've been learning Python at work and I have to admit that it's slowly winning me over.
I was skeptical at first. I've been a low level programmer (firmware, diagnostics, operating systems, device drivers, etc) for most of my lengthy career. A mixture of C and assembly language has served me well for most of that time with a little shell scripting thrown in for good measure.
When I started my current job, I discovered they use a mixture of C and Python. The parts of the product which aren't performance sensitive such as the GUI are implemented in Python. This code is much smaller than C code to accomplish the same purpose would be. Thanks to the interactive nature of Python it's also much quicker to develop this code and to get instant feedback.
What finally won me over was examining a short script designed to generate some proprietary TCP/IP packets. This script had a small problem when talking to one of our products. It produced the integer and float portions of the structure with the wrong endianness. A little searching with Google showed me that adding a single "<" character to the format string used by the "struct" module (which prepares individual fields within a structure) would correct the problem.
It took a minute for the full impact of that to sink in to my deeply ingrained C mindset. A single character would correct my problem. Couple that with the fact that the script to generate these packets was probably less than a third of the length of a comparable C program and I was forced to admit that Python is much more useful than I originally thought.
I was tempted to end with a comment about old dogs learning new tricks but I suspect that phrase is far too tired to carry the proper impact. I am finding that old engineers can learn new tools with sufficient incentive. Seeing how much more productive I could be with solid Python experience under my belt is more than enough incentive.
I was skeptical at first. I've been a low level programmer (firmware, diagnostics, operating systems, device drivers, etc) for most of my lengthy career. A mixture of C and assembly language has served me well for most of that time with a little shell scripting thrown in for good measure.
When I started my current job, I discovered they use a mixture of C and Python. The parts of the product which aren't performance sensitive such as the GUI are implemented in Python. This code is much smaller than C code to accomplish the same purpose would be. Thanks to the interactive nature of Python it's also much quicker to develop this code and to get instant feedback.
What finally won me over was examining a short script designed to generate some proprietary TCP/IP packets. This script had a small problem when talking to one of our products. It produced the integer and float portions of the structure with the wrong endianness. A little searching with Google showed me that adding a single "<" character to the format string used by the "struct" module (which prepares individual fields within a structure) would correct the problem.
It took a minute for the full impact of that to sink in to my deeply ingrained C mindset. A single character would correct my problem. Couple that with the fact that the script to generate these packets was probably less than a third of the length of a comparable C program and I was forced to admit that Python is much more useful than I originally thought.
I was tempted to end with a comment about old dogs learning new tricks but I suspect that phrase is far too tired to carry the proper impact. I am finding that old engineers can learn new tools with sufficient incentive. Seeing how much more productive I could be with solid Python experience under my belt is more than enough incentive.
Sunday, January 25, 2009
The Neuros OSD is so cool!

I just watched part of the first recording from the Neuros OSD (a Linux based DVR) my wife got me for Christmas. What a cool little device! I'm serious about the little part... it's only about 5.5 inches square and just 1.25 inches tall. Just check out the image. The device itself isn't much bigger than the small remote included. It records programs onto SD or compact flash cards. There's also a USB port so you can record to a USB thumb drive or hard drive.
The first order of business was to upgrade the firmware. There are two ways of doing that. If you've connected the Neuros OSD to an ethernet port, it can upgrade the firmware directly. If you don't have a network connection, you can download the new firmware image to a flash card and upgrade from that. During the ~10 minutes which the upgrade requires, the Neuros shows you a little pong game on the TV screen. The on-screen score appears to be the percentage of the upgrade currently completed.
Is it perfect? Not exactly but it's pretty darned close. It's especially attractive given the low price. It appears to have been primarily created for recording a single recording at a time. That fits my requirements nicely since this was just intended to supplement our existing full-featured DVR. Occasionally my wife will have a couple simultaneous recordings set up which takes up both tuners. It's nice to have the option of not worrying about how much space is used on the main DVR or whether both tuners are spoken for at the time my obscure SciFi program is on. There's a couple other restrictions. Your connection from the set top box must provide composite video (one of those 3 connector cables with 1 video and 2 audio connections).
The other restriction is not really a shortcoming of the Neuros but rather of the FAT-32 format used on many of the flash devices. FAT-32 has a maximum file size of 4 GB. That's probably somewhere between 3 and 3.5 hours of recording. So you might need to choose a flash device capable of recording the maximum length program you'd be interested in watching. If you're keen on catching some type of program marathon, you're probably looking at a small portable hard drive rather than a flash device.
Well, enough of my blathering on about it. Check it out for yourself at the links above. It's a very nice gadget and a useful too.
Thursday, January 01, 2009
The sound of many Zunes freezing...
My neck is sore from so much head shaking over the Zune freeze problem. I would have hoped that the development teams at Microsoft would have held regular code reviews which should have caught a glaring error like this one. I understand why they may not have done so. It's quite hard to get people to review your code if company procedures don't demand it. This is especially true in consumer electronics where the schedules seem to be compressed to ridiculous levels.
So what do we learn from this public relations fiasco?
1) Code reviews should be mandatory, not optional.
2) Developers must do much better unit testing. In the past I've had coworkers criticize me because I insist on running functions under a debugger to force execution of tough to test code paths.
I'm always amazed that software engineers can take such a cavalier approach to verifying their code performs as expected. Then again I'm old and cranky. Hey you kids... get off my lawn! :-)
So what do we learn from this public relations fiasco?
1) Code reviews should be mandatory, not optional.
2) Developers must do much better unit testing. In the past I've had coworkers criticize me because I insist on running functions under a debugger to force execution of tough to test code paths.
I'm always amazed that software engineers can take such a cavalier approach to verifying their code performs as expected. Then again I'm old and cranky. Hey you kids... get off my lawn! :-)
Subscribe to:
Posts (Atom)
-
A long time ago I was given a bit of advice that has served me well over the years. An engineer with much more experience than I had at the...
-
We lost our very special dog to an osteosarcoma a few days ago. He started limping a little over 4 months ago and it took a while to dia...
-
Most of the longtime Unix users like me love grep. Regular expressions make the silly wildcards available in Windows seem completely underw...