Archive for the ‘Uncategorized’ Category

Adventures with testdisk

Saturday, January 3rd, 2009

Saturday, January 3rd, 2009 (2009/01/03)
Drew Scott Daniels

Adventures with testdisk

Testdisk seems like a great utility as does its companion PhotoRec. I recently had a single NTFS partion hard drive stop displaying its contents in Windows. When I tried to mount it in Linux, “mount” complained that the $MFT file which holds the meta data about where files are was missing or corrupt. My initial experiments with testdisk showed the same results. The mirrored copy of the MFT seemed to be missing or corrupt too.

To try to restore the MFT file, I wanted to use the beta TestDisk 6.11. I tried the Microsoft Windows version which seems to be CygWin compiled. I’ve seen many problems with cygwin in the past so I have a bit of a distaste for it. I much prefer when applications are compiled with mingw. I gave it a try anyway, but couldn’t find the MFT recovery section, I later learned it was under Advanced, then Boot.

Since I had trouble with the Windows version, I pulled out an old copy of Knoppix (a Linux LiveCD) and booted to Linux with the startup options:

knoppix 2 noswap

The “2″ boots to the command prompt which takes less memory. The noswap option prevents Knoppix from automatically trying to write files to any of the disks for “swap” space (AKA a page file). I later added the option “nodma” to try to make sure that the DMA controler/driver weren’t causing problems with trying to mount or run TestDisk.

Knoppix comes with the testdisk package installed, so I gave it a quick try. I didn’t find the MFT recovery section so I moved on to compiling TestDisk 6.11. I already had the source code so I coppied that to /tmp and tried configuring it. Of course, I was missing build dependencies. After a while of playing I remembered I could do an “apt-get build-deps testdisk”, but I needed to update the /etc/apt/sources.list file first so that I didn’t try to pull in a new libc6 (my Knoppix CD was from 2006) or anything else like that. On reflection, I should have added the deb-src line for Debian unstable (sid) after, and done a “apt-get source testdisk”, then coppied over the new TestDisk code, then did another round of getting build-deps.

I managed to get it compiled with a simple “./configure;make”, and ran the executable without needing to install the package. I still didn’t find the MFT option.

I rebooted back into Windows as my nagios monitor was of course reporting the host as being down, and my nightly bacula backup was about to start. I decided to treat the MFT issue as an accidentally reformated partition. I then went to Windows’ TestDisk’s Advanced, Boot options and found the MFT recovery option. The MFT mirror wasn’t available either. So I stared the boot recovery option which seems to scan for the MFT. The “Rebuild BS” didn’t seem to help. The MFT file or files seem to have bad magic. I beleive bad magic means the “magic numbers”. The magic numbers are a fixed string of bytes which are usually at the beginning of a file. See the “file” utility for more information on “magic”.

So I had no luck finding the MFT. I’m now starting to look at PhotoRec which supports scanning for an interesting variety of files. Unfortunatly, I’ll have to find a disk large enough to put all the found data on. I’ll have to sift through the data by hand and look to see if there was anything useful on the drive. I mostly think it was just where I did optical media backups so I’m not too worried, but I think I may have had some more interesting backups there.

Drew Scott Daniels’ resume: http://www.boxheap.net/ddaniels/resume.html

Originally from: http://www.boxheap.net/ddaniels/notes/20090103.html

20090101

Thursday, January 1st, 2009

Thursday, January 1st, 2009 (2009/01/01)

Drew Scott Daniels

  • Updated 2009/01/02, added links to build EVA8000 firmware.

Open Source on my TV

I recently got a new LG TV. It has an “Open Source Software Notice” with the caviet “This feature is not available for all models.” It notes that it may be running Linux kernel 2.6.12, busybox, uclibc, and Nanox. To get a CD (for a charge of distribution and media), within 3 years of distribution, I have to write to Opensource@lge.com which I think I’ll give a try. There’s a USB port and RS-232C in port on the back of the TV for “service only” which have the note “Used for software updates.”. I can’t find any other details so I guess it’s time to make some inquiries, and make sure I’ve got a nice null modem cable which I can use for lots of other projects.

I’d like to find a way to make use of the MPEG decoder that’s on my TV. A cheap encoder that I got the link for went for several hundered
dollars. I don’t know of any easily accessible digital television (DTV)
signals in my area. I’m wondering if Shaw offers free to air (FTA) DTV
that my TV will accept as CADTV (cable DTV?). I know PBS in Minnesota, and FOX in Pembina, ND may theoretically be accessible, but I don’t have time for that until it’s warm enough outside.

