Lately I’ve been having connectivity issues on both AIM and ICQ. (I couldn’t remember the last time I was actually logged on.) If you don’t care about the debugging story, skip to the conclusions below.
Okay, the reason I haven’t posted in a long while is that it’s incredibly inconvenient.
Any suggestions on how to make WordPress friendlier, or on which is the best code-blogging platform?
(Well, this is at least one way to do it… I’m sure there are easier and faster ways.)
Windows XP and up doesn’t let you create a FAT32 partition that’s bigger than 32GB. It can handle them, but not create them.
One obvious way to do it, is… use Linux.
- Install Linux in VMware. I used Slackware 12.0 on VMware Workstation 5.5.5.
- Add a physical hard disk that uses the disk you’d like to partition. To figure out the exact disk number (i.e. PhysicalDisk5), use diskmgmt.msc.
- If you don’t have patience to figure out how to make SCSI work in Linux (as I didn’t), change the disk to an IDE disk:
- Close VMware and edit the .vmx and .vmdk files manually (with Notepad or any other editor).
- In the .vmx file, remove the line scsi0.present = “TRUE”
- In the .vmx file, change any occurrence of scsi0:0 to ide1:1 (this will make the disk IDE Secondary Slave – make sure you have a Secondary Master).
- In the .vmdk file, change the line ddb.adapterType = “lsilogic” to ddb.adapterType = “ide”
- Boot into Linux and login as root.
- Run fdisk /dev/hdd (this assumes your HD is IDE Secondary Slave; otherwise, use the correct device name).
- Press p to list partitions; delete them all by repeatedly using d; create one partition spanning the whole disk by pressing n and using the default for each question.
- Change the type to FAT32 by pressing t, and for the partition type hex code, enter c
- Make sure you did nothing wrong, and press w to write the partition table to the disk. This is irreversible!
- Back in the root prompt, format the new FAT32 partition by using: mkdosfs -F 32 /dev/hdd1
That’s it – you now have a big FAT32 partition. Make sure you don’t mount it in both Windows and Linux at the same time, because they won’t be sync’ed. (To unmount in Windows, choose “Change Drive Letter and Paths” in diskmgmt.msc, and remove all drive letters and NTFS mount points.)
“Orca” is an editor for MSI files that comes with the Microsoft Windows Installer SDK.
Some program wouldn’t install on my system, claiming it can’t run on “Server” editions of Windows.
I edited the MSI file with Orca to remove the offending condition. I used File -> Save As to save the edited MSI under a different filename.
When I ran the installer again, it skipped the “Bad Windows edition” message, and instead gave me a worse error: “Error 2356”.
Digging in the SDK revealed the matching error message: “Could not locate cabinet in stream: .”
After a while of searching for the possible cause, I uncovered this in the Orca help, under “Special Considerations when editing Databases”:
Embedded Streams and Storages
When a database is saved using the Save As… or Save Transformed As… command, embedded binary streams (such as embedded cabinet files) are not saved to the new database unless they are part of a data row. Embedded sub-storages (nested install files) are never saved to the new database.
The solution? Make a renamed copy of the original MSI, edit with Orca, and save using File -> Save.
from zlib import crc32
In messages where a big string may be inserted, prefer “something something %s” over “something %s something”.
In this example, %s is a long hex-string representing an array’s contents.
[DECODE] [DEBUG] Was passed array ‘%s’ for processing
[DECODE] [DEBUG] Was passed array for processing: ‘%s’
[DECODE] [DEBUG] Function myDecodeFunc called with myArray = ‘%s’
In popular Unix/Linux shells, there is an option to start a process in the “background” by (i.e. in bash) typing “./something &“, or pressing Ctrl-Z and then “bg“. The process then prints its output to stdout as usual, but the bash runs in the foreground and receives console stdin.
In Windows, something similar (much less powerful than the bash “jobs”, though) can be done by doing: start /b something
Sometimes your system hangs because some process enters a busy-loop that does evil things, like allocating huge amounts of memory and causing the swapfile manager to make Windows crawl. In those cases it would be nice to have something that runs in high priority that can kill the offending process. Microsoft addressed this by running winlogon.exe and taskmgr.exe in “High” priority, but that’s just not enough…