<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8934044</id><updated>2012-01-27T01:52:33.853-05:00</updated><category term='tunecast'/><category term='technology'/><category term='fruit'/><category term='astronomy'/><category term='solution'/><category term='funny'/><category term='web'/><category term='bug'/><category term='apple'/><category term='ads'/><category term='asus'/><category term='archos'/><category term='oleg'/><category term='transmitter'/><category term='privacy'/><category term='nature'/><category term='youtube'/><category term='photos'/><category term='ga-p35-ds3r'/><category term='c-770'/><category term='raves'/><category term='windows 7'/><category term='picasa'/><category term='dell'/><category term='firefox'/><category term='rockbox'/><category term='mouse'/><category term='spring'/><category term='computer'/><category term='debian'/><category term='video'/><category term='repair'/><category term='windows'/><category term='launchpad'/><category term='photosynth'/><category term='ontario'/><category term='z80'/><category term='hardware'/><category term='nanaimo'/><category term='linux'/><category term='facebook'/><category term='wl-500w'/><category term='extensions'/><category term='personal'/><category term='inspiron'/><category term='cygwin'/><category term='photography'/><category term='flv'/><category term='music'/><category term='psychill'/><category term='6502'/><category term='philosophy'/><category term='reddit'/><category term='xmms'/><category term='ie'/><category term='complaint'/><category term='electronics'/><category term='panoramio'/><category term='movie'/><category term='ti-85'/><category term='blogger'/><category term='psytrance'/><category term='drivers'/><category term='ipod'/><category term='food'/><category term='psychedelic'/><category term='software'/><category term='digg'/><category term='outdoors'/><category term='gardening'/><category term='religion'/><category term='microsoft'/><category term='gcc'/><category term='mp3'/><category term='detours'/><category term='HPLIP'/><category term='winamp'/><category term='msp430'/><category term='kfc'/><category term='olympus'/><category term='vista'/><category term='google'/><title type='text'>dreamlayers</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default?start-index=101&amp;max-results=100'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>225</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8934044.post-5494186427083783760</id><published>2012-01-25T18:49:00.001-05:00</published><updated>2012-01-25T18:49:59.722-05:00</updated><title type='text'>In OS X, SDL only delivers messages to the first thread?</title><content type='html'>I was trying to get a &lt;a href="http://www.rockbox.org/"&gt;Rockbox&lt;/a&gt; simulator working in OS X. After dealing with a bunch of other issues, I got an executable which displays a beachball cursor and doesn't respond to input.&amp;nbsp; I found a &lt;a href="http://lists.sac-home.org/pipermail/sac-user/2010-April/000305.html"&gt;post&lt;/a&gt; that claimed events sent to the app are only dispatched to the main thread. Then I rearranged code so the main thread initializes the video and handles messages and input worked properly.&lt;br /&gt;&lt;br /&gt;The SDL documentation claims &lt;a href="http://sdl.beuc.net/sdl.wiki/SDL_WaitEvent"&gt;SDL_WaitEvent()&lt;/a&gt; can only be called from "thread that set the video mode". This is apparently not a sufficient condition for OS X.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5494186427083783760?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5494186427083783760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5494186427083783760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5494186427083783760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5494186427083783760'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2012/01/in-os-x-sdl-only-delivers-messages-to.html' title='In OS X, SDL only delivers messages to the first thread?'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-938238237511561076</id><published>2012-01-24T19:57:00.001-05:00</published><updated>2012-01-27T01:52:33.860-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>The Linux desktop still dissapoints</title><content type='html'>I used to use Linux as my main OS from 1995 to 1999. Back then, Windows was an unstable piece of garbage, and I liked Linux. In Linux I faced relatively few problems, and it was possible to solve those and have a good stable system.&lt;br /&gt;&lt;br /&gt;Windows became good starting with Windows 2000. It was stable, it ran software that had no Linux equivalents, and it had a decently designed GUI. Windows continued to get better, and I'm now very happy with Windows 7.&lt;br /&gt;&lt;br /&gt;Starting about a year ago, I tried out various Linux distributions including Mint 10, Mint Debian Edition, Debian Testing, Xubuntu and Ubuntu. Overall, I'm disappointed. The Linux desktop still can't compete with Windows.&lt;br /&gt;&lt;br /&gt;I used to think that free software had great potential because the ability to reuse components and code makes software development much more efficient. Instead, I see countless alternatives for the same thing, and re-implementations which replace good software with works in progress. As a result, the Linux desktop doesn't improve very much and new problems appear constantly.&lt;br /&gt;&lt;br /&gt;The best current example is Gnome. Version 2 was inferior to Windows in some ways, but it was good enough and usable. Then, it was dramatically changed, stripping out many features, and even removing the ability to use other software such as XScreenSaver and Compiz. Some parts of the Gnome 3 user experience are an improvement, but overall it is not an improvement because of what was removed. This resulted in Gnome forks, and maybe also Unity.&lt;br /&gt;&lt;br /&gt;Here's a list of some other things I encountered in Linux:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Linux Mint is not upgradeable, or maybe it's upgradeable but a clean install is highly recommended&lt;/li&gt;&lt;li&gt;Linux Mint Debian Edition has been holding back updates for months, despite claiming to offer a "rolling distribution based on Debian Testing".&lt;/li&gt;&lt;li&gt;Writes to slow USB devices hang other file system accesses&lt;/li&gt;&lt;li&gt;Gnome 3 won't automount devices in Debian Wheezy&lt;/li&gt;&lt;li&gt;The suspend button suddenly stopped working in Xubuntu&lt;/li&gt;&lt;li&gt;Compiz crashes a few times at startup&lt;/li&gt;&lt;li&gt;Thunar won't warn when copying files into a destination with insufficient space&lt;/li&gt;&lt;li&gt;Thunar shows errors when unmounting removable devices &lt;/li&gt;&lt;li&gt;Debian Wheezy comes with ugly default configurations and horrible font rendering&lt;/li&gt;&lt;li&gt;The XScreenSaver screen unlock dialog locks up, requiring a kill -9 from another console. The dialog is also ugly and primitive.&lt;/li&gt;&lt;li&gt;Sometimes XScreenSaver locks the screen even when told not to&lt;/li&gt;&lt;li&gt;The Xfce applications menu is worse than Windows 95. It doesn't have editing functionality, and it silently ignores *.desktop files that are accepted by other parts of the system.&lt;/li&gt;&lt;li&gt;In Debian and Ubuntu, Audacious comes without the ffaudio plugin, so it doesn't support APE and some other formats.&lt;/li&gt;&lt;li&gt;Audacious changed the plugin API, so it can't use plugins written for an old version&lt;/li&gt;&lt;li&gt;Compiling things is a pain because of all the dependencies. For example, Audacious 3.2 requires very recent versions of libavcodec and huge numbers of other stuff&lt;/li&gt;&lt;li&gt;Several distributions choose and integrate Empathy as the IM client, even though it lacks important features.&lt;/li&gt;&lt;li&gt;Several distributions won't automatically disable the nouveau driver when installing the Nvidia driver, leading to a lockup&lt;/li&gt;&lt;li&gt;The Xfce desktop icons aren't managed by the file manager, leading to all sorts of inconsistencies&lt;/li&gt;&lt;li&gt;mintMenu has various bugs and bad design choices which make it harder to use&lt;/li&gt;&lt;li&gt;The Gnome 3 time setting dialog won't report time sync problems&lt;/li&gt;&lt;li&gt;Xfce doesn't seem to offer a way to change default PulseAudio devices&lt;/li&gt;&lt;li&gt;Many less popular packages are old or broken&lt;/li&gt;&lt;li&gt;Many things don't work in OpenJDK, which is the default, and Oracle Java locks up Firefox when Adblock Plus is enabled.&lt;/li&gt;&lt;li&gt;Shutdown and restart doesn't work from the Xubuntu login screen&lt;/li&gt;&lt;li&gt;Distributions may silently insert customizations into my Firefox profile even if I copy the profile from Windows.&lt;/li&gt;&lt;li&gt;Improper display of some partially transparent images in Firefox&lt;/li&gt;&lt;li&gt;Package setups which make it hard to uninstall applications which were installed by default&lt;/li&gt;&lt;li&gt;Default application setting screens which don't work&lt;/li&gt;&lt;li&gt;Ability to customize the same thing separately in two different places, resulting in a conflict&lt;/li&gt;&lt;li&gt;Limited drag and drop support and context menu support&lt;/li&gt;&lt;li&gt;Debian still prompts in the middle of the install process&lt;/li&gt;&lt;li&gt;A bunch of programs can automatically change desktop backgrounds, but none are as nice as what's built into Windows and OS X&lt;/li&gt;&lt;li&gt; Trash can't be disabled on a device&lt;/li&gt;&lt;li&gt;Mysterious Samba failures&lt;/li&gt;&lt;li&gt;The r8169 driver is broken in Linux Mint Debian Edition, requiring a manual install of the r8168 driver from Realtek, with some Makefile editing&lt;/li&gt;&lt;li&gt;In every distribution I tried, the fonts installed by default make many websites look terrible&lt;/li&gt;&lt;li&gt; Gnash is installed by default, even though it doesn't work very well and Flash is is used in many places on the web&lt;/li&gt;&lt;li&gt;In Thunar, the there's a very subtle difference in appearance between mounted and unmounted volumes. Unmounted volumes even have the eject icon.&lt;/li&gt;&lt;li&gt;When unmounting, Xfce notifications that data still needs to be written sometimes remain on the screen.&lt;/li&gt;&lt;li&gt;Ubuntu Software Centre shows some applications twice&lt;/li&gt;&lt;li&gt;I can't drag things to the Xfce Quicklauncher. Also, it crashes.&lt;/li&gt;&lt;li&gt;Xfce theming is not coordinated, so for example some themes make tray icons almost dissapear.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-938238237511561076?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/938238237511561076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=938238237511561076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/938238237511561076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/938238237511561076'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2012/01/linux-desktop-still-dissapoints.html' title='The Linux desktop still dissapoints'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-838573504865989802</id><published>2012-01-19T12:17:00.000-05:00</published><updated>2012-01-19T12:31:12.896-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><title type='text'>Clutterbar fix for n3ON - v 1.0 skin for Winamp</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bEM6d3Cncn0/TxhS-YlbbKI/AAAAAAAADjc/qep5jcc1ZiQ/s1600/Audacious+312+using+n3ON.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-bEM6d3Cncn0/TxhS-YlbbKI/AAAAAAAADjc/qep5jcc1ZiQ/s1600/Audacious+312+using+n3ON.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.winamp.com/skin/n3on/162346"&gt;n3ON&lt;/a&gt; is my favourite Winamp skin. I've used it for several years, and I'm not getting bored with it. I still feel it's attractive and even beautiful.&lt;br /&gt;&lt;br /&gt;When I tried to use it with &lt;a href="http://audacious-media-player.org/"&gt;Audacious&lt;/a&gt; 3.1.2 in Linux, I got a white box to the left of the time display and visualization area. This is because n3ON does not provide an image for when the Clutterbar is hidden. The problem can be reproduced in Winamp by unchecking:Preferences -&amp;gt; Skins -&amp;gt; Classic Skins -&amp;gt; Classic Skin Options -&amp;gt; Always&lt;br /&gt;show Winamp "Clutterbar" in main window. This part of the skin is &lt;a href="http://wiki.winamp.com/wiki/Main#Winamp_Skins_.7C_Titlebar.bmp"&gt;documented&lt;/a&gt; on the Winamp wiki. (There it is called the CuttleBar.)&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://dl.dropbox.com/u/16662598/Misc/n3ON_clutterbar_fix.wsz"&gt;download a fixed n3ON skin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I also created an &lt;a href="http://dl.dropbox.com/u/16662598/Misc/n3ON_alternate_clutterbar_fix.zip"&gt;alternate fix&lt;/a&gt; which keeps the same appearance even when the Clutterbar is hidden. It is not useful for Winamp, but it could be useful for other applications which can't show the Clutterbar. To use it, extract the .wsz (which is just a zip file) and replace TITLEBAR.bmp with the one from the alternate fix zip. You can then simply move the n3ON directory into the Skins directory.&lt;br /&gt;&lt;br /&gt;n30N was created by &lt;a href="http://www.deaddreamer.com/"&gt;deaddreamer, Wilhelm Steiner&lt;/a&gt;. He gave me permission to distribute this fix. Note that what I did is just a tiny bit of work; all the credit for this skin goes to him.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-838573504865989802?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/838573504865989802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=838573504865989802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/838573504865989802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/838573504865989802'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2012/01/clutterbar-fix-for-n3on-v-10-winamp.html' title='Clutterbar fix for n3ON - v 1.0 skin for Winamp'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-bEM6d3Cncn0/TxhS-YlbbKI/AAAAAAAADjc/qep5jcc1ZiQ/s72-c/Audacious+312+using+n3ON.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3375724446487868251</id><published>2012-01-18T11:55:00.002-05:00</published><updated>2012-01-18T12:22:42.590-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><title type='text'>Don't try prelink in Debian</title><content type='html'>&lt;a href="http://packages.debian.org/prelink"&gt;Prelink&lt;/a&gt; modifies executables and shared libraries on disk so they don't have to be modified every time they're loaded into memory. This should speed up program startup.&lt;br /&gt;&lt;br /&gt;Unfortunately, I just tried it in Wheezy on amd64 and it's very broken. An attempt to do a prelink &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=620630"&gt;stops with an assertion failure&lt;/a&gt;. This could be avoided, if you figure out the what packages need to be excluded. In any case, you're left with an even more serious error: &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=643967"&gt;it can't undo many changes&lt;/a&gt; because it finds overlapping sections.&lt;br /&gt;&lt;br /&gt;I'm disappointed that such a package is available in testing. The same package version can even be found in stable! If someone really wants to play with something this broken, they ought to have to get it from experimental.&lt;br /&gt;&lt;br /&gt;Fortunately, this is &lt;a href="http://raphaelhertzog.com/2011/02/21/debian-cleanup-tip-4-find-broken-packages-and-reinstall-them/"&gt;easy to fix&lt;/a&gt; using &lt;a href="http://packages.debian.org/debsums"&gt;debsums&lt;/a&gt;: simply find modified packages and reinstall them. I used: sudo debsums --changed --no-prelink | xargs dpkg --search | sed "s/:.*//" | sort | uniq | xargs sudo apt-get --reinstall install&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3375724446487868251?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3375724446487868251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3375724446487868251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3375724446487868251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3375724446487868251'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2012/01/dont-try-prelink-in-debian.html' title='Don&apos;t try prelink in Debian'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4772657586063713407</id><published>2012-01-17T00:19:00.000-05:00</published><updated>2012-01-17T12:27:24.504-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><title type='text'>Compiling Audacious 3.1.2 for Debian Wheezy</title><content type='html'>I'm used to organizing my music into folders the way I want, and playing it via a simple player. In Windows I use Winamp, and in Linux I used to use XMMS. Currently, the best choice in Linux seems to be &lt;a href="http://audacious-media-player.org/"&gt;Audacious&lt;/a&gt;. Unfortunately, Debian &lt;a href="http://packages.debian.org/audacious"&gt;only has&lt;/a&gt; version 2.4.4, while the latest version is 3.1.2. Fortunately, it's not too hard to compile Audacious.&lt;br /&gt;&lt;br /&gt;Almost all the build dependencies are available in Debian Wheezy. What's needed for building 2.4.4 can be obtained via "&lt;code&gt;apt-get build-dep&lt;/code&gt;". In addition, libmpg123-dev is a must have, for MP3 playback. It's also a good idea to install libmodplug-dev and libbs2b-dev. You may also want libnotify-dev, but watch out: the libnotify plugin I built crashes things so badly I get back to the login prompt.&lt;br /&gt;&lt;br /&gt;The only dependency which must be built is a newer version &lt;a href="http://git.atheme.org/libmowgli/"&gt;libmowgli&lt;/a&gt;. I configured it using the --prefix which I intended to use for Audacious. The other dependency you may want to build is &lt;a href="http://www.atheme.org/project/libguess"&gt;libguess&lt;/a&gt;, for character set detection. It depends on libmowgli.&lt;br /&gt;&lt;br /&gt;To deal with the dependencies, I simply used "&lt;code&gt;export PKG_CONFIG_PATH=/opt/audacious/lib/pkgconfig&lt;/code&gt;" at the start of building. That causes pkg-config to automatically find what I install into /opt/audacious. There was just one problem with the installations: the directories created in /opt/audacious were only accessible for root. I ended up fixing that with "&lt;code&gt;sudo find /opt/audacious -type d -print0 | sudo xargs -0 chmod a+rx&lt;/code&gt;" after each install.&lt;br /&gt;&lt;br /&gt;After building and installing Audacious, you must build and install audacious-plugins. Like Winamp, Audacious is modular, and some plugins are required to actually do stuff with it. When the audacious-plugins configure script finishes, it gives you a long list showing what features will be compiled. That can be used to check if additional dependencies need to be installed.&lt;br /&gt;&lt;br /&gt;If you have your own plugins in &lt;code&gt;~/.local/share/audacious/Plugins/&lt;/code&gt; you may need to update them because the plugin API changed. Skins should just work, though I found a problem with my favourite skin, &lt;a href="http://www.winamp.com/skin/n3on/162346"&gt;n3ON&lt;/a&gt;. The column in the top right of TITLEBAR.bmp had to be copied into the clear space beside it, so there are two columns side-by-side.&lt;br /&gt;&lt;br /&gt;So far, the only problem I see is that the Desktop Notifications (libnotify) plugin totally crashes something and gets me back to the login prompt. That might just be a bug in something else.&lt;br /&gt;&lt;br /&gt;You can download the &lt;a href="http://dl.dropbox.com/u/16662598/Debian/audacious-3.1.2_bin_wheezy_amd64.tar.xz"&gt;amd64 binary of Audacious 3.1.2 for Debian Wheezy&lt;/a&gt; from Dropbox. It's not an actual package; just untar it in the root to create /opt/audacious, and then run /opt/audacious/bin/audacious. There is no need to add that to the path, and the right libmowgli is loaded automatically.&lt;br /&gt;&lt;br /&gt;I don't intend to make a habit of this. It's just an experiment and a learning experience. It reminds me of the importance of Linux distributions and package maintainers, but it also reminds me how in Windows, if you want an application you can simply download it and install it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4772657586063713407?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4772657586063713407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4772657586063713407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4772657586063713407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4772657586063713407'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2012/01/compiling-audacious-312-for-debian.html' title='Compiling Audacious 3.1.2 for Debian Wheezy'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1678526708000358914</id><published>2012-01-16T19:49:00.002-05:00</published><updated>2012-01-16T19:51:47.580-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>A quick hack to make Synaesthesia work using PulseAudio</title><content type='html'>&lt;a href="http://www.logarithmic.net/pfh/synaesthesia"&gt;Synaesthesia&lt;/a&gt; is my favourite music visualization program. It can input audio that's being played using the EsounD esd_monitor_stream() function. That's broken when using PulseAudio in Debian Wheezy.&amp;nbsp; The call stops playback and the file descriptor never returns data. Here's a simple solution.&lt;br /&gt;&lt;br /&gt;Comment out the EsounD opening code in openSound(), and just use pipeIn = 0 instead. This gets sound data from standard input. You can then provide input from the ALSA stereo monitor using something like: &lt;code&gt;parec --latency=1 --format=s16le --device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | synaesthesia esd&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If your stereo monitor source is different, you may need to find it using &lt;code&gt;pacmd&lt;/code&gt;. You may also need to unmute it. The &lt;code&gt;--latency=1&lt;/code&gt; stops &lt;code&gt;parec&lt;/code&gt; from buffering a lot of data and then outputting it at once. The result works, though the high frame rate makes it a bit weird. Perhaps synaesthesia needs a frame rate cap?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1678526708000358914?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1678526708000358914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1678526708000358914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1678526708000358914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1678526708000358914'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2012/01/quick-hack-to-make-synaesthesia-work.html' title='A quick hack to make Synaesthesia work using PulseAudio'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2010467589042072219</id><published>2012-01-09T00:15:00.000-05:00</published><updated>2012-01-09T00:15:09.193-05:00</updated><title type='text'>Editing iPod partitions with GParted</title><content type='html'>The 5th generation (Video) iPod has two partitions: a proprietary firmware partition followed by a FAT32 data partition. In the MBR of iPods formatted for Windows, the firmware partition has type 0. GParted considers it to be unallocated space. Because of that, it can easily overwrite the firmware partition or its partition table entry. That would be bad, because the firmware partition is needed, even when booting Rockbox or iPodLinux. &lt;br /&gt;&lt;br /&gt;I first used fdisk to change the firmware partition type to a non-zero value. Then I could safely work with GParted without any danger of overwriting the firmware partition. Finally, when I was done, I set the type back to zero. Fdisk warns that you probably shouldn't set the type to zero, but it's really supposed to be zero.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2010467589042072219?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2010467589042072219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2010467589042072219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2010467589042072219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2010467589042072219'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2012/01/editing-ipod-partitions-with-gparted.html' title='Editing iPod partitions with GParted'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5890878736356005496</id><published>2011-11-13T18:29:00.001-05:00</published><updated>2011-11-13T18:49:38.646-05:00</updated><title type='text'>Weird APC Back-UPS ES 650 BE650R-CN overvoltage behaviour</title><content type='html'>Today there is a sustained overvoltage at around 130V. I'm told they paralleled a bunch of feeder lines because of work being done today. I found out about this because an APC Back-UPS ES 650 (BE650R-CN) malfunctioned, and I noticed the "decreasing voltage" light on the line-interactive UPS which I used as the replacement.&lt;br /&gt;&lt;br /&gt;I was told that the BE650R-CN was beeping a lot in the morning and that it stopped supplying power. When I plugged in and turned on the UPS without any load or computer connection, it initially seemed to start normally. However, when the power on self test was supposed to finish and the UPS was supposed to switch back to external power, it instead started repeatedly clicking as if it was switching back and forth between external and UPS power.&lt;br /&gt;&lt;br /&gt;After seeing this, I took out the battery and tested it. The battery seemed charged, at over 13V, and it was capable of powering a car headlight. Later, when I put it back in the UPS, I could power a 100W incandescent lamp. The on/off button sometimes sticks and fails to pop up, but other than that, the UPS seems fine. It supplies external power, even though the external voltage is still 130V. The upper limit is set to 139V.&lt;br /&gt;&lt;br /&gt;I'm left wondering what happened. Did I run into a firmware bug, which was fixed by removing the battery for a while? Could the sticking power switch cause this? Is the upper voltage limit stored in non-volatile memory, or was it possibly lower before and reset by removing the battery?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5890878736356005496?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5890878736356005496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5890878736356005496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5890878736356005496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5890878736356005496'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/11/weird-apc-back-ups-es-650-be650r-cn.html' title='Weird APC Back-UPS ES 650 BE650R-CN overvoltage behaviour'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-185393595249589688</id><published>2011-11-13T15:02:00.001-05:00</published><updated>2011-11-13T16:04:05.112-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rockbox'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><title type='text'>Building Rockbox simulator in Windows using Cygwin</title><content type='html'>When building the &lt;a href="http://www.rockbox.org/"&gt;Rockbox&lt;/a&gt; simulator under Cygwin in Windows, an important thing to keep in mind is that the simulator is normally being cross compiled. It is being built within &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt; using Cygwin tools, but it's built to run outside Cygwin, as a normal Windows application.&lt;br /&gt;&lt;br /&gt;When using the &lt;code&gt;sdl&lt;/code&gt; package from &lt;code&gt;http://download.rockbox.org/cygwin/&lt;/code&gt;, &lt;code&gt;tools/configure&lt;/code&gt; doesn't need to be told about the cross-compiling because &lt;code&gt;sdl-config&lt;/code&gt; adds the &lt;code&gt;-mno-cygwin&lt;/code&gt; switch. That switch tells the old GCC 3.4.4 compiler to build a standard Windows application instead of a Cygwin application. The switch is only really meant for compiling parts of Cygwin which must not depend on Cygwin, but it works.&lt;br /&gt;&lt;br /&gt;If you instead use SDL from &lt;a href="http://libsdl.org/"&gt;libsdl.org&lt;/a&gt;, the &lt;code&gt;-mno-cygwin&lt;/code&gt; flag won't be added and an attempt will be made to compile the simulator as a Cygwin application. This fails with many errors in &lt;code&gt;/usr/include/sys/reent.h&lt;/code&gt; because Rockbox &lt;code&gt;firmware/include/_ansi.h&lt;/code&gt; is included instead of &lt;code&gt;/usr/include/_ansi.h&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;If you try to use the &lt;code&gt;-mno-cygwin&lt;/code&gt; flag in Cygwin gcc-4, you'll be told "The -mno-cygwin flag has been removed; use a mingw-targeted cross-compiler."&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://mingw-w64.sourceforge.net/"&gt;MinGW-w64&lt;/a&gt; project provides good up-to-date MinGW compilers. Cygwin packages are available from within Cygwin setup. It's possible to use that compiler and SDL from libsdl.org by setting &lt;code&gt;CROSS_COMPILE=i686-w64-mingw32-&lt;/code&gt; when running configure.&lt;br /&gt;&lt;br /&gt;With either the old Cygwin compiler or i686-w64-mingw32-gcc, there are linking problems with multiple definitions. Those can be ignored by adding &lt;code&gt;-Wl,--allow-multiple-definition&lt;/code&gt; to &lt;code&gt;GLOBAL_LDOPTS&lt;/code&gt; in &lt;code&gt;Makefile&lt;/code&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-185393595249589688?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/185393595249589688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=185393595249589688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/185393595249589688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/185393595249589688'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/11/building-rockbox-simulator-in-windows.html' title='Building Rockbox simulator in Windows using Cygwin'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-9099539005768661786</id><published>2011-11-04T21:14:00.000-04:00</published><updated>2011-11-04T21:14:26.463-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><title type='text'>My VFD display project</title><content type='html'>&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-MXiUVQ2bKZ8/SSOSeBDqqTI/AAAAAAAAC10/r39NueuBiU4/s1600/VFDDoneFront.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-MXiUVQ2bKZ8/SSOSeBDqqTI/AAAAAAAAC10/r39NueuBiU4/s320/VFDDoneFront.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;In 2004, I built this project around a &lt;a href="http://en.wikipedia.org/wiki/Vacuum_fluorescent_display"&gt;vacuum fluorescent display (VFD)&lt;/a&gt;. I bought the VFD at &lt;a href="http://www.sciplus.com/"&gt;American Science &amp;amp; Surplus&lt;/a&gt; when visiting a friend in Chicago. It is clearly designed for a piece of consumer audio equipment with tape and CD players. There are various audio-related indicators at the top, a 12 character 14 segment display in the centre, and two bar graphs and a two digit 7 segment display at the bottom. I use it to display Winamp status, CPU load, and a few other things. Here's a closeup of the display:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Xr5m71WOMO0/SSOSeKdBNwI/AAAAAAAAC18/RQ3s5C2_iS0/s1600/VFDZoom2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-Xr5m71WOMO0/SSOSeKdBNwI/AAAAAAAAC18/RQ3s5C2_iS0/s320/VFDZoom2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A VFD is basically an array of triode vacuum tubes. Thin and almost invisible wires stretched across the display form the cathode. They emit electrons when heated. The phosphor coated display segments are anodes. When they're significantly more positive than the cathode, they attract electrons which make the segment glow. To reduce the number of pins, segments are connected together and the display is multiplexed via the grids. To light up a segment, a positive voltage needs to be applied to both the corresponding anode and corresponding grid.&lt;br /&gt;&lt;br /&gt;Special purpose chips are typically used to drive VFDs, because required grid and anode voltages are higher than logic voltages. I chose the &lt;a href="http://www.allegromicro.com/en/Products/Part_Numbers/6812/"&gt;Allego A6812&lt;/a&gt;. The chip contains drivers, a shift register for loading contents serially, and latches so that output can continue while new data is loaded. The cathode also requires its own driver circuit. Because the cathode is also the heater, there is a significant voltage drop across it. If it was powered by DC, one side of the display would be brighter than the other, and so it needs to be powered by AC. I built the driver using a 555 timer and an H-bridge. Here is the driver circuit board before the display was placed on top:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ACMi9BFifJc/SSOPy87_emI/AAAAAAAAC1A/QyQTrqj1o60/s1600/DisplayDriverFrontBeforeDisplay.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-ACMi9BFifJc/SSOPy87_emI/AAAAAAAAC1A/QyQTrqj1o60/s320/DisplayDriverFrontBeforeDisplay.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I first tried out the display using an MC68705P3S which had a small bootloader for loading code into RAM via the parallel port. This was convenient because normally, code needs to be written into a 2716 EPROM and copied to the MC68705P3S, and then the microcontroller and EPROM need to be erased via ultraviolet light before the process is repeated. After this experiment, I started working on the permanent firmware, basing it on the firmware from &lt;a href="http://dreamlayers.blogspot.com/2011/11/my-led-sign.html"&gt;my LED sign&lt;/a&gt;. Here's a photo with the unused initial circuit on the breadboard, and the start of the final circuit on perfboard:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-p-T1PLX5b5Q/TrR1UR1v0WI/AAAAAAAADhs/kn8fC7GtD24/s1600/VFDInitialFinalSetup.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-p-T1PLX5b5Q/TrR1UR1v0WI/AAAAAAAADhs/kn8fC7GtD24/s320/VFDInitialFinalSetup.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I had a lot of TTL chips which I easily removed from a large ISA card, and I ended up adding several of those plus some other chips to the project. I added various capabilities: 6 digital outputs, 4 analog inputs (via an ADC0804 with multiplexing via a 4016), and a shift register to accelerate loading of data into the sign. (Many modern microcontrollers have similar functionality integrated into the microcontroller chip itself.) Here is a closeup of the almost completed main board:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1CWqTk4MoV8/SSORRsBZV_I/AAAAAAAAC1g/ZF2px13lP9M/s1600/VFDDigitalDoneFront.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-1CWqTk4MoV8/SSORRsBZV_I/AAAAAAAAC1g/ZF2px13lP9M/s320/VFDDigitalDoneFront.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;One of the last things I added was a simple step up converter, so the VFD anode voltage is derived from the 5V supply that powers everything else:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-l8Fi7nTw2to/TrR1URVq3MI/AAAAAAAADhw/eMNzWS9z2Uo/s1600/VFDBoostConveter.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-l8Fi7nTw2to/TrR1URVq3MI/AAAAAAAADhw/eMNzWS9z2Uo/s320/VFDBoostConveter.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Like with my LED sign, the case consists of quarter inch plywood. This time, I made the case by myself. Drilling edgewise into plywood isn't hard if done slowly and carefully. Here are a few photos of the case, progressing from the two boards connected together to the final painted case:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-GK8eCvZFgSY/SSOSeBdvx3I/AAAAAAAAC1s/CHf6rfX09Es/s1600/VFDCaseStep1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-GK8eCvZFgSY/SSOSeBdvx3I/AAAAAAAAC1s/CHf6rfX09Es/s320/VFDCaseStep1.jpg" width="320" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-fSEwjbd-ca8/TrSEB5Q6AwI/AAAAAAAADig/a6gwhbkUT10/s1600/VFDCasePhase2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-fSEwjbd-ca8/TrSEB5Q6AwI/AAAAAAAADig/a6gwhbkUT10/s320/VFDCasePhase2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-S0eq1cplq-g/TrR1aqnWEBI/AAAAAAAADh8/j-Bv7d8y-2E/s1600/VFDCaseRaw.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-S0eq1cplq-g/TrR1aqnWEBI/AAAAAAAADh8/j-Bv7d8y-2E/s320/VFDCaseRaw.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-MXiUVQ2bKZ8/SSOSeBDqqTI/AAAAAAAAC10/r39NueuBiU4/s1600/VFDDoneFront.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-MXiUVQ2bKZ8/SSOSeBDqqTI/AAAAAAAAC10/r39NueuBiU4/s320/VFDDoneFront.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The firmware started out with the software serial code and command interpreter from my LED sign. Thanks to various optimizations, serial communication is at 1200 baud. This time, the command prompt offers only basic functionality, because I focused a lot more on functionality that's meant to be used from software running on a computer. From the command prompt, software can enter into what I call "byte mode", where commands are efficiently encoded into bytes, and they can be sent without any waiting. In that mode, the sign can multitask, scrolling a message without interruptions, while accepting other commands. That mode is also optimized for sending bar graph values and changing numbers at individual locations in the display.&lt;br /&gt;&lt;br /&gt;The last thing I added was standalone ability to function as a clock, with multiple "alarms" changing the parallel outputs. The crystal oscillator provides good accuracy, and it was easy to calibrate the clock based on drift observed overnight.&lt;br /&gt;&lt;br /&gt;The software controlling the sign currently runs as a Winamp DSP plugin. That is because the main function of the sign is display of Winamp status. It's not something I really need, but I really like it. When Winamp isn't playing, the bar graphs display CPU activity. This part is really useful if I turn off the monitor for some long operation, or to monitor CPU usage when running full screen software. It also helps spot anomalous activity, such as an application taking up 100% of one core.&lt;br /&gt;&lt;br /&gt;I've used the digital outputs for various purposes. At first, I used the clock and alarm functionality to turn on my computer when it's time to wake up. Later, I used it to upload code to MC68705P3S microcontrollers for various experiments. Most recently, I used it when first trying it the TLC5940 for my &lt;a href="http://dreamlayers.blogspot.com/2011/10/my-msp430-based-rgb-light.html"&gt;RGB lamp&lt;/a&gt;. I didn't do as much with the analog inputs. One is connected to a photocell, and another to a thermistor, but I don't really need that data.&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://dl.dropbox.com/u/16662598/Projects/VFD%20project%20firmware.zip"&gt;download the firmware from Dropbox&lt;/a&gt; and see a few more photos in the &lt;a href="https://picasaweb.google.com/109133148689166127043/VFDProject"&gt;album&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-9099539005768661786?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/9099539005768661786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=9099539005768661786' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/9099539005768661786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/9099539005768661786'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/11/my-vfd-display-project.html' title='My VFD display project'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-MXiUVQ2bKZ8/SSOSeBDqqTI/AAAAAAAAC10/r39NueuBiU4/s72-c/VFDDoneFront.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8862236496327125570</id><published>2011-11-03T19:29:00.000-04:00</published><updated>2011-11-03T19:29:03.900-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><title type='text'>My LED sign</title><content type='html'>I made an LED sign about 14 years ago. It consists of a 72×7 array of 5mm red LEDs. The LEDs are flangeless, which allows tight packing on standard perfboard.The array was easy to build: I just bent the pins over and soldered them together, adding electrical tape to isolate between rows and columns.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0797-hgHZWY/TrMNWN_93uI/AAAAAAAADfc/Q2w2cRogVlg/s1600/PB030581.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="60" src="http://3.bp.blogspot.com/-0797-hgHZWY/TrMNWN_93uI/AAAAAAAADfc/Q2w2cRogVlg/s320/PB030581.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The case consists of quarter inch plywood with an acrylic front. My dad helped me with that, because it involved some tricky drilling lengthwise through plywood. I designed and built all the circuitry inside. Here's the sign with the front removed:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-v96C5hvoHVE/TrMNL9WppXI/AAAAAAAADes/SmG-wmA_TFM/s1600/PB030527.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="62" src="http://3.bp.blogspot.com/-v96C5hvoHVE/TrMNL9WppXI/AAAAAAAADes/SmG-wmA_TFM/s320/PB030527.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;You can see spacers made from bits of hardwood flooring, and a bit of circuitry. The circuitry drives rows via transistors which have low saturation voltage. Here's a closeup:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UCOwfi4HqnY/TrMNP4VrDeI/AAAAAAAADe8/IrldrgY5A2s/s1600/PB030532.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://4.bp.blogspot.com/-UCOwfi4HqnY/TrMNP4VrDeI/AAAAAAAADe8/IrldrgY5A2s/s320/PB030532.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The circuit boards simply slide out of the front. They consist of one board with the LED array and row circuitry, and another board with the microcontroller and column circuitry. The components face outward, and the wiring is in the centre. Here is the other side of the sandwich and the empty case:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ENwjzFhXXCY/TrMNPTcPc7I/AAAAAAAADe0/ZOj8qawNBbw/s1600/PB030537.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="107" src="http://3.bp.blogspot.com/-ENwjzFhXXCY/TrMNPTcPc7I/AAAAAAAADe0/ZOj8qawNBbw/s320/PB030537.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The microcontroller controls the sign via a chain of 74HC374 octal D flip-flop chips. It outputs 8 bits, pulses the clock to latch data in the first chip and move data to the next chip, and repeats the process. While this is going on, the outputs of the last chip in the chain are disabled, which blanks the sign via the row drivers. To provide sufficient current for the rows, 7407 buffers are used. Current limiting is via the yellow DIP resistor arrays. Here is a block diagram:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5eJBVP_YhsI/TrMT9bguEpI/AAAAAAAADfs/R4Y-BEw_7C8/s1600/ledblock.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://4.bp.blogspot.com/-5eJBVP_YhsI/TrMT9bguEpI/AAAAAAAADfs/R4Y-BEw_7C8/s320/ledblock.GIF" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The microcontroller is a Motorola MC68705P3S, from the 6805 family. I chose it because I had the chips, programmer and toolchain from a previous project. It is a very basic 8 bit NMOS microcontroller with 112 bytes of RAM and 1668 bytes of EPROM. Unlike modern microcontrollers such as the MSP430 family, it has very few registers: the accumulator, index register, program counter, stack pointer, and condition code register. Also, output levels are similar to TTL, so the first 74374 in the chain is a 74HCT374. Here's a closeup of the area around the microcontroller:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-eT9BmzPNxwg/TrMNVdoESvI/AAAAAAAADfU/iCQjmPesc_c/s1600/PB030542.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/-eT9BmzPNxwg/TrMNVdoESvI/AAAAAAAADfU/iCQjmPesc_c/s320/PB030542.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The sign works via a serial interface at 600 baud. That may seem ridiculously slow, but it's the perfect speed for receiving new columns for horizontal scrolling. A slow speed is also required due to the microcontroller's limitations. The external oscillator is 4 MHz, but 4 cycles correspond to one instruction cycle, and all instructions take several cycles. There is no UART or DMA hardware on the chip, and everything is done via a timer interrupt and assembler code. The timer interrupt runs at three times the baud rate, so when a start bit is detected, subsequent bits can be sampled in the middle third of the bit. The electrical interface to the serial port is via a MAX232 chip at the other end of the board.&lt;br /&gt;&lt;br /&gt;Firmware functionality is quite basic. There is a command line interface with a few functions for direct human use and a few functions which work with raw binary data. The human interface consists of an interactive drawing mode, printing of text via the on-board character generator, sign clearing, lamp test, and returning the sign contents in human-readable form via the serial interface. Due to limited EPROM space, the on-board character generator just supports one font with uppercase letters and some symbols. Other functions support scrolling up and to the left, uploading arbitrary bytes, and uploading groups of columns. These functions allow uploading of raw sign contents, where a character generator running on a computer can provide additional flexibility.&lt;br /&gt;&lt;br /&gt;On various occasions I spent time working on PC software for the sign. I first built an interface library. Then I built a server which accepts requests from clients, along with a library that clients use to connect to the server. This allowed multiple programs to use the sign at the same time. Finally, I added support for messages which appear at most and/or at least for a specified time. This should allow the sign to be used for notifications. However, I never used it for a sustained period, because such a large notification display isn't very practical.&lt;br /&gt;&lt;br /&gt;Besides looping a short message, there is no support for standalone operation. That means the sign is not able to display various messages with effects one would see on a LED sign that's used for advertising. I don't regret this lack of functionality, because I don't think I'd find that useful. However, if I was building something like this now, I would definitely use a more powerful microcontroller which could support that and more. I thought of replacing the MC68705P3S, but that only makes sense if I have some usage in mind.&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://dl.dropbox.com/u/16662598/Projects/LED%20Sign.zip"&gt;download the firmware from Dropbox&lt;/a&gt; if you're interested. I developed it using the Motorola Portable Cross Assembler (PASM) version 1.0 toolchain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8862236496327125570?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8862236496327125570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8862236496327125570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8862236496327125570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8862236496327125570'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/11/my-led-sign.html' title='My LED sign'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-0797-hgHZWY/TrMNWN_93uI/AAAAAAAADfc/Q2w2cRogVlg/s72-c/PB030581.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-572590596437471596</id><published>2011-10-30T21:55:00.001-04:00</published><updated>2011-11-03T19:49:02.685-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='msp430'/><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='launchpad'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>My MSP430 based RGB light</title><content type='html'>&lt;span style="font-size: medium; font-weight: bold;"&gt;The Design&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For a long time I thought it would be nice to have a customizable colour light, but I didn't get around to building it. This year, inspired by the &lt;a href="http://e2e.ti.com/group/msp430launchpad/w/default.aspx"&gt;MSP430 LaunchPad&lt;/a&gt; and my purchase of a &lt;a href="http://focus.ti.com/docs/prod/folders/print/tlc5940.html"&gt;TLC5940&lt;/a&gt; with &lt;a href="http://www.sparkfun.com/"&gt;SparkFun&lt;/a&gt; Free Day funds I finally built it.&lt;br /&gt;&lt;br /&gt;For the LED, I chose the &lt;a href="http://www.dealextreme.com/p/10w-500-lumen-multi-color-rgb-led-emitter-metal-plate-140-degree-44043?r=31697378"&gt;10W 500-Lumen Multi-Color RGB LED Emitter Metal Plate (140 degree)&lt;/a&gt; from DealExtreme. It's a bright LED at a good price. Similar LEDs are available from multiple Chinese sites. I chose DealExtreme because I like the way their site is organized, they have a good reputation and good prices.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-AomoCLzVMFc/TrMkvXHgbCI/AAAAAAAADgs/tMZKyUA7HrM/s1600/P6110281.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/-AomoCLzVMFc/TrMkvXHgbCI/AAAAAAAADgs/tMZKyUA7HrM/s320/P6110281.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Initially, I was disappointed with the TLC5940. Yes, it is a "16 channel PWM unit with 12 bit duty cycle control", as described on SparkFun. However, it requires an external clock and PWM cycle start signal, with some very specific timings when loading new PWM data and starting a new cycle. Generating all that precisely would require a lot of resources from the microcontroller.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dreamlayers.blogspot.com/2011/04/getting-tlc5940-to-retrigger-itself.html"&gt;My first circuit&lt;/a&gt; clocked the TLC5940 using a 555 timer, and restarted the PWM cycle using a simple R-C network. The PWM data was bit-banged from my computer, and not in any way synchronized with the PWM cycle. This worked, with the main disadvantage being that the method was slow and not suited to colour changing effects.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-XZAgf-oXqW8/TrMkjFIahTI/AAAAAAAADf8/a4l5zLBm5JY/s1600/P4130189.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-XZAgf-oXqW8/TrMkjFIahTI/AAAAAAAADf8/a4l5zLBm5JY/s320/P4130189.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I spent quite a bit of time wondering how to satisfy the timings in the datasheet while having low CPU utilization and fast PWM speed. My first design used a 7474 dual D-type flip-flop. A flip-flop in toggle configuration generated SMCLK/2, and I used the CLR input to extend the GSCLK cycle at the end of the PWM cycle.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-37T3-KKPw4I/TrMkkwnia9I/AAAAAAAADgM/-WMX0qz9igE/s1600/P4180331.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/-37T3-KKPw4I/TrMkkwnia9I/AAAAAAAADgM/-WMX0qz9igE/s320/P4180331.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This worked well, but I ended up choosing a simpler design, connecting SMCLK to GSCLK without glue logic. BLANK was generated from TACCR0, with the timer in up mode, and output mode 3. This creates a &lt;a href="http://dreamlayers.blogspot.com/2011/04/in-up-mode-all-output-modes-are-useful.html"&gt;1 cycle pulse&lt;/a&gt;, using only one compare register. This does not guarantee the proper timing between the rising edges of GSCLK and BLANK, but it works perfectly. I feel it's okay because this is just a personal project, and because that GSCLK edge is after the 4096th edge which ends the PWM cycle.&lt;br /&gt;&lt;br /&gt;For XLAT, the nicest solution would be to use the multiple TA0.0 outputs, and enable XLAT via P1SEL. However, I chose to use USI in SPI mode to load PWM data more quickly, and so the other TA0.0 output wasn't available. I instead connected another pin to XLAT, with a 1 kΩ resistor between BLANK and XLAT. When the XLAT pin outputs a low, XLAT is inhibited, and when it is an input, XLAT is pulsed when BLANK is pulsed. It's unfortunate that even the 20-pin MSP430 Value Line chips cram most special functions into the 14-pin footprint.&lt;br /&gt;&lt;br /&gt;I wanted the light to have both computer control and a user interface. I chose a serial port for computer control. A capture/compare register can be used to build a nice software UART which is not affected by interrupt jitter. I based my code on msp430g2xx1_ta_uart9600.c from the TI sample code. I wasn't too happy with the DCO tolerances however. They are sufficient for serial communication if the other side is precise, but I wanted something that would use up well under half the error budget. (&lt;a href="http://pdfserv.maxim-ic.com/en/an/AN2141.pdf"&gt;Maxim AN2141 (PDF)&lt;/a&gt; provides a nice explanation on the subject.) The MSP430 Value Line chips don't support high frequency crystals, and according to the datasheet, they can't even accept a high frequency external clock input. It is possible to provide a high frequency external clock, but I didn't want to rely on this undocumented feature, so I used a watch crystal. The crystal triggers the watchdog timer interrupt 4 times a second, and code calculates the length of one bit in SMCLK cycles, based on the crystal. To avoid PWM jitter, I don't actually change DCO settings like an FLL, and I set up the DCO without modulation. I chose a high frequency, just under 16 MHz, so the PWM rate is high and calculations are finished quickly. Serial communication is at 9600 baud, which allows colour changes up to about 192 times a second, with the three 12 bit values packed into 5 bytes.&lt;br /&gt;&lt;br /&gt;With all the pins needed, it became difficult to use a 14-pin chip. Some tricks and compromises could have allowed it, but I didn't really like those ideas. I got an &lt;a href="http://focus.ti.com/docs/prod/folders/print/msp430g2252.html"&gt;MSP430G2252&lt;/a&gt; in a 20-pin package.&lt;br /&gt;&lt;br /&gt;For the user interface, I used two switches and three potentiometers. One switch selects between off, serial control and local control, while the other selects between RGB, effects and HSV during local control. I had thoughts of using the comparator to measure pots, but I went for the easy solution, using the ADC10. I was disappointed at the noise, even with proper bypass capacitors. To mitigate the issue, code performs smoothing. Rotary encoders would be a better alternative, but I have plenty of pots, and quadrature encoders would need more pins. With a rotary encoder, it would be possible to avoid colour changes when changing between RGB and HSV input modes, and instead just allow further tweaking in the new mode.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Xi5I-PyURJk/TrMkyPnNBZI/AAAAAAAADg4/iLGcDdFt_j0/s1600/P8240026.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/-Xi5I-PyURJk/TrMkyPnNBZI/AAAAAAAADg4/iLGcDdFt_j0/s320/P8240026.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The key software component of the local user interface is a multiplication routine, which multiplies two 16-bit values as fixed point numbers between 0 and 1. That same routine is used for gamma correction, &lt;a href="http://en.wikipedia.org/wiki/HSL_and_HSV"&gt;HSV&lt;/a&gt; to RGB conversion and fading. For gamma correction, values are simply squared. A power of 2.2 might be more accurate, but squaring is close enough. HSV to RGB conversion is done via a highly optimized assembler routine, partly just because I had fun writing it. Fading via &lt;a href="http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm"&gt;Bresenham's line algorithm&lt;/a&gt; would have been more efficient, but the multiplication based version was fast enough, and code size matters when only 2 KB of flash is available.&lt;br /&gt;&lt;br /&gt;After all that was done, one pin and some flash space remained. I used the pin as a serial output, so the computer could read the current colour and potentiometer positions. Due to the special purpose pins being crammed into the 14 pin footprint, I wasn't able to directly output from TA0.2, and so the output is done from the interrupt handler. It's not ideal, but it works. I consider it to be a bonus feature.&lt;br /&gt;&lt;br /&gt;The gamma correction in the local interface is necessary, but it created a problem. Fading requires linearly changing the value before gamma correction, but the original serial interface only allowed setting the raw PWM value, which is the result of gamma correction. For proper fading, the code would require the corresponding value before gamma correction. The serial output can help here, by allowing the current setting to be read and initial fading to be done on the computer. The serial input also allows input of values before gamma correction. For a proper fade when switching away from serial mode, code can either use that all the time or just use it once before quitting.&lt;br /&gt;&lt;br /&gt;Originally, I had various ideas for colour changing effects. Due to the limited code size, I ended up only implementing hue spinning, with the ability to set brightness, saturation and speed. The speed selection allows a wide range, from rotations taking several minutes to such rapid rotation that the light seems steady but fast movement leaves coloured trails.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vtjYe0u_1CU/TrMksGoCu3I/AAAAAAAADgk/UbT5vI2LJYE/s1600/P6110280.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/-vtjYe0u_1CU/TrMksGoCu3I/AAAAAAAADgk/UbT5vI2LJYE/s320/P6110280.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The circuit is relatively uninteresting. Mostly, it's a matter of point to point connections between chips. I used an LM317 to supply power to the MSP430 and TLC5940. At the inputs, single transistor inverters perform level shifting and provide some protection for the MSP430.&lt;br /&gt;&lt;br /&gt;The biggest difficulty with the circuit was the TLC5940's power dissipation. With a 10W LED and 2456mW maximum power dissipation, I had to be careful to avoid overheating the chip. The light requires a 12V regulated wall wart, and I added resistors to limit the voltage drop at the chip to about 1.4V. I also mounted the chip on the underside of the circuit board and connected it to the metal bottom panel using thermally conductive putty.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-b3QlrCQS2rQ/TrMkyB9F15I/AAAAAAAADg0/B5LB52hbXMQ/s1600/P8240020.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/-b3QlrCQS2rQ/TrMkyB9F15I/AAAAAAAADg0/B5LB52hbXMQ/s320/P8240020.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;According to calculations, the chip isn't close to its limit, but it's nice to have a big safety margin. The microcontroller also monitors the XERR pin via an interrupt and turns off the light if the TLC5940 overheats. I'm satisfied with the power losses due to the linear current  regulation. However, considering the power losses and resultant heat  dissipation, if driving a higher power LED or array I would choose three  switch-mode LED drivers instead of the TLC5940. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium; font-weight: bold;"&gt;Usage experiences&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the local interface, I mostly use the HSV input mode. It's far more convenient than the RGB mode. HSV is kind of stupid, because it ignores many perceptual factors. (The three primaries have different apparent brightness. When multiple primaries produce a colour, there is an increase in brightness and decrease in saturation. Colour does not seem to vary at a fixed speed as H is changed.) However, more complex colour spaces such as &lt;a href="http://colourphil.co.uk/lab_lch_colour_space.html"&gt;CIE LCH&lt;/a&gt; have many colours which cannot be reproduced via the three primaries. If the three potentiometers set L, C and H, there would be settings that are out of range. I tried it via the serial interface, and it was quite confusing. HSV to RGB conversion is also a much simpler algorithm and more suited to small microcontrollers. I have no regrets about choosing HSV.&lt;br /&gt;&lt;br /&gt;So far, my favourite computer-based effect is a Winamp plugin which  divides the spectrum into 3 zones, and sets red, green and blue values  based on an exponential moving average of sound intensity in the corresponding zone. I  used red for the lowest band and blue for the highest band. It's very  nice with some types of music.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: bold;"&gt;The Code&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm releasing the firmware under the &lt;a href="http://www.gnu.org/copyleft/gpl.html"&gt;GNU General Public License (GPL) version 3&lt;/a&gt;, because I like how the GPL encourages creation of free software. I developed and compiled the code using &lt;a href="http://processors.wiki.ti.com/index.php/IAR_Embedded_Workbench_for_TI_MSP430"&gt;IAR Embedded Workbench KickStart&lt;/a&gt;, because it offers a nice IDE for developing and debugging. Pin assignments are listed in the header file. If you want to change them, consider that many of the port 1 connections depend on the special functionality available on certain pins. You can &lt;a href="http://dl.dropbox.com/u/16662598/Projects/msprgb-1.0.zip"&gt;&lt;span style="font-weight: bold;"&gt;download MSPRGB source code from Dropbox&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm separately releasing some code which uses the RGB lamp via a serial connection. The &lt;a href="http://dl.dropbox.com/u/16662598/Projects/rgbclient.zip"&gt;zip you can download from Dropbox&lt;/a&gt; contains librgb, a library for interfacing to the lamp, and vis_rgb, the Winamp plugin I described. I just cleaned up librgb and improved portability. I'm not protecting librgb and vis_rgb via the GPL because I don't feel it is especially worthy and because I don't want to restrict its usage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-572590596437471596?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/572590596437471596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=572590596437471596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/572590596437471596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/572590596437471596'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/10/my-msp430-based-rgb-light.html' title='My MSP430 based RGB light'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-AomoCLzVMFc/TrMkvXHgbCI/AAAAAAAADgs/tMZKyUA7HrM/s72-c/P6110281.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1231904237191113868</id><published>2011-10-30T19:16:00.000-04:00</published><updated>2011-11-03T19:58:19.564-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Synaesthesia 2.4 for Windows</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UwHmvoT-UcY/TrMqf6mxAjI/AAAAAAAADhc/d-5flY2njdc/s1600/Synaesthesia.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-UwHmvoT-UcY/TrMqf6mxAjI/AAAAAAAADhc/d-5flY2njdc/s320/Synaesthesia.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;It seems like a lot of "music visualization" plugins just use music as a random seed for interesting visual effects. There is a link between changes in music and changes on screen, but there's no real collection between individual elements of music and individual elements on screen.The best software I know of for visualizing music is &lt;a href="http://www.logarithmic.net/pfh/synaesthesia"&gt;Synaesthesia&lt;/a&gt;. It presents an image with the horizontal axis being stereo and the vertical axis being frequency. Images can directly correspond to individual sounds, and so I can see sounds on the screen as I'm hearing them. The program truly deserves the name Synaesthesia.&lt;br /&gt;&lt;br /&gt;Until now, the only publicly released Windows version was an old port based on Synaesthesia 1.2. The current version of Synaesthesia is 2.4, and there are many new features since 1.2. A long time ago I started working on a port of Synaesthesia as a Winamp plugin. However, I learned that GPL licensed code (Synaesthesia) can't be used in a plugin for an application that has an incompatible license (Winamp). I just created a new port based on Synaesthesia 2.4, the 1.2 Windows port and some of my code. You can &lt;a href="http://dl.dropbox.com/u/16662598/Ports/synaesthesia-2.4-win32-r1.zip"&gt;download it from Dropbox&lt;/a&gt;. Further information is available within "Synaesthesia 2.4 Windows port readme.txt" in that zip file.&lt;br /&gt;&lt;br /&gt;This is just a quick port I created today. There may be bugs. Please don't bother the original authors of Synaesthesia and the 1.2 port. If you run into problems, leave a comment here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1231904237191113868?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1231904237191113868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1231904237191113868' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1231904237191113868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1231904237191113868'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/10/synaesthesia-24-for-windows.html' title='Synaesthesia 2.4 for Windows'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-UwHmvoT-UcY/TrMqf6mxAjI/AAAAAAAADhc/d-5flY2njdc/s72-c/Synaesthesia.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8320432862153845678</id><published>2011-10-28T14:37:00.000-04:00</published><updated>2011-10-28T14:38:38.585-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Winamp plugin which enables UAC virtualization</title><content type='html'>Some old Winamp plugins attempt to store settings in the plugin directory. This fails in Vista and Windows 7 because directories under Program Files aren't writable for ordinary users. Windows has a feature, UAC Virtualization, which redirects these writes to a folder in the user's profile (%USERPROFILE%\AppData\Local\VirtualStore). However, the manifest in winamp.exe disables this feature.&lt;br /&gt;&lt;br /&gt;It's possible to grant write access to the directory, toggle UAC state via Task Manager, and &lt;a href="http://dreamlayers.blogspot.com/2009/12/enabling-uac-virtualization-so-old.html"&gt;edit the manifest in winamp.exe&lt;/a&gt;. However, all of these workarounds have disadvantages. Because of that, I just created a simple plugin which enables UAC. It may not execute early enough to help code which runs when Winamp starts, but it's perfect for visualization plugins which run on demand later. You can &lt;a href="http://dl.dropbox.com/u/16662598/Programs/gen_virtualize.dll.zip"&gt;download it from Dropbox&lt;/a&gt;. I'm not releasing the full source because most of it is just sample code from the Winamp SDK. Enabling UAC Virtualization is easy:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;HANDLE token;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;if (&lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa379295%28v=vs.85%29.aspx"&gt;OpenProcessToken&lt;/a&gt;(GetCurrentProcess(), TOKEN_ADJUST_DEFAULT, &amp;amp;token)) {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD v = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa379591%28v=vs.85%29.aspx"&gt;SetTokenInformation&lt;/a&gt;(token, TokenVirtualizationEnabled, &amp;amp;v, sizeof(v));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(token);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8320432862153845678?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8320432862153845678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8320432862153845678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8320432862153845678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8320432862153845678'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/10/winamp-plugin-which-enables-uac.html' title='Winamp plugin which enables UAC virtualization'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3166102532919296870</id><published>2011-10-27T22:18:00.001-04:00</published><updated>2011-10-27T22:36:28.610-04:00</updated><title type='text'>The PL-2303 code 10 error</title><content type='html'>Some cheap PL-2303 based USB to serial adapters don't work with new &lt;a href="http://www.prolific.com.tw/eng/downloads.asp?id=31"&gt;drivers from Prolific&lt;/a&gt;. In Windows, Device Manager gives a "This device cannot start. (Code 10)" error. Prolific knows about this error and has a &lt;a href="http://www.prolific.com.tw/eng/FAQs.asp?ID=50"&gt;FAQ question about it&lt;/a&gt;. To me, the answer there seems to imply that these PL-2303 chips may be counterfeit.&lt;br /&gt;&lt;br /&gt;When I &lt;a href="http://dreamlayers.blogspot.com/2011/10/unix-serial-port-output-buffer.html"&gt;ended up&lt;/a&gt; with such a bad PL-2303 based&amp;nbsp; adapter, I investigated the issue using &lt;a href="http://sourceforge.net/projects/usbsnoop/"&gt;Snoopy Pro&lt;/a&gt;. It is a free open source (GPL) program which logs USB communication between the driver and device. SnoopyPro allowed me to see the requests sent by the Prolific driver, and compare responses. &lt;br /&gt;&lt;br /&gt;Here is the request sent from Prolific v1417 driver in 32 bit Windows 7 SP1, with version 3.3.17.203 ser2pl.sys:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;URB Header (length: 80)&lt;br /&gt;SequenceNumber: 10&lt;br /&gt;Function: 0008 (CONTROL_TRANSFER)&lt;br /&gt;PipeHandle: 00000000&lt;br /&gt;&lt;br /&gt;SetupPacket:&lt;br /&gt;0000: c0 01 86 86 00 00 02 00 &lt;br /&gt;bmRequestType: c0&lt;br /&gt;  DIR: Device-To-Host&lt;br /&gt;  TYPE: Vendor&lt;br /&gt;  RECIPIENT: Device&lt;br /&gt;bRequest: 01  &lt;br /&gt;&lt;br /&gt;No TransferBuffer&lt;/pre&gt;&lt;br /&gt;Here is the response from a Dynex &lt;span id="ctl00_CP_ctl00_PD_lblModelNumber"&gt;DX-UBDB9 adapter, which works perfectly:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;URB Header (length: 80)&lt;br /&gt;SequenceNumber: 10&lt;br /&gt;Function: 0008 (CONTROL_TRANSFER)&lt;br /&gt;PipeHandle: a24f2724&lt;br /&gt;&lt;br /&gt;SetupPacket:&lt;br /&gt;0000: c0 01 86 86 00 00 02 00 &lt;br /&gt;bmRequestType: c0&lt;br /&gt;  DIR: Device-To-Host&lt;br /&gt;  TYPE: Vendor&lt;br /&gt;  RECIPIENT: Device&lt;br /&gt;bRequest: 01&amp;nbsp;&lt;br /&gt;&lt;br /&gt;TransferBuffer: 0x00000001 (1) length&lt;br /&gt;0000: aa&lt;/pre&gt;&lt;br /&gt;Finally, here's the response from the BAFO USB to RS232 Converter Adapter that I got from DinoDirect:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;URB Header (length: 80)&lt;br /&gt;SequenceNumber: 10&lt;br /&gt;Function: 0008 (CONTROL_TRANSFER)&lt;br /&gt;PipeHandle: 856e8594&lt;br /&gt;&lt;br /&gt;SetupPacket:&lt;br /&gt;0000: c0 01 86 86 00 00 02 00 &lt;br /&gt;bmRequestType: c0&lt;br /&gt;  DIR: Device-To-Host&lt;br /&gt;  TYPE: Vendor&lt;br /&gt;  RECIPIENT: Device&lt;br /&gt;bRequest: 01&lt;br /&gt;&lt;br /&gt;TransferBuffer: 0x00000001 (1) length&lt;br /&gt;0000: 00&lt;/pre&gt;&lt;br /&gt;There's one difference: the good adapter responds with 0xAA and the bad adapter responds with zero. The information could be used to find the check in ser2pl.sys and make the driver accept the zero. However, the EULA doesn't allow that. In any case, the adapter from DinoDirect has other problems which cannot be fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3166102532919296870?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3166102532919296870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3166102532919296870' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3166102532919296870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3166102532919296870'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/10/pl-2303-code-10-error.html' title='The PL-2303 code 10 error'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-139498197166587863</id><published>2011-10-27T21:37:00.001-04:00</published><updated>2011-10-27T21:54:20.223-04:00</updated><title type='text'>Why you need to be careful when buying a USB serial adapter</title><content type='html'>I got a &lt;a href="http://www.dinodirect.com/BAFO-USB-to-RS232-Converter-currency-CAD.html"&gt;BAFO USB to RS232 Converter Adapter&lt;/a&gt; from DinoDirect. I thought I was getting a good deal. It was more expensive than the no-name adapters available elsewhere, but BAFO is an actual brand with &lt;a href="http://www.bafo.com/menu-support.asp"&gt;support and drivers&lt;/a&gt;. I noticed that they were distributing a relatively recent &lt;a href="http://www.prolific.com.tw/eng/products.asp?id=59"&gt;Prolific PL-2303&lt;/a&gt; drivers, which should mean they used PL-2303 chips which didn't trigger the code 10 error. What I got was a piece of junk:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Recent drivers fail to work with the adapter, giving a code 10 error. Even the most recent drivers downloaded from BAFO fail. (I wonder if it is really a BAFO product.)&lt;/li&gt;&lt;li&gt;The output is 0-5V. The adapter cannot output negative voltages like DinoDirect claims. (They write "The output voltage of our USB to RS232 converters (Pin 3: TX line) is about -9VDC".)&lt;/li&gt;&lt;li&gt;The plug is loose, and the USB connection is disrupted if the adapter is moved.&lt;/li&gt;&lt;li&gt;In Linux or in OS X with the open source drivers, the adapter starts endlessly repeating the last character that is received. (Prolific's drivers don't work in OS X either.)&lt;/li&gt;&lt;li&gt;The adapter cannot detect RS-232 break.&lt;/li&gt;&lt;li&gt;Timing may be inaccurate at higher baud rates&lt;/li&gt;&lt;/ul&gt;The adapter is usable for some applications in Windows with older drivers. However, watch out: some old drivers from Prolific cause bluescreens.&lt;br /&gt;&lt;br /&gt;When I complained to DinoDirect, I was told I'd get a $5 giftcard with which I could "pay as cash" , but I was given a $5 off $20 coupon. When I tried to post a review listing the problems the review didn't get approved. A positive review for another item was approved immediately, and I got DinoPoints. When a second attempt to post the review didn't get approved either, I decided to write this blog post.&lt;br /&gt;&lt;br /&gt;I should have done some research before dealing with DinoDirect. It seems like a lot of people dislike them. Some even feel that DinoDirect is a scam. I think it's pretty clear they're not a scam, but I can't trust the information on their website, or that they will respond to my problems in a satisfying way. (DealExtreme would probably give store credit for a product like this.) After browsing the DinoDirect web site more, I found a lot of questionable reviews and even questionable product information. For example, some macro diopters have information and reviews as if they're polarizers. Overall, many reviews seem questionable. I'm not saying that DinoDirect is posting fake reviews. Maybe some users post lots of reviews so they can get DinoPoints and free stuff. DealExtreme also offers points for reviews, but their reviews seem genuine. Go ahead and compare DealExtreme and DinoDirect reviews. Also, note that DealExtreme has a lot of activity in the per-product forums.&lt;br /&gt;&lt;br /&gt;DinoDirect isn't all bad. They gave me a $1 gift card, I guess for creating my account. Then, I got 100 DinoPoints, corresponding to $1, for a short survey. When the flashlight I ordered wasn't in stock, live support they gave me a $3 gift card. Finally, I ordered the &lt;span id="B"&gt;&lt;a href="http://www.dinodirect.com/led-flashlight-richong-rc-7001-currency-CAD.html"&gt;RICHONG RC-7001 LED Flashlight (1*AAA Battery)&lt;/a&gt; flashlight and received it. It's a decent little LED flashlight. It seems pretty rugged, and I like how it uses one AAA battery instead of several coin cells. Getting that for free partly makes up for the USB to serial junk I paid for.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="B"&gt;Finally, if you really want to order from DinoDirect, two suggestions: Try to find some better information on the product elsewhere. Check for coupon codes, because DinoDirect is always running promotions. RetailMeNot has a &lt;a href="http://www.retailmenot.com/view/dinodirect.com"&gt;good list&lt;/a&gt;. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-139498197166587863?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/139498197166587863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=139498197166587863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/139498197166587863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/139498197166587863'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/10/why-you-need-to-be-careful-when-buying.html' title='Why you need to be careful when buying a USB serial adapter'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3262814371274250625</id><published>2011-10-24T00:36:00.001-04:00</published><updated>2011-10-24T01:11:34.795-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>The Unix serial port output buffer</title><content type='html'>Unix serial ports have associated input and output buffers in the kernel. When writing data to the port, if sufficient space is available in the output buffer, the write call returns after copying the data into the buffer. The hardware slowly outputs data from the buffer, freeing space for more data. A program can easily fill up the buffer, because the CPU works much faster than the serial port. When insufficient space is available in the buffer, a normal blocking write will wait. It will not simply wait for sufficient space; instead, it will wait for the buffer to empty to a specific low limit.&lt;br /&gt;&lt;br /&gt;When simply sending large amounts of data, this behaviour is appropriate and efficient. Programs don't need to constantly wake to feed more data to the hardware. Instead, they can put a lot of data into the buffer and then sleep until the buffer gets to that low limit. However, for some applications the buffer is a problem. &lt;br /&gt;&lt;br /&gt;Bytes that are already in the buffer form a delay between when a new byte is written and when it is actually output from the port. (All those bytes need to be output first.) As a result, serial responses and actions from serially controlled hardware may be delayed. If a program performs checks to see whether to continue sending data, that will also be delayed when a write call waits for the output buffer to empty.&lt;br /&gt;&lt;br /&gt;In Linux the output buffer is one page (typically 4KB), and the process is woken when only 256 bytes (set via WAKEUP_CHARS) remain. That may seem like a small amount of memory, but at low baud rates, it corresponds to a long time. There is no standard way to change the buffer, and in Linux, it could only be changed by editing kernel source code and recompiling the kernel.&lt;br /&gt;&lt;br /&gt;It is simplest to wait for data to be output after writes. This can be done by waiting for responses after writs or via &lt;a href="http://linux.die.net/man/3/tcdrain"&gt;tcdrain&lt;/a&gt;. (Other methods such as fsync and O_SYNC cannot be relied on for serial ports.) Unfortunately, this defeats the efficiency benefits of buffering.&lt;br /&gt;&lt;br /&gt;When the issue is a need to stop output quickly, instead of a need for constant low latency, data in the buffer can be discarded via tcflush. However, this gets tricky. Since writes can wait for a long time, some form of asynchronous I/O is needed. Once the buffer is flushed, serial controlled hardware may be in an unknown state, which complicates things.&lt;br /&gt;&lt;br /&gt;As an added benefit, tcflush and tcdrain also deal with the hardware buffer. In most built in serial ports, these buffers are tiny. However, USB to serial adapters can have large buffers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3262814371274250625?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3262814371274250625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3262814371274250625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3262814371274250625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3262814371274250625'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/10/unix-serial-port-output-buffer.html' title='The Unix serial port output buffer'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1434527073839100464</id><published>2011-10-14T19:49:00.001-04:00</published><updated>2011-10-28T14:42:42.249-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><title type='text'>In Linux, use the Realtek r8168 driver for RTL8168</title><content type='html'>I have a Gigabyte GA-P35-DS3R motherboard with a RTL8168 Ethernet chip. &lt;br /&gt;When using the r8169 driver that's part of the Linux kernel, I often lose the connection after S3 suspend. Usually, taking the interface down and back up with ifconfig fixes it, but unloading and reloading the module is sometimes necessary. This problem has been around for a while, and it still exists in the current Linux Mint Debian Edition 3.0.0-1-amd64 kernel. Even adding r8168 to SUSPEND_MODULES doesn't help.&lt;br /&gt;&lt;br /&gt;The best solution seems to be using the &lt;a href="http://www.realtek.com/downloads/downloadsView.aspx?Langid=1&amp;amp;PNid=13&amp;amp;PFid=5&amp;amp;Level=5&amp;amp;Conn=4&amp;amp;DownTypeID=3&amp;amp;GetDown=false#2"&gt;r8168 driver from Realtek&lt;/a&gt; instead. It solved the problems after suspend, and seems to have also sped up suspend a bit. It may have also fixed some hangs I used to get occasionally.&lt;br /&gt;&lt;br /&gt;At first, version 8.025.00 refused to build because the src/Makefile didn't recognize that Linux 3 should be treated like Linux 2.6. I fixed this by changing the lines setting KEXT and KFLAG to:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;KEXT := ko&lt;br /&gt;KFLAG := 2x&lt;/code&gt;&lt;/blockquote&gt;After this, I had no further problems and autorun.sh correctly built and installed the driver. It renames r8169.ko to r8169.bak to deactivate that driver. After confirming that r8168 works properly, it's a good idea to &lt;a href="http://en.wikipedia.org/wiki/Modprobe#Blacklist"&gt;blacklist&lt;/a&gt; r8169. It's also necessary to update the initial ramdisk, because r8169 may be loaded from there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1434527073839100464?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1434527073839100464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1434527073839100464' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1434527073839100464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1434527073839100464'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/10/in-linux-use-realtek-r8168-driver-for.html' title='In Linux, use the Realtek r8168 driver for RTL8168'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-658374107884965237</id><published>2011-09-23T23:30:00.001-04:00</published><updated>2011-09-23T23:41:53.460-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>SkyDrive: 25 GB of free storage that's too annoying to actually use</title><content type='html'>For several years, I've known that I have a Windows Live SkyDrive account with 25 GB of free storage. However, I never actually tried to use it. Today I tried to use it and I see what's the catch: it's too annoying for storing large amounts of data.&lt;br /&gt;&lt;br /&gt;I was hoping to upload all of my photos. Theoretically, it seemed like a good idea. The photo viewer is great, the per-file size limit is not an issue, and the overall size is more than other free services allow but only a fraction of the 25 GB limit.&lt;br /&gt;&lt;br /&gt;The first problem is that the web uploader is quite limited. It can't upload folders, so I would have to manually create them and upload their contents. It doesn't even support drag and drop, except for in IE. Since uploading would be a lot of work, I rejected this option.&lt;br /&gt;&lt;br /&gt;Then I learned that SkyDrive can be accessed via WebDAV and mounted as a drive in Windows. (It uses proprietary Passport authentication, so I'm not sure if any other clients can access it.) This was &lt;a href="http://skydrivesimpleviewer.codeplex.com/releases/view/39725"&gt;easy&lt;/a&gt; once I sorted out some &lt;a href="http://dreamlayers.blogspot.com/2011/09/some-per-service-firewall-rules-dont.html"&gt;firewall issues&lt;/a&gt;. Unfortunately, only document file types can be uploaded. Attempts to upload JPEG images and archives result in an error telling me that the file "is too large for the destination file system". It's not a file size issue because it happens with small files. I guess Microsoft only wants the WebDAV access to be used for Office documents.&lt;br /&gt;&lt;br /&gt;Since PDFs are supported, I thought about using using them. JPEG images can be included in PDFs without re-encoding, and PDFs also support attachments for other file types. However, this is a kludge without any benefits besides WebDAV access, and so I decided to try ordinary multi-part archives instead.&lt;br /&gt;&lt;br /&gt;Archives can be uploaded via the web interface, and files of 104,857,600 bytes (100 MB, 100 * 2^20) may be uploaded. Unfortunately, this is unreliable. The Silverlight uploader only seems to allow one 100 MB file to start uploading in a batch, and even that file seems to stop before the end. The upload seems to complete successfully, because the downloaded file is bit-identical to what I uploaded. The classic form based uploader also fails before the end, and I'm not sure if it's usable for large files. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-658374107884965237?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/658374107884965237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=658374107884965237' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/658374107884965237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/658374107884965237'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/09/skydrive-25-gb-of-free-storage-thats.html' title='SkyDrive: 25 GB of free storage that&apos;s too annoying to actually use'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-6093960317283733655</id><published>2011-09-23T18:08:00.001-04:00</published><updated>2011-09-23T23:41:53.437-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Some per-service firewall rules don't work in Windows 7</title><content type='html'>The Windows 7 Firewall with Advanced Security allows you to specify a service in addition to a process. This is important because many services run under svchost.exe. Rules which simply reference svchost.exe may be too broad.&lt;br /&gt;&lt;br /&gt;This works well with&amp;nbsp; the Windows Update and Windows Time* services. When outbound connections are disabled by default, rules can be created to permit those services. However, it doesn't always work.&lt;br /&gt;&lt;br /&gt;In the past I spent a lot of time trying to figure out how to permit Windows Media Center schedule updates. I guess that part of the update is via the Background Intelligent Transfer Service (BITS). I said "I guess" because "netstat -b" sometimes showed them using the User Profile Service (ProfSvc), which doesn't make sense. Rules which permit outbound communication from BITS, ProfSvc, and even a large number of other services never accomplished anything. I finally gave up and created a rule permitting outbound communication on port 80 by svchost.exe (without specifying a service).&lt;br /&gt;&lt;br /&gt;I was just trying to figure out how to allow the WebDAV client through the firewall. It obviously uses the WebClient service. In this case "netstat -b" also shows this. However rules permitting outbound communication by the WebClient service do nothing. I was forced to create a rule permitting outbound communication by svchost.exe on port 443 for SSL WebDAV access.&lt;br /&gt;&lt;br /&gt;I'm not sure if these are bugs or intentional limitations. When creating a rule for svchost.exe, I am warned that "Windows services have been restricted with rules that allow expected behavior only. Rules that specify host processes, such as svchost.exe, might not work as expected because they can conflict with Windows service-hardening rules." Maybe Microsoft chose to not permit rules involving BITS and WebClient because they are general purpose communication services which could also be used for malicious purposes.&amp;nbsp; However, it doesn't make sense that a rule specifying svchost.exe and a particular port is allowed, but when the rule is further narrowed by specifying a service, it is ignored.&lt;br /&gt;&lt;br /&gt;* If Windows Time Service is not allowed Internet access, the first "Update now" attempt will fail with a timeout. However subsequent attempts may appear to succeed, and the time when the clock was synchronized will be updated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-6093960317283733655?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/6093960317283733655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=6093960317283733655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6093960317283733655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6093960317283733655'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/09/some-per-service-firewall-rules-dont.html' title='Some per-service firewall rules don&apos;t work in Windows 7'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7086610964878449326</id><published>2011-09-22T13:10:00.000-04:00</published><updated>2011-09-23T23:42:37.895-04:00</updated><title type='text'>Brown polarized sunglasses are great!</title><content type='html'>I used to wonder why someone would want brown or amber sunglasses. Why add a colour cast to everything? Now I know. The colour: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;decreases sky brightness, equalizing the overall brightness of the scene&lt;/li&gt;&lt;li&gt;removes glare, while still making the scene appear bright in a pleasant way &lt;/li&gt;&lt;li&gt; accentuates green foliage and various other colours&lt;/li&gt;&lt;li&gt;makes hazy days seem sunnier&lt;/li&gt;&lt;li&gt;helps decrease glare when driving toward the sun&lt;/li&gt;&lt;/ul&gt;(Blue-grey sunglasses are the opposite. They dim things relative to the sky, they make foliage look worse, and they aren't very effective at decreasing glare. I don't want those ever again.)&lt;br /&gt;&lt;br /&gt;Polarization is also an important enhancement. It:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;decreases the intensity of annoying bright reflections from non-metallic surfaces, such as reflections from the paint of cars or bodies of water&lt;/li&gt;&lt;li&gt;increases colour saturation by removing reflections (Foliage reflects a lot of light, and looks much greener when that reflection is blocked. Water surfaces also reflect light, and when that reflection is blocked, the &lt;a href="http://www.panoramio.com/photo/59369613"&gt;colours of the water itself&lt;/a&gt; stand out.)&lt;/li&gt;&lt;li&gt;makes the sky darker and bluer in certain directions, making clouds stand out and helping equalize the overall brightness of the scene&lt;/li&gt;&lt;/ul&gt;The only downside of polarization is that the intensity of the effect depends on the orientation of the glasses.&amp;nbsp; It is most optimal when the sun is highest in the sky. Near sunset, the sunglasses need to be turned sideways to create a strong effect. Sometimes, I thought about creating electronically controlled polarized sunglasses using camera filters and a microcontroller.&lt;br /&gt;&lt;br /&gt;When buying polarized sunglasses, it's important to check whether the effect works well. Turn the glasses and block some reflections. Cheap glasses may not be able to block reflections very much, or the blocked reflections may show a strong purple colour cast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7086610964878449326?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7086610964878449326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7086610964878449326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7086610964878449326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7086610964878449326'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/09/brown-polarized-sunglasses-are-great.html' title='Brown polarized sunglasses are great!'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1422816926249636250</id><published>2011-08-29T11:49:00.004-04:00</published><updated>2011-09-23T23:42:37.865-04:00</updated><title type='text'>Stores selling cheap stuff from China</title><content type='html'>There are &lt;a href="http://forums.redflagdeals.com/expanded-list-deal-extreme-type-stores-1016190/"&gt;many online stores&lt;/a&gt; which sell a wide variety of cheap stuff from China, usually with free shipping. The prices can be impressively low, but the quality is sometimes questionable.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dealextreme.com/?r=31697378"&gt;DealExtreme&lt;/a&gt; seems to be the most popular one. So far, I've ordered several items from there, and overall I've had a good experience. I'm using the &lt;a href="http://www.dealextreme.com/p/10w-500-lumen-multi-color-rgb-led-emitter-metal-plate-140-degree-44043?r=31697378"&gt;10W 500-Lumen Multi-Color RGB LED Emitter Metal Plate (140 degree)&lt;/a&gt; in my RGB lamp, and I'm happy with it. Their &lt;a href="http://www.dealextreme.com/p/14000mcd-25packs-white-5mm-led-1106?r=31697378"&gt;5mm white LEDs&lt;/a&gt; are also good, with a nice colour and good brightness. I also got a nice &lt;a href="http://www.dealextreme.com/p/55mm-digital-camera-lens-cover-5471?r=31697378"&gt;55mm lens cap&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So far, I've only had one problem with DealExtreme, and that was resolved in a good way. I ordered what was at the time advertised as a Massa circular polarizer for my camera. The packaging and item I received made no mention of Massa, and the item looked different. When I contacted DealExtreme, I got some store credit. The polarizer does provide decent &lt;a href="https://picasaweb.google.com/109133148689166127043/DealExtremeSku14518PolarizerTestAtPtPelee"&gt;photos&lt;/a&gt; as long as I don't zoom much, and I really like some photos I took using it. I also see that DealExtreme updated the &lt;a href="http://www.dealextreme.com/p/cpl-polarizer-lens-filter-55mm-14518?r=31697378"&gt;item description and photos&lt;/a&gt;, showing what I got. As a result of all of this, I'm satisfied.&lt;br /&gt;&lt;br /&gt;My favourite thing about DealExtreme is the reviews and forum posts. They seem genuine, and they provide useful information about the products. Yes, DealExtreme does sell some bad products, but the reviews and other information make it possible to avoid most of these.&lt;br /&gt;&lt;br /&gt;The only real complaint I have is that some simple actions (such as redeeming store credit or DX points) require customer service interactions. These things would be easier and faster if automated. However, customer service always responded promptly, so this is not a major issue.&lt;br /&gt;&lt;br /&gt;The main thing that motivated me to write this post is my first purchase from &lt;a href="http://www.dinodirect.com/"&gt;DinoDirect&lt;/a&gt; and what I saw when I spent more time on that site. It's a big contrast; DealExtreme is much better.  For example, check out what other people have to say about DinoDirect, and look at the quality of item reviews on DinoDirect.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1422816926249636250?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1422816926249636250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1422816926249636250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1422816926249636250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1422816926249636250'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/08/stores-selling-cheap-stuff-from-china.html' title='Stores selling cheap stuff from China'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8144600985697763949</id><published>2011-08-15T16:43:00.002-04:00</published><updated>2011-09-23T23:41:53.501-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>I'm still using Adobe Reader</title><content type='html'>Despite the bloat and all the people who hate it, I'm still using Adobe Reader to view PDFs in Windows. Recently, it was slow on one huge PDF on my laptop, so I decided to try out some &lt;a href="http://en.wikipedia.org/wiki/List_of_PDF_software"&gt;alternatives&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Sumatra PDF was pretty good and a bit faster, but zooming wasn't as user-friendly. I didn't like Foxit Reader's user interface. It seemed like an old badly designed Linux application. PDF-XChange Viewer was pretty good, but it also had an inferior zooming user interface. The biggest problem was that all three had slow search in large PDFs, without acceleration via saved indexes like Adobe's Fast Find.&lt;br /&gt;&lt;br /&gt;It would have been nice to switch to something leaner, but it's not really a problem. I found that disabling 2D graphics acceleration in Adobe Reader resolves the performance issues on my laptop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8144600985697763949?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8144600985697763949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8144600985697763949' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8144600985697763949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8144600985697763949'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/08/im-still-using-adobe-reader.html' title='I&apos;m still using Adobe Reader'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5953039520179992665</id><published>2011-08-14T17:23:00.006-04:00</published><updated>2011-09-23T23:42:37.878-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><title type='text'>Bad capacitors and ESR testing</title><content type='html'>I have an old Soltek SL-65KVB motherboard. It was taken out of service due to AGP graphics instability which was probably due to &lt;a href="http://en.wikipedia.org/wiki/Capacitor_plague"&gt;bad capacitors&lt;/a&gt;. This diagnosis seemed pretty obvious because capacitors right by the AGP slot were bulging, but I didn't bother fixing the motherboard because it was a good time for an upgrade.&lt;br /&gt;&lt;br /&gt;Now I would like to repair the motherboard, mainly because the combination of a Pentium 3, 640MB of RAM and an ISA slot could provide a nice way to use old hardware. By now, even more capacitors are obviously bad. However, only the GSC 1000µF and 1500µF 6.3V capacitors with gold/brown lettering have obvious problems and more numerous smaller GSC capacitors with silver/white lettering seem fine. &lt;br /&gt;&lt;br /&gt;I didn't feel like unnecessarily replacing the smaller capacitors, so I quickly built a very simple capacitor ESR tester. The basic idea is the same as various other ESR measuring devices documented online: a stepdown transformer outputs low voltage and low impedance pulses which are used to measure capacitor ESR. I built the stepdown transformer from an inductor with a short secondary wrapped around it, and I used a 555 chip to supply low duty cycle pulses at high frequency. The 555 can supply enough current that it's possible to directly drive the transformer with a resistor in series with the primary.&lt;br /&gt;&lt;br /&gt;My first attempt with a secondary of just a few turns worked pretty well when capacitors were plugged into the breadboard. However, test leads had enough impedance to make the circuit useless. Reducing the oscillation frequency to around 100 kHz and adding more turns to the secondary improved performance, making the bad capacitors very obvious. Test leads were still a problem however. Adding a 1Ω resistor in series with the secondary improved the situation significantly, so I proceeded to test the small capacitors on the motherboard via test leads.&lt;br /&gt;&lt;br /&gt;It seems the small capacitors are all ok. However, among the large capacitors, even most that weren't bulging are bad. Only two of the ten 1000µF capacitors have a low ESR. Of course, considering the other failures, these shouldn't be used for anything either.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5953039520179992665?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5953039520179992665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5953039520179992665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5953039520179992665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5953039520179992665'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/08/bad-capacitors-and-esr-testing.html' title='Bad capacitors and ESR testing'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1826412012470941479</id><published>2011-08-03T12:29:00.007-04:00</published><updated>2011-09-23T23:41:53.374-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>g++ dyamic linking fail</title><content type='html'>I have a DLL which works when built, but stops working later. Simply rebuilding it creates another copy which again works and stops working later. LoadLibrary returns error 998, which mean "invalid access to memory location". In other words, a crash occurs in the DLL being loaded. The crash occurs when calling &lt;a href="http://msdn.microsoft.com/en-us/library/ff797097.aspx"&gt;_initterm&lt;/a&gt; from code at the DLL entry point. At __imp__initterm there should be a pointer to _initterm in msvcrt.dll, but the location instead still contains the value that's in the file on disk. As a result, if msvcrt.dll is located at a different location, the program jumps to the wrong location. I guess this happens because msvcrt.dll is imported two times. The first import just uses _write, which is properly dynamically linked. The second import lists all the other functions that are used, and dynamic linking wasn't done for any of those. The _write from the first import is just used to print "pure virtual method called\n".http://www2.blogger.com/img/blank.gif&lt;br /&gt;&lt;br /&gt;I suspect that g++ is to blame, but I'm still not sure. The problem is now happening with g++ 4.5.3 from the 32-bit MinGW-w64 Cygwin package, but the same symptoms occurred when using the old Cygwin compiler that is based on GCC 3.&lt;br /&gt;&lt;br /&gt;Update: The problem seems to be related to statically linking libstdc++. The duplicate msvcrt.dll exists when using -static or -static-libstdc++ (new in GCC 4.5).&lt;br /&gt;&lt;br /&gt;Update 2: Packing the DLL with &lt;a href="http://upx.sourceforge.net/"&gt;UPX&lt;/a&gt; 3.07 seems to fix the problem. When a packer compresses the IAT, it needs to handle dynamic linking. Apparently UPX is able to properly handle the defective IAT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1826412012470941479?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1826412012470941479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1826412012470941479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1826412012470941479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1826412012470941479'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/08/g-dyamic-linking-fail.html' title='g++ dyamic linking fail'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2017556199298928126</id><published>2011-07-20T16:05:00.004-04:00</published><updated>2011-09-23T23:41:53.381-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>No, I can't trust Windows with very rare operations.</title><content type='html'>While my computer was writing to a 3½" floppy disk via the floppy controller on my motherboard, I pushed the sleep key, requesting S3 sleep. Right after that, I remembered how Windows cannot really be trusted when doing unusual things. I started to wonder if I'll see a bluescreen, but all I saw was sleep being delayed by lengthy floppy activity. When I came back, I was not too surprised to see a bluescreen. The source of the crash was a bit surprising however: usbser.sys had submitted an IRP that was already pending in the USB bus driver. I guess delays from the floppy driver triggered a bug in usbser.sys. This was failure bucket 0xFE_usbser!RestartNotifyRead+73. It was usbser.sys 6.1.7601.17514 (win7sp1_rtm.101119-1850), so this really is a component of Windows, and not a 3rd party driver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2017556199298928126?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2017556199298928126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2017556199298928126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2017556199298928126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2017556199298928126'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/07/no-i-cant-trust-windows-with-very-rare.html' title='No, I can&apos;t trust Windows with very rare operations.'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5124362246815588758</id><published>2011-05-31T15:41:00.004-04:00</published><updated>2011-09-23T23:41:53.414-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dell'/><category scheme='http://www.blogger.com/atom/ns#' term='inspiron'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Review of battery and AC adapter from LaptopCharge.com</title><content type='html'>About a year ago, I got a new LDE203X battery and AC19V90K1 AC adapter for my Inspiron 6400. I ordered from &lt;a href="http://www.laptopcharge.com/"&gt;LaptopCharge.com&lt;/a&gt;, and I'm satisfied with that choice, the site and the items.&lt;br /&gt;&lt;br /&gt;Basically, there were three choices for getting a battery and AC adapter: Dell, eBay, and other stores like LaptopCharge.com. Dell ridiculously overprices these things, so I didn't want to buy from them. However, I noticed that some people didn't trust third party batteries, and many people said third party batteries wear out more quickly. I also noticed that most eBay sellers didn't list a brand or part number for their batteries, which seems shady. I chose LaptopCharge.com because is a store that has been around of some time, and they sell Dr. Battery brand products. The price wasn't much higher than the best prices on eBay.&lt;br /&gt;&lt;br /&gt;After placing my order, it arrived promptly and in good condition. Everything was packaged well inside, and the battery and AC adapter were in their own boxes. I was however unsure about whether the Dr. Battery brand meant anything. The logo only appeared on hologram stickers which were haphazardly stuck onto the battery and adapter.&lt;br /&gt;&lt;br /&gt;The battery is a good, though not perfect fit. It takes slightly more force to engage the latches, and the thicker side sticks out a fraction of millimetre. This is totally inconsequential. &lt;br /&gt;&lt;br /&gt;The battery charges properly and only gets very slightly warm.  When it's done charging, the battery light keeps flashing occasionally, like during the topping up part of a charge. Also, if the battery is discharged to 98% or 99% and power is plugged in, Windows reports that the battery is charging but the level doesn't increase. In both of these situations, &lt;a href="http://users.rcn.com/tmtalpey/BattStat/"&gt;BattStat&lt;/a&gt; shows about 11 mW of power input, and a voltage which is well below 4.2V per cell. This seems like a very slight miscalibration of the current gauge. None of these things are a problem. (It is normal for lithium-ion batteries to require more than a few percent discharge to trigger charging.)&lt;br /&gt;&lt;br /&gt;Just like the original battery, the replacement battery has a LED bar graph for checking battery level. It works, although the button that activates it requires more pressure and doesn't have a nice clicky feel. This is a bit of a disappointment, but certainly not a big problem.&lt;br /&gt;&lt;br /&gt;Low battery shutdown works perfectly. The capacity decreases smoothly, and hibernation is triggered appropriately. I did not test discharge to the point of power cutoff.&lt;br /&gt;&lt;br /&gt;During the last year, I was careful with the battery. I took it out when using my laptop on AC power for extended periods, and whenever I stored the battery, I kept it at around 40%. I still don't see any capacity degradation.&lt;br /&gt;&lt;br /&gt;The charger looks very similar to the Dell charger, but it is bigger. This may be because it is 90W, while my Dell charger is 65W. It has a longer AC power cord, but a shorter DC cord. This is less convenient than the Dell charger. The AC cord doesn't bend where it exits the charger, which is nice, considering that I don't want to wrap the cords on the charger because of the stress that it causes.&lt;br /&gt;&lt;br /&gt;I don't like the original Dell charger because it is noisy. It makes chaotic buzzing and beeping noises when the laptop is running and especially while the battery is charging. When in sleep mode, it produces a chirping sound as the power LED pulses. When I'm going to sleep in a quiet place, this sounds kind of like night crickets, except it's kind of annoying. The Dr. Battery charger is much quieter. I need to be closer to hear the sounds it produces, and there are no bothersome sounds in sleep mode.&lt;br /&gt;&lt;br /&gt;Even though the Inspiron 6400 shipped with a 65W charger, it properly recognizes the new 90W charger and makes use of the additional power. With the original charger, charging slows down when the laptop is on and doing demanding tasks, and with 90W available, charging does not slow down. (BattStat can show these things.) However when charging and doing ordinary non-demanding things, the charger gets so hot that it is on the verge of causing 1st degree burns. Because of this, I wouldn't like to do constantly demanding things while charging or use the charger with a laptop which is designed to require 90W.&lt;br /&gt;&lt;br /&gt;When I was wondering about the bar graph on the battery, I contacted Dr. Battery and LaptopCharge.com and got prompt replies. Based on this, it seems that the technical support and warranty can be trusted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5124362246815588758?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5124362246815588758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5124362246815588758' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5124362246815588758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5124362246815588758'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/05/review-of-battery-and-ac-adapter-from.html' title='Review of battery and AC adapter from LaptopCharge.com'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7456703733949521736</id><published>2011-05-14T23:39:00.002-04:00</published><updated>2011-09-23T23:41:53.476-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>A quick OS comparison</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Windows&lt;/span&gt; is the de-facto standard OS. Over time, it has been enhanced to the point where it's stable and it contains practically all the features one might want. Its main advantages and disadvantages relate to its popularity. It has the greatest selection of software and support for a very wide variety of hardware, but it also has the greatest variety of malicious and deceptive software that users have to watch out for.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Mac OS X&lt;/span&gt; is pretty and it provides a pleasant user experience. However, it has various limitations, some of which can force one to use Windows for some tasks. It's also tied to expensive Apple computers, and it has worse hardware support. It's a good choice for those who don't do stuff that runs into the limitations and don't mind paying extra for computers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Linux&lt;/span&gt; is free and there is a large selection of free software that can run on it. Some of that software is incomplete, buggy and/or ugly, but there is high quality free software. Linux has some limitations due to not being the de-facto standard, but the situation is better than with Mac OS. The main disadvantage is that a lot of GUI software is kind of awkward and not pretty, as if it was designed by programmers rather than skilled user interface designers and graphic designers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7456703733949521736?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7456703733949521736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7456703733949521736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7456703733949521736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7456703733949521736'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/05/quick-os-comparison.html' title='A quick OS comparison'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8738479525520952039</id><published>2011-04-18T20:59:00.003-04:00</published><updated>2011-09-23T23:42:37.901-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><title type='text'>Getting a TLC5940 to retrigger itself</title><content type='html'>At first glance, the &lt;a href="http://focus.ti.com/docs/prod/folders/print/tlc5940.html"&gt;TLC5940&lt;/a&gt; seems quite nice. It offers 16 output channels, each with 12 bit PWM and a 6 bit current limit. Unfortunately, the chip doesn't have an oscillator and when one PWM cycle ends, it needs to be retriggered. This is kind of annoying and it partly defeats the purpose of using an extra chip for PWM. It means that you have to supply a jitter-free clock for PWM and you need to count cycles and retrigger the chip via BLANK when necessary.&lt;br /&gt;&lt;br /&gt;I wanted to get it working quickly, so I devised a hack. By capacitive coupling OUT15 to BLANK, the rising edge of OUT15 at the end of the PWM cycle became a positive BLANK pulse which started the next cycle. I used a 4.7 kohm pullup at OUT15 to create a signal there, a 22 nF capacitor between the pins, and a 100 kohm pulldown at BLANK. At BLANK, I also added diodes to the power supply rails, to clip the signal. I'm not sure if those were needed.&lt;br /&gt;&lt;br /&gt;I never checked to see if the signal was within or close to specs, but it was perfectly reliable once started. To start it, OUT15 had to be set for the desired length of the PWM cycle, and BLANK had to be pulsed high. Sometimes, it started by itself, but that was unreliable, especially because the initial contents of TLC5940 registers are undefined.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8738479525520952039?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8738479525520952039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8738479525520952039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8738479525520952039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8738479525520952039'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/04/getting-tlc5940-to-retrigger-itself.html' title='Getting a TLC5940 to retrigger itself'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1698785465908097734</id><published>2011-04-18T20:35:00.004-04:00</published><updated>2011-09-23T23:41:53.368-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='msp430'/><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='launchpad'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>In up mode, all output modes are useful for TACCR0</title><content type='html'>The &lt;a href="http://focus.ti.com/lit/ug/slau144h/slau144h.pdf"&gt;MSP430x2xx Family User's Guide&lt;/a&gt;, the section on Timer_A output modes claims that "Output modes 2, 3, 6, and 7 are not useful for output unit 0, because EQUx = EQU0". However, the output example for up mode states "The OUTx signal is changed when the timer counts up to the TACCRx value, and rolls from TACCR0 to zero, depending on the output mode." Based on this, it seems those output modes are useful: they could create a one cycle pulse. This does actually work; I used it to drive the BLANK input of a TLC5940.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1698785465908097734?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1698785465908097734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1698785465908097734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1698785465908097734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1698785465908097734'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/04/in-up-mode-all-output-modes-are-useful.html' title='In up mode, all output modes are useful for TACCR0'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7895514754621364175</id><published>2011-04-03T13:54:00.005-04:00</published><updated>2011-09-23T23:41:53.495-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Video capture</title><content type='html'>I recently used &lt;a href="http://www.virtualdub.org/"&gt;VirtualDub&lt;/a&gt; 1.9.11 to capture video with audio. &lt;br /&gt;&lt;br /&gt;I captured video via an ATI TV-Wonder VE card, which is based on the BrookTree/Conexant Bt878 chip. Windows 7 drivers are not available from Microsoft or the Manufacturer, but the version 5.3.8 &lt;a href="http://btwincap.sourceforge.net/"&gt;btwincap&lt;/a&gt; open source driver works pretty well. In VirtualDub capture mode, overlay never works and resolutions can't be set via the capture pin, but preview works, and resolutions can be set via "Set custom format". Spending many minutes in (nonfunctional) overlay mode can cause a bluescreen or crash, but that's easy to avoid by switching to preview or "no display" mode. When previewing or capturing, the card is perfectly stable. Video quality is great.&lt;br /&gt;&lt;br /&gt;The TV-Wonder VE doesn't capture audio, so I recorded audio via Realtek ALC889a line in with driver version 6.0.1.6235. The audio quality was good, but since audio and video were recorded via separate devices, they weren't in sync. My first capture was a major disappointment, perhaps due to Windows enhancements for line in. After I disabled those, things got better. I discovered that VirtualDub could perfectly sync if "Correct video timing for fewer frame drops/inserts" was not checked in "Capture timing options". If the option was checked, no frames were dropped and fewer frames were inserted, but VirtualDub did not synchronize the audio very well. There was both an offset and a drift. Fortunately, in most cases the drift was insignificant, and so I could simply correct for the offset. I captured most video this way to minimize frame drops and inserts.&lt;br /&gt;&lt;br /&gt;I spent some time wondering whether to extend the luma black or white points. It seemed like there was information beyond the luma white point, but extending it didn't help, perhaps because that information was distorted. There was also a bit of information beyond the black point, but extending it increases noise. Extending either made properly exposed scenes seem washed out. I decided to never extend the white point and only extend the black point for a few scenes which would otherwise be excessively dark.&lt;br /&gt;&lt;br /&gt;All the frame inserts I got happened before scene changes or severe noise. This makes me think that the card simply didn't record frames where a usable signal wasn't available. When an insert happened before a scene change, what followed was either one frame of the old scene followed by the first frame of the new scene, or one frame of the old scene and one frame of the old scene interlaced with the new scene. In such cases, I removed those frames.&lt;br /&gt;&lt;br /&gt;I gave up on deinterlacing to 29.97fps because all algorithms are a compromise between blur and artifacts, and I didn't want to encode that permanently in the video. Deinterlacing to 59.94fps produced good results, but it also increased compressed video size substantially. Because of that, I decided to encode interlaced MBAFF H.264 video with x264. It plays acceptably in Windows Media Player 12 and excellently in MPC-HC with ffdshow Yadif deinterlacing.&lt;br /&gt;&lt;br /&gt;Before encoding I considered various forms of denoising, but I never found one that really improves the end result. Denoising could decrease the slight noise, but it would also blur some subtle patterns like distant grass, asphalt, and slightly dirty walls. Also, the file size decrease from denoising is offset by the greater visibility of artifacts in smoothed areas. The most bothersome effect was that areas which show motion due to subtle patterns could stop showing motion. Finally, I noticed that x264 seems to perform some denoising itself, so denoising isn't needed after all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7895514754621364175?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7895514754621364175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7895514754621364175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7895514754621364175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7895514754621364175'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/04/video-capture.html' title='Video capture'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-6567265807673704307</id><published>2011-04-03T10:55:00.006-04:00</published><updated>2011-09-23T23:41:53.455-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Reversing a PAL to NTSC conversion</title><content type='html'>I wanted to capture video from an NTSC VHS tape that had been converted from a PAL tape. Of course, it would be better to capture from the original PAL tape, but I only had the NTSC tape and so I was forced to work from that.&lt;br /&gt;&lt;br /&gt;The NTSC tape has some fields which have breaks in them. The area above the break is the next field, and the area before the break is the previous field. These fields cause a slight motion stutter, and motion is perfectly smooth without them. It's clear that they have been inserted to increase the field rate from PAL's 50 Hz to NTSC's 59.94 Hz.&lt;br /&gt;&lt;br /&gt;Usually, the added fields occur every 6 fields. This means there are 5 original fields, 1 fake field, 5 original fields, and so on. However, the break in the field slowly moves down the field. When the break moves off the bottom of the field, then there are a few fields that are total duplicates. After that, the break moves into the top of the next field. Before that happens, it is necessary to skip ahead 7 fields once (outputting 6 original fields) to stay in sync with the inserted field. Another way to look at this is that there is a signal to go back one field which repeats at slightly more than 6 field times. It's not exactly 6 because NTSC uses 59.94 instead of 60 Hz, and so the ratio should be slightly less than 6/5.&lt;br /&gt;&lt;br /&gt;Each inserted field flips the correspondence between PAL and NTSC odd and even fields, and in any case, PAL interlace can't really translate to NTSC interlace. (Imagine two overlapping combs with different teeth spacing.) Because of this, the converter had to deinterlace to 50 fps progressive, or more likely, just resize fields vertically while shifting them to compensate for vertical displacement due to interlace.&lt;br /&gt;&lt;br /&gt;When outputting NTSC video, the converter bobbed the fields up and down to simulate interlace. However, this was done incorrectly. The image should bob up and down by one pixel at 480 lines or half a pixel at 240 lines, but instead, it bobbed up and down by one whole pixel at 240 lines. This finally made me give up on trying to recover interlaced video. Instead, I decided to capture at 320x480 and end up with 50 frames per second progressive video at 320x240. &lt;br /&gt;&lt;br /&gt;The first processing step corrected for the bobbing. Using &lt;a href="http://avisynth.org/mediawiki/Main_Page"&gt;AviSynth&lt;/a&gt;, I added a 1 pixel border at the bottom of the top fields and cropped off 1 pixel from the top. This didn't lose any image data, because the top row in these fields was black.&lt;br /&gt;&lt;br /&gt;Once the bobbing was corrected, I used AviSynth's RGBDifferenceFromPrevious function to collect data on inserted fields. By cropping the video so only a few lines at the top or bottom remain, I detected when the top part of the frame is the next frame or the bottom part is the previous frame. By using the function on the whole image, I detected when the switchover is in the vertical retrace interval, and frames are total duplicates. In all cases, it was necessary to crop off blackness, the very edges which are noisy, and the video head switching at the very bottom.&lt;br /&gt;&lt;br /&gt;After a bit of experimentation, I chose to use data from frame tops, and to process it using a program which decides whether the duplicate frame occurs in 5, 6 or 7 frames from the previous one. It never occurs in 5 frames, but that capability allows the program to resynchronize if it chooses 7 when it should have chosen 6. After this, another simple program replaced the "7, 5" combinations with "6, 6" and counted the lengths of the spans of 6 that occurred before a 7.&lt;br /&gt;&lt;br /&gt;The resulting data was good, but it had some glitches. I used a spreadsheet to work with it. There, I automatically removed some minor jitter and manually fixed a few larger glitches. When I tried to fit a line to the data, I found that it was actually a hockey stick curve with the bend at the start. This was probably because oscillators drifted during warmup and then stabilized. I considered trying to fit some kind of function to the graph, but minor fixes were sufficient.&lt;br /&gt;&lt;br /&gt;Once I was satisfied with the data, I wrote another simple program which created a VirtualDub script. First, I had it keep the frames I wanted to remove, to ensure that I am indeed removing the frames which have tears in them. Then I created the final script which removed those frames.&lt;br /&gt;&lt;br /&gt;After the video was finished, it was time to synchronize the audio. This can either be done by resampling the audio or changing the frame rate. I chose to resample the audio. For perfect sync, I could have used the data I generated to create a variable sample rate, but I instead just used a fixed sample rate based on a linear approximation. The errors were small enough to be unnoticeable.&lt;br /&gt;&lt;br /&gt;Finally, it was time to encode the audio and video. I used a low (high quality) CRF in x264, because at 320x240 the video was quite sharp and I didn't want to degrade it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-6567265807673704307?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/6567265807673704307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=6567265807673704307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6567265807673704307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6567265807673704307'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/04/reversing-pal-to-ntsc-conversion.html' title='Reversing a PAL to NTSC conversion'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2876062497100711726</id><published>2011-03-15T15:29:00.002-04:00</published><updated>2011-09-23T23:42:37.872-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><title type='text'>Authorize.net makes it hard to get a refund after a credit card expires</title><content type='html'>I'm having difficulties obtaining a refund after the credit card expired. The merchant is willing to provide a refund, but &lt;a href="http://www.authorize.net/"&gt;Authorize.net&lt;/a&gt; doesn't allow it. After a conference call with the merchant and Authorize.net support, it turns out the merchant needs to add &lt;A HREF="http://www.authorize.net/support/CP/helpfiles/Miscellaneous/Pop-up_Terms/Expanded_Credit_Capabilities.htm"&gt;Expanded Credit Capabilities&lt;/A&gt; to their account. That service is free, but it involves filling out a form and that makes the merchant a bit reluctant.&lt;br /&gt;&lt;br /&gt;This is happening even though the transaction was less than a month ago, the same credit card account is still active, and the new card has the same number. The merchant tried just updating the expiration date, but that didn't work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2876062497100711726?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2876062497100711726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2876062497100711726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2876062497100711726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2876062497100711726'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/03/authorizenet-makes-it-hard-to-get.html' title='Authorize.net makes it hard to get a refund after a credit card expires'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-6559315522235119851</id><published>2011-03-14T11:01:00.004-04:00</published><updated>2011-09-23T23:43:23.441-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Manually downloading Yahoo Messenger</title><content type='html'>If you "download Yahoo Messenger" from Yahoo, you actually download a small executable which can download Messenger and other things. Yahoo doesn't provide you with links to the actual executable which installs Messenger. You can get links from an .ini file you can download:&lt;br /&gt;&lt;br /&gt;&lt;A HREF="http://xp.yimg.com/gj/msgr/10/ini/ymsgr10_us.ini"&gt;http://xp.yimg.com/gj/msgr/10/ini/ymsgr10_us.ini&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;For other countries, change the _us to another country code, such as _ca for Canada.  The Messenger install file is located at the URL which is the &lt;code&gt;INST_PATH&lt;/code&gt; value in the &lt;code&gt;YMSGR&lt;/code&gt; section.  Currently Yahoo Messenger is located at:&lt;br /&gt;&lt;br /&gt;&lt;A HREF="http://xh.yimg.com/gj/msgr/10/client/ymsgr1000_1270_us.exe"&gt;http://xh.yimg.com/gj/msgr/10/client/ymsgr1000_1270_us.exe&lt;/A&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-6559315522235119851?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/6559315522235119851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=6559315522235119851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6559315522235119851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6559315522235119851'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/03/manually-downloading-yahoo-messenger.html' title='Manually downloading Yahoo Messenger'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3408780008517606375</id><published>2011-03-04T15:48:00.004-05:00</published><updated>2011-09-23T23:41:53.400-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Copying Windows to a new hard drive with dd</title><content type='html'>Based on the existence of &lt;a href="http://en.wikipedia.org/wiki/Disk_cloning"&gt;disk cloning&lt;/a&gt; software, one might assume that specialized software is needed to move Windows to a new hard drive. However, that's not true; the raw data can simply be copied.  My normal personal setup has a small OS partition and a large data partition.  I did the copying from Linux (&lt;a href="http://www.sysresccd.org/Main_Page"&gt;SystemRescueCd&lt;/a&gt;) using &lt;a href="http://linux.die.net/man/1/dd"&gt;dd&lt;/a&gt;.  Here's the procedure I followed, with sda being the new drive and sdb being the old one (don't mix them up; that could cause data loss):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Copy the start sectors, before the first partition: "&lt;code&gt;dd if=/dev/sdb of=/dev/sda bs=512 count=63&lt;/code&gt;".  I could have just copied the MBR with "&lt;code&gt;count=1&lt;/code&gt;".&lt;/li&gt;&lt;li&gt;Run fdisk and delete the data partition from the new drive. As a side effect, this causes Linux to recognize the newly written partition table.&lt;/li&gt;&lt;li&gt;Copy the system partition to the new drive: "&lt;code&gt;dd if=/dev/sdb1 of=/dev/sda1 bs=1M&lt;/code&gt;".&lt;/li&gt;&lt;li&gt;Run fdisk and change the ID of the old drive. This is one of the advanced functions. There's a bug in fdisk: it doesn't save the partition table after this. To work around the bug, make another change. I set the type of the old system partition to NTFS hidden.&lt;/li&gt;&lt;li&gt;Reboot into Windows. It should boot off the new drive and mount the partition there as the system partition.&lt;/li&gt;&lt;li&gt;In Windows Disk Management, extend the new partition.  Windows can always use more space, and new drives are usually bigger.&lt;/li&gt;&lt;li&gt;Still in Disk Management, create the new data partition.&lt;/li&gt;&lt;li&gt;Copy data to the new data partition.&lt;/li&gt;&lt;li&gt;Remove the old hard drive. It is no longer needed.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;If there's no need to resize the system partition and the new drive is the same size or bigger than the old drive, the entire drive can be copied, simply using "&lt;code&gt;dd if=/dev/sdb of=/dev/sda bs=1M&lt;/code&gt;".&lt;br /&gt;&lt;br /&gt;When working with modern large hard drives and not &lt;a href="http://dreamlayers.blogspot.com/2008/02/manually-moving-vista-ntfs-partition.html"&gt;moving&lt;/a&gt; partitions relative to the start of the disk, the NT boot sector doesn't need to be altered.  If moving a partition (for example, to align it for Advanced Format on the new drive) it would be necessary to change "Number of Hidden Sectors" at offset 0x1C in the boot sector.&lt;br /&gt;&lt;br /&gt;If the new drive fails, and the old drive has to be used again, the procedure is simple: just change the disk ID to its former ID and unhide the system partition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3408780008517606375?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3408780008517606375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3408780008517606375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3408780008517606375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3408780008517606375'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/03/copying-windows-to-new-hard-drive-with.html' title='Copying Windows to a new hard drive with dd'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3124604882007705807</id><published>2011-03-04T15:35:00.003-05:00</published><updated>2011-09-23T23:41:53.394-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Medieval CUE Splitter 1.2 is broken!</title><content type='html'>&lt;a href="http://www.medieval.it/cuesplitter-pc/menu-id-71.html"&gt;Medieval CUE Splitter&lt;/a&gt; is a seemingly nice and user friendly Windows application which can split many audio formats using CUE files.  It supports many audio formats and preserves tag information.  In terms of features, it seems so great, but &lt;span style="font-weight:bold;"&gt;it's broken and it loses audio data&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;I already knew that splitting of MP3 files is broken.  I &lt;a href="http://dreamlayers.blogspot.com/2008/04/beware-of-bad-mp3-cutting-utilities.html"&gt;wrote about it in the past&lt;/a&gt;, with version 1.0.  A quick check in version 1.2 shows that it still doesn't work correctly.&lt;br /&gt;&lt;br /&gt;Recently, I learned that FLAC splitting is also broken. The total number of samples in the output files is less than the number of samples in the input file.  This means data was lost.  There is also another minor bug which may actually be helpful:  the MD5 value is not written to the file.  This can be used to identify FLAC files may have been split using Medieval CUE Splitter, because "&lt;code&gt;flac -t&lt;/code&gt;" will complain about it.&lt;br /&gt;&lt;br /&gt;So far, it seems that Monkey's Audio (APE) files split without any data loss. The number of samples is correct, and the concatenated audio data from the split files matches the audio data from the source file. This means that as a workaround, other lossless files can be converted to APE and split. However, this workaround certainly slows things down, and I can't really trust the program because of the other bugs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3124604882007705807?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3124604882007705807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3124604882007705807' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3124604882007705807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3124604882007705807'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/03/medieval-cue-splitter-12-is-broken.html' title='Medieval CUE Splitter 1.2 is broken!'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7843952512583093934</id><published>2011-01-12T12:32:00.005-05:00</published><updated>2011-09-23T23:41:53.489-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Don't upgrade to PowerChute Personal Edition 3.0</title><content type='html'>If you're running Windows 7 or Vista and you have UAC enabled, don't upgrade to PowerChute Personal Edition 3.0.  APC doesn't know how to properly program for Windows 7 and Vista.  Their system tray application needs administrative rights, and so a UAC prompt will appear after every bootup or login.  APC knows about this issue, and they &lt;a href="http://emea-en.apc.com/app/answers/detail/a_id/11148/~/user-account-control-requires-permission-before-apcsystray.exe-will-start-upon"&gt;suggest reducing your security settings&lt;/a&gt; as a workaround.&lt;br /&gt;&lt;br /&gt;Administrative rights are requested by the executable's manifest.  The manifest could be edited or even removed.  However, that would probably cause problems.  Just use an older version of PowerChute Personal Edition; it works fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7843952512583093934?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7843952512583093934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7843952512583093934' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7843952512583093934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7843952512583093934'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/01/dont-upgrade-to-powerchute-personal.html' title='Don&apos;t upgrade to PowerChute Personal Edition 3.0'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-6013979033368047118</id><published>2011-01-04T23:05:00.003-05:00</published><updated>2011-09-23T23:41:53.431-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Prolific PL-2303 driver 2.0.2.1 causes crashes</title><content type='html'>Version 2.0.2.1 of the Prolific PL-2303 USB serial port driver is buggy.  It caused an IRQL_NOT_LESS_OR_EQUAL (0x1000000a) crash twice, both times when I was sending a file to a serial port via copy in cmd and I aborted the copy with Control-C.  Windows fails to find an updated driver, but a much newer driver can be &lt;a href="http://www.prolific.com.tw/eng/downloads.asp?id=31"&gt;downloaded from Prolific&lt;/a&gt;. I'm now using version 3.3.11.152, which seems stable so far.  This is in 32 bit Windows 7.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-6013979033368047118?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/6013979033368047118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=6013979033368047118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6013979033368047118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6013979033368047118'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/01/prolific-pl-2303-driver-2021-causes.html' title='Prolific PL-2303 driver 2.0.2.1 causes crashes'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5075697873274038033</id><published>2011-01-02T14:54:00.007-05:00</published><updated>2011-09-23T23:41:53.407-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='dell'/><category scheme='http://www.blogger.com/atom/ns#' term='inspiron'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Setting the MAC address on an Inspiron 6400</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Dell Wireless 1500 802.11n WLAN Mini-card&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The card is actually based on a Broadcom BCM4328 chip, and the drivers are from Broadcom.  I'm currently using driver version 5.60.48.35.  The advanced tab of properties in Device Manager allows a "Locally Administered MAC Address" to be assigned.  It is an 8 byte (or 12 character) hexadecimal string using uppercase letters.  It must be a &lt;a href="http://en.wikipedia.org/wiki/MAC_address#Address_details"&gt;locally administered unicast address&lt;/a&gt;, meaning the least significant bits of the first byte are 10 (and therefore the second character is 2, 6, A or E).  An address which doesn't follow this format will be accepted without any error messages, but the driver will ignore it, and the card will continue to use its original address.&lt;br /&gt;&lt;br /&gt;I wonder if the use of a locally administered address is being enforced to prevent copying of other addresses and circumvention of MAC address filtering on wireless networks.  I also wonder if it would be easy to reverse-engineer the driver and remove this limitation.  However, I currently have no need for this so I will not attempt it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Broadcom 440x 10/100 Integrated Controller&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm currently using driver version 4.60.0.1.  There was no option for changing the MAC address in the advanced tab of properties in Device Manager.  However, the address can be changed via the registry.  The registry entry needs to be located within the adapter's numbered key in "&lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}&lt;/code&gt;", the same key where "&lt;code&gt;DriverDesc&lt;/code&gt;" is "Broadcom 440x 10/100 Integrated Controller".   Its name needs to be "&lt;code&gt;NetworkAddress&lt;/code&gt;" and it must be of &lt;code&gt;REG_SZ&lt;/code&gt; (string) type.  The address must be entered as a hexadecimal number, with uppercase letters and no separators between bytes.  After changing this entry, the adapter has to be disabled and re-enabled for it to take effect.  (When changing the address via the properties dialog, Windows does this automatically.)&lt;br /&gt;&lt;br /&gt;It's possible to add a "Locally Administered MAC Address" item to the advanced properties tab.  All the items there are described by keys in the registry in the "&lt;code&gt;Ndi\params&lt;/code&gt;" key within the adapter's key.  Since the wireless card sets the MAC address in the same way, you can export the wireless card's "&lt;code&gt;NetworkAddress&lt;/code&gt;" key, change the adapter number in the .reg file to the 440x, and then import the .reg file.  Alternatively, use the following, also making sure that the number ("&lt;code&gt;0007&lt;/code&gt;" here) matches the number of the 440x adapter's key:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Windows Registry Editor Version 5.00&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007\Ndi\params\NetworkAddress]&lt;br /&gt;"ParamDesc"="Locally Administered MAC Address"&lt;br /&gt;"type"="edit"&lt;br /&gt;"LimitText"="12"&lt;br /&gt;"UpperCase"="1"&lt;br /&gt;"default"=""&lt;br /&gt;"optional"="1"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The 440x only demands that you use a unicast address, meaning the least significant bit of the first byte is 0 (and therefore the second character is even).  If the bit is not zero, the driver will ignore the address and continue using the original address.  Unlike with the wireless card, the locally administered bit does not need to be set.  This means the mac address of another device can be cloned or spoofed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5075697873274038033?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5075697873274038033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5075697873274038033' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5075697873274038033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5075697873274038033'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2011/01/setting-mac-address-on-inspiron-6400.html' title='Setting the MAC address on an Inspiron 6400'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-6123135046683003714</id><published>2010-12-12T13:51:00.005-05:00</published><updated>2011-11-05T00:45:10.351-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archos'/><category scheme='http://www.blogger.com/atom/ns#' term='rockbox'/><title type='text'>A stripped-down Rockbox build for the Archos V2 Recorder</title><content type='html'>The Archos V2 Recorder has only two megabytes of RAM.  This RAM is used for the software running on the device, and whatever RAM remains may be used as a buffer to store MP3 data.  It's a very small amount of RAM and even at 128 kbps, most songs cannot fit.  Because of this, the hard drive has to spin up frequently to read additional data.&lt;br /&gt;&lt;br /&gt;In 2007 I noticed how newer versions of &lt;a href="http://www.rockbox.org/"&gt;Rockbox&lt;/a&gt; left less free buffer space and I decided to make my own build with more free space.  The first step was a &lt;a href="http://www.rockbox.org/wiki/RomBox"&gt;RomBox&lt;/a&gt; build.  This helped a lot, but I wasn't satisfied.  I saved more RAM by disabling various features which I didn't need:  code page loading, language loading and the voice interface.  With this build, I have 1.774 MB of buffer space.&lt;br /&gt;&lt;br /&gt;I also fixed a few bugs, either by backporting fixes from later versions or by fixing the bug myself.  Most notably, I fixed the &lt;a href="http://www.rockbox.org/tracker/7631"&gt;charging screen issues&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here are some files associated with this custom build:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://dl.dropbox.com/u/16662598/Rockbox/Archos%20Unbloated/Rockbox-V2Recorder-unbloated.zip"&gt;V2 Recorder build&lt;/a&gt; which I'm using&lt;/li&gt;&lt;li&gt;A slightly less optimized &lt;a href="http://dl.dropbox.com/u/16662598/Rockbox/Archos%20Unbloated/Rockbox-FMRecorder-unbloated.zip"&gt;FM Recorder build&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://dl.dropbox.com/u/16662598/Rockbox/Archos%20Unbloated/Rockbox-Nov07-fonts.zip"&gt;fonts package&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://dl.dropbox.com/u/16662598/Rockbox/Archos%20Unbloated/Rockbox-Nov07-unbloated-src.tar.xz"&gt;build directory&lt;/a&gt; with source code&lt;/li&gt;&lt;/ul&gt;This is all based on Rockbox from November 2007.  I've used this build for years on my V2 Recorder without running into any significant problems.  I view it as a finished product, because I see no need to update the V2 Recorder to newer versions of Rockbox, and my attempts to minimize memory usage encountered diminishing returns.&lt;br /&gt;&lt;br /&gt;I did not make any builds for other old Archos devices because I don't have access to those devices for testing.  It should not be hard to build for those.  The only tricky part is what I did to the language system to save RAM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Update&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is based on Rockbox r15545. You can now &lt;a href="http://dl.dropbox.com/u/16662598/Rockbox/Archos%20Unbloated/rockbox-r15545-unbloated.patch.gz"&gt;download just the patch&lt;/a&gt;. Here's a list of the included fixes and changes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.rockbox.org/tracker/task/9638"&gt;&lt;strike&gt;FS#9638&lt;/strike&gt;&lt;/a&gt; - temp_cue is unused and wasting memory&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rockbox.org/tracker/task/7631"&gt;FS#7631&lt;/a&gt; - Charging screen broken on V2 Recorder. Several fixes enable the charging screen, display of input current on the screen, and proper startup from the charging screen.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rockbox.org/tracker/task/9635"&gt;&lt;strike&gt;FS#9635&lt;/strike&gt;&lt;/a&gt; - Instant backlight turn-off on FM/V2 Recorder&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rockbox.org/tracker/task/8163"&gt;&lt;strike&gt;FS#8163&lt;/strike&gt;&lt;/a&gt; - Rockbox (Sansa) hangs in settings menu. This fixes a crash caused by the scrolling title used for setting text horizontal scrolling speed.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Removal of language changing, with English language strings used directly from ROM. (This requires manual intervention when building.)&lt;/li&gt;&lt;li&gt;Removal of voice functionality.&lt;/li&gt;&lt;li&gt;Removal of codepage changing&lt;/li&gt;&lt;li&gt;Removal of the database (this is part of the RomBox instructions).&lt;/li&gt;&lt;li&gt;Removal of low battery shutdown&lt;/li&gt;&lt;li&gt;Unused conditionals for removing bookmark functionality. This part is probably incomplete and bookmark functionality remains.&lt;/li&gt;&lt;/ul&gt;In general, the removals are kind of incomplete and messy. I removed the main memory using parts, but I didn't remove all traces of those features. For example, the settings for removed features still remain. I did not extensively test all possibilities, but I did not run into any problems whatsoever over years of use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-6123135046683003714?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/6123135046683003714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=6123135046683003714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6123135046683003714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6123135046683003714'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/12/stripped-down-rockbox-build-for-archos.html' title='A stripped-down Rockbox build for the Archos V2 Recorder'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8205029238953881821</id><published>2010-12-11T23:41:00.006-05:00</published><updated>2011-09-23T23:43:23.459-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>drop.io is closing and my files were hosted there</title><content type='html'>In the past I chose to use drop.io for hosting files (other than photos) which are associated with this blog.  I just learned that &lt;a href="http://blog.drop.io/2010/10/29/an-important-update-on-the-future-of-drop-io/"&gt;drop.io is closing&lt;/a&gt; and all files will be deleted on December 15th.  I just found out about this as I went there to replace a file with a newer version.  The drop.io blog post claims that notification e-mails will be sent, but I didn't receive any e-mail despite having an e-mail address associated with my account.&lt;br /&gt;&lt;br /&gt;I'm now hosting my files via &lt;a href="http://www.dropbox.com/"&gt;Dropbox&lt;/a&gt;.  I think I updated all the links.  If you find a broken link, leave a blog comment here or on that particular article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8205029238953881821?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8205029238953881821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8205029238953881821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8205029238953881821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8205029238953881821'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/12/dropio-is-closing-and-my-files-are.html' title='drop.io is closing and my files were hosted there'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1490319004837230413</id><published>2010-12-08T12:23:00.005-05:00</published><updated>2011-09-23T23:40:18.865-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Sometimes, a period doesn't match any character</title><content type='html'>Recently I found that in regular expressions in GNU sed, ‘&lt;samp&gt;.&lt;/samp&gt;’ failed to match some characters.  At first it was very surprising, but there's a &lt;a href="http://www.gnu.org/software/sed/manual/html_node/Reporting-Bugs.html#index-Emptying-pattern-space-243"&gt;simple explanation in the GNU sed manual&lt;/a&gt;:&lt;blockquote&gt;&lt;dl&gt;&lt;dt&gt;&lt;code&gt;s/.*//&lt;/code&gt; does not clear pattern space&lt;/dt&gt;&lt;dd&gt;&lt;a name="index-Non_002dbugs_002c-localization_002drelated-240"&gt;&lt;/a&gt;&lt;a name="index-g_t_0040value_007bSSEDEXT_007d_002c-emptying-pattern-space-241"&gt;&lt;/a&gt;&lt;a name="index-Emptying-pattern-space-242"&gt;&lt;/a&gt; This happens if your input stream includes invalid multibyte sequences.  POSIX mandates that such sequences are &lt;em&gt;not&lt;/em&gt; matched by ‘&lt;samp&gt;.&lt;/samp&gt;’, so that ‘&lt;samp&gt;s/.*//&lt;/samp&gt;’ will not clear pattern space as you would expect.  In fact, there is no way to clear sed's buffers in the middle of the script in most multibyte locales (including UTF-8 locales).  For this reason, &lt;acronym&gt;GNU&lt;/acronym&gt; &lt;samp&gt;sed&lt;/samp&gt; provides a `z' command (for `zap') as an extension.       &lt;p&gt;To work around these problems, which may cause bugs in shell scripts, set the &lt;samp&gt;LC_COLLATE&lt;/samp&gt; and &lt;samp&gt;LC_CTYPE&lt;/samp&gt; environment variables to ‘&lt;samp&gt;C&lt;/samp&gt;’.  &lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/blockquote&gt;The used the &lt;a href="http://en.wikipedia.org/wiki/ISO/IEC_8859-1"&gt;ISO-8859-1 character set&lt;/a&gt; while Cygwin by default uses &lt;a href="http://en.wikipedia.org/wiki/UTF-8"&gt;UTF-8&lt;/a&gt;.  The characters not being matched formed invalid sequences in UTF-8.  Setting ‘&lt;samp&gt;LANG=C&lt;/samp&gt;’ also fixes the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1490319004837230413?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1490319004837230413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1490319004837230413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1490319004837230413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1490319004837230413'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/12/sometimes-period-doesnt-m.html' title='Sometimes, a period doesn&apos;t match any character'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4367391306381564489</id><published>2010-12-02T13:55:00.004-05:00</published><updated>2011-09-23T23:40:18.948-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='detours'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Hiding a window from the Taskbar using WS_EX_TOOLWINDOW</title><content type='html'>A window can be hidden from the Taskbar by adding the WS_EX_TOOLWINDOW &lt;a href="http://msdn.microsoft.com/en-us/library/ff700543%28VS.85%29.aspx"&gt;extended style&lt;/a&gt;.  As a side-effect, this changes the window frame, but that may not be a problem.  When modifying an already existing window, that window needs to be hidden and then showed again for the modification to take effect.&lt;br /&gt;&lt;br /&gt;One application can easily do this to a window of another application.  For example, here is a bit of code for doing this to Windows Live Messenger:&lt;pre&gt;HWND hw = FindWindow("MSBLWindowClass", NULL);&lt;br /&gt;if (hw == NULL) {&lt;br /&gt; printf("Window not found.\n");&lt;br /&gt; return -1;&lt;br /&gt;}&lt;br /&gt;ShowWindow(hw, SW_HIDE);&lt;br /&gt;SetWindowLongPtr(hw, GWL_EXSTYLE,&lt;br /&gt;              GetWindowLongPtr(hw, GWL_EXSTYLE)&lt;br /&gt;              | WS_EX_TOOLWINDOW);&lt;br /&gt;ShowWindow(hw, SW_SHOW);&lt;/pre&gt;&lt;br /&gt;It works well, but the code has to be run every time the window is created.  It's better to actually create the window with WS_EX_TOOLWINDOW, but that requires a bit more work.  The simplest way is to intercept the function which the application uses to create windows.  &lt;a href="http://research.microsoft.com/en-us/projects/detours/"&gt;Detours&lt;/a&gt; provides an easy way to do this.  For example, to hide the Windows Live Messenger window, intercept &lt;a href="http://msdn.microsoft.com/en-us/library/ms632680%28VS.85%29.aspx"&gt;&lt;code&gt;CreateWindowExW&lt;/code&gt;&lt;/a&gt;.  The intercepting function just needs to do the following before calling the real function:&lt;br /&gt;&lt;pre&gt;if ((((DWORD)lpClassName) &amp;amp; ~0xFFFF) != 0 &amp;amp;&amp;amp;&lt;br /&gt; !wcscmp(L"MSBLWindowClass", lpClassName)) {&lt;br /&gt; dwExStyle |= WS_EX_TOOLWINDOW;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;I don't recommend patching of binaries.  It's more difficult to understand program flow and devise a patch, and some applications would make it even more difficult via packing and anti-debugger techniques.  Patching also needs to be re-done when the application is updated.  In this case, it only makes sense as a reverse engineering training exercise.  One hint:  a Win32 API monitoring program such as &lt;a href="http://jacquelin.potier.free.fr/winapioverride32/"&gt;WinAPIOverride32&lt;/a&gt; can easily find the location of the call.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4367391306381564489?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4367391306381564489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4367391306381564489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4367391306381564489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4367391306381564489'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/12/hiding-window-from-taskbar-using.html' title='Hiding a window from the Taskbar using WS_EX_TOOLWINDOW'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4897965548267746756</id><published>2010-12-02T13:03:00.007-05:00</published><updated>2011-09-23T23:40:18.961-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Getting elapsed time since last Windows wakeup via CallNtPowerInformation</title><content type='html'>Windows provides the last system wake time via &lt;a href="http://msdn.microsoft.com/en-us/library/aa372675%28v=VS.85%29.aspx"&gt;&lt;code&gt;CallNtPowerInformation&lt;/code&gt;&lt;/a&gt;.  It returns the "interrupt-time count, in 100-nanosecond units".  To obtain the time since last wake, this needs to be subtracted from another value, but the documentation doesn't explain what other value can be used.  In Windows 7, &lt;a href="http://msdn.microsoft.com/en-us/library/ms724408%28VS.85%29.aspx"&gt;&lt;code&gt;GetTickCount&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms724411%28v=VS.85%29.aspx"&gt;&lt;code&gt;GetTickCount64&lt;/code&gt;&lt;/a&gt; (which return time in milliseconds) work great.  The combination even returns a good result after a bootup, when the system hasn't slept yet.  Do not use &lt;code&gt;QueryUnbiasedInterruptTime&lt;/code&gt; or &lt;code&gt;QueryPerformanceCounter&lt;/code&gt;.  The latter will be close enough at first, but every time the system sleeps and wakes, additional error will accumulate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4897965548267746756?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4897965548267746756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4897965548267746756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4897965548267746756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4897965548267746756'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/12/getting-time-since-last-windows-wakeup.html' title='Getting elapsed time since last Windows wakeup via CallNtPowerInformation'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2412458960646739314</id><published>2010-11-10T19:59:00.020-05:00</published><updated>2011-09-23T23:40:18.899-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='detours'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Using Detours Express from GCC</title><content type='html'>&lt;a href="http://research.microsoft.com/en-us/projects/detours/"&gt;Detours Express&lt;/a&gt; must be compiled using a Microsoft C++ compiler.  It can be used from GCC, but some significant issues do come up.&lt;br /&gt;&lt;br /&gt;When attempting to use Detours from &lt;a href="http://gcc.gnu.org/"&gt;GCC&lt;/a&gt;, the first problem is that GNU ld cannot resolve some symbols in static libraries that were created by Microsoft compilers.  This can be solved by creating a DLL.  First, a &lt;a href="http://msdn.microsoft.com/en-us/library/28d6s79h.aspx"&gt;.def Module Definition File&lt;/a&gt; needs to be created to export the needed symbols.  The list of functions can easily be obtained from the header file, using &lt;code&gt;&lt;a href="http://www.grymoire.com/Unix/Sed.html"&gt;sed&lt;/a&gt; -n "s/^.* WINAPI \([^(]*\)(.*$/\1/p" detours.h&lt;/code&gt;.  Once you have that, you just have to add a single data export and the statements that go at the beginning of the .def file:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;..\detoured.lib msvcrt.lib kernel32.lib /out:detours.dll&lt;br /&gt;LIBRARY detours&lt;br /&gt;EXPORTS&lt;br /&gt;DETOUR_EXE_RESTORE_GUID DATA&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If you want, you can create a resource file with VERSIONINFO.  Simply copy &lt;code&gt;detours.rc&lt;/code&gt; in the Detours source directory and then edit it.  The only fields that need to be edited are the FileDescription and DLL names.  It's probably also a good idea to set the VS_FF_PRIVATEBUILD flag in FILEFLAGS by setting FILEFLAGS to 0x8L, and below provide a "PrivateBuild" VALUE with information about your build.&lt;br /&gt;&lt;br /&gt;If you want to name your DLL &lt;code&gt;detours.dll&lt;/code&gt;, it must not be built in the &lt;code&gt;lib&lt;/code&gt; directory, because that would overwrite &lt;code&gt;detours.lib&lt;/code&gt;, which is your input file.  So, go to another directory and create the DLL:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;set LIB=C:\WinDDK\7600.16385.1\lib\wxp\i386;C:\WinDDK\7600.16385.1\lib\Crt\i386&lt;br /&gt;link /release /machine:x86 /dll /def:detours.def /incremental:no /subsystem:console detours.res ..\detours.lib ..\detoured.lib msvcrt.lib kernel32.lib /out:detours.dll&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;At this point, you have a usable DLL, but it's a good idea to create a corresponding &lt;code&gt;.dll.a&lt;/code&gt; interface library file for GCC.  This is a simple process, but a &lt;a href="http://www.willus.com/mingw/yongweiwu_stdcall.html"&gt;stdcall function decoration&lt;/a&gt; issue needs to be dealt with. The Detours Express API uses the stdcall calling convention, but the functions in the DLL have no decoration.  (Windows system DLLs like &lt;code&gt;kernel32.dll &lt;/code&gt;do the same thing.) It can be a problem, because GCC will attempt to link stdcall functions to decorated names such as DetourAttach@8. To solve this, create an entirely new &lt;code&gt;.def&lt;/code&gt; file using &lt;a href="http://sourceforge.net/apps/trac/mingw-w64/wiki/gendef"&gt;gendef&lt;/a&gt;. Use the the &lt;code&gt;-a&lt;/code&gt; switch, because gendef can't detect that zero-argument functions use stdcall, and do it in a new directory if you want to keep the old &lt;code&gt;detours.def&lt;/code&gt;.  DetourGetDetouredMarker forwards to Detoured in detoured.dll, so either run gendef on &lt;code&gt;detoured.dll&lt;/code&gt; first or add the &lt;code&gt;@0&lt;/code&gt; to that name manually.  Use dlltool to create the interface library, using the &lt;code&gt;-k&lt;/code&gt; switch so the decorated names in the interface library can dynamically link with the undecorated exports in &lt;code&gt;detours.dll&lt;/code&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;dlltool -k -d detours.def -D detours.dll -l libdetours.a&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Finally, everything is ready for compilation.  The sample programs provide a simple way to test Detours Express, and with some minor changes, they can be compiled with g++.  The main issue is that g++ follows the standard and refuses to automatically convert function pointers to void pointers, but that's easy to fix by adding &lt;code&gt;(PVOID)&lt;/code&gt; casts.&lt;br /&gt;&lt;br /&gt;Unfortunately, when using GNU ld from &lt;a href="http://sourceware.org/binutils/"&gt;binutils&lt;/a&gt; 2.20.51.20100410, functions which are imported from DLLs are intercepted in the current module, bit not in any other modules.  For example, the &lt;code&gt;simple&lt;/code&gt; sample outputs that it "slept 0 ticks".  This is because the thunk (which is an indirect jump to the actual function) is intercepted instead of the actual function.  Detours attempts to correct this via &lt;code&gt;DetourCodeFromPointer&lt;/code&gt;, but it fails because GNU ld doesn't fill out the &lt;a href="http://msdn.microsoft.com/en-us/library/ms680305%28VS.85%29.aspx"&gt;data directory&lt;/a&gt; structure for the &lt;a href="http://sandsprite.com/CodeStuff/Understanding_imports.html"&gt;import address table&lt;/a&gt; and &lt;code&gt;detour_is_imported&lt;/code&gt; returns false.  (You can use &lt;code&gt;objdump -p&lt;/code&gt; to view the data directory.) This bug was fixed in September 2010, and the &lt;a href="ftp://sourceware.org/pub/binutils/snapshots/binutils-2.21.51.tar.bz2"&gt;binutils-2.21.51.tar.bz2 snapshot&lt;/a&gt; contains the fix.  (Here is a &lt;a href="http://cygwin.com/ml/binutils/2010-09/msg00257.html"&gt;thread discussing the fix&lt;/a&gt; and one &lt;a href="http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/peXXigen.c?cvsroot=src&amp;f=h#rev1.67"&gt;CVS log entry&lt;/a&gt; from the fix.)&lt;br /&gt;&lt;br /&gt;If you're using a buggy ld, it's also possible to work around this problem by declaring imported functions with &lt;a href="http://support.microsoft.com/kb/132044"&gt;&lt;code&gt;__declspec(dllimport)&lt;/code&gt;&lt;/a&gt;.  When using the MinGW headers, Windows API functions may be declared this way by defining &lt;code&gt;__W32API_USE_DLLIMPORT__&lt;/code&gt; before including header files.  This causes the corresponding function addresses to be correct, but no longer constant (due to dynamic linking). When compiling via &lt;code&gt;g++&lt;/code&gt;, this is not a problem because the compiler automatically generates code to initialize global variables.  However, &lt;code&gt;gcc&lt;/code&gt; cannot do this and so code must be added to initialize such global variables at runtime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2412458960646739314?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2412458960646739314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2412458960646739314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2412458960646739314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2412458960646739314'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/11/using-detours-express-from-gcc.html' title='Using Detours Express from GCC'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2612070202015109839</id><published>2010-11-10T18:15:00.007-05:00</published><updated>2011-09-23T23:40:18.906-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Building Detours with the WDK compiler</title><content type='html'>&lt;a href="http://research.microsoft.com/en-us/projects/detours/"&gt;Detours&lt;/a&gt; is a library for intercepting arbitrary Win32 binary functions.  A free version called &lt;a href="http://research.microsoft.com/en-us/downloads/d36340fb-4d3c-4ddd-bf5b-1db25d03713d/default.aspx"&gt;Detours Express&lt;/a&gt; is available "for research, non-commercial, and non-production use on 32-bit code".&lt;br /&gt;&lt;br /&gt;The Detours Express package only contains source code.  It must be compiled using Microsoft's C++ compiler because it uses non-standard extensions such as the &lt;a href="http://msdn.microsoft.com/en-us/library/s58ftw19%28VS.80%29.aspx"&gt;try-except statement&lt;/a&gt;.  I compiled it using the compiler in the &lt;a href="http://www.microsoft.com/whdc/devtools/WDK/default.mspx"&gt;WDK (Windows Driver Kit)&lt;/a&gt;.  (To install, download the WDK CD image and install "Build Environments".  That list of packages requires 1.37 GB.  If you want to reduce this, you can uninstall individual unwanted packages by right-clicking on their .msi files and selecting uninstall.)&lt;br /&gt;&lt;br /&gt;Detours Express uses the DbgHelp library, but dbghelp.h is not in the WDK.  This may be remedied by downloading &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx"&gt;Debugging Tools for Windows&lt;/a&gt; and installing the included SDK.  (Detours Express loads dbghelp.dll via LoadLibraryA, so you don't have to worry about linking that in.)&lt;br /&gt;&lt;br /&gt;By default, the compiler isn't in the path and there is no search path for include files or libraries.  This may be remedied by setting some environment variables from a batch file:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;PATH=C:\WinDDK\7600.16385.1\bin\x86;C:\WinDDK\7600.16385.1\bin\x86\x86;%PATH%&lt;br /&gt;SET "INCLUDE=c:\WinDDK\7600.16385.1\inc\api;c:\WinDDK\7600.16385.1\inc\crt;C:\Program Files\Debugging Tools for Windows (x86)\sdk\inc"&lt;br /&gt;SET LIB=C:\WinDDK\7600.16385.1\lib\wxp\i386&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Recent versions of the WDK do not include lib.exe.  This is not a problem, because lib simply called link.  Simply replace &lt;code&gt;lib&lt;/code&gt; with &lt;code&gt;link /lib&lt;/code&gt; in the Makefile.  After that, just run &lt;code&gt;nmake&lt;/code&gt; and Detours will build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2612070202015109839?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2612070202015109839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2612070202015109839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2612070202015109839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2612070202015109839'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/11/building-detours-with-ddk-compiler.html' title='Building Detours with the WDK compiler'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5292142801411636334</id><published>2010-10-30T10:52:00.003-04:00</published><updated>2011-09-23T23:44:36.318-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Yahoo Messenger also censors messages</title><content type='html'>I already knew that &lt;a href="http://dreamlayers.blogspot.com/2008/07/do-not-use-windows-live-formerly-msn.html"&gt;Windows Live Messenger censors messages at the server&lt;/a&gt;.  I thought Yahoo Messenger was better.  It is not; it does the same thing and it doesn't even notify when message delivery fails.  This is happening with messages sent between Trillian and Miranda IM, so it has to be sever-side.&lt;br /&gt;&lt;br /&gt;The best solution is encryption.  I recommend &lt;a href="http://en.wikipedia.org/wiki/Off-the-Record_Messaging"&gt;Off-the-Record Messaging (OTR)&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5292142801411636334?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5292142801411636334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5292142801411636334' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5292142801411636334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5292142801411636334'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/10/yahoo-messenger-also-censors-messages.html' title='Yahoo Messenger also censors messages'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-6815594542906406402</id><published>2010-10-20T23:53:00.002-04:00</published><updated>2011-09-23T23:44:04.292-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Getting rid of my last name in Windows Live Messenger 2011</title><content type='html'>Windows Live Messenger 2011 tries to force people to use their real first and last name as their display name.  There is no more display name option in Messenger, and the only way to change the name is via Windows Live profile settings on the web, where the web page requires a that both a first and last name is input.  I went to a &lt;a href="http://www.cs.tut.fi/%7Ejkorpela/chars/spaces.html"&gt;page showing unicode spaces&lt;/a&gt; and tried pasting those as my last name.  Most resulted in an error, but one finally worked.  I think it was U+202F narrow no-break space.  It seems I don't have a space as my last name; the last name is gone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-6815594542906406402?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/6815594542906406402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=6815594542906406402' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6815594542906406402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6815594542906406402'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/10/getting-rid-of-my-last-name-in-windows.html' title='Getting rid of my last name in Windows Live Messenger 2011'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4276936876056406372</id><published>2010-10-02T16:00:00.003-04:00</published><updated>2011-09-23T23:40:18.942-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='ti-85'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Virtual TI 2.5 Windows 7 compatibility fix</title><content type='html'>If you run &lt;a href="http://www.ticalc.org/archives/files/fileinfo/84/8442.html"&gt;Virtual TI 2.5 beta 5&lt;/a&gt; under Windows 7, it fails with an error dialog which says "Failed to set data for 'LastEmuVersion'".   A simple workaround is always running Virtual TI as Administrator, but that gets annoying.&lt;br /&gt;&lt;br /&gt;The error means that Virtual TI was unable to save settings in the registry.  It attempts to save settings under HKEY_LOCAL_MACHINE\SOFTWARE\ACZ, and it is not allowed to write there.  Instead, it should be saving them under HKEY_CURRENT_USER\Software\ACZ.  Normally, Windows 7 &lt;a href="http://msdn.microsoft.com/en-us/library/aa965884%28VS.85%29.aspx"&gt;registry virtualization &lt;/a&gt;would automatically fix this problem by redirecting writes HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\ACZ, but something goes wrong.&lt;br /&gt;&lt;br /&gt;To fix the problem, open regedit and grant yourself write access to KEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\ACZ and all of its child objects.  If the key doesn't exist, create it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4276936876056406372?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4276936876056406372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4276936876056406372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4276936876056406372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4276936876056406372'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/10/virtual-ti-25-windows-7-compatibility.html' title='Virtual TI 2.5 Windows 7 compatibility fix'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8546026999774491824</id><published>2010-09-29T00:34:00.005-04:00</published><updated>2011-09-23T23:40:19.105-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ti-85'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>A quick summary of some TI-85 emulators</title><content type='html'>I tried a few TI-85 emulators, hoping that they would be more convenient than testing code on a real calculator.  Here are some observations using my version 9 TI-85 ROM:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wabbit.codeplex.com/releases/view/44625"&gt;Wabbitemu&lt;/a&gt; has a nice user interface.  The TI-86 skin looks great, and it's nice how I get visual feedback when I press buttons.  I don't mind that it's not a TI-85 skin.  However, there doesn't seem to be any way to transfer TI-85 files to the emulator, so it's useless for development.&lt;/li&gt;&lt;li&gt;&lt;a href="http://lpg.ticalc.org/prj_tilem/"&gt;TilEm&lt;/a&gt; 0.972 looks kind of ugly due to the scaled up low resolution skin, and the screen standing out too much.  Multiple attempts to transfer a backup to the calculator failed, and so I couldn't use it for running assembler programs.  I couldn't get 0.973 to display the skin.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ticalc.org/archives/files/fileinfo/84/8442.html"&gt;Virtual TI&lt;/a&gt; 2.5 has some problems, but it is usable.  In Windows 7, it has to be run as Administrator (or else I get a "Failed to set data for 'LastEmuVersion'" error). I've had some linking failures, but I was generally able to transfer a backup after resetting the calculator.  When transferring variables, I got annoying linking errors whenever a variable under that name exist, so I'm forced to delete variables before re-uploading them.  The skin looks worse than Wabbitemu, but it is a TI-85 skin which looks like my TI-85, and it looks a lot better than TilEm.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8546026999774491824?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8546026999774491824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8546026999774491824' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8546026999774491824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8546026999774491824'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/09/quick-summary-of-some-ti-85-emulators.html' title='A quick summary of some TI-85 emulators'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5706476353550029082</id><published>2010-09-26T15:22:00.009-04:00</published><updated>2010-09-26T17:59:54.150-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ti-85'/><category scheme='http://www.blogger.com/atom/ns#' term='z80'/><title type='text'>Usgard relocation table format</title><content type='html'>&lt;a href="http://www.ticalc.org/archives/files/fileinfo/19/1919.html"&gt;Usgard&lt;/a&gt; is the most recent and most capable assembly shell for the &lt;a href="http://www.ticalc.org/basics/calculators/ti-85.html"&gt;TI-85 graphing calculator&lt;/a&gt;.   It can run &lt;a href="http://www.ticalc.org/archives/files/fileinfo/19/1968.html"&gt;ZShell&lt;/a&gt; programs, but it also offers additional functionality which can be used when writing programs specifically for Usgard.  The primary advantages are relocation and functions for accessing TI-85 variables.&lt;br /&gt;&lt;br /&gt;On the TI-85, assembler programs are stored in string variables, and they execute in-place.  The initial location of the variable depends on the amount of free RAM,  and the variable can me moved when other variables are deleted.  Because of this ZShell code cannot rely on being at a fixed address.  Usgard's relocation almost removes this concern.  At the end of a program is a list which shows what locations in the code need to be updated with the current position.  The list contains two kinds of entries:  &lt;ul&gt;&lt;li&gt;a single byte, whose value is the offset of the current relocation position minus the offset of the previous relocation position.&lt;/li&gt;&lt;li&gt;a zero byte, followed by a 16 bit little endian absolute offset of the relocation position.&lt;/li&gt;&lt;/ul&gt;The single byte form is used whenever possible.  At the beginning, the previous relocation position is considered to be zero, and the single byte form can be used for relocations at absolute offsets 1 through 255.  The file is assembled starting at offset zero (".org 0") and this determines absolute offsets and initial values of locations requiring relocation.  All locations requiring relocation contain little endian 16 bit numbers.  The list of relocations is followed by a four byte header which consists of two 16 bit little endian values.  The first value is zero minus the number of bytes in the relocation table, and the second value is the number of relocation entries.&lt;br /&gt;&lt;br /&gt;To perform relocation, Usgard needs to add the current offset of the program to all of the locations requiring relocation.  When the program terminates, Usgard undoes these changes by subtracting the current offset from the locations.&lt;br /&gt;&lt;br /&gt;The only disadvantage of Usgard relocation is that the relocation table is created via a sort of kludge using an ancient toolchain which runs in MS-DOS.  All operands which require relocation need to be prefixed with an ampersand.  Before assembly, the code is preprocessed via SRCWIZ.EXE, which removes the ampersands and adds labels of R_ followed by a number, with the number starting at zero.  Then, this code is assembled, and STRING85.EXE creates the relocation table based on the listing produced by the assembler.  A batch file ties all this together and at the end replaces the files altered by SRCWIZ with the originals.&lt;br /&gt;&lt;br /&gt;Several programs in the Usgard directory were compiled with old Borland Pascal compilers.  They fail with "&lt;a href="http://en.wikipedia.org/wiki/Runtime_error_200"&gt;Runtime error 200&lt;/a&gt;", meaning divide by zero, because modern computers are too fast for Borland Pascal delay loop calibration.  Fortunately, this is easy to fix with &lt;a href="ftp://ftp.uwasa.fi/pc/turbopa7/tppatch.zip"&gt;TPPATCH&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Overall, the toolchain works, but I would prefer something more modern.  Maybe I'll try using the GNU assembler or even the &lt;a href="http://sdcc.sourceforge.net/"&gt;Small Device C Compiler (SDCC)&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5706476353550029082?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5706476353550029082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5706476353550029082' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5706476353550029082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5706476353550029082'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/09/usgard-relocation-table-format.html' title='Usgard relocation table format'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8187999522451130161</id><published>2010-07-07T12:28:00.013-04:00</published><updated>2010-07-12T15:43:35.791-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outdoors'/><category scheme='http://www.blogger.com/atom/ns#' term='ontario'/><category scheme='http://www.blogger.com/atom/ns#' term='fruit'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>A guide to some Southwestern Ontario fruit</title><content type='html'>I was born in Zadar, on the Croatian Adriatic coast.  Compared to fruit available there, a lot of fruit in Ontario is terrible.  It's kind of like listening to a 32kbps MP3 or PC speaker playback instead of a CD.  Often, major components of taste are barely noticeable or missing.  Some fruit can even be tasteless or a bad mix of unripe and rotten.  Sometimes, it's possible to obtain good fruit by buying it from roadside stands and picking your own.  Here I will list some of what I discovered.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Strawberries&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In spring, some very nice imported strawberries may be found in supermarkets.  Many Ontario strawberries are less sweet and tasty and/or more acidic.  However, I have repeatedly found good strawberries at Schoger Orchards (432 County Rd. 34, between Essex and Cottam, 519-839-4675) and &lt;a href="http://www.ontarioberries.com/farms/raymonts.htm"&gt;Raymont's Berries&lt;/a&gt;.  Usually, local strawberries are only available in June, but at Raymont's Berries, they're available from around mid May to Thanksgiving or beyond.  It seems pick your own is only available in late spring, but good prices on already picked flats and large baskets are available year round.&lt;br /&gt;&lt;br /&gt;Note that strawberries don't need to be fully dark red.  In fact, the really dark ones are overripe, less tasty, and more vulnerable to spoilage.  Those with a bit of lighter colour on them can still be ripe, sweet and tasty.  Also, note that while larger size makes picking easier, it doesn't guarantee good taste.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Sweet Cherries&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ontario cherries are usually less sweet, less tasty and more acidic.  In almost all cases, the imported cherries in the supermarket are better.  So far, I've found one exception:  &lt;a href="http://www.redbarnfruitfarm.com/"&gt;Red Barn&lt;/a&gt; near Arkona.  Unlike most Ontario cherries, theirs are very dark red and almost black.  The taste is not quite as amazing as the colour implies but it is good.  The orchard is also a pleasant place to pick, because of the beautiful large trees which provide shade.  Sturdy ladders are available, but not necessary, because many cherries can be picked from ground level.  At least two other nearby farms also have good black sweet cherries.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Sour Cherries&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've never found especially good sour cherries in Ontario.  They usually have very little taste other than sourness.  So far, the best I've found are in the Arkona area.  If you're there for picking sweet cherries, maybe also pick up some sour cherries, but don't expect too much.  The cherries can be used to make a nice pie, and free pitting is available if you don't want to pit cherries yourself.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Raspberries&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some very good raspberries may be found in Ontario.  They're available two time periods:  early summer and late summer through early fall.  However, not every place has raspberries during both periods.  I've found good raspberries at Schoger Orchards and Awesome Berries &amp;amp; Gardens (where Northville Rd. ends at Townsend Line, near Arkona).  The fall raspberries at Parks Blueberries were less tasty.&lt;br /&gt;&lt;br /&gt;Note that raspberries are quite easy to grow yourself  They're almost like a weed, spreading surprisingly fast via roots.  Also, note that like with strawberries, very dark raspberries are overripe.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Blueberries&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Blueberries may be the best fruit that Ontario has to offer.  They cay be sweet and intensely tasty.  Pick your own blueberries are available at &lt;a href="http://www.klassenblueberries.com/"&gt;Klassen Blueberries&lt;/a&gt; and &lt;a href="http://parksblueberries.com/"&gt;Parks Blueberries&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I prefer Parks, because I've had a more consistently good experience with their blueberries.  At Parks, you get a choice of up to four different varieties.  I usually chose Bluecrop and I also like Reka.&lt;br /&gt;&lt;br /&gt;At Klassen, there was never any choice in what variety to pick, and the blueberries were acidic and less tasty early in the season.  However, later on I also found good blueberries at Klassen, and Klassen usually had a longer picking season.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Peaches&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ontario is definitely capable of producing very good peaches.  Unfortunately, such peaches are very rarely available.  It seems like most farms pick unripe peaches and store them far too long.  I've never seen pick your own peaches because peaches are too delicate.  Considering all of this, it's probably better to buy peaches in a supermarket.  If you want the best peaches, you need your own peach tree.&lt;br /&gt;&lt;br /&gt;It seems that smell is a the best predictor for peach quality.  Seek sweet peach smells and avoid acidic unripe smells or unpleasant subtle rot smells.  In terms of colour, ignore the red, because even unripe peaches can be very red.  Instead, check to see that the other parts are yellow or even yellow-orange and definitely not green.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Apples&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ontario can produce excellent apples.  My favourite place for picking is &lt;a href="http://www.thiessenorchards.com/"&gt;Thiessen Orchards&lt;/a&gt;.  They have plenty of varieties available in their large orchard.  My favourites are Royal Gala and Honey Crisp.  I used to like Golden Delicious, but apples from their current trees are less delicious than the ones I remember.  In general, it seems that varieties which produce a smaller quantity produce more delicious apples.  Note that while apple picking is easier and less time consuming because of the smaller size, that also means you save less money by picking your own.&lt;br /&gt;&lt;br /&gt;Early apples are available starting around midsummer.  They're usually sour, less sweet and with a less appealing texture than the familiar apples.  However, around that time their freshness can make up for their inferiority.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Grapes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ontario grapes are often small, with tough skin and large seeds.  This results in a lot of tough material, and relatively little of the desirable juicy flesh.  Fortunately, it's possible to find seedless concord grapes which lack this problem. I highly recommend them, because they are very sweet and tasty.  The taste contains some strong components which are not found in typical warm climate grapes in supermarkets, but I like those components.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8187999522451130161?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8187999522451130161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8187999522451130161' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8187999522451130161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8187999522451130161'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/07/guide-to-some-southwestern-ontario.html' title='A guide to some Southwestern Ontario fruit'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1985407570134728362</id><published>2010-06-23T15:31:00.011-04:00</published><updated>2011-09-23T23:40:18.886-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='repair'/><category scheme='http://www.blogger.com/atom/ns#' term='dell'/><category scheme='http://www.blogger.com/atom/ns#' term='inspiron'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Dell KD476 battery disassembly</title><content type='html'>I just got a replacement battery for my Dell Inspiron 6400 laptop.  The price was so good that I couldn't justify an attempt to replace the cells in my old battery.   However, I was still curious about what's inside.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MsBAWuRvRZw/TCJjK5RjLMI/AAAAAAAADNc/z9OpsGDz2BQ/s1600/P6230096.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 152px;" src="http://3.bp.blogspot.com/_MsBAWuRvRZw/TCJjK5RjLMI/AAAAAAAADNc/z9OpsGDz2BQ/s400/P6230096.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486056334914956482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MsBAWuRvRZw/TCJjLf9oQ1I/AAAAAAAADNk/9rG07lqRPxc/s1600/P6230090-blog.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 143px;" src="http://2.bp.blogspot.com/_MsBAWuRvRZw/TCJjLf9oQ1I/AAAAAAAADNk/9rG07lqRPxc/s400/P6230090-blog.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5486056345300386642" /&gt;&lt;/a&gt;&lt;br /&gt;The case consists of two halves: the bottom, which serves as part of the bottom of the laptop, and the top, which slides over the bottom and covers the rest of the battery.  The printing on the top is actually a sticker.  It may be removed to see the cells, but it does not provide useful access to the battery.  In order to gain access, the two halves of the case need to be separated.  This is difficult because the bottom slides over the top with considerable overlap, and that overlap is glued together.  I decided to carefully pry apart the overlap.  I started prying the edges of the bottom away from the top (sideways) using a blade.  Once more space was available, I pried apart the overlap using a screwdriver.  This did cause a few cracks in the sides of the base and some damage to the overlapping part of the top, but the result is acceptable.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MsBAWuRvRZw/TCJmfCol5jI/AAAAAAAADNs/rPjCY8VXNf8/s1600/P6230097.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 242px;" src="http://2.bp.blogspot.com/_MsBAWuRvRZw/TCJmfCol5jI/AAAAAAAADNs/rPjCY8VXNf8/s400/P6230097.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486059979559790130" /&gt;&lt;/a&gt;&lt;br /&gt;Here you can see the internals of the battery.  The cells are connected in parallel in groups of three, and then the three groups are connected in series.  At this point, it's possible to measure the voltage of individual groups of cells.  The right two groups measure 4.09V and 4.08V, while the left group measures -0.92V.  Those measurements imply the right two groups are fully charged and the left group is bad.&lt;br /&gt;&lt;br /&gt;The cells are labelled LGDB118650.  The number and size make me think they are 18650 cells, just like in many other laptops.  At this point, I could replace cells or maybe even build a 6 cell battery out of this 9 cell battery.  However, I don't know if the protection circuit needs to be reset using special software.&lt;br /&gt;&lt;br /&gt;The protection circuit consists of two circuit boards wrapping around a corner.  One board, which I shall call the power board, contains the connector, &lt;a href="http://www.toshiba.com/taec/components2/Datasheet_Sync//78/2896.pdf"&gt;protection switch MOSFETs&lt;/a&gt; and fuses.  It is glued to the case with some hard silicone behind the connector.  The silicone can be pried away from the case to free the board.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MsBAWuRvRZw/TCJudz-w6iI/AAAAAAAADN0/Yja2nPidAJU/s1600/P6230100.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 144px;" src="http://4.bp.blogspot.com/_MsBAWuRvRZw/TCJudz-w6iI/AAAAAAAADN0/Yja2nPidAJU/s400/P6230100.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486068754539407906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MsBAWuRvRZw/TCJuep5_4FI/AAAAAAAADN8/1eSsp7KHKVw/s1600/P6230112.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 52px;" src="http://2.bp.blogspot.com/_MsBAWuRvRZw/TCJuep5_4FI/AAAAAAAADN8/1eSsp7KHKVw/s400/P6230112.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486068769014931538" /&gt;&lt;/a&gt;&lt;br /&gt;The other board, which I shall call the control board, contains a lot more components.  It also has the 5 LED charge state bar graph along one side.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MsBAWuRvRZw/TCJvE08TVBI/AAAAAAAADOM/yEMDGyeIeEw/s1600/P6230106.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 133px;" src="http://3.bp.blogspot.com/_MsBAWuRvRZw/TCJvE08TVBI/AAAAAAAADOM/yEMDGyeIeEw/s400/P6230106.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486069424812413970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MsBAWuRvRZw/TCJvEbAKF3I/AAAAAAAADOE/0TTDak4stXo/s1600/P6230128.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 119px;" src="http://4.bp.blogspot.com/_MsBAWuRvRZw/TCJvEbAKF3I/AAAAAAAADOE/0TTDak4stXo/s400/P6230128.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5486069417849263986" /&gt;&lt;/a&gt;&lt;br /&gt;Among other things, the control board has a &lt;a href="http://focus.ti.com/lit/ds/symlink/bq29311.pdf"&gt;bq29311 protection IC&lt;/a&gt; and a bq20857 IC which seems to be the controller.  The latter may be a problem when replacing cells.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1985407570134728362?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1985407570134728362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1985407570134728362' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1985407570134728362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1985407570134728362'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/06/dell-kd476-battery-disassembly.html' title='Dell KD476 battery disassembly'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_MsBAWuRvRZw/TCJjK5RjLMI/AAAAAAAADNc/z9OpsGDz2BQ/s72-c/P6230096.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2755027225452410906</id><published>2010-06-08T13:05:00.004-04:00</published><updated>2011-09-23T23:40:18.912-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='mouse'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Microsoft Wheel Mouse Optical button switch replacement</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MsBAWuRvRZw/TA54mzT5W_I/AAAAAAAADNU/pAl8fWOruWI/s1600/P6080351.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 299px;" src="http://1.bp.blogspot.com/_MsBAWuRvRZw/TA54mzT5W_I/AAAAAAAADNU/pAl8fWOruWI/s400/P6080351.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5480450404560493554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The left button switch on my Microsoft Wheel Mouse Optical started failing.  The button did not turn on and off at the point where it clicked; more pressure was needed.  This led to failed clicks and unintended double clicks.&lt;br /&gt;&lt;br /&gt;The fix was simple.  While I didn't have the exact same switch, a larger switch used in many other mice fit perfectly.  All I had to do was remove an extra (normally closed) pin from the switch.  Before closing the mouse, I also lubricated the wheel to improve the feel and reduce noise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2755027225452410906?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2755027225452410906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2755027225452410906' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2755027225452410906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2755027225452410906'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/06/microsoft-wheel-mouse-optical-button.html' title='Microsoft Wheel Mouse Optical button switch replacement'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MsBAWuRvRZw/TA54mzT5W_I/AAAAAAAADNU/pAl8fWOruWI/s72-c/P6080351.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5215541782442854134</id><published>2010-05-27T13:03:00.003-04:00</published><updated>2011-09-23T23:44:29.826-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><title type='text'>Yokohama YK520 tire sidewall cracking</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MsBAWuRvRZw/S_6mVKgeVKI/AAAAAAAADMI/u-NzgZNNmXs/s1600/P5070417.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://3.bp.blogspot.com/_MsBAWuRvRZw/S_6mVKgeVKI/AAAAAAAADMI/u-NzgZNNmXs/s400/P5070417.JPG" alt="" id="BLOGGER_PHOTO_ID_5475997079457125538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These Yokohama YK520 tires were manufactured and purchased in 2008.  In spring 2010 I noticed sidewall cracks in the most central part of the outer sidewall.  There was this worryingly big crack, another longer but narrower crack on another tire, and a lot of tiny cracks (or crazing) on all tires.  The big crack went all the way through the top layer of rubber, revealing an undamaged black layer underneath.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5215541782442854134?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5215541782442854134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5215541782442854134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5215541782442854134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5215541782442854134'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/05/yokohama-yk520-tire-sidewall-cracking.html' title='Yokohama YK520 tire sidewall cracking'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_MsBAWuRvRZw/S_6mVKgeVKI/AAAAAAAADMI/u-NzgZNNmXs/s72-c/P5070417.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3190646318935940486</id><published>2010-05-16T22:47:00.005-04:00</published><updated>2011-09-23T23:40:18.931-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Putting 25 fps progressive video on an NTSC DVD</title><content type='html'>I recently did some research on how to put 25 fps progressive PAL video on an NTSC DVD.  Two things became clear quickly:  &lt;a href="http://neuron2.net/dgpulldown/dgpulldown.html"&gt;DGPulldown&lt;/a&gt; is the best way to deal with the frame rate conversion, and &lt;a href="http://www.bitburners.com/hc-encoder/"&gt;HCenc (HC Encoder)&lt;/a&gt; is the best free MPEG-2 encoder.&lt;br /&gt;&lt;br /&gt;Those are just two parts of the overall process.  There are also other parts, such as resizing, encoding audio and authoring the DVD.  Various software packages automate the whole process.  I tried out a few of the packages which come with HCenc and DGPulldown.  I was disappointed with most.  The best package was &lt;a href="http://sites.google.com/site/favcfavc/"&gt;FAVC&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;FAVC is easy to use and reasonably fast, and it produced good quality video.  There were only a few minor issues:  it encoded with "*AUTOGOP 15" which could lead to a problem after applying DGPulldown, and when testing the "Play all" menu option in Windows Media Player 12, it was only possible to get back to the menu from the first title.  Fortunately, it easy to fix some issues and make changes with FAVC.  Just stop the process when HCenc starts, edit configuration files, and re-run "Title.bat".&lt;br /&gt;&lt;br /&gt;It's possible to create a better and more customized menu using &lt;a href="http://download.videohelp.com/gfd/"&gt;GUI for dvdauthor/MuxMan&lt;/a&gt;.  That program can be used to continue from the audio and video files created by FAVC.  I decided not to use it because of the added complexity and because the "Play all" button worked on my DVD player.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3190646318935940486?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3190646318935940486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3190646318935940486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3190646318935940486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3190646318935940486'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/05/putting-25-fps-progressive-video-on.html' title='Putting 25 fps progressive video on an NTSC DVD'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-6370530133647355375</id><published>2010-03-12T01:27:00.005-05:00</published><updated>2011-09-23T23:40:19.021-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>An easy way to enable and disable the second monitor in Windows 7</title><content type='html'>Both Screen Resolution (desk.cpl) part of Windows 7 Control Panel and NVIDIA Control Panel offer a way to enable and disable a secondary monitor.  However, they're annoying.  It takes too many clicks, and there is a confirmation prompt which cannot be disabled.  There is 3rd party software for this, but installing software for this seems excessive, and paying for it seems ridiculous.  The OS and/or display adapter drivers should make this easy.&lt;br /&gt;&lt;br /&gt;Fortunately, there is an easy solution.  It appears under "Connect to a Projector" in the start menu and corresponds to "%windir%\system32\displayswitch.exe".   It can also be started using the Windows+P hotkey.  Best of all, it allows command line switches, which can be mapped to hotkeys via a utility like &lt;a href="http://www.bcheck.net/apps/hoe.htm"&gt;HoeKey&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Extend desktop across both displays:&lt;td&gt;displayswitch /extend&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Only use primary display:&lt;td&gt;displayswitch /internal&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Display same image on both:&lt;td&gt;displayswitch /clone&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Only use secondary display:&lt;td&gt;displayswitch /external&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-6370530133647355375?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/6370530133647355375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=6370530133647355375' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6370530133647355375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6370530133647355375'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/03/easy-way-to-enable-and-disable-second.html' title='An easy way to enable and disable the second monitor in Windows 7'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1396685973845042362</id><published>2010-03-10T15:45:00.005-05:00</published><updated>2011-09-23T23:44:29.819-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><title type='text'>Verified by Visa sucks</title><content type='html'>Last night I learned about another shortcoming of the &lt;a href="http://en.wikipedia.org/wiki/3-D_Secure"&gt;Verified by Visa&lt;/a&gt; program.  A single authentication allows the merchant to complete multiple transactions, including past transactions which were stopped by Verified by Visa.&lt;br /&gt;&lt;br /&gt;I had forgotten one aspect of my Verified by Visa password, and so I was unable to complete a &lt;a href="http://www.newegg.ca/"&gt;Newegg.ca&lt;/a&gt; order.  I didn't get any confirmation and the order wasn't listed under the list of orders, and so I assumed the order was aborted.  Then I reset my password and repeated the order.  After I completed the Verified by Visa authentication, the old order appeared in the list of orders and proceeded as if I had authorized it.  In fact, the single Verified by Visa authentication allowed four orders to proceed; each order had been split into two parts by Newegg.&lt;br /&gt;&lt;br /&gt;This is not security.  A Verified by Visa authentication does not prove consent for anything.&lt;br /&gt;&lt;br /&gt;(Yeah, I was able to quickly contact a Newegg customer service representative and void the order.  So, everything is ok.  The only consequence is decreased confidence in Newegg's website and Verified by Visa.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1396685973845042362?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1396685973845042362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1396685973845042362' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1396685973845042362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1396685973845042362'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/03/verified-by-visa-sucks.html' title='Verified by Visa sucks'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4989258079839668848</id><published>2010-03-01T22:35:00.004-05:00</published><updated>2011-09-23T23:40:18.967-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Notes on creating an OEM XP disc for an old IBM IntelliStation</title><content type='html'>&lt;ul&gt;&lt;li&gt;The computer had all the required files in C:\I386.  There was also the VALUEADD folder from the XP CD.&lt;/li&gt;&lt;li&gt;C:\I386\UNATTEND.TXT contained the key needed for an OEM pre-activated (SLP) install.  That's a better choice than the key on the sticker on the back, because activation not needed.  Microsoft provides instructions for &lt;a href="http://technet.microsoft.com/en-us/library/bb457078.aspx"&gt;preserving OEM pre-activation&lt;/a&gt;; basically, just use that key.&lt;/li&gt;&lt;li&gt;I verified the files in C:\I386 by comparing MD5 sums with files on an XP CD.  There were a few differences, but nothing suspicious.  Slipstreamed hotfixes could be identified by searching for the file and its version.  There was only one minor error in the files:  I386\WIN9XMIG\MAPI\DLL\MKNTFRMCACHE.EXE had been renamed to MKNTFR~1.EXE. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;SP3 can be slipstreamed onto the initial release (RTM) of XP without obvious errors, but some files won't be updated.  Because of this, I first slipstreamed SP2 and then SP3.  Because of widely reported problems with slipstreaming SP3 in Vista, I slipstreamed it in XP.&lt;/li&gt;&lt;li&gt;Drivers were available in C:\IBMTOOLS\DRIVERS and C:\DRIVERS.  The newest drivers were available from &lt;a href="http://www.ibm.com/systems/support/"&gt;IBM's web site&lt;/a&gt;, so I used those.&lt;/li&gt;&lt;li&gt;I stripped down the UNATTEND.TXT file to create WINNT.SIF file which partly automated the installation.  (When installing from a CD, the file must be called WINNT.SIF.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I was able to load mass storage drivers from a floppy.  Setup was then able to see the hard drive.  However, when copying files to the hard drive, I got a "setup cannot copy the file" error.  Eventually I &lt;a href="http://www.d-a-l.com/help/windows-xp-help/29558-setup-cannot-copy-file-iastor.html"&gt;found&lt;/a&gt; that the drivers need to be present in A:\$OEM$\TEXTMODE.  I wonder if this was because of WINNT.SIF options or it being OEM XP.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There are instructions on editing TXTSETUP.SIF to add mass storage drivers to the CD.  &lt;a href="http://www.msfn.org/board/topic/19792-textmode-massstoragedrivers-method/"&gt;A better way&lt;/a&gt; is to use WINNT.SIF and place the drivers in both \$OEM$\TEXTMODE and \I386\$OEM$\ on the CD.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4989258079839668848?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4989258079839668848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4989258079839668848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4989258079839668848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4989258079839668848'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/03/notes-on-creating-oem-xp-disc-for-old.html' title='Notes on creating an OEM XP disc for an old IBM IntelliStation'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7440678895988593935</id><published>2010-03-01T22:27:00.002-05:00</published><updated>2011-09-23T23:40:19.057-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Changing Windows 7 ICS IP</title><content type='html'>When Internet Connection Sharing (ICS) is enabled in Windows 7, the local IP address of the computer becomes 192.168.0.1.  However, that address isn't locked.  I was able to change it to 192.168.1.1 in the usual way (in "Internet Protocol Version 4" properties in the "Local Area Connection" properties.)  After this change, DHCP doesn't work right, but NAT works perfectly.  So, ICS can be used as an emergency replacement for a router when all the computers have statically assigned IP addresses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7440678895988593935?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7440678895988593935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7440678895988593935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7440678895988593935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7440678895988593935'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/03/changing-windows-7-ics-ip.html' title='Changing Windows 7 ICS IP'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-9209445638709788212</id><published>2010-03-01T22:12:00.003-05:00</published><updated>2011-09-23T23:40:19.124-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Missing .htc files cause a 404 for the whole page</title><content type='html'>Last night I was helping a friend fix a web page in Internet Explorer 8.0.  The problem was quite weird.  The page would load and display properly for a moment, but then Internet Explorer would display its "The webpage cannot be found" page.&lt;br /&gt;&lt;br /&gt;We found that this behaviour could be stopped by disabling "Binary and script behaviors" in the ActiveX section of security settings, or by disabling "friendly" HTTP error messages (in advanced settings). &lt;br /&gt;&lt;br /&gt;The JavaScript debugger could be used by pausing execution and then reloading the page, but this was not helpful.  The location where the 404 appeared changed a bit, and in any case, JavaScript didn't seem to do anything to cause a redirect.  JavaScript debugging ended up just being a waste of time.&lt;br /&gt;&lt;br /&gt;We eventually found that the problem was due to a missing .htc (&lt;a href="http://en.wikipedia.org/wiki/HTML_Components"&gt;HTML Components&lt;/a&gt;) file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-9209445638709788212?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/9209445638709788212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=9209445638709788212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/9209445638709788212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/9209445638709788212'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/03/missing-htc-files-cause-404-for-whole.html' title='Missing .htc files cause a 404 for the whole page'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7949154280823736418</id><published>2010-02-23T14:31:00.002-05:00</published><updated>2011-09-23T23:40:19.086-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Windows 7 does USB audio correctly</title><content type='html'>I wasn't too impressed with USB audio in Windows XP and Vista.  I had to manually switch between audio outputs, and I saw a few blue screens when unplugging USB audio device. &lt;br /&gt;&lt;br /&gt;USB audio finally works right in Windows 7.  When a USB audio device is plugged in, audio output switches to that device.  When the device is unplugged, audio output switches back.  I can even use my USB wireless headphones to listen to line in on the motherboard.  Most importantly of all, USB audio doesn't crash Windows 7.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7949154280823736418?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7949154280823736418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7949154280823736418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7949154280823736418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7949154280823736418'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/02/windows-7-does-usb-audio-correctly.html' title='Windows 7 does USB audio correctly'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4846438922101622440</id><published>2010-02-16T21:05:00.006-05:00</published><updated>2011-09-23T23:40:18.954-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Concatenating DVD titles using Avidemux and Ifoedit</title><content type='html'>To join VOB files in a single set (such as VTS_01_1.VOB and VTS_01_2.VOB), you can simply concatenate them using a utility like cat.  They are actually already concatenated on the DVD; they only appear separate in the filesystem because the standard limits file sizes to 1GB for compatibility purposes.&lt;br /&gt;&lt;br /&gt;For joining multiple VOB sets, &lt;a href="http://avidemux.org/"&gt;Avidemux&lt;/a&gt; seems like a pretty good choice.  An entire VOB set can be opened by opening just the first file.  (Avidemux asks if you want to index the file and append the other parts of the set.)  Then, other VOB sets can be appended using the Append option in the File menu.  Finally the basic video editing features in Avidemux can be used to remove duplicate or unwanted content.&lt;br /&gt;&lt;br /&gt;The resulting video can be put onto a new DVD via &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://www.ifoedit.com/"&gt;Ifoedit&lt;/a&gt;.  First, the audio and video need to be saved separately from Avidemux.  Then, the DVD authoring functionality of Ifoedit can transform this into files go in a VIDEO_TS folder.  Finally, the result can be burned using any DVD burning software which can burn video DVDs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;What doesn't work?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A lot of software in this area is annoying and/or broken.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DVD Shrink can easily put two titles on one DVD.  However, it can't create menus or join them into one title.  That makes navigation annoying.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If the VOBs are just concatenated, only the first title is playable.&lt;/li&gt;&lt;li&gt;VobEdit's "Join Clips" feature is useless here.  When joining files, it  gives each file its own VOB ID.  When Ifoedit creates the IFO files,  seeking only works within the first VOB ID.&lt;/li&gt;&lt;li&gt;Avidemux failed to index the VOB set that Ifoedit created.  The VOB set is progressive, but the Avidemux index says it's interlaced. It's easy to change "Image    : I" to "Image    : P" in the index file; I just wonder whether there's something wrong with the VOB set.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;MPEG Streamclip requires the MPEG-2 QuickTime component for preview.&lt;/li&gt;&lt;li&gt;VirtualDub and related programs can't save in MPEG-2 format.&lt;/li&gt;&lt;li&gt;Windows DVD would re-encode all the video even though it's already in the right format.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4846438922101622440?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4846438922101622440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4846438922101622440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4846438922101622440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4846438922101622440'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/02/concatenating-dvd-titles-using-avidemux.html' title='Concatenating DVD titles using Avidemux and Ifoedit'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1238841738367459167</id><published>2010-02-09T20:01:00.005-05:00</published><updated>2011-09-23T23:40:18.852-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Deleting a file called "nul" in Windows 7</title><content type='html'>I tried to use "&lt;a href="http://en.wikipedia.org/wiki/Device_file_system#Device_files"&gt;nul&lt;/a&gt;" instead of "&lt;a href="http://en.wikipedia.org/wiki/Device_file_system#Pseudo-devices"&gt;/dev/null&lt;/a&gt;" in Cygwin.  That created a file called "nul".  When I tried to delete the file in Explorer, I got an interesting "Invalid MS-DOS function" error:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MsBAWuRvRZw/S3IGQcbzhtI/AAAAAAAADLM/yc94r9_jWto/s1600-h/Delete+Nul.PNG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 221px;" src="http://1.bp.blogspot.com/_MsBAWuRvRZw/S3IGQcbzhtI/AAAAAAAADLM/yc94r9_jWto/s400/Delete+Nul.PNG" alt="" id="BLOGGER_PHOTO_ID_5436414579770099410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The file can be deleted (and otherwise manipulated) from Cygwin.  It can also be deleted from the Windows Command Prompt by prefixing its full path with "\\?\".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1238841738367459167?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1238841738367459167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1238841738367459167' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1238841738367459167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1238841738367459167'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/02/deleting-file-called-nul-in-windows-7.html' title='Deleting a file called &quot;nul&quot; in Windows 7'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MsBAWuRvRZw/S3IGQcbzhtI/AAAAAAAADLM/yc94r9_jWto/s72-c/Delete+Nul.PNG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8599038075412656942</id><published>2010-01-26T18:55:00.006-05:00</published><updated>2011-09-23T23:40:19.112-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Eclipse CDT incompatibility with Cygwin 1.7</title><content type='html'>&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; failed to detect the &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt; GCC toolchain.  Attempts to manually set the toolchain in project properties led to an error being displayed below the choice:  "The configuration support is not installed on the system".  This is because Eclipse gets Cygwin paths from the registry, and &lt;a href="http://www.cygwin.com/cygwin-ug-net/ov-new1.7.html"&gt;Cygwin 1.7 stopped storing them there&lt;/a&gt;.  To fix the problem, I added the paths to the registry using a .reg file:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;REGEDIT4&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2]&lt;br /&gt;"cygdrive prefix"="/cygdrive"&lt;br /&gt;"cygdrive flags"=dword:00000022&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/]&lt;br /&gt;"native"="C:\\cygwin"&lt;br /&gt;"flags"=dword:0000000a&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/bin]&lt;br /&gt;"native"="C:\\cygwin\\bin"&lt;br /&gt;"flags"=dword:0000000a&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/usr/lib]&lt;br /&gt;"native"="C:\\cygwin\\lib"&lt;br /&gt;"flags"=dword:0000000a&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Customize the "native" values to point to your cygwin directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8599038075412656942?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8599038075412656942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8599038075412656942' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8599038075412656942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8599038075412656942'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/01/eclipse-incompatibility-with-cygwin-17.html' title='Eclipse CDT incompatibility with Cygwin 1.7'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-267827496152611105</id><published>2010-01-21T23:48:00.008-05:00</published><updated>2010-01-24T18:56:44.101-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HPLIP'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><title type='text'>Compiling HPLIP in Windows using Cygwin</title><content type='html'>Windows drivers for the &lt;a href="http://h10010.www1.hp.com/wwpc/ca/en/sm/WF06b/12144670-12145036-12145038-12145038-78400142-78400150-78400166.html"&gt;HP Color LaserJet 2840 All-in-One Printer&lt;/a&gt; are a bloated piece of garbage.  Scanning over the network doesn't work, and downloadable drivers only offer printing support for 64-bit versions of Windows.  The potentially decent Windows driver alternatives may be to only use the all-in-one for printing or connect the printer via USB to a computer running Windows 7.&lt;br /&gt;&lt;br /&gt;Via &lt;a href="http://hplipopensource.com/"&gt;HPLIP (HP Linux Imaging and Printing)&lt;/a&gt;, Hewlett-Packard provides Linux drivers for many HP printers and all-in-one devices.  The &lt;a href="http://h10010.www1.hp.com/wwpc/ca/en/sm/WF06b/12144670-12145036-12145038-12145038-78400142-78400150-78400166.html"&gt;2840 is fully supported&lt;/a&gt;.  These drivers consist of applications and dynamically linked libraries which can work in &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt; in Windows  The process of compiling them is not straightforward, but it's certainly not impossible.  Here I will concisely describe how to compile a lite version of HPLIP with scanning and printing support.&lt;br /&gt;&lt;br /&gt;First, note the dependencies that are listed in the &lt;a href="http://hplipopensource.com/hplip-web/install/manual/distros/other.html"&gt;manual installation page&lt;/a&gt;.   Some of these, (such as gcc, libjpeg and libcrypto) are standard Cygwin packages.  They can simply be installed via the setup program.  That is the easy part.  The next step is compiling the dependencies.  The following instructions list the important points (such as problems and workarounds) and omit the obvious things (such as running make and "make install").  They place everything under /opt/hplip, to keep things tidy and somewhat portable.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://net-snmp.sourceforge.net/download.html"&gt;Net-SNMP&lt;/a&gt; 5.5&lt;br /&gt;&lt;br /&gt;HPLIP seems to only require a stripped-down version of Net-SNMP; basically only the library is needed.  Compiling only the needed parts simplifies things and avoids some issues:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure --prefix=/opt/hplip --disable-agent --disable-applications --with-perl-modules=no --disable-embedded-perl&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The entire agent subdirectory is not needed; remove it from SUBDIRS in the generated top level Makefile.&lt;br /&gt;&lt;br /&gt;Windows DLLs can't have undefined symbols, and because of this libtool normally requires a -no-undefined switch to build shared libraries in Windows.  In in the Cygwin section of func_mode_link () in libtool uncomment the allow_undefined=no line and comment out the yes line.  Note comments explaining the issue.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cups.org/"&gt;CUPS&lt;/a&gt; (1.4.2)&lt;br /&gt;&lt;br /&gt;Even the network scanner driver depends on CUPS.  Fortunately, CUPS is easy to compile.  The only problem is that the rules for generating shared libraries are for Unix only.  One could add Cygwin-specific rules or set up the project for Automake and Libtool, but it's far simpler to just disable shared libraries:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LIBS=-lz ./configure --prefix=/opt/hplip --disable-shared --with-cups-group=None&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After CUPS is installed, create an administration password with "lppasswd -g admin -a root" and change AuthType to BasicDigest in /opt/hplip/etc/cups/cupsd.conf.  The administration interface is at http://localhost:631/ and https://localhost:631/.  Note that you don't need to let cupsd through your Windows firewall to access the administration interface on localhost.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sane-project.org/"&gt;SANE&lt;/a&gt; (sane-backends-1.0.20)&lt;br /&gt;&lt;br /&gt;This is easiest to build.  I simply configured it using:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./configure --prefix=/opt/hplip --with-group=None --disable-ipv6&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;When attempting to run "saned -d" before, I got "invalid fd in set, attempting to re-bind" errors.  I think disabling IPv6 fixed that.  In any case, I don't need IPv6.&lt;br /&gt;&lt;br /&gt;While building tools/sane-desc, I got missing include file errors the first time.  Surprisingly, retrying fixed that error.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hplipopensource.com/hplip-web/install/manual/download.html"&gt;HPLIP&lt;/a&gt; (3.9.12)&lt;br /&gt;&lt;br /&gt;If you get a .run file, you can get a .tar.gz by starting with the 0x1F byte after the shell script.  The contents of the resulting tar.gz are not all in one directory, like with most software.  That means you need to create a new directory, change to it and extract there. You can also download a .tar.gz from HP. At this point you definitely need the dependencies, so add /opt/hplip/bin to the path and use CPPFLAGS and LDFLAGS:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CPPFLAGS=-I/opt/hplip/include LDFLAGS=-L/opt/hplip/lib LIBS="-lssl -lz" ./configure --prefix=/opt/hplip --enable-hpijs-only-build=no --enable-hpijs-install=no --enable-gui-build=no --enable-dbus-build=no --enable-cups-drv-install=yes --with-cupsbackenddir=/opt/hplip/lib/cups/backend --with-cupsfilterdir=/opt/hplip/lib/cups/filter --enable-qt4=no --enable-lite-build&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After this, the generated libtool again needs to be fixed. Under the "libtool link mode" comment, uncomment "allow_undefined=no" and comment out "allow_undefined=yes".  In prnt/hpcups/ErnieFilter.cpp, ensure that math.h is included; remove the conditional around the include.&lt;br /&gt;&lt;br /&gt;After "make install" copy data/models/models.dat to /opt/hplip/share/hplip/data/models/models.dat, or maybe move the whole data directory.  Also, move /opt/hplip/lib/bin/cygsane-hpaio-1.dll to /opt/hplip/lib/sane/.  Then, add a hpaio line to /opt/hplip/etc/sane.d/dll.conf.  You can comment out all the other lines in that dll.conf and remove /etc/sane.d and the dll.conf file found there.  The only file that remains outside of /opt/hplip is /etc/hp/hplip.conf.  That path is hard-coded into several hplip files.&lt;br /&gt;&lt;br /&gt;Finally, it's time to configure CUPS.  You can create a URI for your printer by probing it with hp-mkuri.  For example "hp-mkuri -i 1.2.3.4" would give you something like hp:/net/HP_Color_LaserJet_2840?ip=1.2.3.4 if successful.  When adding a printer, choose HPLIP and enter that URI.  You can find your PPD file in /opt/hplip/share/ppd/HP/ and with the 2840, CUPS can retrieve settings from the printer (it just takes a while).  At that point, you can print a test page.&lt;br /&gt;&lt;br /&gt;At this point, scanning should work.  Scanning from the command line via &lt;a href="http://www.sane-project.org/man/scanimage.1.html"&gt;scanimage&lt;/a&gt; does not need saned running because it uses the backend directly.  The output goes to standard output, so be sure to redirect it.  Scanning from a GUI is possible via &lt;a href="http://www.xsane.org/xsane-win32.html"&gt;xsane-win32&lt;/a&gt; and there even TWAIN &lt;a href="http://www.sane-project.org/sane-frontends.html"&gt;frontends for SANE&lt;/a&gt;.  Note that although saned is designed to run under inetd, it can be run temporarily via "/opt/hplib/sbin/saned -d".&lt;br /&gt;&lt;br /&gt;The HPLIP GUI is not available and faxing isn't supported.  The &lt;a href="http://wiki.lyx.org/LyX/LyXOnCygwin"&gt;LyX  instructions&lt;/a&gt; for compiling Qt in Cygwin seem promising, but I may not work on that anytime soon because I don't need the fax features and I expect the GUI would be bloated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-267827496152611105?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/267827496152611105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=267827496152611105' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/267827496152611105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/267827496152611105'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2010/01/compiling-hplip-in-windows-using-cygwin.html' title='Compiling HPLIP in Windows using Cygwin'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4363511678132715196</id><published>2009-12-31T16:16:00.001-05:00</published><updated>2009-12-31T16:16:43.440-05:00</updated><title type='text'>PH61153 video selector switch disassembly</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Disassembly Instructions&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Remove the silver front.  It is only held by clips.  Push inwards on the black part near the silver while pulling the silver part away.  Start where it's easiest and go from there.  You can put folded up paper in the gap to keep it open.  The front will remain attached by cables.&lt;/li&gt;&lt;li&gt;Separate the black parts of the case.  Once the front is off, these clips are obvious.&lt;/li&gt;&lt;li&gt;Unplug the cables going to the front from the main circuit board.&lt;/li&gt;&lt;li&gt;Unscrew the small circuit board for the front input, and unplug its cable from the main board.&lt;/li&gt;&lt;li&gt;Unscrew the screws holding the main board and the screws holding RCA connectors to the back.  Remove the main board&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Photos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The top of the main board shows the through-hole components and the back of the RCA jack circuit board.  The socketed chip is a &lt;a href="http://www.emc.com.tw/twn/8bit_prod_dsc.asp?gid=&amp;amp;tid=000005&amp;amp;tt=8bit_gpio_ds&amp;amp;nn=OTP+GPIO+Type+MCU+Series"&gt;EM78P156EL microcontroller&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MsBAWuRvRZw/Sz0NsOkK8dI/AAAAAAAADK0/tbsfm1LbFyQ/s1600-h/PC310013.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://2.bp.blogspot.com/_MsBAWuRvRZw/Sz0NsOkK8dI/AAAAAAAADK0/tbsfm1LbFyQ/s400/PC310013.JPG" alt="" id="BLOGGER_PHOTO_ID_5421504579899158994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The bottom shows the surface mount components.  The chips are 4000-series CMOS.  The three along the bottom are &lt;a href="http://www.unisonic.com.tw/datasheet/4052.pdf"&gt;4052L&lt;/a&gt;.  Each contains two four-channel analog multiplexers.  The chip above them is an &lt;a href="http://www.standardics.nxp.com/products/hef/datasheet/hef4053b.pdf"&gt;HEF4053B&lt;/a&gt;.  It contains three two-channel analog multiplexers.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MsBAWuRvRZw/Sz0O4bKrPkI/AAAAAAAADK8/ZGwleIjTswI/s1600-h/PC310004.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://4.bp.blogspot.com/_MsBAWuRvRZw/Sz0O4bKrPkI/AAAAAAAADK8/ZGwleIjTswI/s400/PC310004.JPG" alt="" id="BLOGGER_PHOTO_ID_5421505888951942722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the rest of the device.  Note how except for the RF modulator, there's no shielding.  Even the video signal from the front panel connects via ordinary wires.  Nevertheless, the switch does not seem to degrade video quality.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MsBAWuRvRZw/Sz0TWHLSqNI/AAAAAAAADLE/8JQNdxK08vA/s1600-h/PC310019.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 377px;" src="http://2.bp.blogspot.com/_MsBAWuRvRZw/Sz0TWHLSqNI/AAAAAAAADLE/8JQNdxK08vA/s400/PC310019.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5421510797028403410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Story&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I just got a PH61153 video selector switch.  It has four inputs, supports composite and S-video and stereo audio and has an RF modulator.  The best part is that it can automatically switch to the highest priority input which has a video signal, and so I can basically hide it and forget about it.&lt;br /&gt;&lt;br /&gt;I got it from &lt;a href="http://www.shopxscargo.com/"&gt;XSCargo&lt;/a&gt;.  They were the only local store that had it in stock, and they certainly had what seemed like a good price (&lt;a href="http://www.shopxscargo.com/product_catalogue/cat_product_details.asp?category_id=6&amp;amp;product_code=25885&amp;amp;sub_category_1_id=12&amp;amp;category=Accessories"&gt;$19.95&lt;/a&gt;).  Unfortunately, the low price only reflected the low quality.  First I noticed that that Philips wasn't mentioned anywhere.  Then I noticed that most of the them were badly scratched and scuffed, and one had something rattling around inside.  Finally, when I bought one and brought it home, I found that one of the inputs didn't work.  The switch never auto-switched to the first input, and if I manually switched to it I got no composite video or audio.&lt;br /&gt;&lt;br /&gt;I didn't like the idea of going back to XSCargo.  It was a long drive, and the replacement could again have some issue.  At this point, I didn't want to open up the switch and so I first measured resistance at the inputs.  Unlike the other inputs, the broken input had an open circuit on all three RCA jacks.  Based on this, I concluded that the problem was probably a bad connection, and not a burned out part.  So, I decided to open up the device.&lt;br /&gt;&lt;br /&gt;The problem turned out to be a crack on the back circuit board.  The RCA connectors on the back are all mounted the back circuit board, and the S-video connectors are mounted on the main board.  The back circuit board has large square holes for the S-video connectors.  As a result, it is only connected to the main board via four fingers.  One of these fingers had cracked.  That's not surprising when you consider how some RCA connectors can be very tight and hard to fully seat or unplug.  It was an easy fix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4363511678132715196?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4363511678132715196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4363511678132715196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4363511678132715196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4363511678132715196'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/ph61153-video-selector-switch.html' title='PH61153 video selector switch disassembly'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_MsBAWuRvRZw/Sz0NsOkK8dI/AAAAAAAADK0/tbsfm1LbFyQ/s72-c/PC310013.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3386184705600847814</id><published>2009-12-26T15:50:00.002-05:00</published><updated>2009-12-26T16:03:59.459-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Old Avant Browser user agent causes sites to redirect to mobile versions in IE</title><content type='html'>Avant Browser (an &lt;a href="http://en.wikipedia.org/wiki/Internet_Explorer_shell"&gt;Internet Explorer shell&lt;/a&gt;) can come back to haunt you.  When uninstalling, it leaves behind its addition to the Internet Explorer User-agent (in this case "Avant Browser [avantbrowser.com]").  That addition causes some sites to redirect to the mobile versions in Internet Explorer 8.  In some cases, it is impossible to view the normal version of the websites because even deep links redirect to the mobile homepage.  To fix the problem, remove the User-agent addition.  You can search for "Avant" in regedit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3386184705600847814?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3386184705600847814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3386184705600847814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3386184705600847814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3386184705600847814'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/old-avant-browser-user-agent-causes.html' title='Old Avant Browser user agent causes sites to redirect to mobile versions in IE'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8495207231838187426</id><published>2009-12-24T17:59:00.005-05:00</published><updated>2009-12-24T18:06:34.706-05:00</updated><title type='text'>Cygwin 1.7 upgrade breaks Perl due to missing libssp0 dependency</title><content type='html'>After upgrading Cygwin to &lt;a href="http://cygwin.com/ml/cygwin-announce/2009-12/msg00027.html"&gt;version 1.7&lt;/a&gt;, Perl failed with the following error message:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/bin/perl.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then I ran "cygcheck /usr/bin/perl" and saw a bunch of these errors:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cygcheck: track_down: could not find cygssp-0.dll&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I then installed libssp0 (current version 4.3.4-3), and Perl worked properly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8495207231838187426?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8495207231838187426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8495207231838187426' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8495207231838187426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8495207231838187426'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/cygwin-17-upgrade-breaks-perl-due-to.html' title='Cygwin 1.7 upgrade breaks Perl due to missing libssp0 dependency'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-6396550947085425914</id><published>2009-12-23T21:36:00.013-05:00</published><updated>2009-12-24T00:19:34.926-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>I saw the Torch today</title><content type='html'>I used to think that the Olympics are a part of human cultural heritage  and that they're meant to be an expression of certain ideals.  Starting with the 2008 Beijing Olympics I learned more about the business aspects of the Olympics. What I learned looked bad.  I saw that the Olympics were being run like a corporation.  Ideals, individuals or even athletes seemed to be less important than sponsors and branding.  Basically, free speech and other freedoms are restricted to please the sponsors and control what people see.  This is not acceptable, and it's especially disappointing to see this happening in Canada.&lt;br /&gt;&lt;br /&gt;At first, I was planning to not see the &lt;a href="http://www.vancouver2010.com/olympic-torch-relay/"&gt;Torch&lt;/a&gt; this year.  What changed my mind was the thought that very many things are seriously messed up, and that I should focus more on recognizing the good parts and less on rejecting things because of bad parts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.panoramio.com/photo/30212166"&gt;&lt;img src="http://static.panoramio.com/photos/small/30212166.jpg" align=left width=240 height=180 hspace=5 vspace=5&gt;&lt;/a&gt;At first I contemplated seeing the Torch at &lt;a href="http://www.pc.gc.ca/eng/pn-np/on/pelee/index.aspx"&gt;Point Pelee  National Park&lt;/a&gt;, but I scheduled something else and I couldn't make it to Pt. Pelee on time.   So I ended up seeing the 2008 Vancouver Torch in &lt;a href="http://www.town.kingsville.on.ca/"&gt;Kingsville&lt;/a&gt;, Ontario, and that turned out quite well.  Plenty of people lined the streets in Kingsville, but it wasn't too crowded and everyone could get a close view of the Torch.  Before and afterwards, the entertainment was children singing Christmas songs, which was quite nice.&lt;br /&gt;&lt;br /&gt;This was the third Olympic Torch Relay I saw.  The other two were the &lt;a href="http://en.wikipedia.org/wiki/1984_Winter_Olympics"&gt;1984 Sarajevo&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/1988_Winter_Olympics"&gt;1988 Calgary&lt;/a&gt; Relays.  It's interesting how they keep getting bigger.  In late 1983, there was just the torchbearer and one or two cars, the 1988 Relay involved more vehicles, and finally in 2010 there was a whole mini-parade of vehicles for officials, sponsor displays and security.  Maybe that's another illustration of how the Olympics have strayed from what is really important, or maybe not.  I can't really complain about what I saw today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-6396550947085425914?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/6396550947085425914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=6396550947085425914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6396550947085425914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6396550947085425914'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/i-used-to-think-that-olympics-are-part.html' title='I saw the Torch today'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-9115310608758017693</id><published>2009-12-20T00:34:00.005-05:00</published><updated>2009-12-20T01:19:49.337-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='winamp'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Enabling UAC Virtualization so old plugins can save settings</title><content type='html'>Originally, Windows had no filesystem security, and applications could write data wherever they wanted.  Because of that old software often stores settings in the Windows directory or the application directory.  For example, old Winamp plugins store their settings into the plugin directory (typically C:\Program Files\Winamp\Plugins).  Starting with Vista, writing to those directories requires administrative privileges.  To allow old software to function correctly, Windows can redirect such accesses to a place within the user's profile folder (%userprofile%\AppData\Local\VirtualStore).  The same issues can exist with registry writes, and &lt;a href="http://msdn.microsoft.com/en-us/library/aa965884%28VS.85%29.aspx"&gt;Windows can also redirect those&lt;/a&gt;.  When an application is specifically designed for Vista or Windows 7, this redirection (called UAC Virtualization) is not needed and so it is disabled.&lt;br /&gt;&lt;br /&gt;This normally works so well that one doesn't need to know about it.  However, it fails when an application designed for Vista or Windows 7 loads old plugins.  For example, some old Winamp plugins cannot save settings.  Here are some solutions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Grant write access to the directory.&lt;/li&gt;&lt;li&gt;Delete the manifest resource from the executable using a registry editor.  However, some executables such as winamp.exe require the manifest resource.&lt;/li&gt;&lt;li&gt;Edit the manifest resource in the executable and remove the &lt;a href="http://msdn.microsoft.com/en-us/library/bb756929.aspx"&gt;trustInfo&lt;/a&gt; section from the manifest. This means removing text from "&amp;lt;trustinfo" to "&amp;lt;/trustinfo&amp;gt;".  It's best to use a resource editor, but you can overwrite the text with spaces in a hex editor.&lt;/li&gt;&lt;/ul&gt;Task Manager can tell you if UAC Virtualization is enabled: right click on the executable and look for the check mark by "UAC Virtualization".  This method can be used to change the setting, but I do not recommend it because it would have to be repeated every time the application is run.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-9115310608758017693?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/9115310608758017693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=9115310608758017693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/9115310608758017693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/9115310608758017693'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/enabling-uac-virtualization-so-old.html' title='Enabling UAC Virtualization so old plugins can save settings'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2117890830486081807</id><published>2009-12-17T21:48:00.003-05:00</published><updated>2009-12-17T22:09:58.753-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Changing Windows Live Messenger status via Windows messages from HoeKey</title><content type='html'>I use &lt;a href="http://www.bcheck.net/apps/hoe.htm"&gt;HoeKey&lt;/a&gt; for hotkeys.  I love how it's tiny and unobtrusive.  It's only using 128K of RAM now.  I change instant messaging status via HoeKey so statuses in multiple applications stay synchronized.  Here are the lines I use for Windows Live (formerly MSN) Messenger:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;=Msg|MSBLWindowClass|273|40166 ; WLM Available&lt;br /&gt;=Msg|MSBLWindowClass|273|40169 ; WLM Away&lt;br /&gt;=Msg|MSBLWindowClass|273|40168 ; WLM Busy&lt;br /&gt;=Msg|MSBLWindowClass|273|40210 ; WLM Sign out&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To use those lines, either put a hotkey identifier before the equals sign or append them to other hotkeys.  MSBLWindowClass is the window class of the Windows Live Messenger window.  273 means the message is &lt;a href="http://msdn.microsoft.com/en-us/library/ms647591%28VS.85%29.aspx"&gt;WM_COMMAND&lt;/a&gt;.  The 5 digit numbers correspond to wParam of the message and identifiers of entries on the File menu.  Text after the semicolon is an explanatory comment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Disclaimer:  I don't like Windows Live Messenger.  I just use it because it fully supports all the features of the protocol.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2117890830486081807?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2117890830486081807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2117890830486081807' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2117890830486081807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2117890830486081807'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/changing-windows-live-messenger-status.html' title='Changing Windows Live Messenger status via Windows messages from HoeKey'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4284428847059753072</id><published>2009-12-17T20:36:00.005-05:00</published><updated>2009-12-17T20:52:25.574-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><category scheme='http://www.blogger.com/atom/ns#' term='youtube'/><title type='text'>YouTube FLV files contain unique identifiers which could be used to find who downloaded a particular file</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Flash_video"&gt;FLV&lt;/a&gt; files which have been downloaded from &lt;a href="http://en.wikipedia.org/wiki/YouTube"&gt;YouTube&lt;/a&gt; have a unique identifier.  In several files I examined, the string "sourcedata" occurs at offset 0x10E and a unique alphanumeric ID is at offsets 0x11B through 0x125.  Presumably, these unique identifiers can be matched with information in YouTube logs in order to find the IP or user who downloaded the file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4284428847059753072?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4284428847059753072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4284428847059753072' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4284428847059753072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4284428847059753072'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/youtube-flv-files-contain-unique.html' title='YouTube FLV files contain unique identifiers which could be used to find who downloaded a particular file'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3172082722206873631</id><published>2009-12-13T14:51:00.004-05:00</published><updated>2009-12-13T15:15:13.059-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><title type='text'>Links in Windows are annoying</title><content type='html'>I just created a directory of photos for use with the Windows 7 desktop background slide show feature.  It consists of photos which I &lt;a href="http://www.panoramio.com/user/5539"&gt;uploaded to Panoramio&lt;/a&gt; or printed.  I used links so I didn't end up with multiple copies of photos.  Here are a few reasons why links in Windows are annoying:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To create links, one &lt;span style="font-weight: bold;"&gt;needs administrative privileges&lt;/span&gt; (eg. run command prompt as administrator).  This is stupid, especially for symbolic links.&lt;/li&gt;&lt;li&gt;When deleting a symbolic link from the command prompt or explorer, the link is deleted, as expected.  When deleting a photo while it is viewed via a symbolic link, the &lt;span style="font-weight: bold;"&gt;original photo is deleted&lt;/span&gt; and the &lt;span style="font-weight: bold;"&gt;link remains&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Hard links work in a more reasonable way.  However, when deleting a link, file &lt;span style="font-weight: bold;"&gt;permissions are changed&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3172082722206873631?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3172082722206873631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3172082722206873631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3172082722206873631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3172082722206873631'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/links-in-windows-are-annoying.html' title='Links in Windows are annoying'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5702917643128304990</id><published>2009-12-13T01:03:00.007-05:00</published><updated>2009-12-13T18:38:58.158-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='panoramio'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><title type='text'>Downloading photos, coordinates, titles and tags from Panoramio</title><content type='html'>I really like &lt;a href="http://www.panoramio.com/"&gt;Panoramio&lt;/a&gt;.  It's the main place where &lt;a href="http://www.panoramio.com/user/5539"&gt;I publicly share my photos&lt;/a&gt;.  Whenever I really like a photo and feel that it fits criteria for inclusion in Google Earth (via the Panoramio layer), I upload that photo to Panoramio.&lt;br /&gt;&lt;br /&gt;My main complaint about Panoramio is that I cannot export any information about my photos.  I've spent a significant amount of time and effort geotagging and tagging photos in Panoramio, and I cannot obtain any of that information.  Yesterday I decided to do something about this.&lt;br /&gt;&lt;br /&gt;I chose to do this from the command prompt using common GNU tools:  &lt;a href="http://www.gnu.org/software/bash/manual/bashref.html"&gt;bash&lt;/a&gt;, &lt;a href="http://www.gnu.org/software/wget/"&gt;wget&lt;/a&gt;, &lt;a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?grep"&gt;grep&lt;/a&gt;, &lt;a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?sed"&gt;sed&lt;/a&gt; and more.  There was an obvious simple first step:  downloading the photo index pages.  I noted that I had 27 pages, and then I used this bash command to get them all:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;for (( i = 1 ; i &amp;lt; 28 ; i++ )) ; do wget "--user-agent=Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" "http://www.panoramio.com/user/5539?comment_page=1&amp;amp;photo_page=$i" ; sleep 10 ; done&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Looking at the HTML source, I noticed lines containing photo ID numbers and titles.  Such information can be extracted by a simple regular expression:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;for (( i = 1 ; i &amp;lt; 28 ; i++ )) ; do sed -n "sX^.*h2&amp;gt;&amp;lt;a href=\"/photo/\([0-9]*\)\"&amp;gt;\([^&amp;lt;]*\)&amp;lt;.*\$X\1:\2Xp"  5539\?comment_page\=1\&amp;amp;photo_page\=$i ; done &amp;gt; photo2title.txt&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The tags were more tricky, because they were on multiple lines.  This required a simple sed program which joined the lines:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;for (( i = 1 ; i &amp;lt; 28 ; i++ )) ; do sed -n 's/^ *"\([0-9]*\)":\[/\1:/; t next; b ignore; :next; N; s/\]$//; t end; N; s/,$/,/; t next; :end; s/\&lt;br /&gt;//g; s/&amp;nbsp;&amp;nbsp;&amp;nbsp;*//g; s/"//g; p; :ignore;' 5539\?comment_page\=1\&amp;amp;photo_page\=$i ; done &amp;gt; photo2tags.txt&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The coordinates were not in the photo index pages however, and so I had to look for another source of information.  Obviously, I could just download all the web pages of all the specific photos, but I didn't really like that solution.  I went to view &lt;a href="http://www.panoramio.com/map/?user=5539"&gt;all of my photos in the map&lt;/a&gt; and then I opened the AdBlock Plus blockable items list.  The link from where the map gets its information was very obvious:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;http://www.panoramio.com/map/get_panoramas?order=upload_date&amp;amp;set=5539&amp;amp;size=thumbnail&amp;amp;from=0&amp;amp;to=24&amp;amp;minx=167.34375&amp;amp;miny=-58.26328705248601&amp;amp;maxx=11.953125&amp;amp;maxy=84.86578186731522&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After downloading that I noticed that I was getting the type of information I wanted, but I was getting only 24 entries.  I assumed it was due to the "to=24" part of the URL, so I changed that to the number of photos I had.  The number I got was three less than the number of photos.  Sure enough, three of my photos failed to appear in the map on Panoramio.  I &lt;a href="http://www.panoramio.com/forum/viewtopic.php?p=280034"&gt;reported this bug in the Panoramio forum&lt;/a&gt;, and went on with my project.  Extracting the coordinates wasn't hard.  I based the regular expression on the data for one photo which I pasted from get_panoramas.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sed 's/"photo_id": \([0-9]*\), "longitude": \(-\?[0-9.]*\), "height": [0-9]*, "width": [0-9]*, "photo_title": "[^"]*", "latitude": \(-\?[0-9.]*\),/~\1:\3,\2~/g; y/~/\&lt;br /&gt;/;' get_panoramas  | grep "^[0-9]*:" &amp;gt; photo2coords.txt&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If I didn't care about tags I could have avoided getting the photo index pages and started with get_panoramas output.  It would have been simpler, but I would have missed three photos and failed to notice a bug in Panoramio.  Since I knew about the three missing photos, I went to their photo pages, looked at the HTML source, and manually added the coordinates to photo2coords.txt.&lt;br /&gt;&lt;br /&gt;The only remaining data was the correspondence between photos on my hard drive and photos on Panoramio.  The data collected so far was not helpful.  I decided to get the original photos and match them up with local photos based on MD5 hashes.  I already had several files which listed all of my photo ID numbers, and it was trivial to download all the photos with wget.  I placed delays between the downloads to reduce the load on Panoramio.  At the end, I noticed one error in the wget output, and I manually downloaded that photo.&lt;br /&gt;&lt;br /&gt;Once I had the photos, MD5 hashes successfully found local locations of most of the photos.  The EXIF date and time of when the photo was taken found local locations of most of the rest.  Out of 646 photos, I only had to manually match up 12, which wasn't bad.  I'm not documenting the detailed matching procedure here.  One hint: the &lt;a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?join"&gt;join&lt;/a&gt; command is helpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5702917643128304990?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5702917643128304990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5702917643128304990' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5702917643128304990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5702917643128304990'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/downloading-photos-coordinates-titles.html' title='Downloading photos, coordinates, titles and tags from Panoramio'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-6439035247393514744</id><published>2009-12-10T10:59:00.009-05:00</published><updated>2010-12-12T00:47:05.482-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olympus'/><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='c-770'/><title type='text'>Fixing resolution of C-770 MPEG4 videos</title><content type='html'>My Olympus C-770 Ultra Zoom camera is supposed to record 640x480 MPEG4 videos.  However, some applications instead play the videos at 320x240.  For example, QuickTime 6.x and Xvid play the video at 640x480, while QuickTime 7.x and ffdshow play it at 320x240.&lt;br /&gt;&lt;br /&gt;My solution up to now was to play the videos using &lt;a href="http://haali.cs.msu.ru/mkv/"&gt;Haali Media Splitter&lt;/a&gt; for the .MP4 container and &lt;a href="http://www.koepi.info/"&gt;Xvid&lt;/a&gt; for decoding.  That resolved all the problems for me, but if I sent a file to someone else, they could still end up viewing the video at 320x240.  Now I've finally figured out what is wrong with the files themselves.&lt;br /&gt;&lt;br /&gt;I started out by compiling &lt;a href="http://code.google.com/p/mp4v2/"&gt;mp4v2&lt;/a&gt; in Cygwin.  This resulted in some errors, but just re-running make was enough to get the executables compiled.  Then I used "&lt;a href="http://mp4v2.googlecode.com/svn/doc/trunk/ToolGuide.html#TOC4"&gt;mp4file&lt;/a&gt; --dump" to examine the contents of the MP4 container.  It showed a 320x240 size in two places: the tkhd header for the video track and the stsd atom.  QuickTime 7.6.5 uses the tkhd size, and Mplayer 1.0rc1-3.4.2 uses the stsd size.  Changing both sizes to 640x480 should make the video always play at 640x480.&lt;br /&gt;&lt;br /&gt;After seeing 320x240 at two places in the file and not seeing 640x480, I was left wondering what was the actual resolution of the video.  It seems to be 640x480 based on several pieces of supporting evidence:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The videos are clearer when decoded at 640x480 than when decoded at 320x240 and scaled up.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Even when decoding at 320x240, Mplayer allocates a 640 wide YUV buffer with 320x240 chroma (which should be at half resolution).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If I extract the video stream using &lt;a href="http://mp4creator.sourceforge.net/"&gt;mp4creator&lt;/a&gt;, Mplayer plays the resulting MPEG4 ES stream at 640x480.  This is even true if extracting from an unaltered .MP4 file which plays at 320x240.&lt;/li&gt;&lt;/ul&gt;At this point, I was wondering how to change the tkhd and stsd resolution values.  The tkhd values may be changed via &lt;a href="http://mp4v2.googlecode.com/svn/doc/trunk/ToolGuide.html#TOC5"&gt;mp4track&lt;/a&gt; (from mp4v2), but I don't know what program can change the stsd values.  After finding that the values aren't protected by any sort of checksum and they occur at the same place in all of my videos, I decided to directly alter all the values without using a tool specifically designed for MP4 container files.  The changes which need to be made are:&lt;br /&gt;&lt;pre&gt;000000F0: 01 02&lt;br /&gt;000000F1: 40 80&lt;br /&gt;000000F4: 00 01&lt;br /&gt;000000F5: F0 E0&lt;br /&gt;000001B9: 01 02&lt;br /&gt;000001BA: 40 80&lt;br /&gt;000001BB: 00 01&lt;br /&gt;000001BC: F0 E0&lt;/pre&gt;This is the output of "&lt;a href="http://ss64.com/nt/fc.html"&gt;fc /b&lt;/a&gt;".  The first four are lines are tkhd and last four are stsd.   Note that the patch is simply changing obvious big endian values.&lt;br /&gt;&lt;br /&gt;Now the only problem was how to automatically change these values.  I thought I would be able to find a utility which takes "fc /b" or "cmp -l" output, verifies the original bytes and applies the changes.  However, I didn't find any simple utilities so I decided to create my own.  For fun, I created a &lt;a href="http://en.wikipedia.org/wiki/Sed"&gt;sed&lt;/a&gt; script which transforms "fc /b" output into a C program which performs the patch.  You can &lt;span style="font-weight:bold;"&gt;&lt;a href="http://dl.dropbox.com/u/16662598/Programs/C-770%20MP4%20resolution%20fix.zip"&gt;download it and the resulting Windows executable&lt;/a&gt;&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-6439035247393514744?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/6439035247393514744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=6439035247393514744' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6439035247393514744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/6439035247393514744'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/fixing-resolution-of-c-770-mpeg4-videos.html' title='Fixing resolution of C-770 MPEG4 videos'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3273927583022937466</id><published>2009-12-06T00:16:00.003-05:00</published><updated>2009-12-06T00:31:50.764-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Windows 7 can't always automatically update root certificates?</title><content type='html'>Today &lt;a href="http://secunia.com/vulnerability_scanning/personal/"&gt;Secunia PSI&lt;/a&gt; refused to run with the message: "an error occurred while verifying the security certificate".  Then I found that IE refused to show &lt;a href="https://secunia.com/"&gt;https://secunia.com&lt;/a&gt; because the certificate was "not issued by a trusted certificate authority".  Firefox did not have a problem with that webpage.  For some reason, IE did not recognize the "Thawte Server CA" certificate.  IE also refused to recognize &lt;a href="https://www.startssl.com/"&gt;StartSSL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This was really weird, because as far as I know, Windows 7 is supposed to automatically update root certificates.  Microsoft even &lt;a href="http://technet.microsoft.com/en-us/library/cc749331%28WS.10%29.aspx"&gt;explains how the process works in Vista&lt;/a&gt;.  My first thought was that my firewall was blocking the update, but that was not it.  Event log showed event 4100 from CAPI2, which is "Successful auto update retrieval of third-party root certificate".  The problem was event 4110:  "Failed to add certificate to Third-Party Root Certification Authorities store with error: A certificate chain could not be built to a trusted root authority."&lt;br /&gt;&lt;br /&gt;I manually downloaded and installed the &lt;a href="http://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/rootsupd.exe"&gt;latest root certificate update from Windows Update&lt;/a&gt;.  After that, everything works.  I'm just left wondering why I had to deal with this in the first place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3273927583022937466?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3273927583022937466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3273927583022937466' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3273927583022937466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3273927583022937466'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/windows-7-cant-always-automatically.html' title='Windows 7 can&apos;t always automatically update root certificates?'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3734533820708426048</id><published>2009-12-05T15:10:00.007-05:00</published><updated>2009-12-05T15:57:58.405-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>256 colour mode palette handling is broken in Windows 7?</title><content type='html'>A while ago I ported &lt;a href="http://www.noah.org/acidwarp/"&gt;AcidWarp&lt;/a&gt; to Windows using SDL.  At the time I was running Vista, and I had to use a workaround for full screen mode.  I &lt;a href="http://dreamlayers.blogspot.com/2008/12/sdl-acidwarp-for-windows-and-sdl-full.html"&gt;described the issues and my workaround in a post here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Now I find that the workaround does not work in Windows 7.  AcidWarp fails to get all 256 palette entries even when I use the directx SDL video driver.  The program's 256 colours are then remapped onto a smaller number of colours.  This results in visible errors in many AcidWarp patterns.&lt;br /&gt;&lt;br /&gt;There is an even more serious palette issue.  When using the directx SDL driver in the normal way (without workarounds, just using the "set SDL_VIDEODRIVER=directx" command), a substantial number of palette entries remain unchanged in full screen mode.  These colours are not remapped, resulting in very ugly static parts of the pattern.  This can be avoided by using the windib SDL driver or the workaround I developed in Vista.&lt;br /&gt;&lt;br /&gt;One workaround for everything is killing &lt;a href="http://en.wikipedia.org/wiki/Windows_Explorer"&gt;explorer.exe&lt;/a&gt;.  Then both directx and windib drivers are able to grab all 256 colours.  Explorer can easily be restarted from Task Manager, and even the tray icons are preserved.  Still, it's not a very nice workaround.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3734533820708426048?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3734533820708426048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3734533820708426048' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3734533820708426048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3734533820708426048'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/12/256-colour-mode-palette-handling-is.html' title='256 colour mode palette handling is broken in Windows 7?'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7833210010645034481</id><published>2009-11-13T13:24:00.002-05:00</published><updated>2009-11-13T13:41:59.910-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Building multi-threaded XaoS in Windows</title><content type='html'>&lt;a href="http://wmi.math.u-szeged.hu/xaos/doku.php"&gt;XaoS&lt;/a&gt; is a &lt;a href="http://en.wikipedia.org/wiki/Fractal"&gt;fractal&lt;/a&gt; viewer program which is designed for smooth continuous zooming.  It's a great way to explore fractals such as the &lt;a href="http://en.wikipedia.org/wiki/Mandelbrot_set"&gt;Mandelbrot Set&lt;/a&gt;.  Nowadays, multi-core CPUs are the norm, but the Windows binary of XaoS does not support multi-thread operation.&lt;br /&gt;&lt;br /&gt;XaoS is easy to build in &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt;.  The only problem is that XaoS is set up to build for MinGW (using -mno-cygwin) and Cygwin doesn't provide Pthreads support for MinGW applications.  The solution is to use &lt;a href="http://sourceware.org/pthreads-win32/"&gt;Pthreads-w32&lt;/a&gt;.  Using this and running with the "-threads 4" option I'm able to use up to 100% CPU on my Q6600, and XaoS is much faster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7833210010645034481?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7833210010645034481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7833210010645034481' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7833210010645034481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7833210010645034481'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/11/building-multi-threaded-xaos-in-windows.html' title='Building multi-threaded XaoS in Windows'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4293062110078026159</id><published>2009-11-12T14:18:00.003-05:00</published><updated>2009-11-12T14:33:25.447-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Intel Matrix Storage Manager driver causes 0x9088 bluescreen</title><content type='html'>I just saw my first Windows 7 problem.  My computer locked up with the hard drive LED lit after resuming from sleep.  Then I reset my computer, it started resuming from disk, and I got a blue screen. &lt;br /&gt;&lt;br /&gt;I had never seen the 0x9088 (sometimes written as 0x00009088 or 9088) code, and very little information was available online.  Fortunately, WinDbg was able to help.  The crash was in iaStor.sys, the driver for the ICH9R SATA controller on my GA-P35-DS3R motherboard. &lt;a href="http://downloadmirror.intel.com/17131/eng/Release%20Notes.htm"&gt;Release notes&lt;/a&gt; for version 8.6.0.1007 mentioned fixes for that error.  I guess those fixes weren't sufficient, because I was using Matrix Storage Manager 8.9.0.1023. &lt;br /&gt;&lt;br /&gt;After a bit of searching, I saw that there was a new Intel Rapid Storage Technology 9.5.0.1037 driver.  It wasn't available from Intel, but it was digitally signed and available from &lt;a href="http://www.google.ca/search?q=intel+9.5.0.1037"&gt;many places online&lt;/a&gt;.  I still don't know if it fixes the problem, and it will be hard to tell because this problem must be rare.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4293062110078026159?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4293062110078026159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4293062110078026159' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4293062110078026159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4293062110078026159'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/11/intel-matrix-storage-manager-driver.html' title='Intel Matrix Storage Manager driver causes 0x9088 bluescreen'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-3527915505905262922</id><published>2009-10-23T18:46:00.007-04:00</published><updated>2009-10-23T19:33:31.753-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='dell'/><category scheme='http://www.blogger.com/atom/ns#' term='inspiron'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='drivers'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>How to install a Broadcom Wi-Fi driver on an unsupported system</title><content type='html'>Dell stops releasing driver updates for a laptop rather quickly.  However, the same hardware is found in other laptops, and often these drivers will install.  Drivers can even support similar hardware which is not explicitly listed.  For example, a driver's description may claim support for one wireless card, but the driver may support all of Dell's Broadcom based wireless cards. A while ago I &lt;a href="http://dreamlayers.blogspot.com/2009/07/fix-for-dell-inspiron-6400-audio.html"&gt;fixed audio glitches in Vista&lt;/a&gt; by installing a newer driver for my Dell Wireless 1500 Draft 802.11n WLAN Mini-Card.&lt;br /&gt;&lt;br /&gt;Today I found that Dell had a Broadcom Wi-Fi driver for Windows 7 (&lt;a href="http://support.us.dell.com/support/downloads/download.aspx?c=ca&amp;amp;l=en&amp;amp;s=gen&amp;amp;releaseid=R242438&amp;amp;formatcnt=1&amp;amp;libid=0&amp;amp;typeid=-1&amp;amp;dateid=-1&amp;amp;formatid=-1&amp;amp;fileid=350705"&gt;R242438&lt;/a&gt;), but that driver refused to install.  The error message was: "No compatible hardware found. The software you are attempting to install is not supported on this system."  Despite this warning, I could manually install the driver via Device Manager without any warnings.  After a manual install, the wireless card worked, but I didn't have the utility which shows signal strength in the tray and other components.&lt;br /&gt;&lt;br /&gt;Since the driver seemed to be compatible, I searched for a way to do a proper installation.  The driver installer unpacks itself to C:\dell\drivers\R242438.  In that directory there is a "DellInst.enc" file.  It doesn't look like anything, but it may be decoded via "BcmCrypt.exe" (also in that directory, USAGE: BCMCRYPT -e or -d &amp;lt;input&amp;gt; &amp;lt;output&amp;gt;).  The file decodes into a text file which shows what cards are supported and what systems are certified with each card.  The "Dell Wireless 1500 Draft 802.11n WLAN Mini-Card" (PCI\VEN_14E4&amp;amp;DEV_4328&amp;amp;SUBSYS_00091028) was supported, but my system was not in the list of systems in that section.  I simply added the "0x01BD ;Inspiron 6400" line for my system and encoded the file with BcmCrypt.  After that the driver installed properly and everything worked, although the highest speed seemed to be 130 Mbps.  After changing some advanced settings in Device Manager, I finally got 270 Mbps.&lt;br /&gt;&lt;br /&gt;While doing this I also found that there are three different drivers in three subdirectories of C:\dell\drivers\R242438.  DRIVER_US is for the US, DRIVER_JPN is for Japan, and DRIVER_ROW is for the rest of the world.  For example, it's possible to manually install the driver from C:\dell\drivers\R242438\DRIVER_ROW using Device Manager and gain access to channels 12 and 13.  I never tested these channels and I now use the US driver which the installer installed, but it's nice to know that I can change that easily.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-3527915505905262922?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/3527915505905262922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=3527915505905262922' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3527915505905262922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/3527915505905262922'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/10/how-to-install-broadcom-wi-fi-driver-on.html' title='How to install a Broadcom Wi-Fi driver on an unsupported system'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2049514624272647244</id><published>2009-10-22T12:19:00.002-04:00</published><updated>2009-10-22T12:38:17.330-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Windows Live Messenger 14 doesn't report message delivery failures?</title><content type='html'>Occasionally, Windows Live Messenger fails to deliver messages.  In version 8.5 this would result in a delayed notification saying that a particular message could not be delivered.  In version 14.0.8089.726, messages fail to deliver without any notification.  I have never seen any message delivery failure notification in version 14.  &lt;A HREF="http://www.miranda-im.org/"&gt;Miranda IM&lt;/A&gt; is still able to report message delivery failures, so it doesn't seem like a server-side issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2049514624272647244?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2049514624272647244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2049514624272647244' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2049514624272647244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2049514624272647244'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/10/windows-live-messenger-14-doesnt-report.html' title='Windows Live Messenger 14 doesn&apos;t report message delivery failures?'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-1819817888131286991</id><published>2009-10-09T00:41:00.009-04:00</published><updated>2009-10-09T11:48:17.279-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='picasa'/><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>I used Picasa's facial recognition to find friends and myself in photos</title><content type='html'>In the past I tried tagging my photos with tags corresponding to the location, major things and people in the photo.  This was mostly a waste of time.  Folder names were already sufficient for finding photos by location and I wasn't interested in finding particular types of things (eg. lakes) in my photos.  The only useful part was tags corresponding to people.&lt;br /&gt;&lt;br /&gt;The last tagging was a long time ago, and so I had a lot of untagged photos.  Recently, I felt like adding tags corresponding to people, but I assumed that it would be very tedious.  Then I learned that &lt;a href="http://picasa.google.com/"&gt;Picasa&lt;/a&gt; has facial recognition and I decided to give that a try.&lt;br /&gt;&lt;br /&gt;Starting the process was surprisingly easy.  When I added a folder to Picasa, it first scanned the folder in the usual way and generated thumbnails.  Then it started scanning the photo for faces.  It quickly started filling a list of faces, and I just had to start identifying people.  After a bit of manual identifying, Picasa was able to automatically identify some people.&lt;br /&gt;&lt;br /&gt;There were certainly some issues and limitations.   More than a third of the time, Picasa found a face but failed to identify the person.  Occasionally, a person was misidentified (or maybe it was a sign that I look like some relatives).  Then there were all the strangers in the background, whom I had to remove from the list.  The most interesting issue was occasional identification of faces in artwork (eg. Mt. Rushmore, paintings and T-shirts) and even patterns of reeds or clouds.  Fortunately, dealing with all these things was fun.&lt;br /&gt;&lt;br /&gt;When the scan finished I wanted to see how many faces were missed.  At first I was somewhat disappointed.  Picasa easily dealt with sunglasses, but tuques or harsh shadow boundaries often caused faces to be ignored.  Picasa also seemed sensitive to face orientation.  It did well when a face was vertical and viewed from the front or side, but other angles were a problem.  Manually adding people was a bit more trouble than it should have been.  I had to go to the photo page, draw a box around the face and select the name.  I wish I could have added tags from the thumbnails page without defining the person's location.  After doing all this, I felt that Picasa automatically found the faces in the majority of the best photos.  Even the automatic face detection wasn't anywhere near perfect, it was good enough and I was satisfied.&lt;br /&gt;&lt;br /&gt;Picasa's automatic face detection also provided an unexpected benefit: the way it cropped faces was sometimes very aesthetically pleasing.  It actually improved some photos, and it provided many images which could be used online.&lt;br /&gt;&lt;br /&gt;Now I'm wondering whether to continue using Picasa or extract the face information and uninstall Picasa.  I'm happy with the way I organize things into folders, and generally not interested in programs for managing libraries of files.  I still have to see a bit more about what Picasa offers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-1819817888131286991?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/1819817888131286991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=1819817888131286991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1819817888131286991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/1819817888131286991'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/10/i-used-picasas-facial-recognition-to.html' title='I used Picasa&apos;s facial recognition to find friends and myself in photos'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8604114628139978149</id><published>2009-09-21T09:32:00.005-04:00</published><updated>2009-09-21T10:11:05.317-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='religion'/><title type='text'>Why I consider myself atheist now</title><content type='html'>Religious stories involving the supernatural seem to be mythological, and literally believing them seems brainwashed or even crazy.  However, scientific understanding has such gaping holes that it's impossible to rule out that something like what religions talk about is part of reality.  So, for a long time I considered myself agnostic.&lt;br /&gt;&lt;br /&gt;Recently I realized that calling myself agnostic can imply that for all that mythological and crazy stuff, I'm saying "I don't know, it could be true".  It doesn't feel right, and being unsure about delusions can lead to more delusions.  To see the problem, imagine being unsure about something which is generally recognized as a delusion:  the idea that there are satellites which read your thoughts and put thoughts in your head.  This is kind of like the idea of God hearing your prayers and providing guidance.&lt;br /&gt;&lt;br /&gt;I don't deny that religion can be a useful psychological tool.  I don't deny that it can offer moral and ethical guidance.  However, this doesn't mean that religion is fundamentally true, and I don't think that it's necessary for these purposes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8604114628139978149?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8604114628139978149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8604114628139978149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8604114628139978149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8604114628139978149'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/09/why-i-consider-myself-atheist-now.html' title='Why I consider myself atheist now'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2443117222161655289</id><published>2009-09-03T14:13:00.008-04:00</published><updated>2009-09-03T14:37:32.120-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>In Vista, the "Previous Versions" tab requires administrative shares</title><content type='html'>No matter what I did, the "Previous Versions" tab for every file said "There are no previous versions available".  System Restore was turned on, and both the GUI and vssadmin said that there were restore points.  I was able to access old versions of files using syntax like "\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\config.sys".  I was even able to access old versions via the "Previous Versions" tab when I accessed files via shared folders (eg. "\\computername\public").&lt;br /&gt;&lt;br /&gt;The solution was enabling &lt;a href="http://en.wikipedia.org/wiki/Administrative_share"&gt;administrative shares&lt;/a&gt; (such as C$).  In the past I set the dword at  "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters\AutoShareWks" to 0, which disabled them.  I simply deleted that registry entry and restarted.  (Note that even though Vista is a workstation OS, the registry entry is under LanmanServer.)&lt;br /&gt;&lt;br /&gt;I wasted way too much time on this.  I hate when something fails and there is no indication what went wrong.  (I imagine something was trying to connect to C$ and it was failing, but that error was never reported.)  This is actually my main complaint about Windows.&lt;br /&gt;&lt;br /&gt;All this also applies to Windows 7.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2443117222161655289?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2443117222161655289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2443117222161655289' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2443117222161655289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2443117222161655289'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/09/in-vista-previous-versions-tab-requires.html' title='In Vista, the &quot;Previous Versions&quot; tab requires administrative shares'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-970180942408976333</id><published>2009-09-02T20:25:00.007-04:00</published><updated>2009-09-02T21:09:35.457-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><category scheme='http://www.blogger.com/atom/ns#' term='ga-p35-ds3r'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>JMicron JMB36X vs. Maxtor 92040U6</title><content type='html'>While backing up a partition to a Maxtor 92040U6 IDE (PATA) drive, Linux occasionally tells me stuff like:&lt;br /&gt;&lt;pre&gt;ata9.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen&lt;br /&gt;ata9.00: cmd ca/00:00:ff:02:c9/00:00:00:00:00/e0 tag 0 dma 131072 out&lt;br /&gt;       res 40/00:03:00:00:08/00:00:00:00:00/b0 Emask 0x4 (timeout)&lt;br /&gt;ata9:00: status: { DRDY }&lt;br /&gt;ata9: soft resetting link&lt;br /&gt;ata9:00: configured for UDMA/66&lt;br /&gt;ata9:01: configured for UDMA/33&lt;br /&gt;&lt;/pre&gt;So, there a "write DMA" command timed out and the drive is ready.  I'm not sure what else one can learn from that.  I wonder what's at fault.  The motherboard is Gigabyte GA-P35-DS3R.  The PATA port is handled by a JMicron JMB36X chip, and the hard drive is a 10 year old Maxtor 92040U6 drive with MA540RR0 firmware.  I've in the past I've had &lt;a href="http://dreamlayers.blogspot.com/2009/05/i-think-jmicron-finally-fixed-their.html"&gt;problems with the Memorex 3202 3292 PATA DVD+-RW drive&lt;/a&gt; which make me suspect the JMB36X.  However, I also suspect the hard drive.&lt;br /&gt;&lt;br /&gt;I'm curious because Windows 98 SE used to lock up when I was using the drive, and when I tried Windows 7, it would occasionally hang for a while with the hard drive light lit.  In both cases there were no error messages, so I couldn't be sure what was happening.&lt;br /&gt;&lt;br /&gt;If Windows 7 doesn't log error messages when there is an ATA timeout on a hard drive, then the people who wrote the ATA driver are idiots.  Meanwhile, Firefox fails to properly display the &lt;a href="http://lxr.free-electrons.com/source/drivers/ata/libata-eh.c?v=2.6.29"&gt;Linux source file which produced the error message&lt;/a&gt;, and searching through a lot of text in Internet Explorer 8.0 is insanely slow, as if some evil genius invented a search algorithm that's even slower than a totally dumb algorithm.  Sometimes, software sucks way too much.  But hey, in this case at least it gives me something to do during the backup, and I don't have to routinely use PATA and deal with these errors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-970180942408976333?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/970180942408976333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=970180942408976333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/970180942408976333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/970180942408976333'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/09/jmicron-jmb36x-vs-maxtor-92040u6.html' title='JMicron JMB36X vs. Maxtor 92040U6'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2124060448561894186</id><published>2009-09-02T20:09:00.003-04:00</published><updated>2009-09-02T20:17:46.987-04:00</updated><title type='text'>Do all OSes still use a dumb LRU algorithm for caching?</title><content type='html'>I am backing up a partition from &lt;a href="http://www.sysresccd.org/Main_Page"&gt;SystemRescueCd&lt;/a&gt; using dd and gzip.  Occasionally I run ls to see the size of the output file.  If I haven't used ls in a bit, the DVD drive spins up.  So, it seems like Linux is using a dumb "least recently used" algorithm for caching, and the partition backup I/O is constantly removing ls from the cache.  Do all operating systems still use such a dumb algorithm?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2124060448561894186?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2124060448561894186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2124060448561894186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2124060448561894186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2124060448561894186'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/09/do-all-oses-still-use-dumb-lru.html' title='Do all OSes still use a dumb LRU algorithm for caching?'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2804076590759882258</id><published>2009-08-28T19:15:00.004-04:00</published><updated>2009-08-28T19:27:14.067-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Connect to WebDAV folders from the command line to avoid a Vista bug</title><content type='html'>Microsoft's &lt;a href="http://en.wikipedia.org/wiki/WebDAV"&gt;WebDAV&lt;/a&gt; implementation &lt;a href="http://greenbytes.de/tech/webdav/webdav-redirector-list.html"&gt;has been very buggy&lt;/a&gt;.   One issue is that Vista cannot connect to a WebDAV folder if WebDAV is not supported in the server's root.  That was supposedly fixed with &lt;a href="http://support.microsoft.com/KB/942392"&gt;KB942392&lt;/a&gt;, which was supposedly included in SP2.  With SP2, if I attempt to connect via the "Connect to a Web site that you can use to store your documents and pictures" feature, that behaviour persists.  I can successfully connect from the command line (using something like"net use r: http://servername:portnumber/foldername").&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2804076590759882258?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2804076590759882258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2804076590759882258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2804076590759882258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2804076590759882258'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/connect-to-webdav-folders-from-command.html' title='Connect to WebDAV folders from the command line to avoid a Vista bug'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5540371179997110874</id><published>2009-08-27T20:24:00.003-04:00</published><updated>2009-08-27T20:48:06.829-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Why do network applications still fail to handle sleep?</title><content type='html'>If I put a computer to sleep and then wake it, network-related applications generally try to pretend it didn't happen and then deal with the consequences.  For example:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Thunderbird 2.x locks up for a while when I try to check my mail, and then starts working again.&lt;/li&gt;&lt;li&gt;Miranda IM shows a bunch of pointless alerts as if I lost network connectivity.  These come from the &lt;a href="http://addons.miranda-im.org/details.php?action=viewfile&amp;amp;id=3812"&gt;KeepStatus&lt;/a&gt; add-on, which actually supports "Reconnect on APM resume".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Windows Live Messenger also acts as if I lost connectivity, waits a while to reconnect and then sometimes reconnects improperly, requiring another reconnect.&lt;/li&gt;&lt;li&gt;Putty loses the connection if the other side tried to send any data while the computer was sleeping.  However, when the other side didn't try to send data an ssh connection can survive sleep.  In this particular case, it might make sense to not add special suspend handling.&lt;/li&gt;&lt;/ul&gt;Sleep has been around for a long time.  In Windows, the &lt;a href="http://msdn.microsoft.com/en-us/library/aa373247%28VS.85%29.aspx"&gt;WM_POWERBROADCAST&lt;/a&gt; message was introduced in Windows 2000.  Why not handle it and make the experience better for the user?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5540371179997110874?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5540371179997110874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5540371179997110874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5540371179997110874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5540371179997110874'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/why-do-network-applications-still-fail.html' title='Why do network applications still fail to handle sleep?'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-8023354678290846700</id><published>2009-08-26T12:24:00.012-04:00</published><updated>2009-08-26T18:19:36.059-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>How I stopped hating Microsoft and concluded that Apple is worse</title><content type='html'>When I first started using &lt;a href="http://en.wikipedia.org/wiki/MS-DOS"&gt;MS-DOS&lt;/a&gt;, I didn't know any better.  Yes, DOS was ridiculously primitive, even compared to operating systems which were developed decades before.  However, I did not know about those operating systems at the time.&lt;br /&gt;&lt;br /&gt;I started to hate &lt;a href="http://en.wikipedia.org/wiki/Microsoft"&gt;Microsoft&lt;/a&gt; when I started using Windows in the 3.x days.  Windows provided some appealing possibilities, but unfortunately it was an unstable piece of garbage.  If it was an alpha release, I might have been impressed, but Microsoft was pretending that Windows was a finished product.&lt;br /&gt;&lt;br /&gt;Eventually, &lt;a href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt; rescued me from Microsoft software.  It was so much better that for a long time I didn't look back.  When I got a new computer with Windows 95, it sucked so much that I laughed at it before reformatting and installing Linux.  Meanwhile, Microsoft's &lt;a href="http://en.wikipedia.org/wiki/United_States_v._Microsoft"&gt;alleged evil anti-competitive practises&lt;/a&gt; were in the news, further reinforcing my negative attitudes about Microsoft.&lt;br /&gt;&lt;br /&gt;What started to change my attitudes was &lt;a href="http://en.wikipedia.org/wiki/Windows_NT"&gt;Windows NT&lt;/a&gt; 4.0 with SP6a.  Much to my surprise, it seemed like Microsoft could actually create somewhat decent software.  Instead of crashing on a daily basis, it only crashed about once a month.  That could be bad on a server, but it was acceptable on a workstation.  Later releases in the Windows NT family were even better, and soon I noticed that Windows only crashed due to bad drivers or defective hardware.&lt;br /&gt;&lt;br /&gt;Windows opened many possibilities because so much software was available for it and practically all available hardware was supported.  Microsoft truly deserved its "&lt;a href="http://en.wikipedia.org/wiki/Where_do_you_want_to_go_today%3F"&gt;Where do you want to go today?&lt;/a&gt;" marketing slogan.  In Linux I would often run into walls, such as not being able to send files or have voice chats via instant messaging and not being able to play some media.  Meanwhile, drivers started to get worse in Linux.  Often, devices would be supported but the drivers would only support a subset of the features and not work reliably.  For example, I had to make changes to the sound driver to even get it to see my card, and then about half the time it would play beeping instead of sound, and graphics drivers didn't support all available acceleration.  The Windows GUI also seemed more efficient than any Linux GUI.  Simple drag and drop often accomplished what took many more steps in Linux.  Sometimes, Unix command line tools were even more efficient, but that was not a problem because like so much other software, they were also &lt;a href="http://www.cygwin.com/"&gt;available on Windows&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Meanwhile, it started to seem like Microsoft was being unfairly picked on by others.  For example, the idea that the browser is part of the OS may seem ridiculous, but imagine getting a computer without a browser.  With a browser, you can download or purchase practically any program.  So, for example, if Windows came without other features (eg. image viewing, media playback, disc burning, calculator, defragmentation, etc.), one could easily obtain those.   However, without a browser it's difficult to obtain anything.  You would have to install from a disc, download on another computer or maybe download via FTP.  So, Internet Explorer is useful even if the first thing you do with it is download &lt;a href="http://www.mozilla.com/firefox/"&gt;Firefox&lt;/a&gt;.  Also, use of HTML in the operating system seems like a sensible design choice, and that does actually make parts of the browser into parts of the OS.&lt;br /&gt;&lt;br /&gt;I also started to notice another villain: Apple.  While people were talking about how Microsoft would use a &lt;a href="http://en.wikipedia.org/wiki/Trusted_Platform_Module"&gt;trusted platform module&lt;/a&gt; for all kinds of sinister things, Apple was the company that actually started doing some things.  The iPhone and their recent iPods use code signing in an attempt to prevent running of modified or third party firmware, and OS X uses it for copy protection.  Apple even tries to prevent iPods from syncing with third party software.  They also use the legal system.  Apple is trying to make iPhone jailbreaking illegal and they even &lt;a href="http://en.wikipedia.org/wiki/Apple_rumors_community#Apple.27s_response"&gt;go after enthusiastic fans who excitedly shared information about upcoming products!&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;While Microsoft's deals with PC makers were undergoing scrutiny, Apple was requiring that OS X run on Apple hardware.  Yes, &lt;a href="http://wiki.osx86project.org/wiki/index.php/Main_Page"&gt;it can run on a variety of PCs&lt;/a&gt;, and if you carefully select compatible components it can run very well.  However, Apple says that is illegal, even if you have a valid OS X license!&lt;br /&gt;&lt;br /&gt;Finally, I feel uneasy about the whole Apple philosophy.  Their slogan used to be &lt;a href="http://en.wikipedia.org/wiki/Think_Different"&gt;Think Different&lt;/a&gt;, but reality makes that seem like doublespeak.  Apple seems to design a very specific user experience, and to benefit from their design the user seems to have to conform to it.  I very much prefer freedom.  Apple actually rejects iPhone applications which don't conform to their ideals.  For example, they &lt;a href="http://googlemobile.blogspot.com/2009/07/google-latitude-now-for-iphone.html"&gt;didn't let Google release a Google Latitude application&lt;/a&gt;, because they feel it would be confused with the map application on the iPhone, and they routinely reject applications which duplicate some functionality that is already found on the iPhone.  Because of all this, I feel that it's best to describe Apple's recent products as shiny prisons.  (The term is not my idea; I want to thank the person that invented it.)  Yes, their shiny prisons can be give a good user experience, but getting to that point seems almost like joining a cult.&lt;br /&gt;&lt;br /&gt;Meanwhile, my only significant concern about Microsoft is their battle against open source.  This seems like a very major evil, but even there it seems like Microsoft is changing and becoming better.  It's important to consider the current situation, and not base conclusions on the past and on old news and commentary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-8023354678290846700?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/8023354678290846700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=8023354678290846700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8023354678290846700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/8023354678290846700'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/how-i-stopped-hating-microsoft-and.html' title='How I stopped hating Microsoft and concluded that Apple is worse'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7456766524099352002</id><published>2009-08-24T12:29:00.002-04:00</published><updated>2009-08-24T12:39:36.653-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Playing SHOUTcast in Windows Media Player</title><content type='html'>Windows Media Player can play &lt;a href="http://yp.shoutcast.com/"&gt;SHOUTcast streams&lt;/a&gt; without any additional software.  You can save the &lt;a href="http://en.wikipedia.org/wiki/PLS_%28file_format%29"&gt;PLS&lt;/a&gt; file, get a stream URL from it, and then "File -&gt; Open URL..." (Ctrl+U) in WMP.  To automate the process, install &lt;a href="http://www.codeplex.com/openplsinwmp"&gt;Open PLS in WMP&lt;/a&gt;.  Then it's possible to click on a "Tune In!" button and automatically start playing the station.  WMP can even show song names!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7456766524099352002?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7456766524099352002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7456766524099352002' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7456766524099352002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7456766524099352002'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/playing-shoutcast-in-windows-media.html' title='Playing SHOUTcast in Windows Media Player'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2325756694899261018</id><published>2009-08-22T23:32:00.004-04:00</published><updated>2009-08-22T23:48:13.881-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><title type='text'>The red Four O'Clocks seem to like the cold</title><content type='html'>The red Four O'Clocks always started opening later than the others, and they didn't even fully open &lt;a href="http://dreamlayers.blogspot.com/2009/08/four-oclocks.html"&gt;in the middle of the night&lt;/a&gt;.  Today and tonight are especially cold, and they've finally fully opened.  Under incandescent light they seem red:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MsBAWuRvRZw/SpC6uq4W4FI/AAAAAAAADKM/2lm9zyowaUg/s1600-h/P8220066.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://3.bp.blogspot.com/_MsBAWuRvRZw/SpC6uq4W4FI/AAAAAAAADKM/2lm9zyowaUg/s400/P8220066.JPG" alt="" id="BLOGGER_PHOTO_ID_5372999666400419922" border="0" /&gt;&lt;/a&gt;but white LED and strobe light bring out a magenta star:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MsBAWuRvRZw/SpC6uNVLE1I/AAAAAAAADKE/XXJ-zSVseCI/s1600-h/P8220064.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://2.bp.blogspot.com/_MsBAWuRvRZw/SpC6uNVLE1I/AAAAAAAADKE/XXJ-zSVseCI/s400/P8220064.JPG" alt="" id="BLOGGER_PHOTO_ID_5372999658468217682" border="0" /&gt;&lt;/a&gt;A near-UV LED does not do anything interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2325756694899261018?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2325756694899261018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2325756694899261018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2325756694899261018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2325756694899261018'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/red-four-oclocks-seem-to-like-cold.html' title='The red Four O&apos;Clocks seem to like the cold'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_MsBAWuRvRZw/SpC6uq4W4FI/AAAAAAAADKM/2lm9zyowaUg/s72-c/P8220066.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-4182459146433524491</id><published>2009-08-17T13:43:00.004-04:00</published><updated>2009-08-17T13:56:57.820-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archos'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Smartmontools now supports some common USB to ATA bridge chips</title><content type='html'>External hard drives which connect via USB often do not offer a standard way to access &lt;a href="http://en.wikipedia.org/wiki/S.M.A.R.T."&gt;S.M.A.R.T.&lt;/a&gt; to assess their health.  Fortunately, some USB to ATA bridge chips at least have a proprietary method that can work, and &lt;a href="https://sourceforge.net/projects/smartmontools/"&gt;smartmontools&lt;/a&gt; just got support for some common chips.  The support came after the 5.38 release which is currently available, so I got smartmontools source via SVN and compiled for mingw32 from cygwin.   Then I ran smartctl as administrator, and used the "-d usbcypress" option.  I was able to get S.M.A.R.T info from my Archos Jukebox Recorder v2, which uses an ISD300A1 and is doing fine.&lt;br /&gt;&lt;br /&gt;For more info see &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="https://sourceforge.net/apps/trac/smartmontools/wiki/USB"&gt;USB device information&lt;/a&gt; and the &lt;a href="https://sourceforge.net/apps/trac/smartmontools/wiki/Supported_USB-Devices"&gt;list of supported devices&lt;/a&gt; on the smartmontools wiki.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-4182459146433524491?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/4182459146433524491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=4182459146433524491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4182459146433524491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/4182459146433524491'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/smartmontools-now-supports-some-common.html' title='Smartmontools now supports some common USB to ATA bridge chips'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2323452256344687511</id><published>2009-08-12T21:47:00.006-04:00</published><updated>2009-08-12T21:58:10.447-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='privacy'/><title type='text'>Google Safe Browsing can be used to track users?</title><content type='html'>I was just looking at some HTTP requests using the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/966"&gt;TamperData&lt;/a&gt; extension for Firefox.  There amongst the requests I wanted to look at was an unexpected request.  It was an &lt;a href="http://code.google.com/apis/safebrowsing/developers_guide.html#UpdateRequests"&gt;update&lt;/a&gt; request for &lt;a href="http://code.google.com/apis/safebrowsing/"&gt;Google Safe Browsing&lt;/a&gt;.  In that request there was a long wrkey parameter.   The server provides a shared secret key via HTTPS.  Updates are then retrieved via ordinary HTTP, and the key can be used to verify that the update has not been tampered with.  Unfortunately, the key can also be used to track individual users.  Why couldn't they simply use HTTPS?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2323452256344687511?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2323452256344687511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2323452256344687511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2323452256344687511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2323452256344687511'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/google-safe-browsing-can-be-used-to.html' title='Google Safe Browsing can be used to track users?'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-2281725942117500992</id><published>2009-08-12T05:44:00.007-04:00</published><updated>2009-08-12T06:10:48.779-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='nature'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><category scheme='http://www.blogger.com/atom/ns#' term='astronomy'/><category scheme='http://www.blogger.com/atom/ns#' term='gardening'/><title type='text'>Four O'Clocks</title><content type='html'>This &lt;a href="http://www.spaceweather.com/meteors/gallery_12aug09.htm"&gt;meteor "shower"&lt;/a&gt; makes SpaceWeather.com seem like a bunch of trolls.  However, I did see a few occasional meteors, and I have some neat fragrant night blooming plants I can sit next to.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MsBAWuRvRZw/SoKPiIPfRJI/AAAAAAAADI0/qqa330tn8MI/s1600-h/P8120181.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://4.bp.blogspot.com/_MsBAWuRvRZw/SoKPiIPfRJI/AAAAAAAADI0/qqa330tn8MI/s400/P8120181.JPG" alt="" id="BLOGGER_PHOTO_ID_5369011522269824146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Most of the plants in the picture are &lt;a href="http://davesgarden.com/guides/pf/go/92/"&gt;Mirabilis jalapa, commonly known as Four O'Clock, Marvel of Peru&lt;/a&gt;.  When I went swimming on &lt;a href="http://www.panoramio.com/map/#lt=44.075470&amp;amp;ln=15.210915&amp;amp;z=1&amp;amp;k=1&amp;amp;a=1&amp;amp;tab=1"&gt;Ošljak&lt;/a&gt;, I remember seeing plants called "bonašere", a name derived from the Italian phrase "buona sera" meaning "good evening".  When I arrived the flowers would be closed, but when going back to the &lt;a href="http://www.jadrolinija.hr/"&gt;ferry&lt;/a&gt; they would be open and large bumblebees would be pollinating them.  When I saw seedpacks showing simillar flowers and the name "Four O'Clock" I thought I found the same plant and I had to try growing them.  At first, the seeds failed to germinate, possibly because it was too cold.  Then I tried again, with a 33¢ seed packet from Dollarama.  Those germinated and they grew into these large plants here.  Now they're starting to bloom.  I'm not sure if they're exactly the same as the "bonašere" I remember, but they're certainly similar and I remember the smell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-2281725942117500992?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/2281725942117500992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=2281725942117500992' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2281725942117500992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/2281725942117500992'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/four-oclocks.html' title='Four O&apos;Clocks'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_MsBAWuRvRZw/SoKPiIPfRJI/AAAAAAAADI0/qqa330tn8MI/s72-c/P8120181.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7690723925254909556</id><published>2009-08-06T09:44:00.004-04:00</published><updated>2009-08-06T09:54:34.137-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Windows is so funny</title><content type='html'>I just updated my &lt;a href="http://download.sysinternals.com/Files/SysinternalsSuite.zip"&gt;Sysinternals utilities&lt;/a&gt; and I was looking around in &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/a&gt;.  SYSTEM is running a web server on port 2869 (icslap), apparently for &lt;a href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play"&gt;UPnP&lt;/a&gt;.  Windows is so funny.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7690723925254909556?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7690723925254909556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7690723925254909556' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7690723925254909556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7690723925254909556'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/windows-is-so-funny.html' title='Windows is so funny'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-9134471954938200695</id><published>2009-08-02T12:02:00.005-04:00</published><updated>2009-08-02T12:21:08.601-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ga-p35-ds3r'/><title type='text'>When is shutdown not really shutdown</title><content type='html'>I went away for a day and I shut down the power to my computer and router by turning off the UPS.  When I powered them back on just over 24 hours later, Vista told me "Network cable unplugged" and corresponding lights on the Gigabyte GA-P35-DS3R motherboard and the router were off.  I tried restarting and shutting down the computer, I tried reinstalling the RTL8168 drivers, and I tried several cables.  Nothing helped.  I was beginning to think there was a hardware failure.  The only hopeful sign was that the Realtek diagnostic said all tests passed and it was able to measure cable length.&lt;br /&gt;&lt;br /&gt;Then I realized that off was not truly off for the network card, because the lights can be lit even when the computer is off.  So, I powered down the computer via the switch on the back of the power supply.  Then I waited a bit to be sure that the standby power capacitors discharge.  When I powered up again, everything worked.&lt;br /&gt;&lt;br /&gt;I wonder if this has anything to do with the latest F13 (2009/06/19) BIOS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-9134471954938200695?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/9134471954938200695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=9134471954938200695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/9134471954938200695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/9134471954938200695'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/08/when-is-shutdown-not-really-shutdown.html' title='When is shutdown not really shutdown'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-5839260988623436132</id><published>2009-07-29T16:45:00.003-04:00</published><updated>2009-07-29T16:54:36.261-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='complaint'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><title type='text'>A bucketful of water on the floor</title><content type='html'>Before yesterday, it seemed reasonable to assume that a bucket can support the weight of a bucketful of water.  I never even thought about it.  Then this happened:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MsBAWuRvRZw/SnC1IIsQnnI/AAAAAAAADIs/qYJD9zCbrN0/s1600-h/P7290178.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://3.bp.blogspot.com/_MsBAWuRvRZw/SnC1IIsQnnI/AAAAAAAADIs/qYJD9zCbrN0/s400/P7290178.JPG" alt="" id="BLOGGER_PHOTO_ID_5363986307574963826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The design defies common sense.  It even doesn't make sense when trying to use less plastic, because everything other than the ends of the handle and the hinges seems robust.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-5839260988623436132?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/5839260988623436132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=5839260988623436132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5839260988623436132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/5839260988623436132'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/07/bucketful-of-water-on-floor.html' title='A bucketful of water on the floor'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_MsBAWuRvRZw/SnC1IIsQnnI/AAAAAAAADIs/qYJD9zCbrN0/s72-c/P7290178.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-7121311279966177374</id><published>2009-07-27T12:45:00.003-04:00</published><updated>2009-07-27T13:14:17.742-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='psytrance'/><title type='text'>On fandom</title><content type='html'>When I became a fan of someone/something on Facebook I just meant to say "that's really good".  I didn't mean to subscribe to stuff; that part even got to be a bit annoying.&lt;br /&gt;&lt;br /&gt;For example, with &lt;a href="http://en.wikipedia.org/wiki/Infected_Mushroom"&gt;Infected Mushroom&lt;/a&gt;, I meant to say their music is great and highly recommended.  I can also say that seeing them live is highly recommended if you get a chance.  (The one time I saw them in Toronto is still a very memorable positive experience, even though the club was unreasonably packed.)&lt;br /&gt;&lt;br /&gt;At first, seeing all the stuff they posted was annoying.  It almost seemed like spam and it certainly seemed to decrease the signal to noise ratio.  Yet the first &lt;a href="http://www.examiner.com/x-10948-SF-Electronic-Music-Examiner%7Ey2009m7d24-Stirring-up-controversy-with-Infected-Mushroom"&gt;article&lt;/a&gt; I read was interesting.  It's a weird feeling, realizing that there can be more to something than I ordinarily experience.  I'm not really sure what's the point of taking an interest in more than just their music but it certainly feels worthwhile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-7121311279966177374?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/7121311279966177374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=7121311279966177374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7121311279966177374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/7121311279966177374'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/07/on-fandom.html' title='On fandom'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8934044.post-504546728671056959</id><published>2009-07-25T11:37:00.014-04:00</published><updated>2009-07-25T13:09:51.048-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oleg'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='asus'/><category scheme='http://www.blogger.com/atom/ns#' term='wl-500w'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>So, I have a WiFi router which runs Linux...</title><content type='html'>For a while now I was interested in getting a WiFi router with USB ports and ability to run third-party Linux-based firmware.  Theoretically such a device can be very useful.  Besides the obvious routing and WiFi functionality, it can also function as a low power always on computer running Linux.  The possibilities seem endless.  They include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;web server, with CGI, PHP, etc.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;file server on the LAN&lt;br /&gt;&lt;/li&gt;&lt;li&gt;handling downloads&lt;/li&gt;&lt;li&gt;using an external display to show information from the Internet (such as e-mail notification, the weather forecast, RSS feeds and messages left via the web server)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;webcam server&lt;/li&gt;&lt;li&gt;playing Internet radio&lt;/li&gt;&lt;li&gt;doing things via the serial console&lt;/li&gt;&lt;/ul&gt;I decided on the &lt;a href="http://en.wikipedia.org/wiki/Asus_routers"&gt;Asus routers&lt;/a&gt;, because they seem to have good support from third party firmware, they have USB 2.0 ports, and they have a decent amount of RAM and flash.  At first I couldn't decide between a WL-500G variant or a WL-500W.  At first, the WL-500G seemed like a better choice.  Pre-N didn't really seem necessary, and in any case the alternative firmwares I looked at didn't support it. Then I learned about Oleg's firmware, which supports pre-N, and I decided to get a WL-500W.&lt;br /&gt;&lt;br /&gt;The initial experience with the WL-500W and &lt;a href="http://oleg.wl500g.info/"&gt;Oleg's firmware&lt;/a&gt; was quite positive.  Things simply worked.  Configuration was simple and there was a &lt;a href="http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/"&gt;nice repository of software&lt;/a&gt; which can be installed on an external drive.&lt;br /&gt;&lt;br /&gt;However, I quickly learnt that doing all the things I initially imagined would be a lot of work.  In many cases, it doesn't seem like the software is available, and I would have to do a lot of coding.  For example, I'm not aware of any software which can use an external display in the way I envisioned.  The closest thing seems to be &lt;a href="http://lcdproc.omnipotent.net/"&gt;LCDproc&lt;/a&gt;.  Another example the lack of download manager software which can run as a daemon.&lt;br /&gt;&lt;br /&gt;There were also some problems, even with things which should simply work:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Much to my surprise, the procedure for building a cross-development environment was simple, but GCC 3.2.3 is so buggy that it can't even bootstrap itself.  There, the solution seems to be -fno-schedule-insns2, but I would still like fully functional GCC.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Oleg's firmware helpfully provides modules for using a USB-to-serial adapter, but that version of Linux has a serious bug which prevents the onlcr stty option from working properly.  The solution was simple: use the pl2303.c and pl2303.h files from the latest version of the 2.4 Linux kernel.&lt;/li&gt;&lt;li&gt;My webcam was totally unsupported, and &lt;a href="http://mxhaard.free.fr/download.html"&gt;spca5xx&lt;/a&gt; failed to build correctly.  The binaries I found didn't support my webcam.  I found a patch, applied it to the latest compatible version, and &lt;a href="http://wl500g.info/showpost.php?p=153927&amp;amp;postcount=25"&gt;it worked&lt;/a&gt;.  It even allowed me to use my &lt;a href="http://www.maushammer.com/systems/dakotadigital/DakotaDigital.html"&gt;Dakota "single use" digital camera&lt;/a&gt; as a webcam.  The Asus webcam software didn't work properly with either, and it seems like an kludge, but fortunately, other applications are available, and w3cam works.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So, now I'm building up the capabilities.  I even ported the client software for the LED sign I built from Windows to Linux.  The main thing that remains is to tying stuff together in a way that's useful and beneficial in a long-term way.  In the meantime, the best thing I've done is using my &lt;a href="http://www.hpmuseum.net/display_item.php?hw=49"&gt;HP Portable Plus&lt;/a&gt; as a serial terminal for accessing Google Talk via mcabber.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8934044-504546728671056959?l=dreamlayers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dreamlayers.blogspot.com/feeds/504546728671056959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8934044&amp;postID=504546728671056959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/504546728671056959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8934044/posts/default/504546728671056959'/><link rel='alternate' type='text/html' href='http://dreamlayers.blogspot.com/2009/07/so-i-have-wifi-router-which-runs-linux.html' title='So, I have a WiFi router which runs Linux...'/><author><name>Boris Gjenero</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-i1AVi5e1Xg8/AAAAAAAAAAI/AAAAAAAADdk/hmo1_DzRTXg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