Since the TV has a nice “SVGA” input plug (that they call “RGB(PC)”) in
the form of a “D-sub 15 pin cable (VGA cable)”, I may try and hook up a computer to it. I’m conserned about the noise of the fans which seem to fail fast. I also would like to run another circut so I don’t have to stretch to the next circut’s plug. I’m thinking this could replace my Netgear EVA8000 – Digital Entertainer HD.

Netgear EVA8000 runs Linux

Netgear’s EVA8000 has a support page here, but the main forum and a restricted beta forum seem to have quite a bit of information not in their support site.

My Netgear EVA8000 runs Linux, and has several open ports on it. It
seems like the firmware is encrypted though. I can’t find anyone posting information like even a port scan so I may do that later. I’m worried that the Netgear EVA9000 will/has caused the developers to stop working on the EVA8000 which I hear ran out of memory.

Although for what they call GPL compliance, they offer to let you
download source code for the EVA8000, it seemed to be the original
version only (I later found the Feb 2008 release). It also seemed to be stripped of quite a bit of functionality. I also can’t easily figure out a way to upload the code which I think is intentional. I guessed it was a simple block device upload, but it didn’t mount in loopback. I should run testdisk on the file just in case. I think I remember reading somewhere about an encryption password being used to do updates, but it seems others have figured out how to dissect the image like this:

dd if=$FW of=crc bs=1 count=32
dd if=$FW of=bootkernel bs=1 skip=32 count=$((0x210000))
dd if=$FW of=jffsroot bs=1 skip=$((0x210020))

I just found a forum thread about how to edit the firmware images, and I’ve seen they’ve updated the source code to the latest non-beta release. Versions in between don’t seem to be available nor do beta versions. Unfortunately it seems you have to register to see this.

Another use for a null modem cable is connecting to the EVA8000 during boot and after interrupting the boot (by sending a few escape’s?), typing:

config cmd root=/dev/nfs ip=bootp
boot net

All at the boot prompts.

I see that it runs a 2.4 kernel which bothers me (2.4.22-uc0-sigma-20051018-nm). When I worked with embedded systems, I saw a few that updated 2.4 kernels to run with their reference boards as opposed to 2.6 kernels.

The EVA8000′s PC software called Digital Entertainer for Windows (DEW) seems to have at least one Windows audio driver which would be nice to learn how to use. I’m pretty sure that is what it is using to play iTunes music.

The DEW software comes with receiver.exe which seems to be what’s used to play things like YouTube videos. This makes me wonder if there are other videos that the DEW software manipulates (re-encodes, or redirects?) prior to going to the EVA8000.

Wireless network drivers

It’s a bit frustrating to see the software upgrade path for wireless
network devices stop. On old versions of Windows it’s easy to see that
the cost of maintaining the wireless network stacks for various
families of cards complicates things. On Linux, it’s easy to see the
problem is time and motivation. Now that there’s a standard wireless
stack on Windows Vista, and Linux, I hope that I can do things like
setup a Wireless Access Point, mesh network, etc. all with just a
software update and some configuration. I’ll have to be careful about
making sure my next devices work with the new standard wireless network stacks.

Mass storage

Now that I’m doing more with video, and I’m actively backing up many of the computers that I have, I’d like to get more storage. I evaluated
getting more drives, getting a Network Attached Storage (NAS) device
like the D-Link DNS-321, but for the cost, I think I should look at
online storage. I’ll likely still need a few extra drives, but not the
high capacity I was looking at.

I’ve decided that for home applications, I don’t need a RAID array. The
costs of maintaining the drives, the controller etc. is extremely high. I
seem to currently get all the relevant benefits with Bacula backups
plus the bonus of a long retention period.

Optical media (e.g. DVD’s) and other “removable” media seem to have a
very high time cost. They also require manual intervention on a regular
basis. Reloading any data requires finding the media and inserting it
which often doesn’t feel worth while for just verification.
Additionally, one should periodically do full backups and manage the
removal of old backups (AKA retention). Thus the removable media method of backup does not seem suitable for backups. Optical media seems less useful for movies too except that it’s so cheap.

I’ve been trying to think of the common modes of failure to help come up of ways of recovering from future failures. Most of my past failures
have been due to hardware problems, though a few seem like they may have been software triggered. Software for managing files like NTFS and ext3 seem to be a lot more reliable as are the OS’s that run the software. Hard drives are also more reliable with various SMART and related features. CD-R’s however have become less reliable from what I’ve read.

Power supply related failures causing hard drive failure has happened to me a few times. Drives failing to work after long periods of
inactivity… Most failures have resulted in the loss of an entire data
set.

Some of the online data storage have a 1GB file size limit. This is
probably to prevent the storage of large amounts of data. The easy work around for me is to set bacula to 1GB volumes.

Drew Scott Daniels’ resume: http://www.boxheap.net/ddaniels/resume.html
Originally from: http://www.boxheap.net/ddaniels/notes/20090101.html

Maintaining old x86 machines

Sunday, July 23rd, 2006

Sunday, July 23rd, 2006

Drew Scott Daniels

I am maintaining a variety of old machines including many running
Windows 95. I have many licenses for Windows 95, but not as many for other versions of windows (although my MSDN subscription allows me to install certain versions of Windows on certain computers).

Applications I use on Windows 95 include:

  • Abiword
  • VideoLan Client (VLC)
  • Opera Web Browser

Problems

I’ve had significant trouble with, Mozilla Firefox mostly due to its
installer. I believe Firefox would run fine, but it was taking too long
to install so I switched to Opera instead.

Abiword had a well documented required that I download some
“redistributable” Microsoft files. I was considering OpenOffice.org, but
it is quite bloated and has many features that I and other users do not
use. I use OpenOffice.org on several Windows XP machines quite happily.

One feature that I miss in OpenOffice.org’s Writer is a grammar checker. When I was in grade 10 I had my grammar level tested. The test indicated that I had a grade 14 level of understanding. Despite that, I enjoy grammar checkers such as the one in Abiword. A number of years ago I tried many word processors including Correl WordPerfect, Microsoft Office, Microsoft Works and Lotus WordPro. I found Lotus WordPro’s grammar checker to be so useful that I still like to run it over documents that I proof read. I hope to have more time to see if Abiword’s grammar checker is up to that level, and maybe help improve it.

VLC worked on one Windows 95 machine, but not another due to missing dlls. The missing dlls could probably all be downloaded, but I ran out of time. I installed two Microsoft packages after searching to find the source of the error messages that I was getting. A third error message left me without time. It had some kind of winsock dll requirement that could probably be removed if the dlls were delay loaded. I would imagine that it would be the same case for several other dlls that VLC required.

I find VLC to be one of the best video and audio players available.
It supports almost every format I want, is OpenSource, has support for
professional broadcast standards, and is very portable. I run VLC on
quite a few different operating systems including Windows 95, Windows
2000, Windows XP, Debian Linux and others. Unfortunately I currently
can’t say I run it on Apple’s MacOS X version 10.2 as it seems to crash. I believe the version 0.85 was the one that was crashing on startup. One other problem I have with VLC is that its playlist seems to cause the application to crash under certain circumstances. Rather than look into it, I’ve simply avoided the playlist feature.

I’m hoping to use VLC or ffmpeg to transcode some movies I have into
a format that I can watch and listen to on my 200MHz laptop. In the past I used to play 128Kbps mp3′s at lower quality on a 486 DX2 50Mhz. To do that I think I used WinAmp’s decode at quarter quality option. I think I can decrease the decoder requirements by lowering the frame rate. I was also considering lowering the bitrates of the video, audio and stream, but I’m uncertain as to whether that might mean more processing. Some compression/decompression algorithms take more system resources when trying to lower the bits per byte ratio (“better compression”).

Time has been a valuable resource lately. I finally got around to
upgrading my laptop to Windows 98. I spent quite a few hours trying a
few weeks ago, but the installer refused to work as I was trying to
upgrade with Toshiba’s Windows 95 winutils installed. I tried figuring
it out what was going on by reading all the documentation I could find
on the computer, and on the Win98 CD, but there was very few hints. One day, when I had some time on another computer, I searched and found that Toshiba has a nice upgrade web page. The trick to the upgrade was a separate uninstaller that was not linked to from the list of downloadable files.

My upgrade to Win 98 required a Linux boot CD, and a USB storage
device. The files I wanted/needed would not fit on a floppy
easily/conveniently. Win 95 does support USB, but it does not support
mass storage devices. That means that it would not support my USB key, any external USB drive, my digital camera… It also doesn’t support the Palm Pilot USB driver, and I couldn’t get a dlink USB wireless network key to work.

One of my motivations for updating, was that despite my many hours
working on getting my WPC11v4 working, I found that I required special out of tree Linux drivers, or Windows 98. I did find some indications that it might work on Windows 95, but it seems that was the WPC11v3 using a different chipset, the European version… The RealTek RTL8180 (or RTL8180L?) reference driver would install, and I believe attach, but not work.

More on these topics later.

Drew Scott Daniels’ resume: http://www.boxheap.net/ddaniels/resume.html

Originally from: http://www.boxheap.net/ddaniels/notes/20060723.html

20060309

Thursday, March 9th, 2006

Today on CBC’s “Up To Speed”, they had a business columnist talking about user interfaces. She complained that they shouldn’t need training to figure out how to use a photocopier. She further went on to talk about how the design of Research In Motion (RIM)’s BlackBerry keyboard went through quite a bit of research.

I’m a long time fan of Palm (formerly of 3Com). PalmOS, most Palm
Pilots and HandSpring portable data assistants (PDA’s) have a witting
interface called Graphiti. Grafiti can be used to write with a stylus
(pen like stick), onto a touch sensitive surface. The character language of graphiti is English writing characters, simplified for easier
recognition. This simplified language causes the users to have to learn
it if they want to take advantage of the high speed input. With the
advent of the Palm Treo, a BlackBerry like product, Palm looked at, and
later removed the graphiti capability. Until very recently, one could
download graphiti for the Treo, but without graphiti, stylus input
didn’t make much sense. So the company bowed to pressures and put a qwerty keyboard set of buttons at the bottom of the device. They also shrunk the touch pad area to make more room for this new keyboard.

With my arguments above, it might seem like Palm made a mistake in
adding a keyboard, but maybe not. Requiring a stylus makes one handed operation, difficult or impossible. Generally, this wouldn’t matter, except that the Palm Treo is intended to be used out in the field. In the filed is where people have to carry or hold other things. What though do people need one handed operation for? Primarily just for making calls, or acknowledging/checking incoming messages. If it’s
anything involved or time consuming, wouldn’t people want to free up
their other hand to pay more attention to the device? Of course if they
do that, then one step further is finding a flat surface at elbow hight.
Full size keyboards are by far a faster interface device. One could (and
probably still can), buy and external keyboard for Palm devices. My
personal preference is for Graphiti though, as if I can use a full size
keyboard, I can probably use a full size display, and… well I’d want
to use a laptop or notebook computer.

With laptops being less portable, and not needing one handed operation very often, my preference for Graphiti is strong. The real impractical ideal input would be Voice recognition. Unfortunately, that probably requires more processing power than would be available in a highly portable device (currently).

A month or two ago, at a consumer electronics show, it was announced that the new Palm Treo (the 700?) would run Windows CE. Besides the luggage that Microsoft’s Windows platforms have carried with them, I’m not aware of any version of Graphiti for Windows CE. It would be unfair for me to say that Windows CE likely requiring battery depleting hardware would be three strikes. Without the budget to buy a new Palm Treo, or use any of the extremely overpriced wireless data services for it, I probably won’t be researching which of those three strikes, if any aren’t true, or can be overlooked.

With doing research into real time operating systems, and cheap
alternatives to Windows XP, I’ve started to have a reason to look into
Windows CE. What’s really given me a peak into Windows CE is that
Microsoft Visual Studio .Net 2003 (and VC8 AKA MSVS 2005) shows help for CE library functions before any other results (and usually brings it up in such a way that one has to hunt to find the non-CE results).

From the Microsoft developer’s network (MSDN)’s help, I’ve found that
Windows CE supports many of the same functions as are available to most Windows applications. This means it might be easy to translate or port programs to the Windows CE platform. That’s not quite a home run, as there still is some work required for porting. Still the prospect of having many applications for the Windows CE platform might make it as popular as the PalmOS platform. When looking at the Treo 600, the salesperson commented to me that one of the reasons that people preferred the Treo’s over the Blackberry, was the number of applications for it. Certainly that has been a factor for people choosing Windows over MacOS or Linux in the past (now most Windows applications can be run on those platforms). I haven’t seen much of a developer community around the blackberry, but there may be one.

Windows CE might be called Windows Mobile now. Microsoft has split their products in many different ways these days, and renamed old products several times. Product names has been a problem for me in determining what it does, and how it’s different from other products. I’m a developer with a subscription to MSDN’s stuff, and I although I read and write Microsoft based things almost every work day, I still can’t keep track. I think however, I’m well ahead of the average user. The easiest way to learn about the products is to use them. Maybe someone might pick up the tab for me to get a new Palm Treo and give it a work out.

I’d like to write more about Voice Recognition, battery consumption,
and research the unknowns above, but I’ll save that for later.

Drew Daniels Resume: http://www.boxheap.net/ddaniels/resume.html

Originally from: http://www.boxheap.net/ddaniels/notes/20060309.txt

20060102

Monday, January 2nd, 2006

The differences between OnClose(), OnDestroy(), and DestroyWindow() (MFC/WinAPI stuff).

I knoticed one programmer uses OnClose() to try to prevent the user
from closing the window when they shouldn’t. To do this, he only called CDialog::OnClose() from his overloaded OnClose when closing was allowed.

OnDestroy() is another CWnd member. It’s called durring the
destruction of the CWnd object. This is probably the most useful
function for doing cleanup.

DestroyWindow() is yet another CWnd member. The MSDN documentation suggests that it might never get called unless the program explicity calls it. There is however a note that MFC’s might call it. Which, or when I’m not sure (isn’t CWnd part of MFC?).

Drew Scott Daniels

Resume: http://www.boxheap.net/ddaniels/resume.html

Originally from: http://www.boxheap.net/ddaniels/notes/20060102.html

20051128

Monday, November 28th, 2005

The content here is written without the permission of Linear Systems
Ltd., but only uses publicly available information.

Some pages at http://www.linsys.ca

  • Linear Systems Ltd.’s web site’s site map seems to make it easier to navigate the site. Google seemingly wasn’t indexing the site.
  • Linear Systems seems to have quite a few different Broadcast Boards available. These look to be branded DVEO boards (many or all of the pictures show the word DVEO on the boards). There seems to be mostly boards for DVB-ASI, ATSC (SMPTE 310M), and SDI (SMPTE 259M).
  • IP Caster is a pair of systems designed to receive ASI at one end, and then transmit ASI at the other. In between them is some kind of IP based network (probably using Gigabit Ethernet). The transmitter side of IP Caster looks like it might be able to be used to send to other appliances and software such as VideoLan.
  • DVB Loop is a product that according to Computer Modules, uses Stream Valve software, and seems like it has a full duplex DVEO DVB-ASI PCI card in it.
  • Quad Mux looks like it could be quite a nice, low cost, real time MPEG-2 transport stream multiplexer. The page says it supports MPEG SI tables such as PAT’s, PMT’s etc..
  • TimeShifter looks like a low cost way to move content from one time zone to another, keeping prime time content, in prime time for the new time zone (e.g. a 9PM show in the eastern time zone could be played out an hour later to be 9PM in the next time zone over).
  • A variety of software is available from Linear Systems.
  • It seems that Linear Systems gives away their drivers, and some SDK’s for their cards at their downloads page.
  • A variety of manuals are available for free download from Linear Systems’ Support -
    Manuals
    page. Of particular interest is the Master
    Technical Reference Manual
    which has quite a few details on the
    features of many of the DVEO boards, their operation, how to qualify a
    system, and even some introduction to DVB, MPEG and other broadcast industry concepts.
  • The Support – Data Sheets page seems to contain both Data Sheets and a few white papers. Of particular interest is discussions on high speed (AKA throughput) data transfers, and information about overflows.

Drew Scott Daniels’ resume: http://www.boxheap.net/ddaniels/resume.html

Originally from: http://www.boxheap.net/ddaniels/notes/20051128.html

20050903

Saturday, September 3rd, 2005
Issues of interest:
- Road traffic controls
- Road traffic problems (potholes, etc.)
- Fuel efficiency
A bug tracking system (BTS) for city work is a concept I've considered.
Citizens could then file "bugs" and various departments could manage
them. In the absence of the willingness of employees, volunteers could
do the work.

- Logistics of the transport of goods (could be more efficient)
Lots of empty trucks and train cars travel around on a regular basis.
Encouraging the use of local goods can decrease pollution, improve local
economies, make regions independent, and increase the quality of goods.
Local food and other perishables are generally in better condition if
they have to spend less time travelling.
Margins on goods from chain stores might be higher than the cost benefit
they gain through Economies of Scale.
- Regulation of household cleaners
In workplaces the Workplace Hazardis Material Information System (WHMIS)
requires that material data sheets be available for each cleaner or
hazardis material. On the sheet is a list of chemical ingredients, their
hazards, symptoms of hazards, and first aid.
- Airline regulations
On PBS I saw an episode of NOVA about an investigation into an airline
crash (Swiss Air 111?). In it they said that there were some
recommendations for industry regulations that were never implemented.
Some were as simple as requiring smoke detectors.
- Deregulating travel
Most airports say to arrive an hour early. While a large part of the
delay is due to the airlines, security delays are long. Security at
airports is a good idea, but the methods, purposes and other aspects
need to be evaluated. Not allowing a nail file through, but having other
such things for sale on the other side doesn't make much sense. Even if
the area past security were to be restricted, one should consider the
people sped through (e.g. workers and frequent travellers). Also other
items should be considered including the same kind of items as a prison
does (e.g. anything that can be made into a "shiv"). Even this much
restriction won't keep all possibilities of malicious intent "in check" as
employees in the industry must have access to dangerous things
including equipment for maintenance, fuelling, cargo handling, and the
air planes themselves must be kept available. As Bruce Schnider has said,
better security would be people trained to look for suspicious activity.
- Preventing insecure national ID cards
Bruce Schnider probably has a good number of articles talking about how
getting someone's ID doesn't prove that they're a criminal or not. It
may not even be a reliable way to get any statistics on a person unless
the people in charge of the ID have the proper policies in place to
insure the completeness, accuracy and integrity of such information is
insured.

Originally From: http://www.boxheap.net/ddaniels/notes/20050903.txt

20050820

Saturday, August 20th, 2005
One of the things I've been thinking about writing about is interesting
and common math problems. I'll start with some easy ones that I've had
to do at work (no trade secrets, just common math in the trade).

Notes:
- I'll use the prefix "0x" to denote that the number is written in hex
notation. E.g.'s 0x10 is 16, 0x1F is 31.
- There's 8 bits in a byte (I may not get to that until later problems
though).

Largest packet aligned buffer:
MPEG 2 transport streams have both 188 and 204 byte packets. In order to
transfer a high speed transport stream, large buffers are needed. Large
buffers reduce the number of interrupts per second, and make for
effective DMA transfers. To effectively process an MPEG-II transport
stream, buffers should be a multiple of the packet size. Splitting and
joining buffers is not only "a pain" to program, but also requires
otherwise unnecessary processing power.

With a maximum buffer size of 0x20000 (131072) bytes, and a chosen
packet size of 188, what is the largest packet aligned buffer size
allowed?

The answer is simply 131072/188*188 when the division is integer
division (i.e. no decimal places). To do this with a calculator that
only does regular division, one simply needs to remember the integer
part of the division. In this case 131072/188=697..... So, then I just
clear the calculator, and type 697*188 and get 131036 (0x1FFDC).

...

With a maximum buffer size of 0x20000 (131072) bytes, and a chosen
packet size of 204, what is the largest packet aligned buffer size
allowed?

The answer is 131072/204*204 where the division is integer division. The
final number is then 130968 (0x1FF98).

What is the minimum buffer size that is divisible by both 188 and 204?

To solve this, take out the common factors, and multiply the remaining
together. The factors in 188 are: 2, 2, 47. The factors in 204 are: 2,
2, 3, 17. So the answer is 2*2*47*3*17=9588 (0x2574), or
188*204/2/2=9588 (0x2574).

With a maximum buffer size of 0x20000 (131072) bytes, and a packet size
that can only be 188 or 204, what is the largest packet aligned buffer
allowed?

Using the knowledge from above that 9588 bytes is the smallest multiple
of both 188 and 204, it's simply 131072/9588*9588 (again where the
division is integer division). So the answer is 124644 (0x1E6E4).

Other numbers of interest:
- 196=188+8(64 bits is 8 bytes) for a 188 byte packet with a 64 bit
timestamp.
- 212=204+8 for a 204 byte packet with a 64 bit timestamp.
- 512 bytes is a common write size divisor for hard drives.
- 192=188+4(32 bits is 4 bytes) for the MPEG stride (MPEG 2 transport
stride?) format (HDV).
- 4 bytes (32 bits) seems to be a preferred DMA number (the PCI bus is
always at least 32 bits wide).
- 8 bytes (64 bits) might be preferred for certain DMA.

I'll probably write myself up a quick reference. When programming, you
can have the program calculate the right numbers given any buffer size,
packet size or other factor.
Originally from: http://www.boxheap.net/ddaniels/notes/20050820.txt

20050817

Wednesday, August 17th, 2005
So today I got a new USB key. It's a Kingston Data Traveller. I decided 
that I should set it up so that I can use it with the laptop I use on a 
regular basis (a very old Toshiba Satellite 310CDS that's rattling). My 
first step was to consider the file system format. I was surprised to 
find that I couldn't format the device in NTFS format. I left it 
formated at the default FAT32 and decided to get on to other things.

At home tonight I spent some time downloading the drivers for the device 
and attempted to install them. The driver installer is an installshield 
created one that's been winziped into a self extracting file (sometimes 
called an sfx). Three layers of compression and installer junk managed 
to make the under 49KiB of driver files take over 1MB. The second 
frustrating thing I ran into is the installer is designed to detect the 
operating system, and refuse to install if it doesn't think it'll work. 
Well, I guess before that I had read a faq from Kingston saying that 
Windows 95 doesn't support USB drives at all.

Before I get ahead of myself again, I'll go back and say that I tried to 
do some research on what Windows 95 supports in the way of USB drives. I 
didn't manage to find much, but I did find the usual indications that 
earlier versions of Win95 didn't have any USB support, or that it wasn't 
working. I already knew that USB support worked on my computer.

I guess I should have seen things coming ahead of time. In December I 
had looked at trying to get pictures off a Fijitsu FinePix digital 
camera. It too had an annoying installer, and claimed not to work with 
Win 95. It further had a bunch of software bundled with it's 
installation that I still haven't bothered to figure out. Luckily, the 
installer for the driver itself wasn't hard to find, and I managed to 
get the device driver, and some of the software installed.

Despite getting things installed for the FinPix camera, the software 
complained about a missing dll function, and the driver didn't seem to be 
working. I decided that with my many licences of Windows, I should try 
to upgrade certain dll's with versions from newer versions of Microsoft 
Windows. My results were of course that some of the important dll's 
could not be replaced.

That got me thinking again about getting open source replacements for 
certain components. I looked for a while, and decided that without a 
better understanding, I might end up accidentally installing a dll that 
needs an Linux shared library (.so) or something. My following of the 
Wine Weekly News (WWN) on http://www.winehq.com and reading the ReactOS 
developers/kernel mailing list indicated that some dll's from these 
projects were defiantly dependent on components that I'm not ready to 
replace.

So more recently (getting back to the USB key), I did another search on 
the subject of replacing Microsoft Windows 95 dll's with OpenSource 
compatible versions. I'm also now considering replacing the kernel and 
other core files. I did find that WWN shows that they've been building 
PE versions of their dll's for Win32, but it's not clear which can 
replace the dll's in Windows 95. I get the impression that files from 
ReactOS might be a better replacement than Wine's as they'll have less 
Linux, BSD, Solaris related stuff in them and be created with binary 
compatibility in mind for even more core pieces (e.g. no required 
wineserver).

To date I've had no luck with either the USB key or digital camera under 
Windows 95. I've decided that in order to start replacing Win95 on this 
notebook, I'd better get a better understanding of the dependencies and 
compatibilities of different components. To do this I'd like to get or 
create a list of files, a graph (tree?) of the dependencies between 
files, and a fresh compatibility status of the files from whatever 
source I choose. Unfortunately ReactOS's compatibility page doesn't jump 
out at me in searches (I remember seeing it once or twice). I also 
believe both ReactOS and Wine don't list their compatibility in relation 
to Windows 95, but to whatever the latest version of the component is.

So the processes I'll probably want to take will start with listing the 
operating system files on the computer I'm targeting. Then I'll probably 
use something like dependency walker (depends.exe from systeminternals?) 
to figure out the dependencies of each files (as best I can). Then I'll 
look at the compatibility status on the web. Last I may have to look at 
the exports from both files. Since no one else seems to have published 
this information, I'll probably write up my findings as I go. I might 
even make it easier to install Open Source replacement components for 
other versions of Windows by performing the same process using fresh 
installs of other versions.

It's getting late now and I'm getting tired. I was planning to also 
write about how to use unshield and winzip to extract files from 
annoying installers. I also felt the need several times to explain why I 
wanted open source replacement files, and didn't upgrade Windows 
(remember I do have licences to newer versions). I guess I can quickly 
say that I like having free access to the source of what I'm using so 
that I or just about any other programmer can enhance/fix it. I also 
don't want to install Windows98 or later on this laptop because it may 
take more system resources, not run, and well I'd rather maximize the 
use of my Windows 95 licences before using other ones. I've tried 
ReactOS and Wine, and I know they're still not 100% replacements for 
Windows (although extremely close nowadays). I also believe that other 
people share my viewpoints and/or situations.

Maybe later this week I'll write more on the topic of replacing windows 
components or Windows Device Drivers (wdm, ndis, inf, the wonderful 
dpinst.exe and more), but for now it's time for me to get some sleep...

Originally from: http://www.boxheap.net/ddaniels/notes/20050817.txt

20050811

Thursday, August 11th, 2005
I was planning on writing about the problems I faced at work looking up 
open source software for SMPTE 125M convertion. I kept finding SMPTE 
timecode stuff (for MIDI), and other usages of the acronym SMPTE without 
reference to which standard was being used. The one's related to SMPTE 
125M are SMPTE 292M (HD-SDI), SMPTE 259M (transport of SDI and SDTI), 
SMPTE 305M (sometimes called SMPTE 305.2M which is SDTI), and the 
document on ancellary data. Actually SDTI really is quite different from 
SDI except that it goes over 259M.

Anways, tonight I think I write a bit about linking and google. Yes, 
part of the reason that I'm writing these notes is to increase the 
ranking that I'll get for topics that I'd like employers to see. The 
bigger way that I plan to get a good ranking is something I've 
accidentaly found before. I've put a one line signature in my e-mails to 
mailing lists with my resume's URL. I was hoping I could find someone on 
the mailing list that might be interested, or might refer me to someone, 
but instead I found that the html mailing list archives looked to be 
increasing the rank of my resume. I guess this was a neat trick that can 
work on google, and maybe on other search engine's that look at what's 
linking to a page to give it a score.

When I finnaly am happy with the testing scripts that I'm working on for 
my tarball enhancements I'll post the results to various mailing lists 
that are development forums for projects with large tarballs (e.g. the 
lkml, some kind of gimp mailing list, maybe some OpenOffice.org AKA OOo 
mailing lists...). I've got my resume's URL in the scripts themselves, 
but I also plan to put my resume URL tagline in my messages.

One of my problems with my tarball enhancement postings is that I'll 
want a perminate place with my domain name that I can host the scripts, 
but I'm getting free hosting from a friend (thanks Dean). I don't want 
to generate a lot of hits on my friend's server due to the fact he 
likely has better uses for his bandwith, and his ISP may not apreciate 
it. To prevent such a load on the link to his server (and his server), I 
plan to keep the scripts only on the mailing lists (archived in their 
archives) until interest drops down a bit. I figure a few weeks would 
do, but I'll probably wait a few months.

I'm really quite kean to get my scripts out the door, but I feel they're 
not yet ready to stand up to the kind of critism that one gets on the 
Linux Kernel Mailing List (lkml). I've got a script to do the actual 
tarball creation, and one to show the difference between a normaly 
generated one, and the one my script makes, but I don't have something 
showing the amount of time that it takes. Measuring the sorting isn't 
easy, as it's a series of piped commands. My shell scripting really 
isn't put to enough use for me to be able to quickly work around such a 
problem. I've checked a few howto's like the bash one, I've asked in the 
bash scripting IRC channel, but I couldn't find an answer. I decided to 
put the commands into a separate script and time that whole script.

The other problem I've run into is testing. My home computer was taking 
a beating compressing and untaring etc.. I decided to use my 
SourceForge compile farm shell to do the testing, but it's a pain to put 
files onto them. It took me a while before I figured out I had to 
download the files to my computer, and then upload them to the compile 
farm's central server via sftp or scp. That's something I can do, but it 
really compounds another problem I'm having. It takes me a while to make 
progress on my free time coding projects, so new target files are 
comming out for me to test. I want to be able to post on the lkml the 
results of recompressing the latest 2.6 and 2.4 kernels. I keep 
optimistically downloading the latest kernels and then having real life 
interupt things long enough for me to need a new version to continue. 
I'll stop doing that for a while though until I've actually got a draft 
sitting in my posponed box of an e-mail to the lkml with the scripts 
already finnished and attached or actually inline I think. That's 
another problem. The lkml only accepts certain posts, and Linus only 
usually accepts things that are in a certain format (plain text inline 
iirc). That put me on a tangent of looking up the mailing list rules, 
and reading the Linux Weekly News. It'll likely do the same once I get 
close enough again.

So with all my knowledge, reading, and interest in digging deep into 
open source stories that I see writen/posted, I've thought about trying 
to get payed to write. These notes are a bad example of my ability to 
write, but a good example of what I enjoy writing about. I've been 
solicited once to write a book on Intrusion Detection from a genuine 
publisher, but I kind of "fubbed" my responce. I said that I'd be 
interested in contributing, but I didn't think I'd have time to write a 
whole book. I kind of regret doing that, but I think it was the right 
thing to say (just look at my bad record finding time to do coding). I'm 
hoping however that a paying gig would actually let me take some time 
away from real life to actually get things done (and I'm sure it would). 
Of course I've got to stike a balance to keep my home life happy and 
healthy (fammily, friends, and my own condition). I've offered to write 
a peice on the history of the BSD's to the Linux Weekly News, but they 
didn't seem interested. They do post BSD articles, and I was pitching 
that I could write one that would show the parallels between AT&T vs The 
Regents of Berkly (BSD) and the current SCO vs IBM etc.. It's 
interesting how the history repeats itself. For good reference I'd 
suggest reading the FreeBSD mailing list archives (a google search found 
some good stuff).

Later I might publish the research that I used as part of my pitch for 
my BSD history repeats itself story. I'm also probably going to consider 
writng about why I don't want to publish my unrealized ideas. I'll also 
probably talk about:
- Why I don't write about office politics
- Why I don't write much about my personal private home life (well, 
maybe I made that clear <g>)
- My music idea's
- My thoughts and research into a self powered home (well actually 
getting power form alternate sorces like sun, wind, water...)
- Thoughts on using "image stacking" for ameture (and hopefully 
professional) astronomy (I'll talk about this because other people have 
already implemented some of this)
- Some idea's for how people can generate data that's easier to compress 
(e.g.'s typing in lower case when there's the option, removing obvious 
redundant information, using the same words...)
- Perhaps my ideas on natural language processing
...

I may eventually post my project ideas from the last fourteen years that 
I've been writing on paper.

Consider sending me money! My resume is at 
http://www.boxheap.net/ddaniels/resume.html

Oh, and I'll probably write about resume creation and open source tools 
to do it (hey, maybe lwn.net would be interested in buying that 
article).

Originally from: http://www.boxheap.net/ddaniels/notes/20050811.txt