<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">RSAXVC Development</title>
  <id>http://rsaxvc.net/blog/atom.xml</id>
  <updated>2013-02-21T22:15:39Z</updated>
  <link href="http://rsaxvc.net/blog/" />
  <link href="http://rsaxvc.net/blog/atom.xml" rel="self" />
  <author>
    <name>rsaxvc</name>
  </author>
  <subtitle type="text">Software, Hardware, Radios, Algorithms</subtitle>
  <generator>PyAtom</generator>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Modifying a USB-CLA to support DCP</title>
    <id>http://rsaxvc.net/blog/2013/2/21/Modifying a USB-CLA to support DCP.html</id>
    <updated>2013-02-21T22:15:39Z</updated>
    <link href="http://rsaxvc.net/blog/2013/2/21/Modifying a USB-CLA to support DCP.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;

&lt;div&gt;
Today I was on the highway for about three hours, trying to travel about 15 miles. While waiting for the road to clear up, I tried to charge my phone with a cigarette lighter adapter(CLA) to USB port I had purchased some time ago, but had never used - my phone refused to charge.
&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;
The device contained a few capacitors, a coil, and what appeared to be a switching regulator. When I traced the USB data pins on the PCB, I found two pull-down resistors. Each data line pulled low with a 15kOhm resistor is the normal configuration for a USB1.1 host.
&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;
My phone will charge from a PC USB port or from a USB dedicated charge port(like the wall-wart that comes with most phones, D+ and D- shorted together). However, if the host port is configured for communication, and the phone cannot enumerate, then it will not charge.
&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;
The fix for this ended up being very simple. After reassembling the CLA, I tore a gum wrapper down to a rectangle about 2.5 USB pins wide. This gum wrapper, inserted conductive-side towards D+ and D- of my USB cable, convinced my phone that the CLA was a real USB-DCP, and I was finally able to charge it.
&lt;/div&gt;&lt;br/&gt;

&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">A simple streaming H.264 latency reduction trick</title>
    <id>http://rsaxvc.net/blog/2013/1/17/A simple streaming H.264 latency reduction trick.html</id>
    <updated>2013-01-17T21:34:26Z</updated>
    <link href="http://rsaxvc.net/blog/2013/1/17/A simple streaming H.264 latency reduction trick.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;

&lt;div&gt;
h.264 streaming NALs are identified by a frame marker byte-sequence: 0x00000001. These are sent at the start of each h.264 NAL. When operating on a streamed network connection, like a UART, these byte-sequences are used to split up the NALs from the data stream and hand them to the decoder. However, by placing the framing markers at the start of each packet, a deframer must wait for the 0x00000001 of the next NAL before splitting up the stream back into NALs.
&lt;/div&gt;
&lt;br/&gt;
&lt;div&gt;
The solution is easy - the encoder can stuff the frame marker at the end of each packet instead of the start, and stuff an extra one at the start of the stream. This actually saves 1 frame of video latency because we no longer have to wait for the start of the next NAL, which usually involves waiting for the next video frame to be started.
&lt;/div&gt;

&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Video over a simplex 56k UART</title>
    <id>http://rsaxvc.net/blog/2013/1/8/Video over a simplex 56k UART.html</id>
    <updated>2013-01-08T21:36:51Z</updated>
    <link href="http://rsaxvc.net/blog/2013/1/8/Video over a simplex 56k UART.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;

&lt;div&gt;Some time ago, genpfault and I started building a car. Not just any car. This was a stripped down R/C car from the 90s I got from someone from work. It originally used a 3-step servo(turns all the way left, centers, or turns all the way right), and had two speeds which you toggled through a mechanical transmission. I'll post more about the car later. This project was getting low-latency video from it so we could drive it like a first-person-shooter. On the way there, I ended up with video from my Playstation Eye forwarded over a jumper-wire.&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Source Code&lt;/h3&gt;
The project is currently being kept at &lt;a href="https://github.com/rsaxvc/LowLatencyVideoPrototype"&gt;github&lt;/a&gt;.
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Test Setup&lt;/h3&gt;
Currently, I'm using two PL2303 usb to serial adapters, with a jumper wire connecting one adapter's RX line to the other's TX line.

Both are configured by stty with the flags 'raw 57600'.
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Building the code&lt;/h3&gt;
You'll need SDL_net, SDL2, and opencv headers. As of this writing, SDL2 is in flux, so you'll want to clone the repo, and run `make viewer_stdin encoder`.
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;Getting it running&lt;/h3&gt;
&lt;ul&gt;Plug in a webcam and run `./encoder | ./viewer_stdin`. This should show a small window of video from the webcam - but now you're using pipes.&lt;/ul&gt;
&lt;ul&gt;Next, identify the source and destination serial ports. I run minicom on both and see which one can type to the other.&lt;/ul&gt;
&lt;ul&gt;Now try: `cat /dev/tty[RxSerialPort] | ./viewer_stdin` - nothing should happen...until you also run `./encoder &gt; /dev/tty[TxSerialPort]`&lt;/ul&gt;
&lt;/div&gt;

&lt;div&gt;
&lt;h3&gt;More Fun&lt;/h3&gt;
You can play with the encoding settings in encoder.cpp, they're located just after x264_param_t, as well as config.h. Be careful though - turning up the quality or resolution will use more bandwidth. If you use more than the UARTs can move, the video will work for a short time, then gradually slow down, and eventually become corrupt, as the TX UART fifo overflows. However, you can also easily set the UARTs to 115200 or 230400 baud. I had some problems around 1mbit and higher though.
&lt;/div&gt;

&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Disassembling ELF files with Beyond-Compare</title>
    <id>http://rsaxvc.net/blog/2012/12/16/Disassembling ELF files with Beyond-Compare.html</id>
    <updated>2012-12-16T18:13:54Z</updated>
    <link href="http://rsaxvc.net/blog/2012/12/16/Disassembling ELF files with Beyond-Compare.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;
Today I combined two great tools - BeyondCompare and objdump. Objdump is GNU's assembler. BeyondCompare is a slick text-and-more differencing tool with a neat UI. However, BeyondCompare also supports using external programs to generate text on the fly from binary files. Under Tools-\&amp;gt;File Formats, you can see a list of custom filetypes. You can make a new one, and under the 'Conversion' tab, specify 'External Program' and add &amp;quot;objdump -d &amp;#37;s &gt; &amp;#37;t&amp;quot;.

&lt;h2&gt;Left-hand-side&lt;/h2&gt;
int check_result( float x, int y )
&lt;br/&gt;{
&lt;br/&gt;return ((int)x*(int)x+y*y) &gt; 65536;
&lt;br/&gt;}

&lt;h2&gt;Right-hand-side&lt;/h2&gt;
int check_result( int x, int y )
&lt;br/&gt;{
&lt;br/&gt;return (x*x+y*y) &gt; 65536;
&lt;br/&gt;}

&lt;h2&gt;Results&lt;/h2&gt;
&lt;a href="http://www.flickr.com/photos/40925843@N03/8279982098/" title="bc3_disasm by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8208/8279982098_321b132329.jpg" width="750" height="445" alt="bc3_disasm"&gt;&lt;/a&gt;
&lt;br/&gt;Well, it works. You can see the instructions are very similar except in how they load the operands from the stack. It would be nice to drop the offset column(column 1). Additionally, if BeyondCompare had the ability to extend folder structures(maybe it exists, but I haven't found it), I'd set it up to parse every ELF file as an archive, and each function could be disassembled in its own instance. My current setup gets pretty messy when diffing files with many large functions in it. It may need a little refinement, but I think this'll be a useful tool for me.
&lt;/div&gt;

</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">The Costs of Thread Synchronization</title>
    <id>http://rsaxvc.net/blog/2012/12/4/The Costs of Thread Synchronization.html</id>
    <updated>2012-12-04T21:36:51Z</updated>
    <link href="http://rsaxvc.net/blog/2012/12/4/The Costs of Thread Synchronization.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;
	Recently I implemented a set of simple programs that use Monte-Carlo simulations to estimate the value of PI. I ran it on a few different machines to see the cost of different thread syncronization methods on these architectures.

	&lt;h2&gt;The Algorithm&lt;/h2&gt;
	This algorithm approximates the value of pi with a Monte-Carlo simulation. Effectively, this works by pseudo-randomly placing points in a domain, evaluating them, and tallying results. In our case, the domain is the set of x-y pairs from (0,0) to (1,1). The evaluation function checks if the distance from the point to (0,0) is greater than 1. The tallying consists of two counters - points farther than 1 away from (0.0), and points closer than 1 to (0,0).
	&lt;br/&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/8245522909/" title="Circle Quadrant by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8059/8245522909_543319e2e7.jpg" width="500" height="375" alt="Circle Quadrant"&gt;&lt;/a&gt;&lt;br/&gt;
	The final approximation is the ratio of points in the circle to total points, and must be scaled by 4 to match a simulation of a full circle and square centered on (0,0). Since we can approximate the ratio of areas via the Monte-Carlo method, we solve for PI and approximate PI via the adjusted area ratios.

	&lt;h2&gt;The Synchronization Options&lt;/h2&gt;
	&lt;div&gt;
		&lt;h3&gt;Binary Semaphore/Mutex&lt;/h3&gt;
		This is a standard mutex operation - only a single thread at a time can control it,
		and any thread who tries to reserve it when it is already reserved will block until
		it is available. These are fairly heavyweight structures that usually involve contacting
		the operating system for resolution when multiple threads want the mutex.
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Atomic Operations&lt;/h3&gt;
		Atomic operations have the ability to read/modify/write all in one instruction, 
		or the ability to rollback an operation that failed to acheive atomicity, and report 
		it to the user. In this way, two threads can share a single variable in memory, and each 
		thread can modify it with atomic operations. However, this still doesn&amp;apos;t scale to large
		numbers of threads due to cache-line sharing and coherency-tracking.
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Thread-based storage in a shared area&lt;/h3&gt;
		This mode allocates all thread-control structures and counters in a linear block of
		memory. Each thread has its own value to increment, but because they&amp;apos;re near each
		other in memory, there may be some contention for cache-lines. Had I though about it 
		earlier, I&amp;apos;d&amp;apos;ve placed all the counters in one linear block and the 
		thread-control structures in another to try and illustrate the effect.
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Thread-based storage local to each thread&lt;/h3&gt;
		This mode uses a variable unique to each thread-function. This is nearly the same as above,
		but effectively places the variables in areas that will not be vulnerable to cache-line sharing.
	&lt;/div&gt;

	&lt;h2&gt;The Machines&lt;/h2&gt;
	&lt;div&gt;
	Each plot shows execution time(Y) in seconds versus to the number of threads used(X). The number of computations is fixed at 1 Million, and the work is divided as evenly as possible between the threads. Additionally, each run was run a single time, so the graphs are somewhat noisy.
	&lt;/div&gt;
	&lt;div&gt;
		&lt;h3&gt;Intel CoreDuo-T2300 running Linux 3.2&lt;/h3&gt;
		The first box is my old CoreDuo powered Thinkpad T60 laptop. Semaphores are pretty unscalable. Atomics scale better, but are still surprisingly expensive. Thread-local options work much better, and with a good number of threads, it is possible to beat the single-threaded performance(untrue for atomics and semaphores).
		&lt;br/&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/8245381219/" title="graph_CoreDuo_T2300 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8206/8245381219_426b8e0a84.jpg" width="500" height="375" alt="graph_CoreDuo_T2300"&gt;&lt;/a&gt;
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Intel Core2Duo-T7600 running Linux 3.2&lt;/h3&gt;
		The next box is my current Core2Duo powered Thinkpad T60P laptop. The results are similar to the CoreDuo results, but the Core2Duo is quite a bit faster(as expected).
		&lt;br/&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/8245381251/" title="graph_Core2Duo_T7600 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8060/8245381251_b553d69e59.jpg" width="500" height="375" alt="graph_Core2Duo_T7600"&gt;&lt;/a&gt;
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Intel dual Xeon 5650 running Linux 3.2&lt;/h3&gt;
		This box is my webserver and VM host. It has two six-core chips and hyperthreading, so it is expected that the runtime of scalable implementations of the benchmark will decrease in execution time up to or around using 24 threads. However, I couldn&amp;apos;t take down the minecraft VMs that are also on this box, so I won&amp;apos;t put as much faith in these numbers. Semaphores were quite slow and leveled off well before we reached 24 threads. Atomics scaled better here than on the above two intel chips, which I find suprising - I expected that if any threads ended up on the second chip, this would be much slower. However, accumulating the results local to each thread was the definite winner.
		&lt;br/&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/8245381209/" title="graph_i7_5650_x2 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8062/8245381209_cd24705321.jpg" width="500" height="375" alt="graph_i7_5650_x2"&gt;&lt;/a&gt;&lt;br/&gt;
		Genpfault pointed out I should play with numactl on this box to enforce splitting over sockets or locality to a single socket.
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Texas Instruments MicroSPARC running OpenBSD 5.1&lt;/h3&gt;
		The next graph is from my 50MHz MicroSPARC running OpenBSD. This one is interesting because it performs surprisingly well. However, since Compare-and-Swap was only implemented with SPARCv9, and MicroSPARC is a SPARCv8, there were no atomic operations to test. Additionally, since this is a single-core machine, flat curves are expected. Lastly, the performance for the semaphore mode isn&amp;apos;t bad when using only one thread, so uncontended semaphores aren&amp;apos;t too expensive on this box, but contended ones ( thread counts 2-100 ) are terrible.&lt;br/&gt;
		&lt;br/&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/8245381187/" title="graph_MicroSPARC by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8349/8245381187_080f89e51f.jpg" width="500" height="375" alt="graph_MicroSPARC"&gt;&lt;/a&gt;
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Intel Atom N455 running OpenBSD 5.2&lt;/h3&gt;
		This pair of graphs is from &lt;a href="http://www.h-i-r.net/"&gt;Ax0n&amp;apos;a&lt;/a&gt; single-core, hyperthreaded netbook running OpenBSD 5.2. The first graph should seem familiar - it seems OpenBSD semaphores are expensive. I&amp;apos;m not sure what the dip around 7 threads is; it probably warrants running the benchmark a few more times.
        &lt;br/&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/8259647934/" title="graph_atom_N455 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8073/8259647934_e6522a6ddb.jpg" width="500" height="375" alt="graph_atom_N455"&gt;&lt;/a&gt;
		&lt;br/&gt;Next is the same data with the semaphore plot removed, as it made the scale awful.
		&lt;br/&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/8258579853/" title="graph_atom_N455_no_sem by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8066/8258579853_20dd43cf27.jpg" width="500" height="375" alt="graph_atom_N455_no_sem"&gt;&lt;/a&gt;
		&lt;br/&gt;Interestingly, once you discount outliers, atomic operations on this platform appear to be no more expensive than using independent threads. I suspect this is due to the fact that the N455 is really a single-core CPU - with only a single L1 cache, there won&amp;apos;t be any cacheline-sharing.
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;IBM PowerPC Quad-G5 running OSX 10.5&lt;/h3&gt;
		This pair of graphs is from CCCKC&amp;apos;s Mac-Pro. Similar to OpenBSD, semaphore performance is slow and skews the scale so that you can&amp;apos;t see anything else.
		&lt;br/&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/8258640377/" title="graph_G5 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8204/8258640377_f138eb3df9.jpg" width="500" height="375" alt="graph_G5"&gt;&lt;/a&gt;
		&lt;br/&gt;Here&amp;apos;s the same plot but with semaphores removed and scale reset.
		&lt;br/&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/8259708646/" title="graph_G5_no_sema by rsaxvc, on Flickr"&gt;&lt;img src="http://farm9.staticflickr.com/8497/8259708646_933d1b7d1e.jpg" width="500" height="375" alt="graph_G5_no_sema"&gt;&lt;/a&gt;
		&lt;br/&gt;As expected, atomic operations are slower than independent threads on this platform, but similarly so to other multi-core devices. Atomics are still much faster than semaphores.
	&lt;/div&gt;

	&lt;h2&gt;Conclusions&lt;/h2&gt;
	&lt;div&gt;
		&lt;h3&gt;Atomic operations aren&amp;apos;t a magic bullet&lt;/h3&gt;
		On the platforms that support them, atomic operations can be much better than semaphores. However, even less thread communication scales even better.
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Semaphore cost can vary widely over different platforms&lt;/h3&gt;
		At first I thought that OpenBSD/SPARC32 just had slow semaphores. However, after running the same benchmark on OSX/PPC-G5 and OpenBSD/Intel, it seems that Linux just has really cheap semaphores. Additionally, on all platforms, the semaphore benchmark ran best with only a single thread. Lastly, on every platform, the semaphore benchmark was the worst of the benchmarks.
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Often times, a single-thread can do pretty well&lt;/h3&gt;
		On CoreDuo and Core2Duo a single thread beat any number of threads using atomics or semaphores. On Xeon, a single thread was equivalent to all cores when using atomics, and was better than using semaphores.
	&lt;/div&gt;

	&lt;div&gt;
		&lt;h3&gt;Costs of synchronization should be mitigatable&lt;/h3&gt;
		Costs should be mitigatable by doing more work between synchronization or communication with other threads. The work being done by this benchmark is quite simple. It consists of two calls to rand_r(), computing distance-squared, a comparison, and an action based on that comparison. As the complexity of the work done goes up, the ratio of the time spent synchronizing vs time spend working should go down quite a bit.
	&lt;/div&gt;

	&lt;h2&gt;Source Code&lt;/h2&gt;
	&lt;div&gt;
		Source code is available at &lt;a href="https://github.com/rsaxvc/monte-carlo-benchmark"&gt;https://github.com/rsaxvc/monte-carlo-benchmark&lt;/a&gt;. Slight modifications were needed for OSX, whose atomic builtins are named differently than GCC's default ones, as well as OpenBSD, which needed changes for the path for bash.
	&lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">A New, Future-Proofable Archive Format</title>
    <id>http://rsaxvc.net/blog/2012/11/30/A New, Future-Proofable Archive Format.html</id>
    <updated>2012-11-30T21:08:14Z</updated>
    <link href="http://rsaxvc.net/blog/2012/11/30/A New, Future-Proofable Archive Format.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;

&lt;div&gt;
I've been dealing with different archive formats recently, and I'm a little bummed that none of them do everything I want. So I've been kicking 
around the idea of an archive format that is scalable to future algorithms, can be optimized at pack-time for what is stored, and can be updated 
with more advanced decompression algorithms without needing to update the client. What I've come up with so far is embedding a small subset of a 
programming language into the archive itself.
&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;
Examples:
&lt;ul&gt;Text files can be compressed with the same LZxx algorithms today&lt;/ul&gt;
&lt;ul&gt;WAV files can be compressed as FLAC files, and decompressed on the fly as needed&lt;/ul&gt;
&lt;ul&gt;Bitmaps can be compressed any number of ways(PNG/JP2/...)&lt;/ul&gt;
&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;
One hurdle is making the decompression algorithm small enough for this to be effective. That said, for small files, a smaller but less efficient
decompressor may be included to keep the total filesize still small.
&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;
Future proofing is intrinsic - when an archive is packed, it contains the algorithms used to compress it, so any new compression algorithms
will work fine on old implementations.
&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;
Security concerns - each archive contains one or more programs running on the user's machine. This is where exposing only a subset of
normal OS bindings comes in - the program gets access to read the compressed data block, ability to read/free memory, the ability to
write to the output buffer, and of course entry/exit points for open/close/read/seek.
&lt;/div&gt;&lt;br/&gt;


&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Blagr</title>
    <id>http://rsaxvc.net/blog/2012/9/30/Blagr.html</id>
    <updated>2012-09-30T20:26:13Z</updated>
    <link href="http://rsaxvc.net/blog/2012/9/30/Blagr.html" />
    <author>
      <name>Richard Allen</name>
    </author>
    <content type="html">&lt;p&gt;This is a simple blogging platform I wrote to replace my dependence on Movable Type.
I suppose it will require me to actually learn some css/html.&lt;/p&gt;

&lt;p&gt;Previously I tried updating my Movable Type install, but that wouldn't work.&lt;/p&gt;
&lt;p&gt;So I tried installing the new version and uploading the backup to it. But that didn't work.&lt;/p&gt;
&lt;p&gt;Next I tried a clean install of the old version, uploading the backup, and upgrading. But that didn't work&lt;/p&gt;
&lt;p&gt;Finally I looked at the documentation online, but it was plastered with spam comments.&lt;/p&gt;
&lt;p&gt;I really don't like being unable to get my data back in a nice parsable format.&lt;/p&gt;

&lt;p&gt;So that's how this started. Blagr uses a simple plain-text format, one file per post. 
Blagr really isn't a blog or blog-engine by itself - it is only a transfer format. 
You can see the source to all my posts in the blog/input directory.&lt;/p&gt;

&lt;p&gt;The format is quite simple - there are two parts, header and body, as well as a seperator
between them: --- , that's three dashes in a row on one line. The header itself is a list
of key-value pairs. Each line in the header has the key, then a colon, then the value. So
you want to tag a post with pickles? Add Tag:Pickles to the header. The post body is XHMTL&lt;/p&gt;

&lt;p&gt;The blog you are reading right now is statically compiled by a small python program that
only knows how to read .blagr files, sort them, and output html.&lt;/p&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Advantages of Reader/Writer locks on small single-core systems.</title>
    <id>http://rsaxvc.net/blog/2012/9/23/Advantages of Reader/Writer locks on small single-core systems..html</id>
    <updated>2012-09-23T23:46:42Z</updated>
    <link href="http://rsaxvc.net/blog/2012/9/23/Advantages of Reader/Writer locks on small single-core systems..html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;

&lt;div&gt;&lt;br /&gt;Most commonly, reader/writer locks are applied to larger systems where it can decrease contention when there are many threads trying to read. In my case there were actually very few threads, but a reader/writer lock still proved advantageous. Let us examine what can happen when two threads need to read, using both a standard lock, and a reader/writer lock.&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;Premise: Thread A is high-priority, thread B is low-priority, and the OS provides hard-priority-scheduling. Only these two threads will run in the period of time we're interested in.&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;Here's what could happen using a single standard lock.
&lt;ol&gt;
&lt;li&gt;An event occurs, causing thread B to run.&lt;/li&gt;
&lt;li&gt;Thread B takes the lock and begins reading&lt;/li&gt;
&lt;li&gt;An event occurs, causing thread A to run.&lt;/li&gt;
&lt;li&gt;A context-switch occurs due to thread-priority. Thread A is now running.&lt;/li&gt;
&lt;li&gt;Thread A attempts to read but is blocked.&lt;/li&gt;
&lt;li&gt;A context-switch occurs, allowing thread B to release the lock.&lt;/li&gt;
&lt;li&gt;A context-switch occurs due to thread-priority. Thread A is now running.&lt;/li&gt;
&lt;li&gt;Thread A takes the lock, reads, unlocks, and blocks elsewhere.&lt;/li&gt;
&lt;li&gt;A Context switch occurs due to only one ready-to-run thread.&lt;/li&gt;
&lt;li&gt;Thread B continues until it blocks elsewhere.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;But now, lets look at what happens with a reader/writer lock instead, with similar event timing.
&lt;ol&gt;
&lt;li&gt;An event occurs, causing thread B to run.&lt;/li&gt;
&lt;li&gt;Thread B takes the lock and begins reading&lt;/li&gt;
&lt;li&gt;An event occurs, causing thread A to run.&lt;/li&gt;
&lt;li&gt;A context-switch occurs due to thread-priority. Thread A is now running.&lt;/li&gt;
&lt;li&gt;Thread A also takes the lock, reads, and releases the lock. It then blocks elsewhere.&lt;/li&gt;
&lt;li&gt;Thread B finishes reading, releases the lock, and blocks elsewhere.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;First we notice that using the reader/writer lock avoids a pair of unceccesary context-switches. This is nice, but the advantage is heavily architecture/OS dependent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even assuming the context-switches are cheap, there's another advantage to the reader/writer lock in this situation. The advantage is system latency - by using the reader/writer lock instead of a simple lock, high-priority threads no longer have to wait for low-priority thread to release the lock. The ability to allow multiple threads to enter the critical section is the same reason it is often chosen in high-contention environments, but it also usefully provides reduced latency when experiencing any contention.&lt;/div&gt;

&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Hooking ARM IRQs with FIQs</title>
    <id>http://rsaxvc.net/blog/2012/9/2/Hooking ARM IRQs with FIQs.html</id>
    <updated>2012-09-02T20:12:07Z</updated>
    <link href="http://rsaxvc.net/blog/2012/9/2/Hooking ARM IRQs with FIQs.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;I stumbled on to an odd little trick recently. On the ARM architecture, there are two types of interrupts- Fast Interrupts(FIQ) and standard/slow interrupts(IRQ). I was writing an FIQ, but needed some way to test it. I figured I would re-use an existing external IRQ line, but I didn't really want to prevent the interrupt from reaching the OS. Luckily for me, it turns out it is possible to install an FIQ that is triggered by an existing IRQ, without breaking the behaviour of the existing IRQ.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the processor I was using, there is a bit-vector that controls if an interrupt is actually an FIQ. If the interrupt is marked as an FIQ interrupt, the execution will jump FIQ vector. It is important to note that you can still keep an interrupt vector in place.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most non-nested interrupts look something like this:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;ACK interrupt&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;Do Something&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;SUBS PC, R14, #4 ;Return from interrupt/fiq and swap back the PSR(Program Status Register)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My FIQ looks something like this:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;Do Something&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;Clear FIQ bit&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;SUBS PC, R14, #4&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You'll note I didn't ACK the interrupt. That's because the slow interrupt will still run. When the external stimulus occurs, the CPU stops current processing(or may block a little while if interrupts are disabled), and executes the FIQ. The FIQ then marks the interrupts as not an FIQ. The FIQ keeps running until it returns. When it returns, the interrupt controller catches that there is still an outstanding interrupt, and then runs the standard interrupts handler. Because we cleared the FIQ bit in the FIQ, we should probably re-enable it after the IRQ completes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think there are several useful things you could do with this. You could measure interrupt delay between the event and the IRQ response by installing an FIQ that reads a timer, and reading it again in the OS after the IRQ completes. You could count the number of IRQ events in the system overall. You could test adding latency to existing IRQs.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Kraken-II: A small virtual machine. </title>
    <id>http://rsaxvc.net/blog/2012/8/23/Kraken-II: A small virtual machine. .html</id>
    <updated>2012-08-23T20:36:02Z</updated>
    <link href="http://rsaxvc.net/blog/2012/8/23/Kraken-II: A small virtual machine. .html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;p&gt;Long ago, in the age of state-collegiate education, I had a class with Ted McCracken. On the first day, he announced we would be designing a computer. Specifically, a small 8-bit RISC machine. By some strange chance one of the best teachers at the school was having his course reviewed by the state. This terrible maelstrom yielded my semester of CpE315. We would cover 8086, 80386, brush on PowerPC, serial busses, parallel busses, memory and timing, segmented memory, virtual memory, pipelining, and would touch on nearly everything I would come to understand years later about electronics from diode-transistor logic to cache architecture on multicore devices.&lt;/p&gt;

&lt;p&gt;The machine was done piecemeal - each student was given a few parts of the design, and the basic design was completed. The next step of the course was programming the system. Dr McCracken graded by stepping through the programs on paper. I would often make a simple error when translating the assembly to machine code. Eventually, I wrote a small virtual-machine and assembler so I could test my work before I submitted it. I added instructions as I needed them.&lt;/p&gt;

&lt;p&gt;Years later, and a few OS-installs too, I've lost the code to the original 'Kraken' architecture emulator. So this is a new simple architecture based on many of the things I learned in CpE315, with more years of experience. I've also started on an assembler that uses a grammar parser instead of getline as the main text processing construct.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rsaxvc/Kraken-II"&gt;https://github.com/rsaxvc/Kraken-II&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">libgraphoscope: a project in need of a newer name</title>
    <id>http://rsaxvc.net/blog/2012/5/3/libgraphoscope: a project in need of a newer name.html</id>
    <updated>2012-05-03T05:00:52Z</updated>
    <link href="http://rsaxvc.net/blog/2012/5/3/libgraphoscope: a project in need of a newer name.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;I'll prefix this with; when I wrote it, I needed a name meaning graphing on an oscilloscope. Later I found it had been taken for some time. This all started when I saw this video:&lt;/div&gt;
&lt;br /&gt;

&lt;div&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1UpwOtb7yh0&amp;amp;hl=nl_NL&amp;amp;fs=1&amp;amp;" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/s1eNjUgaB-g&amp;amp;hl=nl_NL&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/object&gt;&lt;/div&gt;

&lt;br /&gt;
&lt;div&gt;So, I wrote a little library that can render out to the audio-card. Now I just need to write a sweet demo like the above video.&lt;/div&gt;

&lt;br /&gt;

&lt;div&gt;&lt;a href="https://github.com/rsaxvc/libgraphoscope"&gt;https://github.com/rsaxvc/libgraphoscope&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;
&lt;div&gt; It may require a little tuning in graphoscope_config.h for you particular soundcard.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Atari Flashback Controller Pinout and Frame</title>
    <id>http://rsaxvc.net/blog/2012/1/7/Atari Flashback Controller Pinout and Frame.html</id>
    <updated>2012-01-07T23:44:48Z</updated>
    <link href="http://rsaxvc.net/blog/2012/1/7/Atari Flashback Controller Pinout and Frame.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">The previously disassembled Atari Flashback Controller has 5 important pins inside. When looking straight into the connector::&lt;div&gt;&lt;ul&gt;&lt;li&gt;OUT(Orange,Top row, near right)&lt;/li&gt;&lt;li&gt;SCK(White,Top row, near left)&lt;/li&gt;&lt;li&gt;DO(Yellow,Top row, center)&lt;/li&gt;&lt;li&gt;GND(Black,Bottom row, near left&lt;/li&gt;&lt;li&gt;5V(Red,Bottom row, near right)&lt;/li&gt;&lt;li&gt;and 4 grey lines, two of which appear to be open, two are connected to each other, none of which hit the connector.&lt;/li&gt;&lt;/ul&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6623517563/" title="Rear PCB by rsaxvc, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7165/6623517563_1077ab0f97.jpg" width="500" height="333" alt="Rear PCB" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The data comes out of the OUT pin, and the bits are clocked by the SCK pin.&amp;nbsp;The bitword(OUT pin), from 1 at t=0, goes:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Left Button&lt;/li&gt;&lt;li&gt;Right Button&lt;/li&gt;&lt;li&gt;Select&lt;/li&gt;&lt;li&gt;Pause&lt;/li&gt;&lt;li&gt;Up Stick&lt;/li&gt;&lt;li&gt;Down Stick&lt;/li&gt;&lt;li&gt;Left Stick&lt;/li&gt;&lt;li&gt;Right Stick&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;These are active low, meaning pushing the button makes the corresponding bit go from a one to a zero. I'd like to maybe make an arduino library for Pickin Duino&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Atari Flashback Controller Teardown</title>
    <id>http://rsaxvc.net/blog/2012/1/3/Atari Flashback Controller Teardown.html</id>
    <updated>2012-01-03T01:46:58Z</updated>
    <link href="http://rsaxvc.net/blog/2012/1/3/Atari Flashback Controller Teardown.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Recently, I disassembled an Atari Flashback controller to see if it could be easily interfaced to an arduino for Pickin' Duino.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6623505057/" title="Front by rsaxvc, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7020/6623505057_d67e08aa79.jpg" width="500" height="333" alt="Front" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;Once the case is open, you can easily see the side buttons are implemented with membrane switches, as is the joystick, and as are the front switches.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6623513761/" title="Case Open by rsaxvc, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7001/6623513761_7ec73be6ba.jpg" width="333" height="500" alt="Case Open" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;The board appears to be using some sort of clocked serial interface, probably SPI related.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6623517563/" title="Rear PCB by rsaxvc, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7165/6623517563_1077ab0f97.jpg" width="500" height="333" alt="Rear PCB" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;I was hoping that the 9-pin interface was just a switch array, but there's a IC under an epoxy blob. It should be possible to learn the protocol with an oscilloscope.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Game:Pickin' Duino</title>
    <id>http://rsaxvc.net/blog/2012/1/2/Game:Pickin' Duino.html</id>
    <updated>2012-01-02T23:28:15Z</updated>
    <link href="http://rsaxvc.net/blog/2012/1/2/Game:Pickin' Duino.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Rachel and Jestin, of &lt;a href="http://c3kc.org/"&gt;CCCKC&lt;/a&gt;&amp;nbsp;fame, pointed me toward a library named&amp;nbsp;&lt;a href="http://code.google.com/p/arduino-tvout/"&gt;arduino tv-out&lt;/a&gt;, which is a software modulator for NTSC and PAL video signals. Rachel wrote a game long ago, called&amp;nbsp;&lt;a href="http://pickinsticks.moosader.com/"&gt;Pickin' Sticks&lt;/a&gt;. &lt;a href="https://github.com/rsaxvc/pickin-duino"&gt;Pickin' Duino&lt;/a&gt; is an implementation of Pickin Sticks on Arduino. The game itself is pretty simple - there is one player, and one other item on the screen, a bundle of sticks. Move your character to the sticks to gain a point. Oh no, more sticks appeared. Eventually I set the score to 'WIN' at some point when you've been playing far too long.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6623040363/" title="Me and PickinSticks by rsaxvc, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7153/6623040363_e43264f183.jpg" width="500" height="333" alt="Me and PickinSticks" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;Tada! Also, I didn't have a controller to interface to the arduino, so instead I wrote a simple screen-saver like guidance system. Here's a long exposure:&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6623035055/" title="Ooh, look at that AI! by rsaxvc, on Flickr"&gt;&lt;img src="http://farm8.staticflickr.com/7162/6623035055_fcdf774332.jpg" width="500" height="333" alt="Ooh, look at that AI!" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;And that's about it. Eventually I intend to add a real controller, but for now I'm going to use two potentiometers.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Project: pyGNU</title>
    <id>http://rsaxvc.net/blog/2012/1/2/Project: pyGNU.html</id>
    <updated>2012-01-02T22:23:34Z</updated>
    <link href="http://rsaxvc.net/blog/2012/1/2/Project: pyGNU.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;a href="https://github.com/rsaxvc/pygnu"&gt;pyGNU&lt;/a&gt;&amp;nbsp;is a reimplementation of the GNU &lt;a href="http://www.gnu.org/software/coreutils/"&gt;coreutils&lt;/a&gt; in Python.&amp;nbsp;
&lt;a href="http://python.org/"&gt;Python&lt;/a&gt;&amp;nbsp;is a fun language, and happens to have a pretty nice OS abstraction package, named 'os'. When combined with the 'sys' package, most coreutils are pretty straightforward to implement in Python.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I thought this would be a simple way to learn a little more Python. But I've come to an interesting realization about my programming over time. When I was young, to solve a problem I'd choose a simple language, like basic on my Apple II. As I became older, I would do more projects in the language I knew best, C/C++. Now, I usually pick the language that involves the least amount of typing.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Python's for-iterator syntax, sets, lists, and preexisting packages make it a joy to write. Many of the pyGNU programs aren't quite done yet, but all the programs are usable. If you know python, feel free to add a few more.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Retraction: BSidesKC Samsung Presentation</title>
    <id>http://rsaxvc.net/blog/2012/1/2/Retraction: BSidesKC Samsung Presentation.html</id>
    <updated>2012-01-02T21:19:17Z</updated>
    <link href="http://rsaxvc.net/blog/2012/1/2/Retraction: BSidesKC Samsung Presentation.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">On October 26, 2011, at BSidesKC, I gave a talk on how to remotely exploit Verizon and Sprint femtocells. It turns out I was wrong. My attack was based on some services running locally on the device. Early in my work with the device, I wrote a small script to help me boot the units. This included taking over the bootloader and setting up the kernel properly, as well as mounting filesystems and clearing iptables. The service I used to gain control of the device appears to be entirely unused, but is still running on the devices. However, iptables had blocked it entirely. Since I only probed my units over the VPN, I had note noticed that my testing environment changed the units I was examining. I apologize for crying wolf.
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Exploring HP's FAT Filesystem</title>
    <id>http://rsaxvc.net/blog/2011/10/22/Exploring HP's FAT Filesystem.html</id>
    <updated>2011-10-22T21:34:26Z</updated>
    <link href="http://rsaxvc.net/blog/2011/10/22/Exploring HP's FAT Filesystem.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;&lt;div&gt;When high end HP printers receive a document, they may spool it to a hard disk temporarily. These drives use HP's own implementation of a FAT filesystem. The vendor string is "HpFAT1.0". I've identified the directory entry structure, and a few members inside of it. It goes a little something like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;typedef packed struct&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;char filename[100];&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;uint16 some_interesting_value;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;uint8 always_null_so_far_a[15];&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;uint8 attribyte;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;uint8 always_null_so_far_b[3];&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;uint8 always_0x88_so_far;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;uint16 start_of_file_in_clusters;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;uint32 filesize;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;};&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;I&lt;/span&gt;&amp;nbsp;think the filename can be up to 100 characters, including period and extension. The attributes appear to be the same as FAT16, as do the last six bytes of the entry.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;I have an example filesystem pulled from a printer, and can retrieve some files, but don't know what they mean. There are some 'MDT' files, 'MNF' files, and a '.DB' file. I should write a parser, and either extend the Linux kernel module for msdos to handle HPFAT, or copy and modify it into a new driver.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some Numbers:&lt;/div&gt;&lt;div&gt;Deletion marker: 0xE5&lt;/div&gt;&lt;div&gt;Bytes/sector: 512&lt;/div&gt;&lt;div&gt;Sectors/cluster:&amp;nbsp;63&lt;/div&gt;&lt;div&gt;Reserved clusters:&amp;nbsp;13&lt;/div&gt;&lt;div&gt;Copies of FAT: 1&lt;/div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;Max Dirents:&amp;nbsp;64&lt;/div&gt;&lt;div&gt;Type:0xF8-fixed disk&lt;/div&gt;&lt;div&gt;Sectors/FAT: 0xFB&lt;/div&gt;&lt;div&gt;Sectors/Track: 0x3F&lt;/div&gt;&lt;div&gt;Heads: 0x10&lt;/div&gt;&lt;div&gt;Hidden sector count: 0x0&lt;/div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">555 Timer Schematics and Math</title>
    <id>http://rsaxvc.net/blog/2011/10/12/555 Timer Schematics and Math.html</id>
    <updated>2011-10-12T00:29:29Z</updated>
    <link href="http://rsaxvc.net/blog/2011/10/12/555 Timer Schematics and Math.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">.&lt;div&gt;This is a followup on &lt;a href="http://rsaxvc.net/blog/2011/10/a-time-lapse-shutter-release.html"&gt;building a time-lapse shutter controller&lt;/a&gt;, now that I have time to draw schematics and write math&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6236301009/" title="Camera Time-Lapse Controller by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6113/6236301009_0eb60b2b1a.jpg" width="500" height="223" alt="Camera Time-Lapse Controller" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;There are several stages to the design:
&lt;ul&gt;
&lt;li&gt;Power Supply&lt;/li&gt;
&lt;li&gt;Power Usage&lt;/li&gt;
&lt;li&gt;Frequency Range&lt;/li&gt;
&lt;li&gt;Output Coupling&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;h2&gt;Power Supply&lt;/h2&gt;I wanted to drive the device with AA batteries, but since the 555 timer I used requires a minimum of 4.5 volts and maximum of 15, that would require four rechargeable AA batteries. Instead I decided to go with a 9-volt cell, as a single battery can drive the circuit until it is nearly empty. However, this does have implications for the rest of the circuit. In particular, the output stage must accept being driven by voltage in the range of 8 to 3 volts, as the 555 may differ between 1.5 and 2 volts from a high on the output pin to the input voltage, but if everything is designed to handle this, then I don't need to regulate the power supply&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;h2&gt;Power Usage&lt;/h2&gt;Since this circuit is driven by a transistor, there should be little power usage in the output stage, but the 555 timer can be designed to use too much power. To avoid this, I went with a higher-quality capacitor with lower &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Leakage_%28electronics%29" title="Leakage (electronics)" rel="wikipedia"&gt;leakage current&lt;/a&gt;, and large-valued potentiometers.&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;h2&gt;Frequency Range&lt;/h2&gt;The frequency range and duty cycle are controlled by ratios of resistances to capacitance C2. The formula for time on is TimeOn = [C] * [R1] * ln(2). The formula for time off is usually TimeOff = [C2] * [R2] * ln(2), but also note that I added R3 in series with R2 so that the total resistance there can never drop below the speed my camera can take photos. My complete formula for off would be [C2] * ([R2]+[R3]) * ln(2). I would suggest picking a physically small, high quality(low leakage) capacitor, in the range at least 10uF, and the pick potentiometers to meet the range of timing you want to hit.&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;h2&gt;Output Coupling&lt;/h2&gt;My circuit is tuned to efficiently drive my &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Canon_EOS_20D" title="Canon EOS 20D" rel="wikipedia"&gt;Canon 20d&lt;/a&gt;. Using a meter, the remote port was always about 10 milliamps shorted, and 3.3 volts open. Since the 555 outputs a voltage driven square wave, an &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Bipolar_junction_transistor" title="Bipolar junction transistor" rel="wikipedia"&gt;NPN transistor&lt;/a&gt; can be added to convert a to a DC switch. I'd have to check the particular transistor used, but anything handling 15milliamps should do fine. Mine had a DC gain of 30-&amp;gt;90, so I did all work assuming worst case hfe gain of 30. Keep in mind that the power supply section states a 4.5 volt supply is acceptable with 2.5 to 3 volts output from the 555. Also note that the NPN transistor will have some &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Direct_current" title="Direct current" rel="wikipedia"&gt;DC voltage&lt;/a&gt; drop over it, in my case 0.7 volts. The simplest method is to compute all calculations assuming smallest voltage to the 555, and pick the [R4] to match to ensure the transistor can trigger the camera, then go back and make sure the transistor can also deal with the current driven from the 555 when the 555 is fully powered and puts 8 volts out toward the transistor.&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;h2&gt;Picking Parts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;555 timer - there are several different kinds, including high power, high efficiency, rail-to-rail voltage output, and CMOS. Mine was nothing special, and I think any will do. You do not need a high-speed one for camera work&lt;/li&gt;
&lt;li&gt;Main capacitor C2 - this guy controls the range of frequencies the circuit will operate at. Also low-leakage is nice if you have it. Electrolytics can be sensitive to reverse voltage, so be careful about that&lt;/li&gt;
&lt;li&gt;On timing potentiometer R1 - this resistor controls the exposure time, so make sure to pick one, when combined with C2, that does what you need.&lt;/li&gt;
&lt;li&gt;Off timing potentiometer R2 - this resistor controls the time between exposures, so make sure to pick one, when combined with C2, that does what you need.&lt;/li&gt;
&lt;li&gt;555 capacitor C1 - this is specific to your 555, and some list a range. 5pF to 22pF worked here for me, although 10pF was the 'ideal'. Some 555s do not need one.&lt;/li&gt;
&lt;li&gt;diode D1 - just a standard diode, this application is low voltage; almost any will do. This part allows you to run the exposure(on time) less than the off time.&lt;/li&gt;
&lt;li&gt;Transistor Q1 - most small signal NPN transistors will work. Needs to be able to sink the current from the camera remote port, which isn't much. I would pick higher gain over lower to try and save a little power, but I got mine out of a spare transistor bucket.&lt;/li&gt;
&lt;li&gt;DC Battery V1 - I added a 9-volt dry cell connector, but forgot a power switch&lt;/li&gt;
&lt;li&gt;power switch - not pictured, but do add this.&lt;/li&gt;
&lt;li&gt;optional LEDs - I added an LED driven from the 555 output so I could see the delay before shooting. Also could add power LED.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text"> Robot Cupcakes</title>
    <id>http://rsaxvc.net/blog/2011/10/11/ Robot Cupcakes.html</id>
    <updated>2011-10-11T23:10:44Z</updated>
    <link href="http://rsaxvc.net/blog/2011/10/11/ Robot Cupcakes.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;What's this? A robot cupcake at work?&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6236743928/" title="Cupcake Robot by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6211/6236743928_6f91550e16.jpg" width="500" height="333" alt="Cupcake Robot" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Oh no an entire army!&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6236745164/" title="Robot Cupcakes by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6171/6236745164_fe9e122141.jpg" width="500" height="333" alt="Robot Cupcakes" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">a Time-Lapse Shutter Release</title>
    <id>http://rsaxvc.net/blog/2011/10/9/a Time-Lapse Shutter Release.html</id>
    <updated>2011-10-09T21:52:13Z</updated>
    <link href="http://rsaxvc.net/blog/2011/10/9/a Time-Lapse Shutter Release.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;I plan to post again with the schematics and the math, but today I finished:&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6228457975/" title="Time Lapse Timer by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6091/6228457975_982e0003d4.jpg" width="333" height="500" alt="Time Lapse Timer"&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;br/&gt;&lt;/div&gt;
&lt;div&gt;This circuit connects to all my other remote shutter peripherals. I used a 555 timer to generate the timing, and two potentiometers - one for on-time/exposure, one for off-time. Add the times together to see the times between shots. I also used a transistor, as the 555 generates an active-high pulse, and the Canon releases use a  current-short to take photos.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Inside the LinkStar ViaSat Satellite Modem</title>
    <id>http://rsaxvc.net/blog/2011/10/1/Inside the LinkStar ViaSat Satellite Modem.html</id>
    <updated>2011-10-01T15:10:21Z</updated>
    <link href="http://rsaxvc.net/blog/2011/10/1/Inside the LinkStar ViaSat Satellite Modem.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Cleaning out CCCKC, I found a Satellite modem.&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6200949109/" title="LinkStar by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6169/6200949109_88be90b08a.jpg" width="500" height="333" alt="LinkStar" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;Ironic, as this was found inside a cave. The model number is CL0006910-01. The manual states that the IP address is 10.X.Y.Z, where X,Y, and Z are the decimal equivalents of the last three octets of the MAC address. This yields only a telnet port for setting up the unit. Inside you will find a port labelled JTAG, a port labelled EMU, and an RJ-11 port labelled CONSOLE. The console is a 9600-8N1 serial port running full RS232 voltages. vMost logic inside appears to be 3.3 volt, although there is a 5 volt regulator on board as well. If we had two, it would be neat to try and make a point-to-point link.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6200917147/" title="MainBoard by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6003/6200917147_bd578c2b80.jpg" width="500" height="333" alt="MainBoard" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;In the serial console, early enough on boot, if you press enter 3 times it will drop you to a bootloader that can be used to reset the unit to default settings, change console ports (I wouldn't recommend it unless you find the other port), set the MAC address, and read/write the flash and ram. To reset the unit, run 'zapp', then 'boot', and now the root password is blank. when logged in as root, many more commands are available. In both the OS and bootloader, run '?' to get a list of commands. Be aware, if you type a single letter, it may match it to the first available command.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More photos are up:&amp;nbsp;&lt;a href="http://www.flickr.com/photos/40925843@N03/sets/72157627794846750"&gt;http://www.flickr.com/photos/40925843@N03/sets/72157627794846750&lt;/a&gt;&lt;/div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">More Remote Shutters</title>
    <id>http://rsaxvc.net/blog/2011/9/29/More Remote Shutters.html</id>
    <updated>2011-09-29T23:27:44Z</updated>
    <link href="http://rsaxvc.net/blog/2011/9/29/More Remote Shutters.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;While unpacking CCCKC at the new Hammerspace, I found some unused switches soon to be discarded. This is a Kodak projector controller.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6196631151/" title="New Remote Shutter by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6157/6196631151_6548d2e75d.jpg" width="500" height="333" alt="New Remote Shutter" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;And I think this was a projector screen up/down controller, but it has good mechanical action.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6196630519/" title="New Remote Shutter by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6007/6196630519_f764a1f24a.jpg" width="500" height="333" alt="New Remote Shutter" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;Of course, they all use the 1/8 inch headphone plug I've converted everything to use&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text"> a Universal Canon Remote Shutter </title>
    <id>http://rsaxvc.net/blog/2011/9/25/ a Universal Canon Remote Shutter .html</id>
    <updated>2011-09-25T17:00:32Z</updated>
    <link href="http://rsaxvc.net/blog/2011/9/25/ a Universal Canon Remote Shutter .html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;A bit ago, I purchased two remote shutter releases for my Canon 20d. The plan was to keep one, and convert the other into a time-lapse controller by removing the remote and adding a 555-timer circuit. This is all well and good, but I still couldn't attach either to my old EOS 350 Rebel. After thinking about it some, I've added 1/8 inch stereo jacks to all my remote release gear. This way I can swap cameras, control multiple cameras with a headphone splitter, and when I have time to build the time-lapse rig, I just have to add a 1/8 inch plug to it and it will work with everything else.&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6183005146/" title="Remote Shutter Setup by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6180/6183005146_d8cd549acb.jpg" width="500" height="333" alt="Remote Shutter Setup" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;I did consider going with 2.5mm (headset jacks/plugs) connectors, as that is what older Canon SLRs used for remote releases, but one thing troubled me - long 2.5mm stereo extension cables are hard to find while any electronics store will have a 1/8th inch stereo headphone extension. Instead I bought a headphone-&amp;gt;headset adapter for the old Rebel.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Poking around an Ademco RapidEye Multi</title>
    <id>http://rsaxvc.net/blog/2011/9/25/Poking around an Ademco RapidEye Multi.html</id>
    <updated>2011-09-25T14:58:05Z</updated>
    <link href="http://rsaxvc.net/blog/2011/9/25/Poking around an Ademco RapidEye Multi.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6179768537/" title="RapidEyeMulti by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6155/6179768537_9970d6167c.jpg" width="333" height="500" alt="RapidEyeMulti" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;The Ademco RapidEye Multi is a small CCTV DVR, serving the same purpose as the Pelco. As it turns out, this hardware is quite different from Pelco's. The Ademco uses a Pentium-I desktop, wrapped with a custom housing and interface boards.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6176741079/" title="What's this? by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6178/6176741079_e96a5683e6.jpg" width="333" height="500" alt="What's this?" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6176744311/" title="Warranty Void by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6163/6176744311_bdd084ccab.jpg" width="500" height="333" alt="Warranty Void" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;The unit is also running Wind River VxWorks. Since we all know a Pentium cannot simultaneously compress 8 different video streams, this card contains the extra horsepower. It also has a small wire running to the motherboard's reset line.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6177270744/" title="PCI Video I/O Card by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6173/6177270744_84060e9315.jpg" width="500" height="333" alt="PCI Video I/O Card" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;The unit also has a modem and two serial ports. If you attach a cable to the second port, you can interrupt the boot sequence to change settings like the IP address. Use 8-N-1, 9600 baud. You'll need to press enter quickly to block the boot-up sequence. Here's an example capture:
&lt;pre&gt;AVAILABLE COMMANDS    DESCRIPTION
?                     This command list
q                     Quit; Start Application; Run OS shell on console
cls                   Clear Screen
ver                   Display Product Version
show                  Show all parameter values
&lt;name&gt;=&lt;value&gt;        Set LAN parameter, e.g.,
                       'ip = 172.25.2.1'
                       'gateway = 172.25.100.1'
                       'netmask = 255.255.0.0'
                      Set PPP parameter, e.g.,
                       'local = 172.26.2.1'
                       'host = 172.26.200.1'
                       'comport = port1'
                        (options are 'none', 'port1', 'port2', or 'internal')
                       'timeout = 60'
                        (timeout may be between 0 and 999 seconds)
                       'baudrate = 9600'
                        (options are 9600, 19200, 38400, 57600, 115200)
                       'modem prefix = at'
                       'modem init = z'
                       'modem dial = D'
recover               Recover system to the previous version.

Enter a command, or '?' for help:
ver

Rapid Eye MULTI
Configuration Shell
Version 3.2

Copyright 1999-2000, Ademco

Enter a command, or '?' for help:
show

Current LAN Settings:
  ip       = 10.174.8.64
  gateway  = 10.174.8.1
  netmask  = 255.255.254.0
Current PPP Settings:
  local    = 172.26.2.1
  host     = 172.26.200.1
  comport  = internal
  timeout  = 60
  baudrate = 115200
  modem prefix = AT
  modem init   = Z
  modem dial   = D


Enter a command, or '?' for help:
q

Configuration Shell Stopped...
Attached TCP/IP interface to eeE
&lt;/value&gt;&lt;/name&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;I also imaged the disk. The disk is split into two partitions. The first is a 2GB FAT containing VxWorks. The second is a partition listed as 'free space', but actually holds the video data. Here's the file list:
&lt;pre&gt;.
./streadir.dat
./STARTUP
./VERSION
./eventdup.dat
./JAV308.O
./system.log
./JAV306.O
./VXWORKS
./EVENTDIR.DAT
./TEMP
./KALATEL.O
./blockdir.dat
./PPPWAIT
./DAU
./storage.cfg
./streadup.dat
./alarmdir.dat
./PPPINIT
./PELCO_P.O
./MANUF
./serialid
./alarmdup.dat
./eventcol.dat
./SECURITY
./BOOTROM.SYS
./MTC
./MTC/SECURITY
./MTC/USR.INI
./MTC/LUCENT.INI
./MTC/config
./MTC/cfgdup
./GPOSTATE
./DELTA.O
./storage.csv
./CONTEXT
./PELCO_D.O
./DSH2
./config
./DSHUNLD
./cfgdup
&lt;/pre&gt;&lt;/div&gt;

&lt;div&gt;More photos are available here: &lt;a href="http://www.flickr.com/photos/40925843@N03/sets/72157627615155249/"&gt;http://www.flickr.com/photos/40925843@N03/sets/72157627615155249/&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">PPPRS launches Kickstarter</title>
    <id>http://rsaxvc.net/blog/2011/9/25/PPPRS launches Kickstarter.html</id>
    <updated>2011-09-25T01:50:59Z</updated>
    <link href="http://rsaxvc.net/blog/2011/9/25/PPPRS launches Kickstarter.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;The Powerwheels Racing Series (&lt;a href="http://pumpingstationone.org/tag/ppprs/"&gt;PPPRS&lt;/a&gt;) has launched a&amp;nbsp;&lt;a href="http://www.kickstarter.com/projects/308894311/ppprs-the-power-racing-series"&gt;kickstarter&lt;/a&gt;. They're raising funds with the goal of adding new races to the circuit, more obstacles, and a new timing/scoring system. I signed up for a great big banner.&lt;/div&gt;&lt;div&gt;&lt;img src="http://powerracingseries.org/images/uploads/day2_preview.jpg" /&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Poking around a Pelco CCTV DVR</title>
    <id>http://rsaxvc.net/blog/2011/9/24/Poking around a Pelco CCTV DVR.html</id>
    <updated>2011-09-24T09:40:12Z</updated>
    <link href="http://rsaxvc.net/blog/2011/9/24/Poking around a Pelco CCTV DVR.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Some time ago our hackerspace was given a Pelco CCTV DVR. We used it in the cave for a while, but nobody was monitoring it. The plan was to write some open-source software to interconnect with it so we could use it as an 8-port ethernet video receiver. While moving to the new space, I took apart the unit so we could take some photos, probe some lines, and image the disk.&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;Here it is. The Hard Disk area is obscured, but is a single channel IDE disk. A second disk comes with the 16 port model.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6178060926/" title="Innards of the Pelco DVR by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6153/6178060926_96f68ba68e.jpg" width="500" height="333" alt="Innards of the Pelco DVR" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;A 5 Volt Serial Port is available on the middle board, although I did not have my adapter&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6178062054/" title="Serial Port on Middle Board by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6180/6178062054_04be36c3fc.jpg" width="500" height="333" alt="Serial Port on Middle Board" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;JTAG is available on the upper board&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6177530647/" title="JTAG Port on Upper Board by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6159/6177530647_d6c611613f.jpg" width="500" height="333" alt="JTAG Port on Upper Board" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;I pulled the disk to see how the video was stored. The disk has a single ext3 partition. All settings are stored in a file named dx3100.ini - clear text passwords too. Also, you can configure camera names and the like through the file, which is probably easier than typing them in on the device while it is running. Also, alarms and network settings are in the file. There's a log directory, and an old_log directory, both of which were empty on our unit. The video is stored in files, about 100MB or so each, in a folder with the date of the recording. However, the folder sturcture, /disstech/diss/&amp;lt;4digityear&amp;gt;&amp;lt;2digitmonth&amp;gt;&amp;lt;2digitday&amp;gt;/*.dsf matches digiop DVR recording systems, so we may be able to play footage using their tools, some of which are available&amp;nbsp;&lt;a href="http://bulletcam.ca/digiopsupport.php"&gt;here&lt;/a&gt;. I've placed one dsf file, dx3100.ini file, and a file list to into &lt;a href="http://rsaxvc.net/projects/pelco/10000000D.dsf"&gt;this project&lt;/a&gt;. There were also some INX files, but I have yet to take a look at them.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Das Motorsportspiel Liga</title>
    <id>http://rsaxvc.net/blog/2011/9/23/Das Motorsportspiel Liga.html</id>
    <updated>2011-09-23T00:29:32Z</updated>
    <link href="http://rsaxvc.net/blog/2011/9/23/Das Motorsportspiel Liga.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;I took a few shots at the races of&amp;nbsp;&lt;a href="http://www.dasmotorsportspielliga.com/"&gt;http://www.dasmotorsportspielliga.com/&lt;/a&gt;. This is a racing league dedicated to the dice and board game, Das Motorsportspiel. The game is a lot of fun. Currently in the league we each race two different cars, and the league runs a series of races, both originals from the game and prints created and shared online.&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6173929051/" title="DasMotorsportspiel by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6159/6173929051_e0f4293b92.jpg" width="500" height="333" alt="DasMotorsportspiel" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/tags/dasmotorsportspiel/"&gt;More Shots Here&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">3rd Party Canon Remote Shutter Teardown</title>
    <id>http://rsaxvc.net/blog/2011/9/22/3rd Party Canon Remote Shutter Teardown.html</id>
    <updated>2011-09-22T22:35:03Z</updated>
    <link href="http://rsaxvc.net/blog/2011/9/22/3rd Party Canon Remote Shutter Teardown.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">So, we all know you can shove a screwdriver into a Canon 20d to make it take pictures. Eventually I want to build a 555 timer based time-lapse controller. However, I ned a cable with Canon's connector on the end. Originals from Canon cost cash money, but full remotes from China cost ~$4. So I bought 2 and took one apart.

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6173720223/" title="The Remote by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6154/6173720223_505abc6f25.jpg" width="500" height="333" alt="The Remote" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;Pull the two screws. One is hidden under the sticker&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6174248238/" title="Pull these screw by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6159/6174248238_70d9241c41.jpg" width="333" height="500" alt="Pull these screw" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;TaDa! The switch consists of three pieces of metal. I've also cut the wires for later use.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6174249440/" title="The Innards by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6162/6174249440_f443b25d3d.jpg" width="333" height="500" alt="The Innards" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, eventually I want to attach a timer to that extra wire. It will consist of a 555 timer and some pots so that I can adjust the timings.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Kansas City Mini Maker Faire: Parkville photos are up</title>
    <id>http://rsaxvc.net/blog/2011/9/16/Kansas City Mini Maker Faire: Parkville photos are up.html</id>
    <updated>2011-09-16T00:16:21Z</updated>
    <link href="http://rsaxvc.net/blog/2011/9/16/Kansas City Mini Maker Faire: Parkville photos are up.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6152228230/" title="Mini Maker Faire by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6173/6152228230_39e30f462e.jpg" width="333" height="500" alt="Mini Maker Faire" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a&gt;http://www.flickr.com/photos/40925843@N03/sets/72157627680840028/with/6152239392/&lt;/a&gt;&lt;br /&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Building an Office Bike Rack for $30.</title>
    <id>http://rsaxvc.net/blog/2011/9/15/Building an Office Bike Rack for $30..html</id>
    <updated>2011-09-15T23:46:21Z</updated>
    <link href="http://rsaxvc.net/blog/2011/9/15/Building an Office Bike Rack for $30..html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">So, one day I found some bike racks in part of the office I seldom frequent. There were three following a similar design. A right triangle frame extruded along a wall with some pegs to hold the tires.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I tried to take the best aspects from each. One had a good, strong frame. Another used wooden dowels to hold the wheels. The last fit two sizes of bike in the same slot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To start, I used 5 sections of 8 foot 2x2 lumber. Three of these go directly into the frame, so pick the straightest ones. Next you'll need 4 20 inch sections, 4 14 inch sections, and the remaining lumber makes 4 pieces cut as trapezoids to form the hypotenuse. If you're careful you can get all of those from the last 2 pieces of 2x2.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Assemble as such:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6151600571/" title="Bike Rack by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6156/6151600571_925519e646.jpg" width="500" height="333" alt="Bike Rack" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After building the frame, you'll need some short dowels to hold the bikes. I built a jig on a radial arm saw to help me cut faster:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6151601843/" title="Dowel Cutting Rig by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6180/6151601843_ef726be3ff.jpg" width="500" height="333" alt="Dowel Cutting Rig" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And here I am in action:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6152149366/" title="Cutting Dowels by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6063/6152149366_7dd816943b.jpg" width="500" height="333" alt="Cutting Dowels" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once the dowels are sliced, screw them to the frame. I started with a pattern of six so that along one rail it goes dowel - space for a mountain bike - dowel - space for a road bike - dowel. Eventually I intend to attach more of the dowels to fit different sizes of tire, as well as fill in all the spaces on the rack as it currently only fits three bikes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bill of Materials:&lt;/div&gt;&lt;div&gt;5x$1.25 8ft x 2in x 2in lumber&lt;/div&gt;&lt;div&gt;1x$10 box of screws(enough for 3 bike racks)&lt;/div&gt;&lt;div&gt;3x$4 dowel rod&lt;/div&gt;&lt;div&gt;some furniture coasters&lt;/div&gt;&lt;div&gt;some velcro(only the toothy side)&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">RSAXVC.NET: Now a real website</title>
    <id>http://rsaxvc.net/blog/2011/8/29/RSAXVC.NET: Now a real website.html</id>
    <updated>2011-08-29T00:21:50Z</updated>
    <link href="http://rsaxvc.net/blog/2011/8/29/RSAXVC.NET: Now a real website.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;a href="http://www.flickr.com/photos/40925843@N03/6092003524/" title="rsaxvc.net is now a real website by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6191/6092003524_4a796c6441.jpg" width="500" height="249" alt="rsaxvc.net is now a real website" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;As you can see, I have at least one visitor from every state in the union. This had been a little game I was playing for myself with google analytics, until I realized I could set the map start and end dates, and that I had already won.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">DefCon, with Penn and Teller</title>
    <id>http://rsaxvc.net/blog/2011/8/28/DefCon, with Penn and Teller.html</id>
    <updated>2011-08-28T23:20:23Z</updated>
    <link href="http://rsaxvc.net/blog/2011/8/28/DefCon, with Penn and Teller.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;As a preface, I usually don't post out-of-order from the order my pictures are taken in. That said I'm running behind.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;At the last night of DefCon, some fellow I didn't really know at all that we were talking with said he had half-price tickets to the Penn and Teller show. It turns out that he didn't, but we were able to strike a deal with the ticket seller, because the guy I didn't know had his 60d Canon, I had a 20d Canon, and the ticket seller was also a photographer.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The show was pretty slick, and better in person than I expected. One of the people they took onstage was a young lady from &lt;a href="http://toool.us/"&gt;toool&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After the show, Penn and Teller stuck around for photos. Well, here we all are:&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6091313537/" title="Meeting Penn by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6181/6091313537_b17c8a91cb.jpg" width="500" height="375" alt="Meeting Penn"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6091313533/" title="Meeting Teller by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6085/6091313533_4aaf5c86b8.jpg" width="500" height="375" alt="Meeting Teller"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">AT&amp;T 2Wire DSL Modem Teardown</title>
    <id>http://rsaxvc.net/blog/2011/8/27/AT&amp;T 2Wire DSL Modem Teardown.html</id>
    <updated>2011-08-27T01:10:53Z</updated>
    <link href="http://rsaxvc.net/blog/2011/8/27/AT&amp;T 2Wire DSL Modem Teardown.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Some time ago, I took apart an AT&amp;T 2Wire DSL modem. The design was similar although simpler than the AT&amp;T 2Wire VDSL/UVerse unit that had an administrative serial console&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6084899976/" title="AT&amp;amp;T 2Wire DSL Teardown by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6206/6084899976_e29309ae69.jpg" width="333" height="500" alt="AT&amp;amp;T 2Wire DSL Teardown"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;You can find more photos &lt;a href="http://www.flickr.com/photos/40925843@N03/tags/2wire/"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;Interestingly, The 3800 UVerse device, this unit, and the next generation UVerse device all seem to have the same edge connector built into the PCB. I wonder what that does.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Bike Camping at Middle Creek Lake and Park</title>
    <id>http://rsaxvc.net/blog/2011/8/13/Bike Camping at Middle Creek Lake and Park.html</id>
    <updated>2011-08-13T00:13:50Z</updated>
    <link href="http://rsaxvc.net/blog/2011/8/13/Bike Camping at Middle Creek Lake and Park.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Some time ago I heard Noah of &lt;a href="http://kc-bike.blogspot.com/"&gt;kc-bike&lt;/a&gt; talking about going bike camping. The day before, I decided to go.&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Luckily, my work has a small cache of bikes for testing electronics, and I wanted to try out my Garmin Montana with their cadence sensors. The bike of choice was a rockhopper hardtail-mountain bike. Normally I use my old red Raleigh, which was made sometime in the 1970s, and I have been riding for the last 10ish years. However, the Raleigh is a little old to trust farther than I can walk out.&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;The night before I built a Montana bicycle mount. I started by cutting some threaded rod and combining it with hex nuts to make custom-sized bolts. Next I bandsawed some aluminum strip down and punched two holes. These strips wrap around the handlebar, while the custom bolts drop through a Garmin-brand mount to hold the handlebars via the aluminum. Overall it worked well, although I was planning to mount it on the center of the handlebars.&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6037466002/" title="Montana Bike Mount by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6184/6037466002_d7649bd86a.jpg" width="500" height="375" alt="Montana Bike Mount" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;The morning started with brunch at Perkins at 135th with Noah. From there we headed south then east to the arboretum. This made the first 10 miles&lt;/div&gt;&lt;br /&gt; 

&lt;div&gt;The way out was slow, and I stayed near the rear with Noah - he had tons of gear including solar panels and lead acid batteries. However, he was charging a phone and could run other electronics. I had a few issues going out. First, I wish I had carried more water, although we were able to stop and fill up at a Sonic seven or so miles from camp. I wish I had gotten a cargo mount of some type. Although I carried only a backpack, it sure would've been nice to have that mounted to the bike frame instead of me. One thing I had neglected before heading out for the 30 miles of road was to fill up the mountain bike tires. The previous employee must've been out in the dirt, as they were filled nice and low, making extra rolling resistance for me as we covered the series of small hills between miles 10 and 30 to camp.&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Camping was awesome, like all camping always is. I wanted to take a hammock setup, but Noah warned me that there were very few hammock-quality trees, so I opted for a bike-tarp shelter. This is when you take a bike, flip it wheelside up, anchor it somehow, and then attach a lean-to to the bike. This is very useful in areas where there are no trees. Noah made a similar shelter, with the main differences being that he stayed perpendicular to his bike, and I stayed parallel to mine. After the small rainstorm we had, I've concluded that his design is more waterproof, as my design relies on the bike being at least as long as the rider, although I didn't mind the rain on my feet, as it was Kansas hot all night.&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Of other note, a large storm developed North of us, and fired a beautiful lightning show up and down from the ground. A little rain fell, but the cooling was nice&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;After a tasty breakfast, we all headed back.&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6036914211/" title="Heading Home by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6138/6036914211_2609c81fe1.jpg" width="500" height="375" alt="Heading Home"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;In Louisburg, KS I filled my tires to the max. After reaching Louisburg the group split - the main pack headed for the gravel; Noah and I stuck to the flat lands. Later, Noah and I found our own gravel, and after a bit, ended up meeting the main group again - Gene had another flat.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6037466840/" title="Gravelling Home by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6128/6037466840_8539bd3e24.jpg" width="375" height="500" alt="Gravelling Home" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Overall, it was a great bike trip with new friends, lots of being outside, new experiences, and lots of open road&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/6036913879/" title="The Way Back by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6185/6036913879_16ce5b459e.jpg" width="375" height="500" alt="The Way Back" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">boot-animator: part2: Command-Line flags</title>
    <id>http://rsaxvc.net/blog/2011/7/25/boot-animator: part2: Command-Line flags.html</id>
    <updated>2011-07-25T23:54:06Z</updated>
    <link href="http://rsaxvc.net/blog/2011/7/25/boot-animator: part2: Command-Line flags.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">tonight I added command-line flags to boot-animator. Of note:&lt;div&gt;&lt;ul&gt;&lt;li&gt;framerate&lt;/li&gt;&lt;li&gt;frameskip&lt;/li&gt;&lt;li&gt;frameseek&lt;/li&gt;&lt;li&gt;loop&lt;/li&gt;&lt;li&gt;width&lt;/li&gt;&lt;li&gt;height&lt;/li&gt;&lt;li&gt;numframes&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;This makes the tool much more useful for generating android boot images, as well as taught me how to use libpopt, which handles interfacing the command flags for me.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;Here is the current code:&amp;nbsp;&lt;a href="https://github.com/rsaxvc/boot-animator"&gt;https://github.com/rsaxvc/boot-animator&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Gaining root on Samsung FemtoCells</title>
    <id>http://rsaxvc.net/blog/2011/7/17/Gaining root on Samsung FemtoCells.html</id>
    <updated>2011-07-17T23:36:11Z</updated>
    <link href="http://rsaxvc.net/blog/2011/7/17/Gaining root on Samsung FemtoCells.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">To summarize the steps needed to take over a femtocell:
&lt;div&gt;&lt;ol&gt;
&lt;li&gt;Build a &lt;a href="http://rsaxvc.net/blog/2010/12/attaching-a-console-cable-to-the-samsungverizon-scs-26uc4.html"&gt;serial cable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Find your baud rate: SCS-2U01 is 115200:8N1, the Sprint Airave and SCS-24UC4 are 57600:8N1&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rsaxvc.net/blog/2010/12/how-to-stop-autoboot-on-the-samsung-scs-26uc4.html"&gt;Retrieve the bootloader key&lt;/a&gt; from their source code drop by diffing &lt;a href="http://www.samsung.com/global/business/telecomm/opensource/femtocell.html"&gt;their u-boot&lt;/a&gt; with &lt;a href="ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.1.tar.bz2"&gt;mainline u-boot&lt;/a&gt; (hint, it is "sys\r")&lt;/li&gt;
&lt;li&gt;log into u-boot by using above key - it is time-limited different amounts on different devices&lt;/li&gt;
&lt;li&gt;go read the u-boot manual so I don't have to read the nitty-gritty&lt;/li&gt;
&lt;li&gt;copy the u-boot settings by logging your console and running `printenv`&lt;/li&gt;
&lt;li&gt;quickly turn off the hardware watchdog with `setenv watchdog_off 1`. Otherwise this is a great bugger.&lt;/li&gt;
&lt;li&gt;root the device by adding `init=/bin/sh` to $ramboot&lt;/li&gt;
&lt;li&gt;boot the device with `onandboot`&lt;/li&gt;
&lt;li&gt;Almost there: "sh-3.00#" At this point you have root, but very little is mounted(/etc/shadow is present though)&lt;/li&gt;&lt;li&gt;insmod the mdoc/tffs.ko and mdoc/tffsbd.ko from the /lib/modules/&amp;lt;yourkernelhere&amp;gt;/&lt;/li&gt;&lt;li&gt;`mount /dev/tffsa1 /mnt/mdoc` - brings up the main disk&lt;/li&gt;&lt;li&gt;`mount /proc` `mount /sys`&lt;/li&gt;&lt;li&gt;`mkdir /mnt/mdoc`&lt;/li&gt;&lt;li&gt;`mkdir /mnt/mdoc/RFS`&lt;/li&gt;&lt;li&gt;`mdoc_cp RFAB /mnt/mdoc/RFS/append_rfs.tgz 900000`&lt;/li&gt;&lt;li&gt;`cd /mnt/mdoc/RFS`&lt;/li&gt;&lt;li&gt;`tar xzfm append_rfs.tgz`&lt;/li&gt;&lt;li&gt;copy the created directories over / as needed.&lt;/li&gt;&lt;li&gt;bring up GPS with `insmod /mnt/mdoc/RFS/PATH_MODE/lib/modules/&lt;yourkernelher&gt;GpsCtrlDev.ko`&lt;/yourkernelher&gt;&lt;/li&gt;&lt;li&gt;You can now fiddle around with the device. Keep in mind that many of the read/write areas will actually store results in RAM for now, but you may get a 'No space left on device' error if you write too much.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Interesting bits:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;The web interface (only available to verizon) is running thttpd, and stores a hash in /udata/htdocs/.htpasswd&lt;/li&gt;&lt;li&gt;The cgi web interface is a set of ARM binaries in /udata/htdocs/cgi-bin/&lt;/li&gt;&lt;li&gt;&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Shadow_password" title="Shadow password" rel="wikipedia"&gt;Shadow passwords&lt;/a&gt; are used, but you're root anyhow&lt;/li&gt;&lt;li&gt;Component versions are in /udata/image.ver and /udata/oper.ver&lt;/li&gt;&lt;li&gt;iked-v.conf contains some very interesting settings, like 'set local psk XXXXXX'&lt;/li&gt;

&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;This is written as a summary of work on the SCS-24UC4, although it should apply directly to the SCS-2U01 and Airave.&lt;/div&gt;&lt;div&gt;This was a collaboration by RSAXVC and Doug.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">boot-animator: convert videos to android boot animations</title>
    <id>http://rsaxvc.net/blog/2011/7/17/boot-animator: convert videos to android boot animations.html</id>
    <updated>2011-07-17T01:12:00Z</updated>
    <link href="http://rsaxvc.net/blog/2011/7/17/boot-animator: convert videos to android boot animations.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Tonight I wrote a simple tool to read avi/mpeg/other video files and convert them to bootanimation.zip files for android. It depends on opencv to do the heavy lifting, the command-line zip tool does the zipping, and libpopt will do the switch handling. Right now it generates a bootanimation.zip with the same framerate and resolution as the original video, but I plan to add command-line switches for resolution, framerate, and a few others.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;a href="https://github.com/rsaxvc/boot-animator"&gt;https://github.com/rsaxvc/boot-animator&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">CCCKC: PianoBar Player</title>
    <id>http://rsaxvc.net/blog/2011/7/10/CCCKC: PianoBar Player.html</id>
    <updated>2011-07-10T10:10:48Z</updated>
    <link href="http://rsaxvc.net/blog/2011/7/10/CCCKC: PianoBar Player.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Long night here at the cave, but Phillip Dorr and I built a &lt;a href="http://6xq.net/projects/pianobar/"&gt;PianoBar&lt;/a&gt; player. PianoBar is a command-line player for &lt;a class="zem_slink" href="http://www.pandora.com/" title="Pandora Media" rel="homepage"&gt;Pandora&lt;/a&gt;, written by Lars Braun. The unit is an old thin client sporting 533MHz &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/VIA_C3" title="VIA C3" rel="wikipedia"&gt;Via C3&lt;/a&gt; and 256MB PC133. Compile options make a big difference for this little guy. &lt;a class="zem_slink" href="http://gcc.gnu.org/" title="GNU Compiler Collection" rel="homepage"&gt;GCC&lt;/a&gt; does have a Via C3 CPU model, but doesn't do instruction scheduling for it. We found that with -O3 -march=pentium-mmx we were able to reach only 30% CPU usage, whereas the default -O2 took 40%ish. I suspect this is because pentium-mmx has an instruction scheduling model that matches the C3 better than no scheduling + 3dNow instructions.&lt;br /&gt;&lt;br /&gt;Here's what it looks like:&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5922354990/" title="CCCKC PianoBar in construction by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6123/5922354990_5b70f79680.jpg" alt="CCCKC PianoBar in construction" height="333" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Currently the box lies out of the way, with only a keyboard hanging out.&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5921792609/" title="CCCKC PianoBar Controls by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6130/5921792609_830967012d.jpg" alt="CCCKC PianoBar Controls" height="333" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;We hope to create a new controller by using an arduino that can appear as a USB keyboard, like the UNO.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Taking apart a PQI IDE Flash Card</title>
    <id>http://rsaxvc.net/blog/2011/7/10/Taking apart a PQI IDE Flash Card.html</id>
    <updated>2011-07-10T08:31:43Z</updated>
    <link href="http://rsaxvc.net/blog/2011/7/10/Taking apart a PQI IDE Flash Card.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;A while back I ended up with a bunch of &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/VIA_C3" title="VIA C3" rel="wikipedia"&gt;Via C3&lt;/a&gt;-based thin clients. Each one came with a 16MB IDE flash card designed by PQI Industrial. Today I took one apart.&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5922087746/" title="PQI IDE Flash Teardown by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6148/5922087746_3f091fb32e.jpg" alt="PQI IDE Flash Teardown" height="333" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Use a screwdriver to pry the locks back. You'll need two screwdrivers to get it to happen at the same time, or you can break one and hold the other with the driver.&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5921519425/" title="PQI IDE Flash Teardown by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6134/5921519425_0b72a8e19e.jpg" alt="PQI IDE Flash Teardown" height="333" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;After pulling back the device, you can see a standard flash TSSOP.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5921523849/" title="PQI IDE Flash Teardown by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6143/5921523849_4bc4d07d1f.jpg" alt="PQI IDE Flash Teardown" height="333" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;On the back is the TDK TSSOP&amp;lt;-&amp;gt;IDE controller.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5922086682/" title="PQI IDE Flash Teardown by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6013/5922086682_2edd9713c6.jpg" alt="PQI IDE Flash Teardown" height="333" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;In particular, this device uses a GBDriverRA2e, which is an older design.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5921520591/" title="PQI IDE Flash Teardown by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6028/5921520591_4c91725e52.jpg" alt="PQI IDE Flash Teardown" height="333" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm curious if I can pick up some cheap thumbdrives to make my own internal SSDs. However, the number of computers I own with IDE slots is quickly dwindling, although these may find themselves in some small embedded x86 projects.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Building a Coin Sorter</title>
    <id>http://rsaxvc.net/blog/2011/7/9/Building a Coin Sorter.html</id>
    <updated>2011-07-09T22:10:52Z</updated>
    <link href="http://rsaxvc.net/blog/2011/7/9/Building a Coin Sorter.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;A while back I had the idea of building a device that would optically sort coins. I've always been fascinated by the gravity-fed machines that sort different sizes of coins into bins. I want to take it further. I would like to be able to sort my coins by date into different tubes not only by size, but also color, year, and maybe quality.&lt;br /&gt;&lt;br /&gt;The first step for this, is to build a test rig that can hold a camera and different coins:&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5920186425/" title="Coin Identification Rig by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6136/5920186425_8f580d03a3.jpg" alt="Coin Identification Rig" height="333" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5920187505/" title="Coin Identification Rig by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6030/5920187505_d904a039a8.jpg" alt="Coin Identification Rig" height="333" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Once the computer+camera can make a repeatable good decision, I'll build a system to move the coins into different storage containers, but for now I'll settle for detecting different coins.&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5920751190/" title="Nickel by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6129/5920751190_0e8e1c83d0.jpg" alt="Nickel" height="375" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5920751160/" title="SoCar by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6143/5920751160_9105d7bf98.jpg" alt="SoCar" height="375" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Building a Garmin Montana Motorcycle Mount</title>
    <id>http://rsaxvc.net/blog/2011/7/9/Building a Garmin Montana Motorcycle Mount.html</id>
    <updated>2011-07-09T21:06:09Z</updated>
    <link href="http://rsaxvc.net/blog/2011/7/9/Building a Garmin Montana Motorcycle Mount.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5920058135/" title="Montana Mount by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6010/5920058135_d46e98aec2.jpg" width="500" height="273" alt="Montana Mount"&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;I guess I can post this now. A while back I built a custom receiver to attach the Garmin &lt;a href="https://buy.garmin.com/shop/shop.do?pID=89575"&gt;Montana Rugged Mount&lt;/a&gt; to my &lt;a href="http://www.flickr.com/photos/40925843@N03/tags/vf750/"&gt;Honda Magna&lt;/a&gt;. This product is a harness for the &lt;a href="http://sites.garmin.com/montana/"&gt;Montana GPS&lt;/a&gt; that fits the &lt;a href="http://www.ram-mount.com/Products/MotorcycleMounts/tabid/128/Default.aspx#/wizard"&gt;RAM bracket mounting system&lt;/a&gt;. However, most of their mounts involve some sort of arm mechanism, and I had a much better location on my bike. The Montana mounts just below the instrument cluster, almost like it belongs there. I used four strips of aluminum, two on each side, to hold the mount to the handlebars. I need to find some stainless steel bolts, as the hardware store didn't have the right ones and they're showing a little rust. The swap will be a good winter project.&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5919899621/" title="Montana Mount by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6128/5919899621_7cce4ba3b9.jpg" width="333" height="500" alt="Montana Mount"&gt;&lt;/a&gt;&lt;/div&gt;

</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">How to Visit 4 HackerSpaces and have an Awesome Weekend </title>
    <id>http://rsaxvc.net/blog/2011/7/4/How to Visit 4 HackerSpaces and have an Awesome Weekend .html</id>
    <updated>2011-07-04T20:15:11Z</updated>
    <link href="http://rsaxvc.net/blog/2011/7/4/How to Visit 4 HackerSpaces and have an Awesome Weekend .html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;ol&gt;
&lt;li&gt;Start in Chicago. I handled this by booking it from Olathe, KS to Chicago, IL on a late Friday night to avoid traffic. This gave me an early start in Chicago.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5904112576/" title="UBAR by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5196/5904112576_5395a15dbe.jpg" width="500" height="375" alt="UBAR" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Visit&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;a href="http://pumpingstationone.org/" style="text-decoration: underline; "&gt;Pumping Station One&lt;/a&gt;. Watch&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;a href="http://ruggedscents.com/" style="text-decoration: underline; "&gt;Sacha&lt;/a&gt;&amp;nbsp;make guitar picks from and old motherboard after removing all the chips. Leave a note on how to control the cricut with open source software. Buy cologne from Sacha's company.&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Drive to Madison, &lt;span class="caps"&gt;WI.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Have a sandwich and salad at the&amp;nbsp;&lt;a href="http://thegreenowlcafe.com/"&gt;Green Owl Cafe&lt;/a&gt;. Top notch.&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Watch&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;a href="http://www.rhythmandbooms.com/index.php" style="text-decoration: underline; "&gt;Rhythm and Booms&lt;/a&gt;:a fireworks, laserlight, and&amp;nbsp;music show. FM radio transmits the music to crowds of people all over the city. By far the best firework show I've ever seen. I sat with well over a thousand people on a hillside watching the reflections in &lt;a href="http://en.wikipedia.org/wiki/Lake_Mendota"&gt;Lake Mendota&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5904248984/" title="SANY0015 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5078/5904248984_eec3e2db03.jpg" width="500" height="375" alt="SANY0015" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Crash with Chris and Heather.&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Visit&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;a href="http://www.sector67.org/" style="text-decoration: underline; "&gt;Sector67&lt;/a&gt;, Madison's HackerSpace&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5903714235/" title="View from the attic by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6056/5903714235_9dbb8d836e.jpg" width="500" height="375" alt="View from the attic" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Go sailing at&amp;nbsp;&lt;a href="http://www.hoofersailing.org/" style="text-decoration: underline; "&gt;Hoofer's&lt;/a&gt;&amp;nbsp;with&amp;nbsp;Chris, Heather, Will, and friends.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5903721453/" title="SANY0064 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6005/5903721453_bf20c02637.jpg" width="500" height="375" alt="SANY0064" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Start driving to Davenport, stop in Dubuque.&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Find a perfectly good &lt;a href="http://en.wikipedia.org/wiki/William_M._Black_(dredge)"&gt;steam-powered dredge ship &lt;/a&gt;and river museum.&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Photograph a catfish and a sturgeon&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5903750557/" title="Catfish by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5035/5903750557_2cffbc91fe.jpg" width="500" height="375" alt="Catfish" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5903555357/" title="IAMA: Sturgeon by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6029/5903555357_535c9a804c.jpg" width="375" height="500" alt="IAMA: Sturgeon" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Drive to Davenport, &lt;span class="caps"&gt;IA.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Visit&amp;nbsp;&lt;a href="https://www.qccolab.com/" style="text-decoration: underline; "&gt;Quad-Cities Colab&lt;/a&gt;&amp;nbsp;This is a hackerspace built next to a technical school. Photograph making a computer-controlled lighting setup. They used a vacuum former to build housings for the lights.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5903849809/" title="Group Photo by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6012/5903849809_bee2c8b6d6.jpg" width="500" height="375" alt="Group Photo" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Drive to Des Moines, IA&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Realize that Ray doesn't live in Des Moines, he lives in Urbandale, &lt;span class="caps"&gt;IA.&lt;/span&gt; Photograph Des Moines Tron building instead.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5903876911/" title="Tron Building by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6005/5903876911_46d22db16d.jpg" width="500" height="375" alt="Tron Building" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Crash at Ray's.&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Go see three of the five largest towers in Iowa (they're all more than 1/3 mile tall), and photograph two of them: &lt;span class="caps"&gt;WOI &lt;/span&gt;and &lt;span class="caps"&gt;KCCI.&lt;/span&gt; Tower Elkhart was in the distance.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5903887009/" title="Iowa Antenna Adventure by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5320/5903887009_d9802644aa.jpg" width="500" height="375" alt="Iowa Antenna Adventure" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Go see&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;a href="http://eezily.com/hack/" style="text-decoration: underline; "&gt;Ames, IA MakerSpace&lt;/a&gt;. Check on the space's brew and figure out how to calibrate 3 lens &lt;span class="caps"&gt;CRT &lt;/span&gt;projector.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5904463468/" title="Ames MakerSpace by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6054/5904463468_5cd7a4b7c5.jpg" width="500" height="375" alt="Ames MakerSpace" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Find a bar Ray saw on &lt;span class="caps"&gt;T.V., &lt;/span&gt;which is closed, and instead eat at Mullet's.&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Pass by Rocket Transfer Station&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5904433134/" title="Rocket Transfer Warehouse by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6099/5904433134_6f0ac5cae8.jpg" width="500" height="375" alt="Rocket Transfer Warehouse" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Visit &lt;a href="http://www.gobeercrazy.com/"&gt;BeerCrazy&lt;/a&gt;, which was closed, but it looks awesome. Combination specialty beer store and brewshop. Ray gets ingredients here&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5903876203/" title="Beer Crazy by rsaxvc, on Flickr"&gt;&lt;img src="http://farm7.static.flickr.com/6049/5903876203_d368f44ee4.jpg" width="500" height="375" alt="Beer Crazy" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Drive home to Olathe, KS&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Go blog about it.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Learning about HammerSpace's Andover Controls Systems</title>
    <id>http://rsaxvc.net/blog/2011/6/20/Learning about HammerSpace's Andover Controls Systems.html</id>
    <updated>2011-06-20T23:07:32Z</updated>
    <link href="http://rsaxvc.net/blog/2011/6/20/Learning about HammerSpace's Andover Controls Systems.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">The best I can Andover Controls is a company that made facility automation systems. Connect multiple buildings together, and control access, security, fire alarms and controls, power system, HVAC, and more from a central location. The system installed at HammerSpace controlled at least access, power, and HVAC. They used a mixture of RS-485 and ethernet to control the system. Since HammerSpace used to be a network trunk center for Cingular, the system is far overspec'd for the current purpose. We'd like to control the network, but do not have any software belonging to it. Thus the saga begins.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, the Andover Controls systems installation is modular, and consists of the following components:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;Two units provide I/O, an&amp;nbsp;&lt;a href="http://www.flickr.com/photos/40925843@N03/5478137238"&gt;DX 800i&lt;/a&gt;&amp;nbsp;and an &lt;a href="http://www.flickr.com/photos/40925843@N03/5478137238"&gt;LCX810&lt;/a&gt;.&amp;nbsp;The 800i is an input-only device, although there are relay solder points. The LCX810 has 8 input and 8 outputs for controlling HVAC systems.&lt;/div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;An &lt;a href="http://www.flickr.com/photos/40925843@N03/5478139288/"&gt;ACX780&lt;/a&gt;&amp;nbsp;provides access control interfaces to prox readers. I assume a clocked serial like most prox and card readers.&lt;/div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5477545321/" style="text-decoration: underline; "&gt;i2 867&lt;/a&gt;&amp;nbsp;units are the most complicated thermostats I've ever seen. Dave ended up putting a thermometer on one since it doesn't have a display.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A CX9200 provides an ethernet management interface to the rest of the system, or at least it used to. It also has four serial ports, and one of them is attached to a touch-screen controller with a broken display. Because we lacked the needed 25-pin serial connector, we went for ethernet first(I left my serial adapters at home, as I didn't know I'd be fiddling around with anything fun). After rebooting the system, it sent out some diagnostic packets and an ARP request.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5855099955/" title="Andover1 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2760/5855099955_a843462043.jpg" width="500" height="255" alt="Andover1" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So of course, I set my laptop to appear as that IP address...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5855651472/" title="Andover2 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2611/5855651472_71bbd51882.jpg" width="500" height="254" alt="Andover2" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hey look, SNMP traffic. I've peppered out the community string, but at least now we're getting somewhere. Next we NMAPed the IP address to find two open TCP ports: 33440 and 33456. 33440 appears to have a simple ascii text client, but everything I've entered emits the same error message and closes the connection. 33456 emits some binary data and closes the connection.&amp;nbsp;I need to look for a MIB to explain the SNMP trap.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next to investigate are the serial ports. There's one designated to be attached to a modem, and another attached to a touch screen. Hopefully the modem port has a text-UI we can use. That is, after finding the serial port settings.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, I've posted a few datasheets here:&lt;a href="http://rsaxvc.net/datasheets/hammerspace/"&gt;http://rsaxvc.net/datasheets/hammerspace/&lt;/a&gt;&lt;/div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Have you seen these flowers?</title>
    <id>http://rsaxvc.net/blog/2011/6/11/Have you seen these flowers?.html</id>
    <updated>2011-06-11T21:04:40Z</updated>
    <link href="http://rsaxvc.net/blog/2011/6/11/Have you seen these flowers?.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;I found an image of flowers. I'm not sure I have the byte-alignment correct, but I found these flowers inside a memory device in my Android GTablet.&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5822580855/" title="Android Flowers by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5313/5822580855_67d834be93.jpg" width="500" height="371" alt="Android Flowers"&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;Anyhow, if you set GIMP to open a raw file that is 1024 pixels wide, supply it with /dev/mtd6 from a ViewSonic GTablet, and scroll on down to about 3302456, you just might find these flowers. I'm also running cyanogenmod7, and I wonder if it makes a difference.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Porting Debian to the G-Tablet</title>
    <id>http://rsaxvc.net/blog/2011/6/11/Porting Debian to the G-Tablet.html</id>
    <updated>2011-06-11T18:16:06Z</updated>
    <link href="http://rsaxvc.net/blog/2011/6/11/Porting Debian to the G-Tablet.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">One day, I bought this sweet &lt;a href="http://en.wikipedia.org/wiki/ViewSonic_G_Tablet"&gt;GTablet&lt;/a&gt;. I also bought a keyboard case with kickstand. I used it for a month or so exclusively, and I've decided about the only think I need but can't do is develop software. So here's an idea, port a real OS like Debian. I've started fiddling around with the device through the ADB shell. Currently I'm running &lt;a href="http://www.cyanogenmod.com/"&gt;CyanogenMod&lt;/a&gt;, an aftermarket Android version.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, lets talk about how android starts up:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Board-specific bootup ( turn on RAM, set up DRAM timings, ...)&lt;/li&gt;&lt;li&gt;Bootloader&lt;/li&gt;&lt;li&gt;Linux Kernel&lt;/li&gt;&lt;li&gt;Kernel runs first process ( init )&lt;/li&gt;&lt;li&gt;Android version of init goes through /init.rc script&lt;/li&gt;&lt;li&gt;/init.rc launches zygote&lt;/li&gt;&lt;li&gt;zygote runs bootanimation&lt;/li&gt;&lt;li&gt;google's android environment comes up&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;So what can we take from here? First, killall zygote will restart the android environment, without restarting the linux environment below it. Second, it looks like the best way to get Debian going may be to build an image, then burn it through the bootloader ( APX mode for Nvidia). I had originally hoped to override the android system at init, then bring up debian around it, and that is still possible, but I suspect I'm better off going Debian from scratch.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: This is not installing debian in a chroot, as many have done before. This is trying to install debian on the 16GB internal flash disk.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">A Walk in the Park</title>
    <id>http://rsaxvc.net/blog/2011/6/9/A Walk in the Park.html</id>
    <updated>2011-06-09T20:44:54Z</updated>
    <link href="http://rsaxvc.net/blog/2011/6/9/A Walk in the Park.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">I&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; color: rgb(0, 0, 0); "&gt;&amp;nbsp;head down the walking path, lunchbox in hand.&lt;p&gt;An elderly indian couple crosses paths with me.&lt;br /&gt;We smile and greet each other.&lt;br /&gt;I have spoken to them a few times before.&lt;/p&gt;&lt;p&gt;Soon I am at the turn.&lt;br /&gt;I found this place about a year ago.&lt;br /&gt;An abandoned park bench, with no path, overlooking the lake.&lt;/p&gt;&lt;p&gt;I sweep away the leaves and sit down.&lt;/p&gt;&lt;p&gt;Almost a year ago I fixed this bench.&lt;br /&gt;I measured and cut the lumber.&lt;br /&gt;I tied it into a bundle, and carried it to the bench.&lt;br /&gt;The ranger asked why i was carrying it.&lt;br /&gt;He told me he had never been to my bench.&lt;br /&gt;The next day I took the bench apart.&lt;br /&gt;The next day I put it together.&lt;br /&gt;The last day I stained it.&lt;/p&gt;&lt;p&gt;As i open my lunch bag, I spot a moth stuck in the velcro.&lt;br /&gt;I carefully remove her.&lt;br /&gt;She flutters away.&lt;/p&gt;&lt;p&gt;As I bite into the cheese and sausage, and listen to the crunch of the crackers, I am reminded of home.&lt;br /&gt;My father showed me this place long ago, above a different lake.&lt;/p&gt;&lt;p&gt;I drink my 2.1 ounce yoghurt drink.&lt;/p&gt;&lt;p&gt;There is something in the brush.&lt;br /&gt;It is a small dog.&lt;br /&gt;He barks at me.&lt;br /&gt;I offer some cheese and sausage.&lt;br /&gt;He quiets down and I pet him.&lt;/p&gt;&lt;p&gt;Soon we both hear his owners calling for him.&lt;br /&gt;He looks at me, the runs back through the brush.&lt;br /&gt;He will not betrsy my citadel.&lt;/p&gt;&lt;p&gt;A goose squawks as it lands in the lake.&lt;br /&gt;Another goose squawks back.&lt;br /&gt;The first goose leaves.&lt;/p&gt;&lt;p&gt;I toss the last of the sausage into the lake.&lt;br /&gt;Ths same catfish comes and snaps it up before decending down again.&lt;br /&gt;I finish the cheese.&lt;/p&gt;&lt;p&gt;I wonder if anyone was here before me, maintaining the bench.&lt;br /&gt;Perhaps feeding the same catfish, with the remains of simple meals.&lt;/p&gt;&lt;p&gt;I wonder who built it, so many years ago.&lt;/p&gt;&lt;p&gt;And i wonder, who i am.&lt;/p&gt;&lt;/span&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">BreezeCom BreezeAccess AP with Special Guests: Charles Huber and Doug Kelly</title>
    <id>http://rsaxvc.net/blog/2011/4/21/BreezeCom BreezeAccess AP with Special Guests: Charles Huber and Doug Kelly.html</id>
    <updated>2011-04-21T21:54:20Z</updated>
    <link href="http://rsaxvc.net/blog/2011/4/21/BreezeCom BreezeAccess AP with Special Guests: Charles Huber and Doug Kelly.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Today we took apart a BreezeCom BreezeAccess AccessPoint.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642293137/" title="BreezeCom BreezeAccess by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5050/5642293137_b04bf79d1c.jpg" width="500" height="333" alt="BreezeCom BreezeAccess" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Charles is excited to begin disassembling the device&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642266133/" title="UberHuber by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5148/5642266133_43ce74986a.jpg" width="333" height="500" alt="UberHuber" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;The electronics come on two boards, connected with a .1 pitch header&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642860210/" title="BreezeAccess Electronics by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5048/5642860210_cd2140db0e.jpg" width="500" height="333" alt="BreezeAccess Electronics" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;Here's what each side of both boards looks like&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642864842/" title="BreezeAccess Boards by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5265/5642864842_8cdc6879b2.jpg" width="500" height="333" alt="BreezeAccess Boards" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642296675/" title="BreezeAccess Boards by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5069/5642296675_ccd173a1f1.jpg" width="500" height="333" alt="BreezeAccess Boards" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642866790/" title="BreezeAccess Boards by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5185/5642866790_4b07a746aa.jpg" width="500" height="333" alt="BreezeAccess Boards" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642298641/" title="BreezeAccess Boards by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5222/5642298641_7a88b01845.jpg" width="500" height="333" alt="BreezeAccess Boards" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;The serial console settings are conveniently exposed on the outside of the device on a 3x1 .1 pitch locking connector. The settings are 9600 baud, 8N1. Once on the serial console, Doug explored many options and menus. Some are only accessible by 'authorized users'.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642861836/" title="BreezeCom BreezeAccess by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5049/5642861836_411141271e.jpg" width="500" height="333" alt="BreezeCom BreezeAccess" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://rsaxvc.net/datasheets/breezecom/"&gt;This documentation&lt;/a&gt; might match the device we took apart&lt;/div&gt;&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/breezeCom.txt"&gt;breezeCom.txt&lt;/a&gt;&amp;nbsp;is a serial capture of talking to the device&lt;/div&gt;

</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Litronic Argus 2202 PCMCIA Teardown</title>
    <id>http://rsaxvc.net/blog/2011/4/21/Litronic Argus 2202 PCMCIA Teardown.html</id>
    <updated>2011-04-21T21:14:59Z</updated>
    <link href="http://rsaxvc.net/blog/2011/4/21/Litronic Argus 2202 PCMCIA Teardown.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Quite some time ago, I took apart a Litronic Argus 2202 Parallel to PCMCIA adapter. However, since I didn't write the name down of the device, I couldn't post about it. Now I have a picture of the manual too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;The Front&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642798862/" title="Litronic Argus 2202 Adapter Teardown by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5066/5642798862_b834ca54b7.jpg" width="500" height="333" alt="Litronic Argus 2202 Adapter Teardown" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;

&lt;div&gt;The Back&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5642803852/" title="Litronic Argus 2202 Adapter Teardown by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5030/5642803852_9fa9d5b11b.jpg" width="500" height="333" alt="Litronic Argus 2202 Adapter Teardown" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;
&lt;div&gt;Seems like a simple little board. More photos are up on &lt;a href="http://www.flickr.com/photos/40925843@N03/sets/72157626426076139/"&gt;flickr&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Is it really easier to write the second time?</title>
    <id>http://rsaxvc.net/blog/2011/4/19/Is it really easier to write the second time?.html</id>
    <updated>2011-04-19T17:57:59Z</updated>
    <link href="http://rsaxvc.net/blog/2011/4/19/Is it really easier to write the second time?.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Talking with a friend today, the concept that a program is easier to write the second time around came up. I think in general, this is true. However, most times it falls into one of two reasons.&lt;div&gt;&lt;ol&gt;&lt;li&gt;You didn't really have a good grasp of the solution before you started&lt;/li&gt;&lt;li&gt;Your programming language doesn't allow clear concise expression of ideas&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;In particular, we were discussing my opencaching rss generator. I lost it when my virtual host crashed as I hadn't added /opencaching to my backups. The RSS generator was written in PHP. #1 definitely applied - I didn't know what the finished product looked like, but it would be something like construct query / parse GPX (later switched to JSON)/convert to RSS. However, by using PHP, #2 made up for #1 - things like json_decode() and curl made the implementation short and simple.&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">RHex Feature: Fast Editing</title>
    <id>http://rsaxvc.net/blog/2011/4/9/RHex Feature: Fast Editing.html</id>
    <updated>2011-04-09T21:37:46Z</updated>
    <link href="http://rsaxvc.net/blog/2011/4/9/RHex Feature: Fast Editing.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">When I talk about fast editing, I mean responsive editing of very large files. Previously, I have edited multi-megabyte images and multi-gigabyte filesystem images. Of editors that support inserting bytes in the middle of a file, editor responsiveness has been difficult to say the least.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Under as many circumstances as possible, writes must not block. To manage this, I'm working on a small I/O library. Reads will be memory-mapped back to the file, but writes will be buffered for later writes. To accomplish this, the file is represented by a list of places to get the data. The list contains two different types of entries - part of a file can be memory mapped to the backing store and part of a file can be saved only in ram, waiting to be flushed to disk. On the start of a write, the file will be expanded to reserve the space that will be written soon. The only blocking case remaining is when the system is low on memory, a library thread may be waited upon to free up a large write buffer.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">RHex Feature: File Identification</title>
    <id>http://rsaxvc.net/blog/2011/4/8/RHex Feature: File Identification.html</id>
    <updated>2011-04-08T20:01:17Z</updated>
    <link href="http://rsaxvc.net/blog/2011/4/8/RHex Feature: File Identification.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">I want RHex to be able to look at the current cursor position, and report possible file types assuming that byte is the beginning of a file. To do this, I'm going to use libmagic. libmagic is a library for recognizing magic numbers, much like those often placed at the start of a file as a special marker. For example, FF D8 marks often the start of a &lt;span class="caps"&gt;JPEG &lt;/span&gt;file. When working with different types of archives and binaries the ability to quickly guess at the content of a file embedded within is a very useful feature for a hexeditor.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I tried to write a simple implementation of the unix command 'file'. I used libmagic, and it only took about 15 lines.&lt;/div&gt;

&lt;div&gt;&lt;pre&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;magic.h&amp;gt;&lt;br /&gt;int main( int numArgs, char * args[] )&lt;br /&gt;{&lt;br /&gt;magic_t m;&lt;br /&gt;&lt;br /&gt;m = magic_open( MAGIC_NONE );&lt;br /&gt;magic_load( m, NULL );&lt;br /&gt;&lt;br /&gt;printf( "%s", magic_file( m, args[ 1 ] ) );&lt;br /&gt;magic_close( m );&lt;br /&gt;}&lt;br /&gt;
&lt;/pre&gt;&lt;/div&gt;

Do note not to free the memory. I suspect libfile loads the tables into memory for the time between magic_load() and magic_close(). Also, there is a function, magic_buffer( magic_t, const void * bufptr, size_t bytecnt ) that operates on a byte-array.


</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Introducing... RHex</title>
    <id>http://rsaxvc.net/blog/2011/4/5/Introducing... RHex.html</id>
    <updated>2011-04-05T19:35:05Z</updated>
    <link href="http://rsaxvc.net/blog/2011/4/5/Introducing... RHex.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">What is RHex? Richard's Hexeditor - currently is a list of features I want in a hexeditor. Eventually, I would like to implement it, as it seems every hex editor is missing something I need. Currently I use hexedit and &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/CodeWright" title="CodeWright" rel="wikipedia"&gt;codewright&lt;/a&gt; as hexeditors. Here's what I want:&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Side-by-side text and hex display (almost all editors have this)&lt;/li&gt;&lt;li&gt;text &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Regular_expression" title="Regular expression" rel="wikipedia"&gt;regex&lt;/a&gt;(most have this)&lt;/li&gt;&lt;li&gt;binary regex(some have this)&lt;/li&gt;&lt;li&gt;replace section with different size(few have this)&lt;/li&gt;&lt;li&gt;asynchronous editing(If I insert a byte into a 7 gig file, I don't want to wait for the rest of the file to be re-written)&lt;/li&gt;&lt;li&gt;&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Libmagic" title="Libmagic" rel="wikipedia"&gt;libmagic&lt;/a&gt; support(none I know of do this, also I want a mode where each byte is a possible start of magic)&lt;/li&gt;&lt;li&gt;scriptable file decoder(If I'm editing a JPEG, I want some color highlighted text for different areas)&lt;/li&gt;&lt;li&gt;big file support( &amp;gt;4gig, but I'm not opposed to the 32 bit mode only supporting 2gig files or smaller)&lt;/li&gt;&lt;li&gt;variable sized groupings ( If I'm looking at a structure that consists of uint32s, I want the editor to reflect that), and...&lt;/li&gt;&lt;li&gt;offset groupings ( If I'm looking at a structure that consists of uint32s, but at an address not divisible by 4, I want the editor to reflect that )&lt;/li&gt;&lt;li&gt;reverse-endian groupings( If I'm looking at a structure that consists of uint32s, I want the ability to have the editor reverse the groups of bytes for user i/o)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;To implement this, I'd like to design it as a library for file editing. This file would be responsible for memory management and either threading, asio, or nonblocking i/o. Hopefully this way you could make a gui or console version without too much work. However, the lowest level has a lot of bookkeeping to do to allow asynchronous editing. I might want two modes, a 'safe mode' where the editor is writing a new version of the file and a 'live mode' where the editor is actively editing the file directly, probably through mmap(). Either way, it has to manage outstanding changes so that the editor is always presented with whatever it wrote into the hex library, and the library is trying to get it synced to disk quickly.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tough stuff, but manageable. If only I had time to write it.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Notes on Throttle Cable Replacement</title>
    <id>http://rsaxvc.net/blog/2011/3/31/Notes on Throttle Cable Replacement.html</id>
    <updated>2011-03-31T19:00:26Z</updated>
    <link href="http://rsaxvc.net/blog/2011/3/31/Notes on Throttle Cable Replacement.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;You might not notice it at first, and I certainly didn't, but there's a very easy mistake to be made when installing a new throttle cable.&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5578328733/" title="Throttle Cable Assembly by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5030/5578328733_9f00b07175.jpg" width="333" height="500" alt="Throttle Cable Assembly" /&gt;&lt;/a&gt;&lt;br/&gt;The throttle cable's collar is keyed, and this is important. However, since the screw is on the bottom of the handlebar it is easy to miss. Also, since another plate holds the collar down, it is hard to see misalignment. Also, depending on the degree of misalignment, the throttle may work, but be a little sticky&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5578329443/" title="Throttle Cable Assembly by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5304/5578329443_a893f26d5c.jpg" width="500" height="333" alt="Throttle Cable Assembly"&gt;&lt;/a&gt;&lt;br/&gt;Of course, the receiver is keyed too, but most of it is hidden by the second screw and plate that holds the cable's collar in.&lt;/div&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5578327999/" title="Throttle Cable Assembly by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5222/5578327999_74c7a00795.jpg" width="500" height="333" alt="Throttle Cable Assembly"&gt;&lt;/a&gt;&lt;br/&gt;All Done. New cable, new screws, and new plate&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">More Samsung SCS-2U01 GPS logs</title>
    <id>http://rsaxvc.net/blog/2011/3/22/More Samsung SCS-2U01 GPS logs.html</id>
    <updated>2011-03-22T17:22:34Z</updated>
    <link href="http://rsaxvc.net/blog/2011/3/22/More Samsung SCS-2U01 GPS logs.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Today, I took a friend driving. The purpose? To drive up and down an east-west street to see how the gps output changes. The friend's purpose? To hold a probe onto some serial lines as I tackled one of the bumpiest roads in Missouri. And boy does it change. There's new sentences available and other things I don't yet understand. Anyhow,&amp;nbsp;&lt;a href="http://rsaxvc.net/blog/serialgps.31stSt.cap.lzma"&gt;serialgps.31stSt.cap.lzma&lt;br /&gt;&lt;/a&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">One little, two little, three little endians</title>
    <id>http://rsaxvc.net/blog/2011/3/13/One little, two little, three little endians.html</id>
    <updated>2011-03-13T17:47:57Z</updated>
    <link href="http://rsaxvc.net/blog/2011/3/13/One little, two little, three little endians.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">I've done a little work on two different endians. Currently, I've missed out on PDP-endian. Again, the question came up, which one is best, so I'll give it a go at explaining the three and their differences.&amp;nbsp;Endianness, is the pattern of storing a multi-byte word into multiple bytes of memory. In particular, the bytes are often stored most-significant or least significant byte first. You might wonder why anyone would store objects backwards (indeed, little-endian is the only 'language' I know where the 'sentences' are written in ascending order, but the words are written in reverse order). However, there are some distinct advantages to storing words in little-endian order(union alignment and addition/subtraction/multiplication pipelining), as well as there are advantages to storing words in big-endian order( natural treatment of multi-byte objects, easier comparison ).&amp;nbsp;Please keep in mind that with modern processors, some of these reasons end up not meaning nearly as much as they used to.&lt;div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Union Alignment&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Lets take the following example:&lt;/div&gt;&lt;div&gt;union{&lt;/div&gt;&lt;div&gt;uint8_t one;&lt;/div&gt;&lt;div&gt;uint16_t two;&lt;/div&gt;&lt;div&gt;uint32_t four;&lt;/div&gt;&lt;div&gt;}sometype;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With little endian, because all the objects are written backwards, the union members one, two, and four can be located at the same address in memory, which can really simplify things at an assembly level. With big endian, two has to be stored 2 bytes past the beginning of the union, and one has to be stored 3 bytes past the beginning of the union. *&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Addition/Multiplication/Subtraction &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Pipeline_%28computing%29" title="Pipeline (computing)" rel="wikipedia"&gt;Pipelining&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;By storing bytes in little-endian order, something neat happens**. Think back to multi-digit arithmetic(except division). When performing an operation, you always start with the least-significant digit. This is because the less significant digits can only overflow into more significant digits, so when one byte is loaded in, enough information to begin computation is already available.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Natural Treatment of Object Byte Order&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I'm going to call big-endian as natural byte order, because by keeping words in big-endian, things like memcmp() can get a little more efficient. For example, when comparing large objects with memcmp() on a big-endian system, it becomes possible to aggregate compares to full word sizes. This can be significantly more efficient than comparing per byte. (Potentially, you can implement something similar with little-endian, but it incurs an overhead when there is a difference in the two areas of memory, or a per word overhead)***. Also, most network protocols are written in big-endian. This usually isn't much overhead compared to say, generating the data to ship over the network, but for small applications it can build up.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Comparison and Sign information&lt;/b&gt;&lt;/div&gt;&lt;div&gt;By storing the most significant information first in memory, operations requiring sign information or comparison can be implemented more easily(**). Because the sign information is stored earlier in the word, a big-endian compare can complete as soon as there is a difference in the word. This becomes even more important when dealing with objects larger than the native &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Word_%28computing%29" title="Word (computing)" rel="wikipedia"&gt;word size&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;PDP-endian&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I haven't mentioned PDP-endian, because it is such an oddball. Worst of both worlds it seems. As a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/16-bit" title="16-bit" rel="wikipedia"&gt;16-bit architecture&lt;/a&gt;, 16-bit words are stored in little-endian format, but compilers on &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/PDP-11" title="PDP-11" rel="wikipedia"&gt;PDP-11s&lt;/a&gt; would store 32-bit words as two consecutive 16-bit little endian words. This makes it extra-confusing. Potentially compilers could be updated to store words in little-endian order, but this architecture is almost entirely dead, and all the other software running on it expects PDP-endian already.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*Depending on architecture, the alignment might move things differently, but this scenario is pretty common&lt;/div&gt;&lt;div&gt;**on systems with memory buses narrower than the cpu word size (this actually happens a lot on embedded stuff (8088, some &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/ARM_architecture" title="ARM architecture" rel="wikipedia"&gt;ARM&lt;/a&gt; and some &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/MIPS_architecture" title="MIPS architecture" rel="wikipedia"&gt;MIPS&lt;/a&gt; )&lt;/div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;***On systems like ARMv7, you can swap endianness in a single instruction. On little-endian systems, you can still use word compares to speed up memory access, but when the words compared are different, you then have to switch the endianness and figure out the right memcmp return.&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Samsung SCS-2U01 GPS Logs and Possible Tamper Switch</title>
    <id>http://rsaxvc.net/blog/2011/3/12/Samsung SCS-2U01 GPS Logs and Possible Tamper Switch.html</id>
    <updated>2011-03-12T20:50:09Z</updated>
    <link href="http://rsaxvc.net/blog/2011/3/12/Samsung SCS-2U01 GPS Logs and Possible Tamper Switch.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">First off, there might be a tamper switch located under the GPS shield. Note the bottom-left corner of the shield connection. There is a small island of metal that isn't connected with the rest of the shield area. Normally this wouldn't be good for shielding, and if you test with a multimeter, the shield does make a good connection to this point. I've added a copper wire to mine just in case.&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5399847398/" title="GPS BaseBand by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5217/5399847398_6a1908156a.jpg" width="500" height="333" alt="GPS BaseBand" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now on to the serial logging. The GPS processor here is an STR711. The datasheet is available from ST here:&amp;nbsp;&lt;a href="http://www.st.com/stonline/books/pdf/docs/10350.pdf"&gt;http://www.st.com/stonline/books/pdf/docs/10350.pdf&lt;/a&gt;. The STR711 is an ARM7TDMI with 4 UARTs, SPI, I2C, internal flash, USB, CAN, and internal RAM. 3 of the UARTs didn't appear to have anything on them, but UART0 (2 pins clockwise from the orientation dot) are communicating at 115200 baud. On powerup, the GPS emits:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"&lt;b&gt;GloNav Ltd (c) 2007. &amp;nbsp;GN_GPS_Nav_Lib: &amp;nbsp;2.07.11-080813-000-0000 &amp;nbsp;Aug 13 2008 14:14:31 &amp;nbsp; &amp;nbsp;528&lt;/b&gt;"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's what I'm guessing is a packet from gps to board cpu with some satellite stats:&lt;/div&gt;&lt;div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#DBRM 14 &amp;nbsp; &amp;nbsp; &amp;nbsp;66040 1 &amp;nbsp;145 &amp;nbsp; 75 13 &amp;amp;05&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 0000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 0000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp;0000 &amp;nbsp; &amp;nbsp;0 &amp;nbsp;0 0 &amp;nbsp; 0 &amp;amp;AA&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;1 29 &amp;nbsp;0 &amp;nbsp;0 13 &amp;nbsp;0 7000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 3 &amp;nbsp; &amp;nbsp;32 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; 91697 2D4E &amp;nbsp;483655680 &amp;nbsp; &amp;nbsp; -14531 &amp;nbsp;AD07 &amp;nbsp; 61 &amp;nbsp;0 0 -99 &amp;amp;02&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;2 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 0000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 0000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp;0000 &amp;nbsp; &amp;nbsp;0 &amp;nbsp;0 0 &amp;nbsp; 0 &amp;amp;AC&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;3 29 27 &amp;nbsp;0 13 32 7012 &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 5 &amp;nbsp; 540 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; 92042 4886 -421134336 &amp;nbsp; &amp;nbsp; &amp;nbsp;10427 &amp;nbsp;0A4C &amp;nbsp; 16 &amp;nbsp;0 0 &amp;nbsp;-2 &amp;amp;F2&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;4 29 27 &amp;nbsp;0 11 32 7012 &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 5 &amp;nbsp; 539 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp;174817 B1AA -471597056 &amp;nbsp; &amp;nbsp; &amp;nbsp; 6117 &amp;nbsp;9433 &amp;nbsp; 36 &amp;nbsp;0 0 &amp;nbsp;-2 &amp;amp;1E&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;5 29 27 &amp;nbsp;0 &amp;nbsp;0 32 7012 &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 5 &amp;nbsp; 516 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp;174878 3F8B &amp;nbsp;-14876672 &amp;nbsp; &amp;nbsp; &amp;nbsp; 5187 &amp;nbsp;3946 &amp;nbsp; 36 &amp;nbsp;0 0 &amp;nbsp;-5 &amp;amp;06&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;6 29 27 &amp;nbsp;0 13 16 7012 &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 5 &amp;nbsp; 444 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp;257759 1780 &amp;nbsp;479068160 &amp;nbsp; &amp;nbsp; &amp;nbsp; 6095 &amp;nbsp;26D8 &amp;nbsp; 15 &amp;nbsp;0 0 &amp;nbsp; 0 &amp;amp;F5&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;7 29 27 &amp;nbsp;0 13 32 7012 &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 5 &amp;nbsp; 702 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; 91942 3F55 &amp;nbsp; 32702464 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;170 &amp;nbsp;C629 &amp;nbsp; 16 &amp;nbsp;0 0 &amp;nbsp;-3 &amp;amp;C2&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;8 29 27 &amp;nbsp;0 12 16 7012 &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 5 &amp;nbsp; 443 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp;257469 C727 &amp;nbsp; 25231360 &amp;nbsp; &amp;nbsp; -14966 &amp;nbsp;0E2B &amp;nbsp; 55 &amp;nbsp;0 0 &amp;nbsp; 0 &amp;amp;0F&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH &amp;nbsp;9 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 0000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 0000 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp;0000 &amp;nbsp; &amp;nbsp;0 &amp;nbsp;0 0 &amp;nbsp; 0 &amp;amp;B3&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH 10 29 27 &amp;nbsp;0 12 32 7012 &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 5 &amp;nbsp; 558 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp;174451 4D28 &amp;nbsp;433192960 &amp;nbsp; &amp;nbsp; -12729 &amp;nbsp;E500 &amp;nbsp; 36 &amp;nbsp;0 0 &amp;nbsp;-3 &amp;amp;2B&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH 11 29 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 7000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 3 &amp;nbsp; 555 &amp;nbsp; &amp;nbsp; 44 &amp;nbsp;610216 6202 -473300992 &amp;nbsp; &amp;nbsp; &amp;nbsp;65600 &amp;nbsp;22E5 &amp;nbsp; 89 &amp;nbsp;0 0 -99 &amp;amp;03&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH 12 29 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 7000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 3 &amp;nbsp; 555 &amp;nbsp; &amp;nbsp; 44 &amp;nbsp;610221 0E28 &amp;nbsp;-22347776 &amp;nbsp; &amp;nbsp; &amp;nbsp;-2170 &amp;nbsp;A3C4 &amp;nbsp; 89 &amp;nbsp;0 0 -99 &amp;amp;09&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#RMCH 13 29 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 &amp;nbsp;0 7000 &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 3 &amp;nbsp; 555 &amp;nbsp; &amp;nbsp; 44 &amp;nbsp;610225 BA72 &amp;nbsp;428605440 &amp;nbsp; &amp;nbsp; -64071 &amp;nbsp;3958 &amp;nbsp; 89 &amp;nbsp;0 0 -99 &amp;amp;1F&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#DBTT &amp;nbsp; &amp;nbsp; &amp;nbsp;66040 1 0 0 0 1855 510 0490 0081 &amp;amp;CE&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#INFO 0 &amp;nbsp;Ham1A_Rom5 510 E510P052 Rel Sep 16 2009 10:36:54 &amp;nbsp; &amp;nbsp; MP07 TYNDALL &amp;nbsp;16368 RTC &amp;amp;AF&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;#INFO 1 &amp;nbsp;66 &amp;nbsp;16 &amp;nbsp; 2 &amp;nbsp; 0 &amp;nbsp; 2 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp;61 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 0 &amp;nbsp; 1 &amp;amp;CC&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">My Favorite 64-bit Porting Guide</title>
    <id>http://rsaxvc.net/blog/2011/2/16/My Favorite 64-bit Porting Guide.html</id>
    <updated>2011-02-16T22:28:43Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/16/My Favorite 64-bit Porting Guide.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">By way of an almost unrelated Google search, I re-found my favorite 64-bit porting guide.&amp;nbsp;&lt;a href="http://www.ibm.com/developerworks/library/l-port64.html"&gt;http://www.ibm.com/developerworks/library/l-port64.html&lt;/a&gt;. The article takes you through a few different 64-bit systems, new alignment/packing issues, and how to do what you used to do (storing pointers in uints) in a more portable way(uintptr_t). I've had to refer to this a few times now when porting the &lt;a href="http://boomerang.sourceforge.net/"&gt;boomerang decompiler&lt;/a&gt; to 64-bit linux. Boomerang is a particularly fun case because sometimes you need to store a pointer in a uint. Do you use uintptr_t? Sometimes. You can only safely use it to store a native pointer. Because potentially you could add disassembly for a 64 bit architecture, but build on a 32 bit machine, you still need an extra-big type capable of holding the biggest pointer you could get. Luckily for us, a 64-bit datatype covers most pointers. Sadly for AS/400 users, this effectively means that boomerang won't be able to decompile your stuff without a major overhaul.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's also a small typo referencing the 'fred function' (fread) &amp;nbsp;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Sprint / Samsung AIRAVE SCS-26UC Console Captures</title>
    <id>http://rsaxvc.net/blog/2011/2/13/Sprint / Samsung AIRAVE SCS-26UC Console Captures.html</id>
    <updated>2011-02-13T21:37:41Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/13/Sprint / Samsung AIRAVE SCS-26UC Console Captures.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">The Sprint/Samsung &lt;a href="http://www.samsung.com/us/mobile/cell-phones/SCS-26UC"&gt;AIRAVE&lt;/a&gt; has a serial port in the HDMI socket, just like like the Verizon/Samsung SCS-26UC4 and SCS-2U01. The baud rate is 57600, just like the SCS-26UC4. It appears to be running linux 2.6.10 on an Omap 1710, with U-Boot 1.1.1. To stop U-Boot autoboot, enter sys&amp;lt;enter&amp;gt; within 1 second after the prompt. The device includes 64MB ram, TFFS, mdoc, and thttpd. Here's the log:&amp;nbsp;&lt;a href="http://rsaxvc.net/blog/airave.cap"&gt;airave.cap&lt;/a&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Libcutter now draws G-Code</title>
    <id>http://rsaxvc.net/blog/2011/2/13/Libcutter now draws G-Code.html</id>
    <updated>2011-02-13T19:15:09Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/13/Libcutter now draws G-Code.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Thanks to Ray S.&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;a href="https://github.com/vangdfang/libcutter" style="text-decoration: underline; "&gt;libcutter&lt;/a&gt;&amp;nbsp;now supports some basic G-Codes. Ray wrote a g-code interpreter in python (&lt;a href="sites.google.com/site/drbobbobswebsite/cricut-gcode-interpreter"&gt;sites.google.com/site/drbobbobswebsite/cricut-gcode-interpreter&lt;/a&gt;&amp;nbsp;), which I then ported into C++, and &lt;a href="https://github.com/vangdfang/libcutter"&gt;libcutter&lt;/a&gt;. This is my first PCB drawing, which is a&amp;nbsp;&lt;a href="http://www.reprap.org/wiki/Pen_Holder"&gt;reprap&lt;/a&gt;&amp;nbsp;PCB that Ray sent me. G-code support helps open up many more possibilities, as it is a common standard for machine control. Currently, the interpreter only supports absolute positions, and Z of 0 or 1, to pick up or put down the tool.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5443668000/" title="My First PCB Printout by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5299/5443668000_74de84cae8.jpg" width="500" height="374" alt="My First PCB Printout" /&gt;&lt;/a&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Taking Apart the Symbol AP4131</title>
    <id>http://rsaxvc.net/blog/2011/2/11/Taking Apart the Symbol AP4131.html</id>
    <updated>2011-02-11T21:25:18Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/11/Taking Apart the Symbol AP4131.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Today I take apart a Symbol AP4131.&lt;/div&gt;&lt;br/&gt;&lt;/br&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437818928/" title="AP Top by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5091/5437818928_c6d6ede342.jpg" width="500" height="333" alt="AP Top" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Symbol AP4131&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437819536/" title="AP Bottom by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4080/5437819536_ef12df5d0a.jpg" width="500" height="333" alt="AP Bottom" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Bottom&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437821684/" title="Top of PCB by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5093/5437821684_160346906b.jpg" width="500" height="333" alt="Top of PCB" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;PCB + Wireless card extracted&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437214265/" title="PCMCIA Wifi Card by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5131/5437214265_3f4a9a2666.jpg" width="500" height="333" alt="PCMCIA Wifi Card" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;PCMCIA Wireless Card&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437216083/" title="XPC855 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4118/5437216083_26e7f182f1.jpg" width="333" height="500" alt="XPC855" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;PowerPC CPU&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;

</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Opening the 3Com WL306 / 3Com Access Point 8000</title>
    <id>http://rsaxvc.net/blog/2011/2/11/Opening the 3Com WL306 / 3Com Access Point 8000.html</id>
    <updated>2011-02-11T20:10:46Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/11/Opening the 3Com WL306 / 3Com Access Point 8000.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Today I document the teardown of a 3Com Access Point 8000, an older device.&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437705928/" title="3Com WL306 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4101/5437705928_8ca87f909c.jpg" width="500" height="333" alt="3Com WL306" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;A blast from the past&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437706438/" title="Only one screw by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5094/5437706438_325e0e2788.jpg" width="500" height="333" alt="Only one screw" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Only one screw to open&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437710674/" title="RF Shields Removed by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4101/5437710674_c9bf724d83.jpg" width="333" height="500" alt="RF Shields Removed" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Opened, with RF Shields removed&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437101929/" title="ISL3856 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4141/5437101929_66d1f245fd.jpg" width="500" height="333" alt="ISL3856" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;A wild 4 pin header appeared. The CPU is an Intersil ARM940t Prism chipset, 8MB RAM, and some flash&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5437712510/" title="So many crystals by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4108/5437712510_3fb2c42e2f.jpg" width="500" height="333" alt="So many crystals" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;The rest of the 2.4 gear&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Inside the Adtran TSU100</title>
    <id>http://rsaxvc.net/blog/2011/2/10/Inside the Adtran TSU100.html</id>
    <updated>2011-02-10T23:52:54Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/10/Inside the Adtran TSU100.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Opening up the &lt;a href="http://www.amazon.com/Adtran-Tsu-Modular-V-35-Interface/dp/B000051680"&gt;Adtran TSU100&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5435619694/" title="Adtran TSU100 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5258/5435619694_b1d4bfc74f.jpg" width="500" height="333" alt="Adtran TSU100" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;The unit&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5435612222/" title="Adtran TSU100 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5011/5435612222_1453b8a8ff.jpg" width="500" height="333" alt="Adtran TSU100" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Top Board&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5435611374/" title="Adtran TSU100 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5218/5435611374_e9dcb89127.jpg" width="500" height="333" alt="Adtran TSU100" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Bottom Board&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5435614828/" title="Intel 8031 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4149/5435614828_18ea40d45e.jpg" width="500" height="333" alt="Intel 8031" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;CPU is an Intel 8031&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5435007491/" title="Adtran TSU100 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5099/5435007491_f25e9f6731.jpg" width="500" height="333" alt="Adtran TSU100" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;LCD+input Submodule&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5435008163/" title="Adtran TSU100 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5134/5435008163_97ae222b5d.jpg" width="500" height="333" alt="Adtran TSU100" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Another FPGA + Board art&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;


</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Verizon / Samsung SCS-2U01 Port Scan</title>
    <id>http://rsaxvc.net/blog/2011/2/5/Verizon / Samsung SCS-2U01 Port Scan.html</id>
    <updated>2011-02-05T19:40:41Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/5/Verizon / Samsung SCS-2U01 Port Scan.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-05 19:34 CST&lt;/div&gt;&lt;div&gt;Interesting ports on ws166 (172.30.3.166):&lt;/div&gt;&lt;div&gt;Not shown: 996 closed ports&lt;/div&gt;&lt;div&gt;PORT &amp;nbsp; &amp;nbsp; STATE &amp;nbsp; &amp;nbsp;SERVICE&lt;/div&gt;&lt;div&gt;22/tcp &amp;nbsp; filtered ssh&lt;/div&gt;&lt;div&gt;23/tcp &amp;nbsp; open &amp;nbsp; &amp;nbsp; telnet&lt;/div&gt;&lt;div&gt;80/tcp &amp;nbsp; open &amp;nbsp; &amp;nbsp; http&lt;/div&gt;&lt;div&gt;9100/tcp open &amp;nbsp; &amp;nbsp; jetdirect&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Verizon / Samsung 3G SCS-2U01 Serial Console Captures</title>
    <id>http://rsaxvc.net/blog/2011/2/5/Verizon / Samsung 3G SCS-2U01 Serial Console Captures.html</id>
    <updated>2011-02-05T18:30:33Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/5/Verizon / Samsung 3G SCS-2U01 Serial Console Captures.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;The&amp;nbsp;&lt;a href="http://rsaxvc.net/blog/2010/12/attaching-a-console-cable-to-the-samsungverizon-scs-26uc4.html"&gt;SCS-26UC4 console cable&lt;/a&gt;&amp;nbsp;also connects to the &lt;a class="zem_slink" href="http://www.samsung.com" title="Samsung Group" rel="homepage"&gt;Samsung&lt;/a&gt; SCS-2U01 3G Verizon Router.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/2010/12/attaching-a-console-cable-to-the-samsungverizon-scs-26uc4.html"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;The bootup process goes something like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;OneNAND Bootloader - ONBL2&lt;/li&gt;&lt;li&gt;ShadowUBL&lt;/li&gt;&lt;li&gt;U-Boot 1.1.1 waits 5 seconds for user input&lt;/li&gt;&lt;li&gt;U-Boot 1.1.1 engages&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;Watchdog with 64 second timeout&lt;/li&gt;&lt;li&gt;U-Boot loads a 1.1MB kernel and 6.6MB RFS image&lt;/li&gt;&lt;li&gt;MonteVista linux boots with a 2.6.18 kernel&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;OtherNotes:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The built-in ethernet mac is a&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;a href="http://www.innopower-tech.com/html/products/functional/Ethernet.jsp" style="text-decoration: underline; "&gt;Faraday FTMAC110&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;"Machine: Faraday A360"&lt;/li&gt;&lt;li&gt;32K Instruction Cache, 32K Data Cache&lt;/li&gt;&lt;li&gt;224MB usable ram&lt;/li&gt;&lt;li&gt;&lt;a class="zem_slink" href="http://www.acme.com/software/thttpd/" title="Thttpd" rel="homepage"&gt;thttpd&lt;/a&gt; is still present&lt;/li&gt;&lt;li&gt;"MonteVista(R) &lt;a class="zem_slink" href="http://www.kernel.org/" title="Linux" rel="homepage"&gt;Linux&lt;/a&gt;(R) Professional Edition 5.0.0"&lt;/li&gt;&lt;li&gt;"The board type [0x61:12] vid[1]"&lt;/li&gt;&lt;li&gt;generates &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Secure_Shell" title="Secure Shell" rel="wikipedia"&gt;SSH&lt;/a&gt; keys on startup&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Full log available here:&amp;nbsp;&lt;a href="http://rsaxvc.net/blog/samsung3g.cap"&gt;samsung3g.cap&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Update on Hulu for Android</title>
    <id>http://rsaxvc.net/blog/2011/2/4/Update on Hulu for Android.html</id>
    <updated>2011-02-04T18:18:18Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/4/Update on Hulu for Android.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">The key to running &lt;a class="zem_slink" href="http://hulu.com" title="hulu" rel="homepage"&gt;Hulu&lt;/a&gt; on Android is getting a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/User_agent" title="User agent" rel="wikipedia"&gt;User-Agent string&lt;/a&gt; and Flash Version String that match. Previously I posted&amp;nbsp;&lt;a href="http://rsaxvc.net/blog/2011/01/changing-your-google-chrome-flash-version.html"&gt;how to change your flash version&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://rsaxvc.net/blog/2011/01/running-hulu-on-android.html"&gt;how to change your flash version on Android&lt;/a&gt;. However, you need to match your User-Agent and Flash String. That is to say, &lt;a class="zem_slink" href="http://www.adobe.com/flashplatform/" title="Adobe Flash" rel="homepage"&gt;Adobe Flash&lt;/a&gt; "MAC 10.Sandwich" failed rather quickly.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;By default, Android supports 3 User-Agents: Intel Mac Desktop, Android, and &lt;a class="zem_slink" href="http://www.apple.com/iphone" title="iPhone" rel="homepage"&gt;iPhone&lt;/a&gt;.&amp;nbsp;By changing my user-agent to appear as an Intel Mac Desktop running 10.5.7, I was able to use Hulu for a little while, but it stopped working within a day. I suspect that this is due to the fact I have no idea what flash runs on 10.5.7, making it easy to blacklist. If anyone knows a flash version for 10.5.7 that runs Hulu, let me know, as then you could run Hulu without a full firmware update.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My current solution is to use &lt;a class="zem_slink" href="http://www.cyanogenmod.com/" title="CyanogenMod" rel="homepage"&gt;CyanogenMod&lt;/a&gt;, which supports a User-Agent of IE6. I copied the Android Version from my desktop, "WIN 10,1,103,20" to libflashplayer.so on my phone. Since doing this, Hulu has run, albeit slowly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What's the downside to this little hack? Since the User-Agent and Flash Version are both for desktops, every website thinks you are running a full desktop with plenty of RAM. Each flash library that contains mobile optimizations won't use them, because it thinks it is running on a desktop. Also, Hulu renders in full quality and full bandwidth.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The results? 1-2 FPS, and sound that actually doesn't skip. I'm running a fairly sketchy overclock to 800MHz. However, I was able to test this on a 1GHz T-Mobile G2, which performed much better, and since Flash uses 40-50 threads while playing, I hope it scales well to multiple cores just like it does on desktops.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Sprint / Samsung AIRAVE Photos Up</title>
    <id>http://rsaxvc.net/blog/2011/2/4/Sprint / Samsung AIRAVE Photos Up.html</id>
    <updated>2011-02-04T00:04:41Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/4/Sprint / Samsung AIRAVE Photos Up.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5414720197/" title="Sprint AIRAVE PCB by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4098/5414720197_21ed904655.jpg" width="500" height="333" alt="Sprint AIRAVE PCB" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/tags/airave/"&gt;http://www.flickr.com/photos/40925843@N03/tags/airave/&lt;/a&gt;&lt;/div&gt;

</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Samsung / Verizon SCS-2U01 GPS Captures</title>
    <id>http://rsaxvc.net/blog/2011/2/3/Samsung / Verizon SCS-2U01 GPS Captures.html</id>
    <updated>2011-02-03T23:30:26Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/3/Samsung / Verizon SCS-2U01 GPS Captures.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">So today, we were able to get some serial captures from the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Global_Positioning_System" title="Global Positioning System" rel="wikipedia"&gt;GPS&lt;/a&gt; chipset on the &lt;a class="zem_slink" href="http://www.samsung.com" title="Samsung Group" rel="homepage"&gt;Samsung&lt;/a&gt; SCS--2U01. The protocol appears to be GloNav API, running at 115200, 8N1. The chipset on the SCS-2U01 is built directly on the PCB, unlike the SCS-26UC4. In addition, the GPS firmware version is printed, 2.07.11.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some logs:&lt;/div&gt;&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/gpslogs.scs-2u01.tar.lzma"&gt;gpslogs.scs-2u01.tar.lzma&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">You stay away from here!</title>
    <id>http://rsaxvc.net/blog/2011/2/3/You stay away from here!.html</id>
    <updated>2011-02-03T23:19:26Z</updated>
    <link href="http://rsaxvc.net/blog/2011/2/3/You stay away from here!.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;a href="http://www.syracuse.com/news/index.ssf/2011/02/att_vs_verizon_iphone_-_a_comp.html"&gt;http://www.syracuse.com/news/index.ssf/2011/02/att_vs_verizon_iphone_-_a_comp.html&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.syracuse.com/news/index.ssf/2011/02/att_vs_verizon_iphone_-_a_comp.html"&gt;&lt;/a&gt;My first cell phone was a 3G Motorola RAZR on AT&amp;amp;T. It provided fast upload and download, and I used it as a wireless modem while traveling. Sometimes I could reach a megabit each way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then Apple launched the iPhone 3G. Soon the cells were full of iPhone users, taking all the bandwidth. Even in the Kansas City area, bandwidth was less than 100kbps, and often less than 56k.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I moved to Verizon, who again provided fast 3G everywhere I needed it. Until now. You stay away Apple, I've seen this before.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">You know you've been using Google Reader too long...</title>
    <id>http://rsaxvc.net/blog/2011/1/31/You know you've been using Google Reader too long....html</id>
    <updated>2011-01-31T20:02:08Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/31/You know you've been using Google Reader too long....html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">...when you press J to skip a Hulu commercial.
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Google Analytics License Plate Game</title>
    <id>http://rsaxvc.net/blog/2011/1/30/Google Analytics License Plate Game.html</id>
    <updated>2011-01-30T20:27:03Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/30/Google Analytics License Plate Game.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Did you ever play the license plate game as a child? On a long trip, for each state's license plate you haven't seen, write the state down down, and try to see how many you can get. With Google Analytics, you can play the game with your visitors. As you might imagine, this is a low traffic blog, but here's how far I am:&lt;a href="http://rsaxvc.net/blog/assets_c/2011/01/licensePlateGame-43.html" onclick="window.open('http://rsaxvc.net/blog/assets_c/2011/01/licensePlateGame-43.html','popup','width=628,height=379,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://rsaxvc.net/blog/assets_c/2011/01/licensePlateGame-thumb-480x289-43.png" width="480" height="289" alt="licensePlateGame.png" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;div&gt;Note Kansas, which is where I live. Note Missouri, which is where my&amp;nbsp;&lt;a href="http://blog.cowtowncomputercongress.org/"&gt;hackerspace&lt;/a&gt;&amp;nbsp;is.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">SCS-2U01 Teardown Photos Up</title>
    <id>http://rsaxvc.net/blog/2011/1/29/SCS-2U01 Teardown Photos Up.html</id>
    <updated>2011-01-29T21:24:46Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/29/SCS-2U01 Teardown Photos Up.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5399803602/" title="Almost there by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5256/5399803602_48e07a78e9.jpg" width="500" height="333" alt="Almost there" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;A teardown of the Samsung SCS-2U01 Femtocell is up on flickr:&amp;nbsp;&lt;a href="http://www.flickr.com/photos/40925843@N03/tags/scs2u01/" style="text-decoration: underline; "&gt;http://www.flickr.com/photos/40925843@N03/tags/scs2u01/&lt;/a&gt;.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Hulu Flash Update</title>
    <id>http://rsaxvc.net/blog/2011/1/29/Hulu Flash Update.html</id>
    <updated>2011-01-29T10:30:10Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/29/Hulu Flash Update.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Sometime in the last 8 hours, flash has stopped playing Hulu on my phone. I'll look into why this is happening now.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, it appears that the browser can use a very large amount of RAM while playing Hulu. Without closing all other applications, the flash player would run out of memory and drop to tap-to-play mode.&amp;nbsp;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Running Hulu on Android</title>
    <id>http://rsaxvc.net/blog/2011/1/29/Running Hulu on Android.html</id>
    <updated>2011-01-29T01:54:37Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/29/Running Hulu on Android.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;***Don't try this at home. Don't blame me if it breaks your phone. It didn't break my phone though.***&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Recently, I posted&amp;nbsp;&lt;a href="http://rsaxvc.net/blog/2011/01/changing-your-google-chrome-flash-version.html"&gt;how to change your flash version&lt;/a&gt;. I looked into this because I was curious how the web applications like &lt;a class="zem_slink" href="http://hulu.com" title="hulu" rel="homepage"&gt;Hulu&lt;/a&gt; could detect that your device was an Android client instead of a real web browser. Initially, I looked into packet dumps that I compared between my &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Motorola_Droid" title="Motorola Droid" rel="wikipedia"&gt;Droid phone&lt;/a&gt; and my laptop. The user-agent strings can be changed to match, but some web apps can still detect they are running on a phone. The key is in the &lt;a class="zem_slink" href="http://get.adobe.com/flashplayer" title="Adobe Flash" rel="homepage"&gt;Flash&lt;/a&gt; version string. This string, accessible through the Adobe Flash API, is built into the library. So to make a phone look like a real browser, you both need a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/User_agent" title="User agent" rel="wikipedia"&gt;user-agent string&lt;/a&gt; from a real browser, and a flash version from a real browser.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What flash version should we use? Since the 'Desktop' user-agent option emulates an &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Apple%E2%80%93Intel_architecture" title="Apple-Intel architecture" rel="wikipedia"&gt;Intel Mac&lt;/a&gt; running 10.5, "MAC 10,1,103,19" is a valid &lt;a class="zem_slink" href="http://www.apple.com/macosx/" title="Mac OS X" rel="homepage"&gt;OS X&lt;/a&gt; flash version. (You can find this by asking a friend with a Mac to go&amp;nbsp;&lt;a href="http://kb2.adobe.com/cps/155/tn_15507.html"&gt;check their flash version&lt;/a&gt;.)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;If you have a hexeditor on your phone, you can do this without ADB. I used ADB because I haven't yet installed my favorite hexeditor,&amp;nbsp;&lt;a href="http://rigaux.org/hexedit.html" style="text-decoration: underline; "&gt;Pixel's Hexedit&lt;/a&gt;, on my phone.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;font class="Apple-style-span" style="font-size: 0.64em; "&gt;&lt;/font&gt;&lt;ul&gt;&lt;font class="Apple-style-span" style="font-size: 0.64em; "&gt;

&lt;li&gt;Close all browsers ( use a task killer )&lt;/li&gt;
&lt;li&gt;adb pull /data/data/com.adobe.&lt;wbr&gt;flashplayer/lib/&lt;wbr&gt;libflashplayer.so /tmp/libflashplayer.so&lt;/li&gt;
&lt;li&gt;cp /tmp/libflashplayer.so /&amp;lt;backup-path&amp;gt;/libflashplayer.android.orig.so&lt;/li&gt;
&lt;li&gt;Use hexeditor to&amp;nbsp;&lt;a href="http://rsaxvc.net/blog/2011/01/changing-your-google-chrome-flash-version.html"&gt;change flash version&lt;/a&gt;&amp;nbsp;to "MAC 10,1,103,19"&lt;/li&gt;
&lt;li&gt;adb push /tmp/libflashplayer.so /data/data/com.adobe/flashplayer/lib/libflashplayer.so&lt;/li&gt;

&lt;/font&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At this point, I cleared all caches, cookies, and history from my browser and rebooted my phone. Finally, and before going to Hulu.com,&amp;nbsp;&lt;a href="http://www.absolutelyandroid.com/guide-hulu-on-android-2-2-froyo/"&gt;set your user-agent to desktop mode&lt;/a&gt;, which acts like an Intel Mac.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And then...&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5397654132/" title="Hulu on Android by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5297/5397654132_550739e4ac.jpg" width="500" height="333" alt="Hulu on Android" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The sound is clean, but the videos are pretty laggy. I'll have to try this on a friend's phone to see if a newer, perhaps 1+GHz CPU, will improve things.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Opening and Getting Console on AT&amp;T U-Verse  3800HGV-B</title>
    <id>http://rsaxvc.net/blog/2011/1/28/Opening and Getting Console on AT&amp;T U-Verse  3800HGV-B.html</id>
    <updated>2011-01-28T01:27:35Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/28/Opening and Getting Console on AT&amp;T U-Verse  3800HGV-B.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">How to open your 3800HGV-B: First push in the plastic tabs on each side of the case and prop with a plastic knife. There are two tabs per side.
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5395181064/" title="Open Here by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4126/5395181064_7e2684ed8a.jpg" width="500" height="333" alt="Open Here" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Halfway there.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5395181558/" title="ATT U-Verse 3800HGV-B by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5216/5395181558_08731070fa.jpg" width="500" height="333" alt="ATT U-Verse 3800HGV-B" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's the top case now removed.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5394586899/" title="3800HGV-B Top Case by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4116/5394586899_4250e32250.jpg" width="500" height="333" alt="3800HGV-B Top Case" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the bottom case and PCB.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5394587621/" title="U-Verse 3800HGV-B Bottom case and PCB by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4114/5394587621_03e23d7511.jpg" width="500" height="333" alt="U-Verse 3800HGV-B Bottom case and PCB" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What an interesting little 4-pin header. Could it be Power, Ground, TX, and RX?&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5395183266/" title="What's this do? by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5294/5395183266_45b0cc87b9.jpg" width="500" height="333" alt="What's this do?" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is indeed serial, running 3.3Volts@38400Baud. Pinout from top/rightmost pin should be power, serial from unit to pc, serial from pc to unit, ground. Power and ground might be swapped.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5394588795/" title="This is the 3800HGV-B serial header by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4134/5394588795_14361d4089.jpg" width="500" height="333" alt="This is the 3800HGV-B serial header" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These next shots are some console output. Sadly I forgot to enable logging, so I only have pictures.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5395184952/" title="ATT U-Verse 3800HGV-B by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4154/5395184952_13b17eefbe.jpg" width="500" height="333" alt="ATT U-Verse 3800HGV-B" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5395185432/" title="ATT U-Verse 3800HGV-B by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4146/5395185432_a1015851f1.jpg" width="500" height="333" alt="ATT U-Verse 3800HGV-B" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Changing your Google Chrome Flash Version</title>
    <id>http://rsaxvc.net/blog/2011/1/26/Changing your Google Chrome Flash Version.html</id>
    <updated>2011-01-26T23:51:56Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/26/Changing your Google Chrome Flash Version.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Sometimes it is useful to change your Flash version. Here's a simple trick to do that and see how apps behave.&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/assets_c/2011/01/FlashWin-37.html" onclick="window.open('http://rsaxvc.net/blog/assets_c/2011/01/FlashWin-37.html','popup','width=708,height=376,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://rsaxvc.net/blog/assets_c/2011/01/FlashWin-thumb-480x254-37.png" width="480" height="254" alt="FlashWin.png" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Steps:&lt;br /&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Get the current flash version from&amp;nbsp;&lt;a href="http://kb2.adobe.com/cps/155/tn_15507.html"&gt;http://kb2.adobe.com/cps/155/tn_15507.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;grep for your current os + version in %USERPATH%\AppData\Local\Google\Chrome\Application\ . You'll find it in a subdirectory in gcswf32.dll&lt;/li&gt;&lt;li&gt;Hexedit and replace the os + version number. Because it is a NULL-terminated string, don't use any more characters than it already has.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;...and tada!&lt;/div&gt;&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/assets_c/2011/01/FlashSin-40.html" onclick="window.open('http://rsaxvc.net/blog/assets_c/2011/01/FlashSin-40.html','popup','width=702,height=349,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://rsaxvc.net/blog/assets_c/2011/01/FlashSin-thumb-480x238-40.png" width="480" height="238" alt="FlashSin.png" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Linux uses the prefix LNX and Android uses AND.&amp;nbsp;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">eZ430-F2013 Development Tool</title>
    <id>http://rsaxvc.net/blog/2011/1/26/eZ430-F2013 Development Tool.html</id>
    <updated>2011-01-26T21:56:34Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/26/eZ430-F2013 Development Tool.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Normally I take apart all new toys, but this one has only 5 parts, and is designed to come apart easily. It costs only $20, available from TI&amp;nbsp;&lt;a href="http://focus.ti.com/docs/toolsw/folders/print/ez430-f2013.html"&gt;here&lt;/a&gt;. Previously, there was a giveaway for up to 3 units, although you had to wait up to a month for shipping and handling.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Packaging: I'm a big fan of the DVD case and double thick DVD case form factors. This comes in a single DVD case:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5391542981/" title="Front Box by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5051/5391542981_353512553c.jpg" width="333" height="500" alt="Front Box" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5391543983/" title="Rear Box by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5058/5391543983_e41d36e4fc.jpg" width="333" height="500" alt="Rear Box" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5392145828/" title="Open Box by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5255/5392145828_41cb82978a.jpg" width="500" height="333" alt="Open Box" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looks a lot like a thumbdrive, which is a great form factor for something like this:&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5392146536/" title="Looks like a thumbdrive by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5052/5392146536_25b0b43efa.jpg" width="500" height="333" alt="Looks like a thumbdrive" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's the important part&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5391548051/" title="The important part by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5254/5391548051_c585a15eea.jpg" width="500" height="333" alt="The important part" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It breaks apart into two pieces: the USB to RSR232/RS485 with TUSB3410, and the MSP430 itself:&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5391549767/" title="eZ430-F2013 Dev Kit by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5094/5391549767_176f8cdce1.jpg" width="333" height="500" alt="eZ430-F2013 Dev Kit" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For some perspective, this is sitting on an American Lincoln Penny&lt;div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5392150850/" title="The MSP430 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5060/5392150850_61eb6493c8.jpg" width="500" height="328" alt="The MSP430" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This looks to be a fun toy, for two reasons. One, is the MSP430 microcontroller. Two, is the USB to Serial Adapter. The serial adapter is a TUSB3410, which also holds an 8052 microcontroller with 16K of RAM, 10K of ROM, UART with DMA, dual 16-bit timers, IRDA encoder/decoder, and also I2C.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Well this is interesting</title>
    <id>http://rsaxvc.net/blog/2011/1/21/Well this is interesting.html</id>
    <updated>2011-01-21T00:24:04Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/21/Well this is interesting.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">I photographed my teardown of my first SCS-26UC4. However, after bricking the second one,&amp;nbsp;Doug Kelly, Kevin,&amp;nbsp;and I disassembled it. Funny enough, the components weren't quite the same. Working on some information from&amp;nbsp;&lt;a href="http://laboratoryb.org/"&gt;Laboratory B&lt;/a&gt;, we re-examined the GPS port, to see if the pins could be scoped once it had a signal. More interestingly, the GPS chipset is different from the first unit we took apart.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;This first one is a SigNav:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5155964323/" title="SamSungChips by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4013/5155964323_f6d8bc703f.jpg" width="500" height="333" alt="SamSungChips" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;This next one is a Trimble:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5374229103/" title="New GPS Chipset by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5289/5374229103_5344da46bc.jpg" width="500" height="333" alt="New GPS Chipset" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since the device was bricked, it probably doesn't need any signal shield...&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5374229739/" title="New GPS Chipset by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5206/5374229739_9cff2efa7d.jpg" width="500" height="333" alt="New GPS Chipset" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;And it uses an STMicroelectronics GPS Baseband processor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cool. There are datasheets for one of the Trimble units&amp;nbsp;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CBMQFjAA&amp;amp;url=ftp%3A%2F%2Fftp.trimble.com%2Fpub%2Fsct%2Fembedded%2Fbin%2FManuals%2FCopernicus%2520v3.02%2520revA.pdf&amp;amp;ei=ciM5TfvtMIK0lQeDzs2pBw&amp;amp;usg=AFQjCNGbBHEZDPZ1ni-3HE8kEGgnap3oAA"&gt;here&lt;/a&gt;. In all likelihood, the device is a&amp;nbsp;&lt;a href="http://www.dpie.com/gps/copernicus.html"&gt;Copernicus I/II&lt;/a&gt;, but it might also be a &lt;a href="http://www.dpie.com/gps/trimble-condor-gps-module.html" style="text-decoration: underline; "&gt;Condor&lt;/a&gt;. &lt;a href="http://www.sparkfun.com/"&gt;SparkFun&lt;/a&gt; sells&amp;nbsp;&lt;a href="http://www.sparkfun.com/products/7951"&gt;a Copernicus&lt;/a&gt;&amp;nbsp;for $45.&amp;nbsp;A re-check of the serial i/o voltages should confirm which model. Potentially, there are three possible GPS protocols: NMEA(A text based standard), TSIP(Trimble Standard), and TAIP(Another Trimble Standard).&amp;nbsp;&lt;a href="http://www.pages.drexel.edu/~kws23/research/summerMentorship/Output.htm"&gt;This&lt;/a&gt;&amp;nbsp;seems to explain it well enough. Hopefully we're one step closer to GPS in the cave.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.dpie.com/gps/copernicus.html"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">My SCS-26UC4 is bricked</title>
    <id>http://rsaxvc.net/blog/2011/1/21/My SCS-26UC4 is bricked.html</id>
    <updated>2011-01-21T00:01:36Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/21/My SCS-26UC4 is bricked.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">As a note, I bricked my unit. Inside U-Boot, in the MDOC interface, I picked a menu item Update/Verify. To note, this isn't a menu: it updates, and then it verifies. Since I hadn't loaded anything explicitly, it loaded garbage to the preboot environment (IPL or Initial Program Load). This happened a while ago, &amp;nbsp;and hadn't posted about it. This is actually my second unit, as I bought one from the Verizon Store, then returned it as I found one $100 cheaper. Anything from here on out is static analysis, or analysis of the device without the CPU running.
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">OpenCaching.com RSS converter Online</title>
    <id>http://rsaxvc.net/blog/2011/1/16/OpenCaching.com RSS converter Online.html</id>
    <updated>2011-01-16T01:19:35Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/16/OpenCaching.com RSS converter Online.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">It may not be much to look at, but&amp;nbsp;&lt;a href="http://rsaxvc.net/opencaching/"&gt;my opencaching to rss&lt;/a&gt;&amp;nbsp;converter will let you periodically search a small area for particular types of geocaches as they are posted on OpenCaching.com. There are two files to make it happen: index.html and rss.php, although rss.php is completely capable of running by itself.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Index.html prompts the user to set up a filter. This filter is then encoded into a URL passed to rss.php. RSS.php builds up an OpenCaching.com JSON query, and transforms the result into RSS. To install the RSS into your favorite reader, simply fill in the form click submit, and copy the current URL into your RSS reader.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">The Original Red Vs. Blue</title>
    <id>http://rsaxvc.net/blog/2011/1/15/The Original Red Vs. Blue.html</id>
    <updated>2011-01-15T18:56:57Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/15/The Original Red Vs. Blue.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;10 years later, I had almost forgotten this game: Tribes 2. Tribes 2 was fast combat, huge levels, jetpacks, and CTF. In short, the good things many games today lack.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.penny-arcade.com/comic/2001/4/30/"&gt;http://www.penny-arcade.com/comic/2001/4/30/&lt;/a&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">DeWalt DC9096 Battery Pack Teardown</title>
    <id>http://rsaxvc.net/blog/2011/1/11/DeWalt DC9096 Battery Pack Teardown.html</id>
    <updated>2011-01-11T23:47:00Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/11/DeWalt DC9096 Battery Pack Teardown.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;&lt;a class="zem_slink" href="http://www.dewalt.com/" title="DeWalt" rel="homepage"&gt;DeWalt&lt;/a&gt; makes some nice tools. Today, I disassembled a DC9096 Nickel-Cadmium battery. I was intrigued by the fact that there only appears to be space for 14 sub-c cells in the battery, but 15 cells are needed to reach 18 volts. Also, I wanted to examine the possibility of replacing the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Nickel-cadmium_battery" title="Nickel-cadmium battery" rel="wikipedia"&gt;NiCad&lt;/a&gt; cells with &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Nickel-metal_hydride_battery" title="Nickel-metal hydride battery" rel="wikipedia"&gt;NiMH&lt;/a&gt; cells, which can last much longer.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5347858929/" title="Ready to Open by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5010/5347858929_7bc0601efc.jpg" width="500" height="333" alt="Ready to Open" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;Remove these six screws&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5347859369/" title="Six Screws by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5082/5347859369_d540caed2f.jpg" width="500" height="333" alt="Six Screws" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;It should come out fairly easily, but some wiggling may be required&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5347860133/" title="Opened by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5170/5347860133_5acaa83ee2.jpg" width="500" height="333" alt="Opened" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;It doesn't add up. 14*1.2 = 16.8, not 18 Volts. There must be another cell&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5347860867/" title="But there's only 14 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5210/5347860867_f96d81c363.jpg" width="500" height="333" alt="But there's only 14" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt; What's this?&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5348475586/" title="But What's This? by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5201/5348475586_a459affd62.jpg" width="500" height="333" alt="But What's This?" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt; Here it is. There didn't seem to be a good way to remove the other cells, so I cut them, and pulled the ribbon wire from the 15th cell. These appear to be welded on to the cell four times at each connection.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5347864985/" title="The 15th Cell by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5206/5347864985_f55b936c24.jpg" width="500" height="333" alt="The 15th Cell" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;Pinouts:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Front pin (left in this image) goes to the white line in the pack.&lt;/li&gt;&lt;li&gt;Center in goes to the thermocouple ( not pictured )&lt;/li&gt;&lt;li&gt;Rear pin (right in this image) goes to the 15th battery cell.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="http://www.flickr.com/photos/40925843@N03/5347864329/" title="Power Connector by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5045/5347864329_8c86f21066.jpg" width="500" height="333" alt="Power Connector" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Rooting the Astaro AP-30</title>
    <id>http://rsaxvc.net/blog/2011/1/7/Rooting the Astaro AP-30.html</id>
    <updated>2011-01-07T00:44:03Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/7/Rooting the Astaro AP-30.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; height: 90%; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); color: rgb(51, 51, 51); font: normal normal normal 13px/normal arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; font-family: 'Times New Roman'; font-size: medium; "&gt;Previously, I took apart an&amp;nbsp;&lt;a class="zem_slink" href="http://www.astaro.com/" title="Astaro" rel="homepage" style="text-decoration: underline; "&gt;Astaro&lt;/a&gt;&amp;nbsp;AP-30, and found the serial output line. Today, I found the input of the serial port, and rooted the device.&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5331804931/" title="Astaro AP-30 Serial Connection by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5047/5331804931_dc0892e15f.jpg" width="500" height="376" alt="Astaro AP-30 Serial Connection" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Starting from the square pin on the board,&lt;/div&gt;&lt;div&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 20px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; list-style-type: disc; list-style-position: outside; list-style-image: initial; background-repeat: no-repeat repeat; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;Pin 1 - Power?&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;Pin 2 - Ground&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;Pin 3 - Serial from device to console&amp;nbsp;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;Pin 4 - Serial from console to device&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;In the picture, I used a 100Ohm resistor, because when you aren't certain it is the console, it pays to be cautious.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/2010/12/astaro-ap30-teardown.html" style="text-decoration: underline; "&gt;&lt;/a&gt;From my&amp;nbsp;&lt;a href="http://rsaxvc.net/blog/2010/12/astaro-ap30-teardown.html" style="text-decoration: underline; "&gt;earlier post&lt;/a&gt;,&amp;nbsp;you can see that the device doesn't have an OS installed; it boots from&amp;nbsp;&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol" title="Trivial File Transfer Protocol" rel="wikipedia" style="text-decoration: underline; "&gt;TFTP&lt;/a&gt;. It appears to do this every time, so potentially, you might be able to upload a new config to one by power-cycling it while running your own TFTP server.&lt;/div&gt;&lt;div&gt;. Press enter to activate console you say? After guessing the right serial line ( right next to the other), &amp;nbsp;it is my old friend,&amp;nbsp;&lt;a class="zem_slink" href="http://openwrt.org/" title="OpenWrt" rel="homepage" style="text-decoration: underline; "&gt;OpenWRT&lt;/a&gt;!&amp;nbsp;&lt;a href="http://rsaxvc.net/Projects/AstaroAP30/astaro_login.txt" style="text-decoration: underline; "&gt;Here is another log&lt;/a&gt;. Also, we can see the list of OpenWRT packages&amp;nbsp;&lt;a href="http://rsaxvc.net/Projects/AstaroAP30/astaro_packages.txt" style="text-decoration: underline; "&gt;here&lt;/a&gt;. Of note are the RT2860 kernel module and libpcap packages. So the chipset is a&amp;nbsp;&lt;a class="zem_slink" href="http://www.ralinktech.com/" title="Ralink" rel="homepage" style="text-decoration: underline; "&gt;Ralink&lt;/a&gt;&amp;nbsp;RT2860 with MIPS24K CPU. This puts it in a class similar to&amp;nbsp;&lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16833162026" style="text-decoration: underline; "&gt;Buffalo WHR-G300N&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&amp;nbsp;One common chipset that provides both RT2860 and a MIPS24K is Ralink's own&amp;nbsp;&lt;a href="http://www.ralinktech.com/download.php?t=U0wyRnpjMlYwY3k4eU1EQTVMekE1THpBNEwzQnliMlIxWTNRNE9UTTRNRGt3T0RnMExuQmtaajA5UFZKVU16QTFNQzF3Y205a2RXTjBJR0p5YVdWbUM%3D" style="text-decoration: underline; "&gt;RT3050&lt;/a&gt;&amp;nbsp;chipset.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Uname:&amp;nbsp;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: monospace; white-space: pre-wrap; "&gt;&lt;a class="zem_slink" href="http://www.kernel.org/" title="Linux" rel="homepage" style="text-decoration: underline; "&gt;Linux&lt;/a&gt; OpenWrt 2.6.21 #1 Thu Nov 4 14:30:02 CET 2010 mips unknown&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; 

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=5a890546-ac82-422b-afb2-dd2838263839" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Samsung SCS-26UC4 Web Interface Password</title>
    <id>http://rsaxvc.net/blog/2011/1/3/Samsung SCS-26UC4 Web Interface Password.html</id>
    <updated>2011-01-03T22:41:30Z</updated>
    <link href="http://rsaxvc.net/blog/2011/1/3/Samsung SCS-26UC4 Web Interface Password.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">The password for the web interface is stored in &lt;b&gt;/udata/htdocs/.htpasswd&lt;/b&gt; in the form &lt;b&gt;username:traditionalDESHash&lt;/b&gt;.
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Digilent BASYS2 FPGA</title>
    <id>http://rsaxvc.net/blog/2010/12/24/Digilent BASYS2 FPGA.html</id>
    <updated>2010-12-24T00:38:47Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/24/Digilent BASYS2 FPGA.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5286702115/" title="BASYS2 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5243/5286702115_6c7f489a02.jpg" width="500" height="333" alt="BASYS2" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;I purchased a Digilent BASYS2 &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Field-programmable_gate_array" title="Field-programmable gate array" rel="wikipedia"&gt;FPGA&lt;/a&gt; to continue my efforts with OISC. It includes four &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Seven-segment_display" title="Seven-segment display" rel="wikipedia"&gt;seven-segment displays&lt;/a&gt;, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Universal_Serial_Bus" title="Universal Serial Bus" rel="wikipedia"&gt;USB 2.0&lt;/a&gt;, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Video_Graphics_Array" title="Video Graphics Array" rel="wikipedia"&gt;VGA&lt;/a&gt;, four momentary switches, eight switches, and a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/PS/2_connector" title="PS/2 connector" rel="wikipedia"&gt;PS/2 port&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5287298602/" title="BASYS2 PS2 port by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5244/5287298602_ee49ec91cd.jpg" width="500" height="333" alt="BASYS2 PS2 port" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5287299880/" title="BASYS2 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5083/5287299880_2b7b6aeaf3.jpg" width="500" height="333" alt="BASYS2" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;The built-in demo shows color gradients(RGB332), a counter on the seven-segment displays, and results when buttons are pressed. The included loadable demo shows reading PS/2 scancodes. Possible uses include a USB terminal, by programming USB to act as a baudless serial port, and using the PS/2 and VGA for user I/O.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The chip is a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Xilinx" title="Xilinx" rel="wikipedia"&gt;Xilinx&lt;/a&gt; Spartan 3E-250, although a 100,000 gate version is available for slightly less. Sadly, the development tools are over 4GB, and hosted on a slow server. Digilent did include a nice utility for installing new FPGA configurations, but I cannot get it to work with Windows 7 x64. &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Windows_XP" title="Windows XP" rel="wikipedia"&gt;Windows XP&lt;/a&gt; 32, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Ubuntu_%28operating_system%29" title="Ubuntu (operating system)" rel="wikipedia"&gt;Ubuntu&lt;/a&gt; 64, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Debian" title="Debian" rel="wikipedia"&gt;Debian&lt;/a&gt; 64, and Ubuntu 32 worked fine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Packaging is cool. The whole system fits in a multi-&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/DVD" title="DVD" rel="wikipedia"&gt;DVD&lt;/a&gt; case, and Digilent includes a free stretchy/clicky USB cable.&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5287294006/" title="BASYS2 by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5043/5287294006_fce21a6c9b.jpg" width="500" height="333" alt="BASYS2" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/sets/72157625662412978/" style="text-decoration: underline; "&gt;http://www.flickr.com/photos/40925843@N03/sets/72157625662412978/&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Focus Enhancements TView Gold VGA-&gt;NTSC/PAL Converter Teardown</title>
    <id>http://rsaxvc.net/blog/2010/12/23/Focus Enhancements TView Gold VGA-&gt;NTSC/PAL Converter Teardown.html</id>
    <updated>2010-12-23T23:56:09Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/23/Focus Enhancements TView Gold VGA-&gt;NTSC/PAL Converter Teardown.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Longest title ever.&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5286869981/" title="Focus by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5122/5286869981_ccf7c0c86a.jpg" width="500" height="333" alt="Focus" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Anyhow, Thor dropped off a TView VGA-&amp;gt;NTSC/PAL converter at the space, so I took it apart.&amp;nbsp;&lt;a href="http://www.flickr.com/photos/40925843@N03/sets/72157625537176771/"&gt;http://www.flickr.com/photos/40925843@N03/sets/72157625537176771/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is a spot for a header, but I don't know what it does. Someone wants to use it for the intended purpose, so I probably won't do any more with it.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Astaro AP30 Teardown</title>
    <id>http://rsaxvc.net/blog/2010/12/23/Astaro AP30 Teardown.html</id>
    <updated>2010-12-23T23:14:52Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/23/Astaro AP30 Teardown.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">
I was given access to an Astaro AP30 access point.&lt;div&gt;
&lt;a href="http://www.flickr.com/photos/40925843@N03/5287364440/" title="Astaro by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5121/5287364440_43b10b4154.jpg" width="500" height="333" alt="Astaro" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;

&lt;div&gt;So I took it apart.&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5287365398/" title="AP30 with Top Removed by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5050/5287365398_e854f4f9d4.jpg" width="500" height="333" alt="AP30 with Top Removed" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;
&lt;div&gt;Also, the serial port appears to speak 56K @ 3.3Volts.&lt;a href="http://www.flickr.com/photos/40925843@N03/5287383838/"&gt;http://www.flickr.com/photos/40925843@N03/5287383838/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5287383838/"&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;

&lt;div&gt;Good grief. The antennas are glued down. At least they used a standard coax connector, U.FL.
&lt;/div&gt;
&lt;div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/5286765577/" title="U.FL Antennas by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5047/5286765577_29ed300660.jpg" width="500" height="333" alt="U.FL Antennas" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;Also, the CPU has a heatsink! A heatsink for a microcontroller.&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://www.flickr.com/photos/40925843@N03/5287369386/" title="HeatSink by rsaxvc, on Flickr"&gt;&lt;img src="http://farm6.static.flickr.com/5008/5287369386_c3606dc6c3.jpg" width="500" height="333" alt="HeatSink" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br /&gt;

&lt;div&gt;Here's what the serial port says on powerup:&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;b&gt;============================================&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;ASIC 3052_MP2 (Port5&amp;lt;-&amp;gt;None)&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;Product Name: EAP9550&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;SDRAM CAS = 3(d1835272)&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;============================================&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;Please choose the operation:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; 1: Load system code to SDRAM via TFTP.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;You choosed trigger_button---&amp;gt;0x1&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.flickr.com/photos/40925843@N03/sets/72157625536971053/with/5287362528/"&gt;http://www.flickr.com/photos/40925843@N03/sets/72157625536971053/with/5287362528/&lt;/a&gt;



</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">My very own OBJ Viewer</title>
    <id>http://rsaxvc.net/blog/2010/12/20/My very own OBJ Viewer.html</id>
    <updated>2010-12-20T23:07:18Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/20/My very own OBJ Viewer.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div&gt;The OBJ file format is a simple container for 3D geometry.&lt;/div&gt;&lt;a href="http://en.wikipedia.org/wiki/Obj"&gt;http://en.wikipedia.org/wiki/Obj&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I needed a viewer for it, so I wrote one. So far it supports 3 element face-vertex form.Potentially, each face can have an unlimited number of vertices, but 3 serves my purposes. Also, there are several other items that can be stored, like texture and normal information that are not yet implemented, but it serves my purposes. Source code is available here:&amp;nbsp;&lt;a href="http://rsaxvc.net/code/obj3dviewer/"&gt;http://rsaxvc.net/code/obj3dviewer&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">This Post is for the UNIX Users</title>
    <id>http://rsaxvc.net/blog/2010/12/12/This Post is for the UNIX Users.html</id>
    <updated>2010-12-12T11:14:03Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/12/This Post is for the UNIX Users.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;a href="http://rsaxvc.net/blog/assets_c/2010/12/Browsers-34.html" onclick="window.open('http://rsaxvc.net/blog/assets_c/2010/12/Browsers-34.html','popup','width=1016,height=323,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://rsaxvc.net/blog/assets_c/2010/12/Browsers-thumb-480x152-34.png" width="480" height="152" alt="Browsers.png" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;I am not alone.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">How to stop AutoBoot on the Samsung SCS-26UC4</title>
    <id>http://rsaxvc.net/blog/2010/12/11/How to stop AutoBoot on the Samsung SCS-26UC4.html</id>
    <updated>2010-12-11T12:02:32Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/11/How to stop AutoBoot on the Samsung SCS-26UC4.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">After downloading the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Samsung_Group" title="Samsung Group" rel="wikipedia"&gt;Samsung&lt;/a&gt; source code, you may try to find differences between the stock sources, and the ones Samsung provides. This results in a list of the changes Samsung had to make to the stock sources to get their product going. After you build a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Serial_cable" title="Serial cable" rel="wikipedia"&gt;serial cable&lt;/a&gt; for the femtocell, you also might've noticed the message 'Hit any key to stop autoboot', tried hitting a key, and the boot proceeded anyhow. Here's why.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Performing a difference between the u-boot 1.1.1 source from Samsung and the stock source from sourceforge.net, reveals a few key differences:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;MDOC filesystem support. This is a type of flash +&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;smart&amp;nbsp;flash controller.&lt;/li&gt;&lt;li&gt;OMAP1710 support(&amp;nbsp;&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;a href="http://linux.omap.com/pub/documentation/omap_1710v1.4.txt"&gt;http://linux.omap.com/pub/documentation/omap_1710v1.4.txt&lt;/a&gt;, read the u-boot section&amp;nbsp;)&lt;/li&gt;&lt;li&gt;NFS boot timeout went from 10 seconds (stock) to 60 seconds(Samsung)&lt;/li&gt;&lt;li&gt;This tidbit in the autoboot/console code:&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/assets_c/2010/12/SamsungDiff1-28.html" onclick="window.open('http://rsaxvc.net/blog/assets_c/2010/12/SamsungDiff1-28.html','popup','width=1022,height=750,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://rsaxvc.net/blog/assets_c/2010/12/SamsungDiff1-thumb-480x352-28.png" width="480" height="352" alt="SamsungDiff1.png" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/assets_c/2010/12/SamsungDiff2-31.html" onclick="window.open('http://rsaxvc.net/blog/assets_c/2010/12/SamsungDiff2-31.html','popup','width=1022,height=750,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://rsaxvc.net/blog/assets_c/2010/12/SamsungDiff2-thumb-480x352-31.png" width="480" height="352" alt="SamsungDiff2.png" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;If you know C, this is pretty obvious. You have to type 's', 'y', 's', Enter, but after that, the unit drops into a standard u-boot bootloader menu. You have to be quick though; there's a 1 second timeout. Be careful in this menu system - you can rather easily brick your unit to the point of needing a JTAG cable to fix it. And without the 1710's datasheet, you won't get very far.&lt;/div&gt;&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;br /&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Where to get your Samsung Femtocell Source Code</title>
    <id>http://rsaxvc.net/blog/2010/12/11/Where to get your Samsung Femtocell Source Code.html</id>
    <updated>2010-12-11T11:12:55Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/11/Where to get your Samsung Femtocell Source Code.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">If you're the proud owner of a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Samsung_Group" title="Samsung Group" rel="wikipedia"&gt;Samsung&lt;/a&gt; SCS-26UC4, but the link for &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/GNU_General_Public_License" title="GNU General Public License" rel="wikipedia"&gt;GPL&lt;/a&gt;'d code in the manual doesn't work, where do you go?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.samsung.com/global/business/telecomm/opensource/femtocell.html"&gt;http://www.samsung.com/global/business/telecomm/opensource/femtocell.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The source code must have moved since the manuals were printed, but included is all of the kernel, all of the boot loader (u-boot), cracklib, some of the GPS driver, and some other tools.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Mounting ISOs in HP-UX</title>
    <id>http://rsaxvc.net/blog/2010/12/8/Mounting ISOs in HP-UX.html</id>
    <updated>2010-12-08T20:33:40Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/8/Mounting ISOs in HP-UX.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;ol&gt;&lt;li&gt;First, su to root, then kick off some PFS(Portable File System) daemons into the shell background:&lt;/li&gt;&lt;li&gt;`nohup pfs_mountd&amp;amp;`&lt;/li&gt;&lt;li&gt;`nohup pfsd &amp;amp;`&lt;/li&gt;&lt;li&gt;Finally, mount the image with:&lt;/li&gt;&lt;li&gt;`pfs_mount -x unix /full/path/to/iso.iso /full/path/to/mount/point&lt;/li&gt;&lt;li&gt;The "-x unix" makes the&amp;nbsp;mount&amp;nbsp;so that filenames don't contain extra ISO9660 information and makes all filenames lowercase.&lt;/li&gt;&lt;li&gt;For more information, `man pfs_mount`&lt;/li&gt;&lt;/ol&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">SCS-26UC4 Teardown Photos up</title>
    <id>http://rsaxvc.net/blog/2010/12/6/SCS-26UC4 Teardown Photos up.html</id>
    <updated>2010-12-06T22:45:03Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/6/SCS-26UC4 Teardown Photos up.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;a href="http://www.flickr.com/photos/40925843@N03/5156528554/" title="Almost There... by rsaxvc, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4008/5156528554_00e5db0846.jpg" width="500" height="333" alt="Almost There..." /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;a href ="http://www.flickr.com/photos/40925843@N03/tags/scs26uc4/"&gt;http://www.flickr.com/photos/40925843@N03/tags/scs26uc4/&lt;/a&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Sometimes 64 bits just aren't enough.</title>
    <id>http://rsaxvc.net/blog/2010/12/5/Sometimes 64 bits just aren't enough..html</id>
    <updated>2010-12-05T06:10:59Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/5/Sometimes 64 bits just aren't enough..html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Often times in programming, fixed point numbers are used. For example, a 32 bit representation of angle(0:1) using fixed point provides much greater accuracy than the same 32 bits used for a floating point representation. The resolution of the circumference of the earth in 32 bit fixed point is about a centimeter, but 10 feet or so in 32 bit floating point.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But what if we expand this same idea? The approximate diameter of the known universe is about 156 billion light years. There are&amp;nbsp;18446744073709551616 unique 64 bit integers. Thus, the resolution of a 64 bit scaled representation would be about 80,000 kilometers, or the radius of Jupiter. That is to say that the known universe is about 2^63 Jupiters wide.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Attaching a Console Cable to the Samsung/Verizon SCS-26UC4</title>
    <id>http://rsaxvc.net/blog/2010/12/3/Attaching a Console Cable to the Samsung/Verizon SCS-26UC4.html</id>
    <updated>2010-12-03T21:23:51Z</updated>
    <link href="http://rsaxvc.net/blog/2010/12/3/Attaching a Console Cable to the Samsung/Verizon SCS-26UC4.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/assets_c/2010/12/IMG_20101203_000702-21.html" onclick="window.open('http://rsaxvc.net/blog/assets_c/2010/12/IMG_20101203_000702-21.html','popup','width=2592,height=1952,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://rsaxvc.net/blog/assets_c/2010/12/IMG_20101203_000702-thumb-480x361-21.jpg" width="480" height="361" alt="SerialOverHDMI" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;/div&gt;You may have noticed that the SCS-26UC4 has what appears to be an &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/HDMI" title="HDMI" rel="wikipedia"&gt;HDMI&lt;/a&gt; port. However, if you have a meter, you may have also noticed that the HDMI port doesn't follow the HDMI specification - it has a 3.3 volt power line instead of a 5 volt line. Curiouser and curiouser, many of the other pins are not connected properly either for an HDMI port. It turns out, that this HDMI connector is actually a 3.3 volt asynchronous &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Linux_console" title="Linux console" rel="wikipedia"&gt;Linux console&lt;/a&gt; port.&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/assets_c/2010/12/IMG_20101202_234544-24.html" onclick="window.open('http://rsaxvc.net/blog/assets_c/2010/12/IMG_20101202_234544-24.html','popup','width=2592,height=1952,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://rsaxvc.net/blog/assets_c/2010/12/IMG_20101202_234544-thumb-480x361-24.jpg" width="480" height="361" alt="SolderJoints" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Assuming you used a standard HDMI cable from Wal-Mart and a 3.3Volt FTDI serial adapter, make the following connections:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;HDMI bare copper ground to FTDI Black(Ground)&lt;/li&gt;&lt;li&gt;HDMI White to FTDI Yellow (RX to computer)&lt;/li&gt;&lt;li&gt;HDMI Orange to FTDI Orange(TX from computer)&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Now configure your terminal to 57600 baud, no flow control, and tada:&lt;/div&gt;&lt;div&gt;&lt;a href="http://rsaxvc.net/blog/SCS26UC4/samsung_boot.log"&gt;samsung_boot.log&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Freespace 2 and Prime Factorization</title>
    <id>http://rsaxvc.net/blog/2010/11/30/Freespace 2 and Prime Factorization.html</id>
    <updated>2010-11-30T20:35:38Z</updated>
    <link href="http://rsaxvc.net/blog/2010/11/30/Freespace 2 and Prime Factorization.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">Some time ago, I wrote a patch for the open-source continuation of the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/FreeSpace_2" title="FreeSpace 2" rel="wikipedia"&gt;Freespace 2&lt;/a&gt; project (&lt;a href="http://scp.indiegames.us/"&gt;FS2_open&lt;/a&gt;). Previously, each ship could only select between firing one set of primary weapons, or all sets of primary weapons. Firing individual weapons in a set was decided by the ship's data files.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;However, games with more complex ships needed a different way to control weapon firing sequences. In particular, &lt;a href="http://swc.hard-light.net/"&gt;Fate of the Galaxy&lt;/a&gt;, a fan-made &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Star_Wars" title="Star Wars" rel="wikipedia"&gt;StarWars&lt;/a&gt; space shooter, needed a way for pilots to pick how many versus how quickly each bank should fire.&amp;nbsp;As situations change, it may become necessary for pilots to reconfigure primary weapons to fire in parallel,&amp;nbsp;for more of a shotgun effect instead of sequentially firing each weapon in the bank, which leads to a much more even power draw.&amp;nbsp;The &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/X-wing" title="X-wing" rel="wikipedia"&gt;X-Wing&lt;/a&gt; is a perfect example of this - when attacking faster craft like interceptors, quad lasers are much more useful.&amp;nbsp;But when attacking swarms of small asteroids, waiting for all four lasers to recharge is a detriment.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Because FS2_open is a game engine instead of a game, the same code needs to control the firing sequence of each ship.&amp;nbsp;But how does a ship decide what firing sequences to expose to the pilot?&amp;nbsp;The simplest answer is factorization.&amp;nbsp;For example, a ship with four primary weapons in a bank may fire arrangements of 1x4, 2x2, or 4x1. A ship with six can fire 1x6, 2x3, 3x2, or 6x1.&amp;nbsp;Over a long enough time period, the power draw should be consistent, so for each arrangement,&amp;nbsp;delay the firing time by the number of shots, and it will average out evenly.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Finally, there is the question of how to factor these numbers in flight.&amp;nbsp;The simplest solution would be a linear search from 1 to int(sqrt(n)). This could be done at mission load time for each model of ship...&amp;nbsp;or it could be done at compile time with a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Lookup_table" title="Lookup table" rel="wikipedia"&gt;look-up table&lt;/a&gt; and an assumption about the maximum number of firepoints per bank, which is the solution I implemented.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">New Neighbors</title>
    <id>http://rsaxvc.net/blog/2010/11/23/New Neighbors.html</id>
    <updated>2010-11-23T23:30:23Z</updated>
    <link href="http://rsaxvc.net/blog/2010/11/23/New Neighbors.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">I've moved RSAXVC.NET hosting to Santrex. The provide cheap monthly rates on &lt;a class="zem_slink" href="http://openvz.org" title="OpenVZ" rel="homepage"&gt;OpenVZ&lt;/a&gt; machines. I'm a big fan of OpenVZ.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's my new neighborhood:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;jetbooster.net
  (208.53.181.10)&amp;nbsp;&lt;/li&gt;&lt;li&gt;soon.jetbooster.net
  (208.53.181.11)&amp;nbsp;&lt;/li&gt;&lt;li&gt;lakebob.net
  (208.53.181.12)&amp;nbsp;&lt;/li&gt;&lt;li&gt;manabless.net
  (208.53.181.13)&lt;/li&gt;&lt;li&gt;neoblink.net
  (208.53.181.14)&lt;/li&gt;&lt;li&gt;blueribbon.fusionhosting.us
  (208.53.181.82)&amp;nbsp;&lt;/li&gt;&lt;li&gt;0v1.us
  (208.53.181.83)&amp;nbsp;&lt;/li&gt;&lt;li&gt;stealth-ip.info
  (208.53.181.84)&amp;nbsp;&lt;/li&gt;&lt;li&gt;stealth-ip.us
  (208.53.181.85)&amp;nbsp;&lt;/li&gt;&lt;li&gt;gajas-boas.e.na.tuxSP.pt
  (208.53.181.98)&amp;nbsp;&lt;/li&gt;&lt;li&gt;nao.sabes-nao.mexas.tuxSP.pt
  (208.53.181.99)&amp;nbsp;&lt;/li&gt;&lt;li&gt;big.world.tuxSP.pt
  (208.53.181.100)&amp;nbsp;&lt;/li&gt;&lt;li&gt;divulga-te.na.tuxSP.pt
  (208.53.181.101)&amp;nbsp;&lt;/li&gt;&lt;li&gt;nao.sejas.forreta.tuxSP.pt
  (208.53.181.102)&amp;nbsp;&lt;/li&gt;&lt;li&gt;xxx-twins.com
  (208.53.181.106)&amp;nbsp;&lt;/li&gt;&lt;li&gt;algol.galacticcore.net
  (208.53.181.108)&amp;nbsp;&lt;/li&gt;&lt;li&gt;capella.galacticcore.net
  (208.53.181.109)&amp;nbsp;&lt;/li&gt;&lt;li&gt;euromarqueauto.co.uk
  (208.53.181.110)&amp;nbsp;&lt;/li&gt;&lt;li&gt;www.xionweb.com
  (208.53.181.134)&amp;nbsp;&lt;/li&gt;&lt;li&gt;vps.santrex.net
  (208.53.181.144)&amp;nbsp;&lt;/li&gt;&lt;li&gt;sysnix.blacklistedhosting.com
  (208.53.181.147)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Xtronic.Net
  (208.53.181.148)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Krashed.us
  (208.53.181.149)&amp;nbsp;&lt;/li&gt;&lt;li&gt;pasti.keren.la
  (208.53.181.155)&amp;nbsp;&lt;/li&gt;&lt;li&gt;pasti.cakep.la
  (208.53.181.182)&amp;nbsp;&lt;/li&gt;&lt;li&gt;crew.cybercafe.la
  (208.53.181.183)&amp;nbsp;&lt;/li&gt;&lt;li&gt;acyied.com
  (208.53.181.198)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Shell.CrewByroe.Net
  (208.53.181.210) &amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">libcutter/Cricut SVG Support</title>
    <id>http://rsaxvc.net/blog/2010/10/7/libcutter/Cricut SVG Support.html</id>
    <updated>2010-10-07T20:23:57Z</updated>
    <link href="http://rsaxvc.net/blog/2010/10/7/libcutter/Cricut SVG Support.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;My latest update to libcutter implements basic &lt;a class="zem_slink" href="http://www.w3.org/Graphics/SVG/" title="Scalable Vector Graphics" rel="homepage"&gt;SVG&lt;/a&gt; support.&lt;/div&gt;&lt;div&gt;&lt;a href="https://github.com/vangdfang/libcutter" style="text-decoration: underline; "&gt;https://github.com/vangdfang/libcutter&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;There are a few things missing, but ovals, arcs, circles, rectangles, and Bezier all work. In fact, everything I've drawn in &lt;a href="http://www.inkscape.org/"&gt;InkScape&lt;/a&gt; has worked so far. The SVG interpreter is based on the early &lt;a href="http://www.t2-project.org/packages/libsvg.html"&gt;libsvg&lt;/a&gt;. Sadly, libsvg was merged into &lt;a href="http://cairographics.org/"&gt;Cairo&lt;/a&gt;, and is now the libsvg-cairo. libsvg-cairo is much less sharable with other projects than the old libsvg.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Building FS2_Open on OpenSolaris</title>
    <id>http://rsaxvc.net/blog/2010/9/30/Building FS2_Open on OpenSolaris.html</id>
    <updated>2010-09-30T19:33:40Z</updated>
    <link href="http://rsaxvc.net/blog/2010/9/30/Building FS2_Open on OpenSolaris.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;a href="http://208.53.181.144/blog/assets_c/2010/11/slowaris-14.html" onclick="window.open('http://208.53.181.144/blog/assets_c/2010/11/slowaris-14.html','popup','width=1024,height=768,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://208.53.181.144/blog/assets_c/2010/11/slowaris-thumb-480x360-14.png" width="480" height="360" alt="fs2Solaris" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Issues&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;a class="zem_slink" href="http://oracle.com/solaris" title="Solaris (operating system)" rel="homepage"&gt;Solaris&lt;/a&gt; &lt;a class="zem_slink" href="http://www.lua.org" title="Lua (programming language)" rel="homepage"&gt;Lua&lt;/a&gt; does not have a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Pkg-config" title="Pkg-config" rel="wikipedia"&gt;pkg-config&lt;/a&gt; script&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;fs2_open does not have a build script option for OpenSolaris&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;Sun make is awful&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;dependencies&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;Optimized &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/PowerPC" title="PowerPC" rel="wikipedia"&gt;PowerPC&lt;/a&gt; code leaks into OpenSolaris x86 builds.&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;The word 'sun' is a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Reserved_word" title="Reserved word" rel="wikipedia"&gt;reserved word&lt;/a&gt; on Solaris&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;the INTEL_INT macros are broken on everything but &lt;a class="zem_slink" href="http://www.apple.com/macosx/" title="Mac OS X" rel="homepage"&gt;OSX&lt;/a&gt;, &lt;a class="zem_slink" href="http://www.microsoft.com/WINDOWS" title="Windows" rel="homepage"&gt;Windows&lt;/a&gt;, and Linux/intel.&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;Solaris/X/&lt;a class="zem_slink" href="http://www.libsdl.org/" title="Simple DirectMedia Layer" rel="homepage"&gt;SDL&lt;/a&gt; has a bug if LANG is set, SDL will crash with an XError and a segfault.&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;PKG_CHECK_MODULES doesn't work very well on solaris&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Dependencies - install with the '&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Package_management_system" title="Package management system" rel="wikipedia"&gt;Package Manager&lt;/a&gt;'&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;SUNWgmake&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;gcc-432&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;gcc-runtime-432&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;SUNWlibtheora&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;SUNWogg-vorbis&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;SUNWpng&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;SUNWjpg&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;SUNWlibsdl&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;SUNWaconf&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;SUNWgnu-automake-110&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;SUNWlua&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;OpenAL&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Lua PKGConfig -here's my /usr/lib/pkgconfig/lua5.1.pc&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;prefix=/usr&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;major_version=5.1&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;version=5.1.4&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;#prefix=/usr&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;#major_version=5.1&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;#version=5.1.0&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;lib_name=lua${major_version}&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;libdir=${prefix}/lib&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;includedir=${prefix}/include&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;#&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;# The following are intended to be used via "pkg-config -variable".&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;# The location of the libtool library. This is used when linking to the Lua&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;# library via libtool.&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;libtool_lib=${libdir}/lib${lib_name}.la&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;# Install paths for Lua modules. For example, if a package wants to install&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;# Lua source modules to the /usr/local tree, call pkg-config with&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;# "-define-variable=prefix=/usr/local" and "-variable=INSTALL_LMOD".&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;INSTALL_LMOD=${prefix}/share/lua/${major_version}&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;INSTALL_CMOD=${prefix}/lib/lua/${major_version}&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;Name: Lua&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;Description: Lua language engine&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;Version: ${version}&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;Requires:&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;Libs: -L${libdir} -l${lib_name}&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;Libs.private: -lm&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;Cflags: -I${includedir}/${lib_name}&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Patch 1 - code/globalinc/pstypes.h&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;remove the section dealing with INTEL_INT, INTEL_FLOAT, stwbrx...&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace with&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;#define INTEL_INT( x ) ( x )&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;#define INTEL_FLOAT( x ) ( *x )&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;#define INTEL_SHORT( x ) ( x )&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Patch 2 - code/fs2netd/tcp_socket.cpp and code/network/chat_api.cpp&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;under&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;#include &amp;lt;sys/ioctl.h&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;add&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;#include &amp;lt;sys/filio.h&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Patch 3 - code/starfield/starfield.h&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;On Solaris, sun is a reserved word.&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;int stars_add_sun_entry(starfield_list_entry *sun);&lt;/code&gt;&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;int stars_add_sun_entry(starfield_list_entry *sun_ptr);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;int stars_get_num_entries(bool sun, bool bitmap_count);&lt;/code&gt;&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;int stars_get_num_entries(bool is_a_sun, bool bitmap_count);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void stars_mark_instance_unused(int index, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void stars_mark_instance_unused(int index, bool is_a_sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;const char *stars_get_name_from_instance(int index, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;const char *stars_get_name_from_instance(int index, bool is_a_sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;const char *stars_get_name_FRED(int index, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;const char *stars_get_name_FRED(int index, bool is_a_sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void stars_delete_entry_FRED(int index, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void stars_delete_entry_FRED(int index, bool is_a_sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void stars_modify_entry_FRED(int index,	const char *name, starfield_list_entry *sbi_new, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void stars_modify_entry_FRED(int index,	const char *name, starfield_list_entry *sbi_new, bool is_a_sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Patch 4 - code/starfield/starfield.cpp&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;On Solaris, sun is a reserved word.&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;in&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;int stars_add_sun_entry(starfield_list_entry *sun);&lt;/code&gt;&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace every variable&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;sun&lt;/code&gt;&amp;nbsp;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;sun_ptr&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;in the following functions, replace all instances of the variable sun with is_a_sun&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;int stars_get_num_entries(bool sun, bool bitmap_count);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void stars_mark_instance_unused(int index, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;const char *stars_get_name_from_instance(int index, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;const char *stars_get_name_FRED(int index, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void stars_delete_entry_FRED(int index, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void stars_modify_entry_FRED(int index,	const char *name, starfield_list_entry *sbi_new, bool sun);&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Patch 5 - code/starfield/supernova.cpp&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;On Solaris, sun is a reserved word.&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;in&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;void supernova_get_eye(vec3d *eye_pos, matrix *eye_orient);&lt;/code&gt;&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;replace every variable&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;sun&lt;/code&gt;&amp;nbsp;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;sun_vec&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;optionally replace every&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;sun_temp&lt;/code&gt;&amp;nbsp;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;sun_vec_temp&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Patch 6 - configure.ac&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;Solaris is an unrecognized platform&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;after&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;fs2_os_osx="no"&lt;/code&gt;, add&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;fs2_os_solaris="no"&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;Copy the stanza for&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;*-*-darwin*)&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;and edit to look like:&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;*-*-solaris*)&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;# Solaris&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;echo "Using Solaris 10 defines (for $host_os)"&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;fs2_os_solaris="yes"&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;;;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;Also, after the stanza starting with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;elif test "$fs2_os_osx" = "yes" ; then&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;add:&lt;/div&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;elif test "$fs2_os_solaris" = "yes" ; then&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;FS2_CXXFLAGS="$FS2_CXXFLAGS -I/usr/include/SDL"&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;FS2_LDFLAGS="$FS2_LDFLAGS -lpng -lpng12 -ljpeg -lpthread -logg -lSDL -ltheora -lopenal -lsocket -lvorbisfile -lvorbis -lnsl -lGL -lGLU"&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;AC_DEFINE([SCP_UNIX])&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;AC_DEFINE([NO_DIRECT3D])&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level2" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;## don't need the CFLAGS here if recent SDL is used&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;Next, replace&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;AM_CONDITIONAL(FS2_&lt;acronym title="Operating System" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; cursor: help; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: rgb(0, 0, 0); "&gt;OS&lt;/acronym&gt;_UNIX, test "$fs2_os_unix" = "yes" || test "$fs2_os_osx" = "yes")&lt;/code&gt;&amp;nbsp;with&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;AM_CONDITIONAL(FS2_&lt;acronym title="Operating System" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; cursor: help; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: rgb(0, 0, 0); "&gt;OS&lt;/acronym&gt;_UNIX, test "$fs2_os_unix" = "yes" || test "$fs2_os_osx" = "yes" || test "$fs2_os_solaris" = "yes")&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Building&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;./autogen.sh&lt;/code&gt;&amp;nbsp;or&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;./autogen.sh -enable-debug&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;edit configure and remove all calls+params to&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;PKG_CHECK_MODULES&lt;/code&gt;, because you already installed all the prereqs...right?&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;./configure&lt;/code&gt;&amp;nbsp;again&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;make&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;executable will be in code/fs2_open_r for release and code/fs2_open_d for debug&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;strong style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Launching&lt;/strong&gt;&lt;/p&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;copy binary to game data directory&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;unset LANG&lt;/code&gt;&amp;nbsp;- This sorta fixes a solaris/SDL/X bug&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;run&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;./fs2_open_r&lt;/code&gt;&amp;nbsp;or&amp;nbsp;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;./fs2_open_d&lt;/code&gt;&lt;/div&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;code style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;font class="Apple-style-span" face="monospace" size="3"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;a href="http://208.53.181.144/blog/assets_c/2010/11/Screenshot-13.html" onclick="window.open('http://208.53.181.144/blog/assets_c/2010/11/Screenshot-13.html','popup','width=1024,height=768,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="http://208.53.181.144/blog/assets_c/2010/11/Screenshot-thumb-480x360-13.png" width="480" height="360" alt="FreeSpace2" class="mt-image-none" style="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Building OpenAL on Solaris</title>
    <id>http://rsaxvc.net/blog/2010/9/19/Building OpenAL on Solaris.html</id>
    <updated>2010-09-19T19:08:32Z</updated>
    <link href="http://rsaxvc.net/blog/2010/9/19/Building OpenAL on Solaris.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Lucida Grande', Verdana, Lucida, Helvetica, Arial, sans-serif; "&gt;&lt;ul style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 3.5em; line-height: 1.5em; list-style-type: square; list-style-image: none; color: rgb(99, 140, 156); "&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;Get an OpenAL software implementation from here:&amp;nbsp;&lt;a href="http://kcat.strangesoft.net/openal.html" class="urlextern" title="http://kcat.strangesoft.net/openal.html" rel="nofollow" style="padding-top: 1px; padding-right: 0px; padding-bottom: 1px; padding-left: 16px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(67, 105, 118); text-decoration: none; background-image: url(http://rsaxvc.net/blog/lib/tpl/sidebar/images/link_icon.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: 0px 1px; background-repeat: no-repeat no-repeat; "&gt;http://kcat.strangesoft.net/openal.html&lt;/a&gt;, then downloads, then latest release (openal-soft-1.12.854.tar.bz2 worked great for me)&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run 'cd openal-soft' ( or into directory from latest release)&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run 'cmake .' if it complains about not finding nanosleep, remove the offending lines from CMakeLists.txt&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run 'make'&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run 'make install'&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;At this point, you need to manually copy the files to their locations. I used /usr/lib, /usr/include, and /usr/bin, because that's where fs2_open expected to find them.&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run 'cd sfw_stage'&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run 'sudo cp -r include/ /usr/include/'&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run 'sudo cp lib/libopenal* /usr/lib/'&lt;/div&gt;&lt;/li&gt;&lt;li class="level1" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;div class="li" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(0, 0, 0); font-weight: normal; "&gt;run 'sudo cp lib/pkgconfig/openal.pc /usr/lib/pkgconfig/'&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt; 
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Cricut USB Protocol Reversed</title>
    <id>http://rsaxvc.net/blog/2010/7/21/Cricut USB Protocol Reversed.html</id>
    <updated>2010-07-21T20:08:44Z</updated>
    <link href="http://rsaxvc.net/blog/2010/7/21/Cricut USB Protocol Reversed.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div&gt;Some folks up at CCCKC have figured out how to talk to the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Cricut" title="Cricut" rel="wikipedia"&gt;Cricut&lt;/a&gt; over &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Universal_Serial_Bus" title="Universal Serial Bus" rel="wikipedia"&gt;USB&lt;/a&gt;. This paves the way to drive the Cricut with a laptop to cut puzzles, engine gaskets, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Polychlorinated_biphenyl" title="Polychlorinated biphenyl" rel="wikipedia"&gt;PCBs&lt;/a&gt;, and much more. Before this software, crafters were limited to the shapes they could purchase from ProvoCraft.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://built-to-spec.com/cricutwiki"&gt;http://built-to-spec.com/cricutwiki&lt;/a&gt;&lt;/div&gt;&lt;a href="https://github.com/vangdfang/libcutter"&gt;https://github.com/vangdfang/libcutter&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://github.com/vangdfang/libcutter"&gt;&lt;/a&gt;Cricuts can be upgraded with better knife tools to cut puzzle materials. This same knife can cut gasket material. Also, a small PCB Etch Resistant marker can be installed in the Cricut, and draw on copper clad board.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">NA-FS, Not Actually a File System</title>
    <id>http://rsaxvc.net/blog/2010/2/24/NA-FS, Not Actually a File System.html</id>
    <updated>2010-02-24T22:18:41Z</updated>
    <link href="http://rsaxvc.net/blog/2010/2/24/NA-FS, Not Actually a File System.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;I've worked with several embedded filesystems, from jffs2, to FAT12/16/32, to hard coded tables of filenames and their containing data. What I would like to propose, is not a filesystem, per-se, but an interface.&lt;/span&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;I understand that no one filesystem fits every problem. If you need to be able to open a file quickly, FAT won't do it. If you need a tiny driver, don't go with Reiser. If you need flash wear-leveling, your choices are pretty limited to start with. If it only exists in &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Random-access_memory" title="Random-access memory" rel="wikipedia"&gt;RAM&lt;/a&gt;, who wants to bother with a filesystem anyways? My point is that the diversity in these systems is necessary.&amp;nbsp;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;However, interfacing with so many filesystems is a nightmare. Even Linux drops filesystem support quite regularly. How can we improve this? By offloading the burden of filesystem support to the device itself. By necessity, the device already has a driver, and this method adds new capabilities.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Real World Example One&lt;/b&gt;: A media player acting as &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/USB_mass-storage_device_class" title="USB mass-storage device class" rel="wikipedia"&gt;USB mass storage&lt;/a&gt;. After loading new MP3s, a media player needs to open each file and scan it for meta data such as the band, length, and volume profile. If the media player were the storage back-end directly, every time another device sends it a file, it parses the file as part of the storage operation, preventing a lengthy power-on.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Real World Example Two&lt;/b&gt;: Utilizing a system like NA-&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/File_system" title="File system" rel="wikipedia"&gt;FS&lt;/a&gt;, intelligent memory cards could be swapped with any device supporting NA-FS, without actually changing the backing store. For example, if SD was designed with NA-FS as the interface, then this SD/SDHC/SDXC monkey business would have never been an issue. Small cards could use a compact filesystem like vFAT16, and larger devices could use whatever they needed, from &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/ExFAT" title="ExFAT" rel="wikipedia"&gt;exFAT&lt;/a&gt; to &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/ZFS" title="ZFS" rel="wikipedia"&gt;ZFS&lt;/a&gt;-based RAID.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Technical Example&lt;/b&gt;: In Linux, there are filesystems like /proc, which are generated at file-access time. NA-FS would support this intrinsically, as actual file i/o is passed down to the device OS.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Technical Example&lt;/b&gt;: Compression - as an intelligent storage device, the bytes on disk don't need to match the bytes at the transaction layer. A smart enough device could compress plain-text documents or use &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Portable_Network_Graphics" title="Portable Network Graphics" rel="wikipedia"&gt;PNG&lt;/a&gt; compression for uncompressed images.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Downsides&lt;/b&gt;:&amp;nbsp;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;ul&gt;&lt;li&gt;Currently, the media controllers in memory devices are quite limited. Often, they only handle flash wear-leveling, and perhaps block-atomicity.&lt;/li&gt;&lt;li&gt;No current implementation/standard, just a though I had&lt;/li&gt;&lt;li&gt;How would features not standard across all filesystems be handled? &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Access_control_list" title="Access control list" rel="wikipedia"&gt;ACLs&lt;/a&gt; come to mind.&lt;/li&gt;&lt;li&gt;Some features, such as automatic image compressions, would be computationally expensive to implement, for a memory card.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Upsides&lt;/b&gt;:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;No device would have to enter '&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Mass_storage" title="Mass storage" rel="wikipedia"&gt;Mass Storage&lt;/a&gt; Mode'. Devices could keep functioning normally, and even use NA-FS to transfer information, much like /proc on linux.&lt;/li&gt;&lt;li&gt;No device would need to support more than two filesystems: NA-FS, and the backing store of choice.&lt;/li&gt;&lt;li&gt;A filesystem need never worry about a poor fs implementation on a device corrupting it.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Toshiba T135D</title>
    <id>http://rsaxvc.net/blog/2010/2/13/Toshiba T135D.html</id>
    <updated>2010-02-13T22:15:39Z</updated>
    <link href="http://rsaxvc.net/blog/2010/2/13/Toshiba T135D.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Now that I've had this machine for a few weeks, I'm pretty happy with it. The battery lasts several hours when running &lt;a class="zem_slink" href="http://www.microsoft.com/visualstudio" title="Microsoft Visual Studio" rel="homepage"&gt;Visual Studio 2008&lt;/a&gt;.&lt;/span&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The good:&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;ul&gt;&lt;li&gt;Automatically &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Underclocking" title="Underclocking" rel="wikipedia"&gt;underclocked&lt;/a&gt; &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Central_processing_unit" title="Central processing unit" rel="wikipedia"&gt;CPUs&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Discrete video card (shared ram though)&lt;/li&gt;&lt;li&gt;Virtualization and 64 bit support&lt;/li&gt;&lt;li&gt;Good screen quality, and &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Backlight" title="Backlight" rel="wikipedia"&gt;LED backlight&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Built-in accelerometer.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;The bad:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The frame isn't actually square, meaning that when I set it on a table, the front right corner doesn't touch.&lt;/li&gt;&lt;li&gt;The frame is pretty flimsy - when setting on above mentioned table, the weight of my palms is enough to bend it down.&lt;/li&gt;&lt;li&gt;The keyboard isn't flat. Near the 'Y' key, the keyboard has a bulge of 2-3 keys in any direction.&lt;/li&gt;&lt;li&gt;The keyboard is squishy. Even after making a full keystroke, the keyboard continues to depress.&lt;/li&gt;&lt;li&gt;The screen is very light, but now the screen is so light the individual keystrokes cause it to bounce back and forth.&lt;/li&gt;&lt;li&gt;&lt;a class="zem_slink" href="http://www.kernel.org/" title="Linux" rel="homepage"&gt;Linux&lt;/a&gt; support, as of Ubuntu 9.04, doesn't support either of the networking interfaces.&lt;/li&gt;&lt;li&gt;This thing gets pretty hot, and the fan runs quite a bit.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Although the line 'Toshiba Media Controller. Copy protection technology, if any, associated with the content may prevent or limit sharing of content.', does worry me, it's nothing compared to the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Universal_Serial_Bus" title="Universal Serial Bus" rel="wikipedia"&gt;USB&lt;/a&gt; whitelists/blacklists of the &lt;a class="zem_slink" href="http://www.shopping.hp.com/mini/" title="HP Mini 311" rel="homepage"&gt;HP Mini 311&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">My Toshiba T135D Came in the Mail Today</title>
    <id>http://rsaxvc.net/blog/2010/1/20/My Toshiba T135D Came in the Mail Today.html</id>
    <updated>2010-01-20T22:11:37Z</updated>
    <link href="http://rsaxvc.net/blog/2010/1/20/My Toshiba T135D Came in the Mail Today.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div&gt;After rethinking the requirements of a laptop. I've come up with the following:&lt;/div&gt;&lt;/span&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; "&gt;&lt;ul style="font-size: medium; "&gt;&lt;li&gt;Real video card (shared memory is fine, just no &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Intel_GMA" title="Intel GMA" rel="wikipedia"&gt;Intel GMA&lt;/a&gt; )&lt;/li&gt;&lt;li&gt;CPU Power equivalent to Atom 330 (Dual Core 1.6 Ghz Included )&lt;/li&gt;&lt;li&gt;CPU Virtualization Support (Turion Neo has it, Atom 330 doesn't)&lt;/li&gt;&lt;li&gt;CPU 64 bit processing (Turion Neo&amp;nbsp;has it, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Intel_Atom" title="Intel Atom" rel="wikipedia"&gt;Atom N280&lt;/a&gt; doesn't)&lt;/li&gt;&lt;li&gt;Built In &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Secure_Digital" title="Secure Digital" rel="wikipedia"&gt;SD Slot&lt;/a&gt; or &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Solid-state_drive" title="Solid-state drive" rel="wikipedia"&gt;SSD Drive&lt;/a&gt; ( SD Slot)&lt;/li&gt;&lt;li&gt;Hardline Gigabit-Ethernet or N Wifi ( Both )&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size: medium; "&gt;First impressions:&lt;/div&gt;&lt;div&gt;&lt;ul style="font-size: medium; "&gt;&lt;li&gt;Large deadzone between left and right click. The mouse is a single bar, like a see-saw, with microswitches on each side.&lt;/li&gt;&lt;li&gt;Solitaire is far cooler than Windows XP and previous editions.&lt;/li&gt;&lt;li&gt;Internet Explorer comes only with Google Toolbar, which is far better than HP's version.&lt;/li&gt;&lt;li&gt;The screen is bright, better resolution than my old 13.3 inch Macbook.&lt;/li&gt;&lt;li&gt;Smaller and lighter than the Mcbook, but bigger than the HP 311.&lt;/li&gt;&lt;li&gt;The 'Toshiba HDD Protection' system often pops up while the machine is sitting still informing me that a vibration was detected and that the hard drive head was parked to protect it.&lt;/li&gt;&lt;li&gt;Windows UAC is pretty annoying.&lt;/li&gt;&lt;li&gt;There's a PrintScreen key!&lt;/li&gt;&lt;li&gt;Paint has been reworked.&lt;/li&gt;&lt;li&gt;No weird USB Whitelist junk like HP uses either.&lt;/li&gt;&lt;li&gt;There's a built-in watt meter application. This should just be a simple power controller query, but when combined with a graph, it is pretty neat. The machine idles around 3-4 watts.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;font class="Apple-style-span" size="4"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;img alt="Toshiba Power Meter" src="http://208.53.181.144/blog/Power%20Meter.png" width="819" height="561" class="mt-image-none" style="" /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;font class="Apple-style-span" size="4"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class="Apple-style-span" size="4"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;div style="font-size: medium; "&gt;&lt;a href="http://rsaxvc.homelinux.net/blog/assets_c/2010/01/Power%20Meter-22.html"&gt;&lt;img src="http://rsaxvc.homelinux.net/blog/assets_c/2010/01/Power%20Meter-thumb-400x273-22.png" width="400" height="273" alt="Power Meter.png" class="mt-image-center" style="text-align: center; display: block; margin-top: 0px; margin-right: auto; margin-bottom: 20px; margin-left: auto; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-size: medium; "&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 20px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; list-style-type: disc; list-style-position: outside; list-style-image: initial; background-repeat: no-repeat repeat; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;I never thought I would buy a new &lt;a class="zem_slink" href="http://www.google.com/finance?q=NYSE:AMD" title="NYSE: AMD" rel="googlefinance"&gt;AMD&lt;/a&gt; Processor, ever since Intel's Core 2 Duo stompfest, but on this small market, low speed high capability &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Central_processing_unit" title="Central processing unit" rel="wikipedia"&gt;CPUs&lt;/a&gt;, AMD really has something. Combined with the fact that Intel has attached a chipset directly to the CPU on their newer units, I just can't see usable 3D graphics with the new Intel Atoms. The whole thing's pretty slick.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-size: medium; "&gt;On a side note, I managed to never use Windows Vista, except for one time I used it to launch Firefox.&lt;/div&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">My HP 311 went back in the mail today!</title>
    <id>http://rsaxvc.net/blog/2009/12/28/My HP 311 went back in the mail today!.html</id>
    <updated>2009-12-28T21:54:51Z</updated>
    <link href="http://rsaxvc.net/blog/2009/12/28/My HP 311 went back in the mail today!.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Well, it could've been a nice machine except for:&lt;/span&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;ul&gt;&lt;li&gt;Suspend would reboot the machine.&lt;/li&gt;&lt;li&gt;USB Whitelist - Only HP Approved devices can be used. This prevents my pl2303 usb serial adapter from working, as well as any wireless 3g modems.&lt;/li&gt;&lt;li&gt;&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Nvidia_Ion" title="Nvidia Ion" rel="wikipedia"&gt;Nvidia Ion&lt;/a&gt; LE - The &lt;a class="zem_slink" href="http://www.shopping.hp.com/mini/" title="HP Mini 311" rel="homepage"&gt;Mini 311&lt;/a&gt; is marketed with Nvidia Ion, but comes with the less capable Ion LE.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So back it went to HP. HP does not refund the original shipping (to you), but in this case it all worked out because they offered free shipping right before Christmas.&lt;/div&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">My HP 311 came in the mail today!</title>
    <id>http://rsaxvc.net/blog/2009/12/24/My HP 311 came in the mail today!.html</id>
    <updated>2009-12-24T21:53:17Z</updated>
    <link href="http://rsaxvc.net/blog/2009/12/24/My HP 311 came in the mail today!.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;First Impressions:&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;First power-on:&amp;nbsp;&lt;/b&gt;Expect to spend about half an hour with the machine rebooting and installing software. It's a shame &lt;a class="zem_slink" href="http://maps.google.com/maps?ll=37.413579,-122.14508&amp;amp;spn=0.01,0.01&amp;amp;q=37.413579,-122.14508 (Hewlett-Packard)&amp;amp;t=h" title="Hewlett-Packard" rel="geolocation"&gt;HP&lt;/a&gt; didn't think of doing this somewhere else. Maybe they could've done it in the factory, or maybe they could've done it as an OS image. About a minute after finally booting into Windows, the machine went into suspend. After it woke up, it died. Now it seems to be working fine.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Screen:&lt;/b&gt;&amp;nbsp;Screen seems pretty bright and quite clear. Resolution is 1366x768, which isn't bad for a screen that size. For comparison, my macbook is a 13.3 inch 1280x800 screen. Slightly more pixels in a smaller screen is a good thing. Also, since the screen is &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Backlight" title="Backlight" rel="wikipedia"&gt;LED backlit&lt;/a&gt;, there shouldn't be any inverter problems like the macbook was plagued with ( 5 inverters have tried and failed, Apple keeps feeding the machine new ones ). I haven't had a chance to take the 311 outside in direct sunlight yet, but I have high hopes.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Keyboard:&lt;/b&gt;&amp;nbsp;The keys are nicely sized, but there's little border between the keys themselves. This leads to often losing where your fingers are located. Also, the blind-person nubs are real short and easy to miss.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Trackpad:&amp;nbsp;&lt;/b&gt;I like the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Touchpad" title="Touchpad" rel="wikipedia"&gt;trackpad&lt;/a&gt;. The trackpad is large for this size of laptop, it is smooth, and the built-in gesture support is great. However, it would be nicer if the trackpad weren't at the same height as the buttons. This often leads me to graze the trackpad when clicking, making the cursor fly off to the corner of the screen, although I'm sure I will get used to it.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Bloat-ware:&lt;/b&gt;&amp;nbsp;Expect a few columns of icons on the desktop, about 7 or so in the tray. HP was even so nice as to include another &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Internet_Explorer" title="Internet Explorer" rel="wikipedia"&gt;Internet Explorer&lt;/a&gt; Toolbar!!! Can you guess what it does? It does an MSN/BING search, just like the built-in search bar.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Networking:&lt;/b&gt;&amp;nbsp;There are three wireless options available for this machine: &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Wi-Fi" title="Wi-Fi" rel="wikipedia"&gt;Wifi&lt;/a&gt;, &lt;a class="zem_slink" href="http://www.bluetooth.org/" title="Bluetooth" rel="homepage"&gt;Bluetooth&lt;/a&gt;, and 3G. I went with Wifi and Bluetooth, planning on tethering through my phone while away. I went with the upgraded A/B/G/N Wifi card. It's a Broadcom, but seems to work fine. However, HP installed a generic wireless card manager ( It handles Bluetooth, Wifi, and presumably 3G ), and so Wndows fights with this thing constantly. Once you kill off one of them the Wifi works great. Bluetooth tethering was painless. I did notice that HP opted to cut the ethernet port down to 10/100 instead of 10/100/1000 like the ION chipset supports.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;b&gt;Video Card:&lt;/b&gt;&amp;nbsp;I bought this machine specifically because it has built-in &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Nvidia_Ion" title="Nvidia Ion" rel="wikipedia"&gt;NVIDIA ION&lt;/a&gt; graphics. I wanted to play with &lt;a class="zem_slink" href="http://www.nvidia.com/object/cuda_home.html" title="CUDA" rel="homepage"&gt;CUDA&lt;/a&gt;, and I was tired of my Intel 945 software-emulated &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Graphics_processing_unit" title="Graphics processing unit" rel="wikipedia"&gt;GPU&lt;/a&gt;. It appears that this laptop does not come with NVIDIA ION, it comes with NVIDIA ION LE. I appears to use 128 Megs DDR3 ( other real ION systems use 256 ), and may have some other limitations. I am not amused and will be calling HP about this.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Thoughts: Pretty sweet. Time to set up some games.&lt;/p&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Coffee.</title>
    <id>http://rsaxvc.net/blog/2009/12/7/Coffee..html</id>
    <updated>2009-12-07T21:50:51Z</updated>
    <link href="http://rsaxvc.net/blog/2009/12/7/Coffee..html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Day 1: Oh man, out of sugar. I already poured this cup and added the cream. Hmm, not too bad.&lt;/span&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Day 2: &amp;nbsp;No cream? Well, at least there's sugar.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Day 3: I now take my coffee black.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Srsly Subversion, Srsly?</title>
    <id>http://rsaxvc.net/blog/2009/11/22/Srsly Subversion, Srsly?.html</id>
    <updated>2009-11-22T21:48:20Z</updated>
    <link href="http://rsaxvc.net/blog/2009/11/22/Srsly Subversion, Srsly?.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;pre&gt;configure: Configuring Subversion 1.6.6&lt;br /&gt;configure: creating config.nice&lt;br /&gt;checking for gcc... gcc&lt;br /&gt;checking for C compiler default output file name... a.out&lt;br /&gt;checking whether the C compiler works... yes&lt;br /&gt;checking whether we are cross compiling... no&lt;br /&gt;checking for suffix of executables... &lt;br /&gt;checking for suffix of object files... o&lt;br /&gt;checking whether we are using the GNU C compiler... yes&lt;br /&gt;checking whether gcc accepts -g... yes&lt;br /&gt;checking for gcc option to accept ISO C89... none needed&lt;br /&gt;checking for g++... g++&lt;br /&gt;checking whether we are using the GNU C++ compiler... yes&lt;br /&gt;checking whether g++ accepts -g... yes&lt;br /&gt;checking how to run the C preprocessor... gcc -E&lt;br /&gt;checking for a sed that does not truncate output... /bin/sed&lt;br /&gt;checking build system type... i586-pc-linux-gnu&lt;br /&gt;checking host system type... i586-pc-linux-gnu&lt;br /&gt;checking target system type... i586-pc-linux-gnu&lt;br /&gt;checking for grep that handles long lines and -e... /bin/grep&lt;br /&gt;checking for egrep... /bin/grep -E&lt;br /&gt;checking whether ln -s works... yes&lt;br /&gt;checking for a BSD-compatible install... /usr/bin/install -c&lt;br /&gt;configure: Apache Portable Runtime (APR) library configuration&lt;br /&gt;checking for APR... no&lt;br /&gt;The Apache Portable Runtime (APR) library cannot be found.&lt;br /&gt;Please install APR on this system and supply the appropriate&lt;br /&gt;--with-apr option to 'configure'&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;get it with SVN and put it in a subdirectory of this source:&lt;br /&gt;&lt;br /&gt;   svn co \&lt;br /&gt;    http://svn.apache.org/repos/asf/apr/apr/branches/1.2.x \&lt;br /&gt;    apr&lt;br /&gt;&lt;br /&gt;Run that right here in the top level of the Subversion tree.&lt;br /&gt;Afterwards, run apr/buildconf in that subdirectory and&lt;br /&gt;then run configure again here.&lt;br /&gt;&lt;br /&gt;Whichever of the above you do, you probably need to do&lt;br /&gt;something similar for apr-util, either providing both&lt;br /&gt;--with-apr and --with-apr-util to 'configure', or&lt;br /&gt;getting both from SVN with:&lt;br /&gt;&lt;br /&gt;   svn co \&lt;br /&gt;    http://svn.apache.org/repos/asf/apr/apr-util/branches/1.2.x \&lt;br /&gt;    apr-util&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt; 
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">XEvil 2.02 on Mac!</title>
    <id>http://rsaxvc.net/blog/2009/11/11/XEvil 2.02 on Mac!.html</id>
    <updated>2009-11-11T21:46:19Z</updated>
    <link href="http://rsaxvc.net/blog/2009/11/11/XEvil 2.02 on Mac!.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;a class="zem_slink" href="http://www.xevil.com" title="XEvil" rel="homepage"&gt;Xevil&lt;/a&gt; source patched by &lt;a class="zem_slink" href="http://www.debian.org/" title="Debian" rel="homepage"&gt;Debian&lt;/a&gt; project/me to compile on &lt;a class="zem_slink" href="http://www.apple.com/macosx/" title="Mac OS X" rel="homepage"&gt;OSX&lt;/a&gt; &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Snow_Leopard" title="Snow Leopard" rel="wikipedia"&gt;Snow Leopard&lt;/a&gt;. Builds both &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Intel_80386" title="Intel 80386" rel="wikipedia"&gt;i386&lt;/a&gt; and ppc objects. However, the linker will only make your local architecture, unless you add "-arch ppc -arch i386". Might build on &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Ppc64" title="Ppc64" rel="wikipedia"&gt;ppc64&lt;/a&gt; and x86_64, but I haven't tested it.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;a href="http://rsaxvc.net/Projects/xevil-2.02r2.mac.tar.lzma"&gt;Download it here.&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;You might also have better luck compiling this version on other newer unixes as well, since it looks like the codebase stopped development around 2002.&lt;/span&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">OISC Hardware: DC Supply and Clock Generator</title>
    <id>http://rsaxvc.net/blog/2009/10/24/OISC Hardware: DC Supply and Clock Generator.html</id>
    <updated>2009-10-24T21:43:49Z</updated>
    <link href="http://rsaxvc.net/blog/2009/10/24/OISC Hardware: DC Supply and Clock Generator.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Although this is nothing special, and likely won't drive the final project, I took some pictures anyways just to keep the documentation complete.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="DC.ClockGen.jpg" src="http://208.53.181.144/blog/OISC/DC.ClockGen.jpg" width="640" height="480" class="mt-image-none" style="" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;It contains:&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;li&gt;78T05 CT 3A &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Voltage_regulator" title="Voltage regulator" rel="wikipedia"&gt;Regulator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2x 25V, 3300uF regulation caps( one input, one output)&lt;/li&gt;&lt;li&gt;1 &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/555_timer_IC" title="555 timer IC" rel="wikipedia"&gt;555 Timer&lt;/a&gt; as a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Clock_generator" title="Clock generator" rel="wikipedia"&gt;clock generator&lt;/a&gt; producing 9.346 kHz.&lt;/li&gt;&lt;li&gt;1 fairly sketchy capacitor of unknown capacitance and age.&lt;/li&gt;&lt;li&gt;2 47kOhm 20% Precision&lt;br /&gt;&lt;/li&gt;&lt;li&gt;4x1 Header for power input( DC+, GND, GND, DC+ )&lt;/li&gt;&lt;li&gt;2x( 3x1 Headers) for output ( Ground, Clock, Power )&lt;/li&gt;&lt;li&gt;12-611B Datek 21-110 CIC ( Small Solder &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Breadboard" title="Breadboard" rel="wikipedia"&gt;Protoboard&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Two pennies. By the way, if you use older, copper pennies, instead of these zinc ones I happened to have in my pocket, you'll get way better heat dissipation. Whatever you do, don't use steel pennies.&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Side Profile Shot:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="DC.ClockGen.Profile.jpg" src="http://208.53.181.144/blog/OISC/DC.ClockGen.Profile.jpg" width="640" height="480" class="mt-image-none" style="" /&gt;&lt;/span&gt;On second thought, maybe those caps are just a little overkill.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Disappointment with the NComputing L120</title>
    <id>http://rsaxvc.net/blog/2009/9/27/Disappointment with the NComputing L120.html</id>
    <updated>2009-09-27T21:39:58Z</updated>
    <link href="http://rsaxvc.net/blog/2009/9/27/Disappointment with the NComputing L120.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;a class="zem_slink" href="http://www.ncomputing.com" title="NComputing" rel="homepage"&gt;NComputing&lt;/a&gt; is a company with a great idea, but terrible implementation. Their product is a series of thin clients. Some run over &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Internet_Protocol" title="Internet Protocol" rel="wikipedia"&gt;IP&lt;/a&gt;, some run over with a proprietary PCI card. However, in the end you're much better off with a standard Remote Desktop thin client and a &lt;a class="zem_slink" href="http://www.microsoft.com/windowsserver2003/" title="Windows Server 2003" rel="homepage"&gt;Windows 2003&lt;/a&gt; machine.&lt;/span&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;If you want to use an L120 with Windows, you will need to sacrifice an entire windows machine. The reason is that the software that NComputing provides hack deeply into the internals of Windows. The result is that whenever a Windows patch comes out, you'll need to make a system restore point, as it is very likely nothing will work quite right until NComputing produces another version of their software. You can have security, or functionality, but not both, often for several weeks at a time. There are also some software packages that it is incompatible with. As of writing this article, after the last round of patching, unpatching, and repatching, my L120 will log in, and work for about a minute, before the XP machine dies.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;If you want to use an L120 with &lt;a class="zem_slink" href="http://www.kernel.org/" title="Linux" rel="homepage"&gt;Linux&lt;/a&gt;, good luck. At the time of writing, their Linux server software for the L120 has been in closed beta. I signed up and got a copy, but discovered that the software only works on &lt;a class="zem_slink" href="http://www.opensuse.org" title="OpenSUSE" rel="homepage"&gt;openSUSE&lt;/a&gt; 10.2, which isn't even available from openSUSE anymore. (10.3 and 11.1, which are available, don't work). Also, you'll still need a Windows box to push updates to the devices.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So, on the packaging these products say they're compatible with 'Linux', meaning one specific distribution, one specific kernel version, eventually, somehow, maybe. It sounds like a cheap way to put computers around your house without the work of keeping software up to date, or extra power bills, but it is really a big waste of time. You're better off with a standard X11 or RDP client than the hassle of an NComputer.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;*Please note, this was based entirely off of my experience with an L120. Apparently, the X series have a lot better linux support, but do not run over IP, so they have to be placed pretty close to each other, something that prevented me from purchasing one, as I wanted to put these things around my house.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Syntactic Sugar</title>
    <id>http://rsaxvc.net/blog/2009/9/26/Syntactic Sugar.html</id>
    <updated>2009-09-26T21:36:51Z</updated>
    <link href="http://rsaxvc.net/blog/2009/9/26/Syntactic Sugar.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;In C I am afraid of large functions, because they're often hard to read.&lt;/span&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;In C I am afraid of small functions, because they usually lead to a long call stack.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;In Perl I am afraid of single lines, because of both of the above reasons.&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">OISC Hardware: Program Counter</title>
    <id>http://rsaxvc.net/blog/2009/9/24/OISC Hardware: Program Counter.html</id>
    <updated>2009-09-24T21:35:17Z</updated>
    <link href="http://rsaxvc.net/blog/2009/9/24/OISC Hardware: Program Counter.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;After building a new bench &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Power_supply" title="Power supply" rel="wikipedia"&gt;power supply&lt;/a&gt;, I present, my first modular &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Program_counter" title="Program counter" rel="wikipedia"&gt;program counter&lt;/a&gt;!&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="oisc-pc1.jpg" src="http://208.53.181.144/blog/OISC/oisc-pc1.jpg" width="640" height="480" class="mt-image-none" style="" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;What's so special about it? You can daisy-chain them! In fact, there are two little four bit program counters running as one eight bit program counter right on that board. This isn't a terribly huge feat for a program counter, but eventually there will be an entire &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Central_processing_unit" title="Central processing unit" rel="wikipedia"&gt;CPU&lt;/a&gt; built this way.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="oisc-pc2.jpg" src="http://208.53.181.144/blog/OISC/oisc-pc2.jpg" width="285" height="570" class="mt-image-none" style="" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Parts / Tools / Technical details:&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;li&gt;1 &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/555_timer_IC" title="555 timer IC" rel="wikipedia"&gt;555 Timer&lt;/a&gt; as a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Clock_generator" title="Clock generator" rel="wikipedia"&gt;clock generator&lt;/a&gt; producing 9.346 kHz.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2 74LS193 up/down counters used as &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Daisy_chain_%28electrical_engineering%29" title="Daisy chain (electrical engineering)" rel="wikipedia"&gt;daisy-chained&lt;/a&gt; 4 bit counters.&lt;/li&gt;&lt;li&gt;1 fairly sketchy capacitor of unknown capacitance and age ( the only free one I had at the time ).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2 47kOhm 20% Tolerance resistors (&lt;br /&gt;&amp;nbsp;I had to deal with that unknown capacitor ).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;1 Digital Scope from the late 1980s, w/1MHz &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Sampling_rate" title="Sampling rate" rel="wikipedia"&gt;sampling rate&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The clock overflow pin on the 74ls193 acts as a ~16x clock divisor. The first 74ls193, which given the clock input of 9.346kHz, iterates through all 16 values, then overflows at 584.6 Hz into the second 74ls193. The second 74ls193 ialso iterates through its 16 values, but ~16 times slower, then overflows at 36.56 Hz, which is right on the money for what I'd expect from the input.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;For right now, the LOAD and CLEAR lines were manipulated by hand. In the final design they will be exported across modules. LOAD will be driven by the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Arithmetic_logic_unit" title="Arithmetic logic unit" rel="wikipedia"&gt;ALU&lt;/a&gt;'s output, and CLEAR will be part of the reset control.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Attach a DC Utility Port For Extra Peripheral Power</title>
    <id>http://rsaxvc.net/blog/2009/9/14/Attach a DC Utility Port For Extra Peripheral Power.html</id>
    <updated>2009-09-14T21:28:55Z</updated>
    <link href="http://rsaxvc.net/blog/2009/9/14/Attach a DC Utility Port For Extra Peripheral Power.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div&gt;So, I'm building a computer for my car. I'm trying to make a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Universal_Serial_Bus" title="Universal Serial Bus" rel="wikipedia"&gt;USB&lt;/a&gt; interface for all of my peripherals. Mostly this involves embedding a USB-&amp;gt;&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Serial_port" title="Serial port" rel="wikipedia"&gt;Serial&lt;/a&gt; Adapter in a few things. However, some of my devices require a little more power than USB can supply, or they require just under the limit, and I'm hesitant to attach too many of them to the computer, especially since some of the USB cables may be around 15 feet long.&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Enter the utility port. By adding a DC Barrel plug socket to my devices, I can run a two wire power line along with my usb cables. The Power line takes the current of the peripheral, while USB still supplies power to the USB-&amp;gt;Serial or USB-&amp;gt;Can/SPI/I2C converters.&lt;/span&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;First you'll need a spare back plate.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="CoverPlate.jpg" src="http://208.53.181.144/blog/PCUtilityPower/CoverPlate.jpg" width="640" height="480" class="mt-image-none" style="" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Now you'll need some banana posts/terminals. I ordered some from digikey.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="BananaPostSide.jpg" src="http://208.53.181.144/blog/PCUtilityPower/BananaPostSide.jpg" width="640" height="640" class="mt-image-none" style="" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="BananaConnector.jpg" src="http://208.53.181.144/blog/PCUtilityPower/BananaConnector.jpg" width="640" height="480" class="mt-image-none" style="" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Drill some 1/4 inch holes in the back cover plate for the banana plugs. Add as many as you like. I went with four holes, 2 red posts with 5 Volts, and 2 Black Posts for grounding, because I'm only running 5 Volt gear on this machine. Use the nut provided with the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Banana_connector" title="Banana connector" rel="wikipedia"&gt;banana plug&lt;/a&gt; to attach it to the cover plate. Be Careful: make sure to put the 2.18mm hole facing away from the other banana connectors. I used some gorilla glue to make them stronger.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="FinishedPlate.jpg" src="http://208.53.181.144/blog/PCUtilityPower/FinishedPlate.jpg" width="640" height="480" class="mt-image-none" style="" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Next you need some Ring Connectors, and a molex socket. I got these ring connectors from the &lt;a class="zem_slink" href="http://www.acehardware.com/" title="Ace Hardware" rel="homepage"&gt;ACE hardware&lt;/a&gt; up the street. I forget what size you need, but they were ACE's smallest blue collar connector. You can also just bring a banana socket in for sizing. For a molex socket, I used an old &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Computer_fan" title="Computer fan" rel="wikipedia"&gt;cpu fan&lt;/a&gt; connector from a 486 I was throwing away.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="RingConnector.jpg" src="http://208.53.181.144/blog/PCUtilityPower/RingConnector.jpg" width="640" height="480" class="mt-image-none" style="" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Assemble the molex and ring connectors in whichever configuration you like. I have both grounds connected, and connected to both black terminals and the molex socket. I have both red terminals connected together, then connected to the molex socket.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="FinishedProduct-Back.jpg" src="http://208.53.181.144/blog/PCUtilityPower/FinishedProduct-Back.jpg" width="640" height="480" class="mt-image-none" style="" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Who Knew, GNU?</title>
    <id>http://rsaxvc.net/blog/2009/8/9/Who Knew, GNU?.html</id>
    <updated>2009-08-09T21:08:14Z</updated>
    <link href="http://rsaxvc.net/blog/2009/8/9/Who Knew, GNU?.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(53, 56, 42); font-family: sans-serif; font-size: 16px; line-height: 24px; "&gt;"&lt;a href="http://www.gnu.org/licenses/gpl-faq.html#DoesTheGPLAllowMoney"&gt;The right to sell copies is part of the definition of free software&lt;/a&gt;." I've known this for a long time, but only today did I think it ironic to sell 'free' software. As a side note, you can buy Tux Racer at Microcenter.&lt;/span&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Hacking up the Computer Lab International et3000w and et5000n</title>
    <id>http://rsaxvc.net/blog/2009/8/8/Hacking up the Computer Lab International et3000w and et5000n.html</id>
    <updated>2009-08-08T21:10:36Z</updated>
    <link href="http://rsaxvc.net/blog/2009/8/8/Hacking up the Computer Lab International et3000w and et5000n.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So as part of a bulk deal, I picked up a number of these boxes.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;a href="http://www.computerlab.com/"&gt;Computer Lab&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;(what a name) makes a number of these machines, with customizable hardware as well (you pick ram, rom, and OS).&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The first machine is a Computer Lab International et3000W. This little guy comes with:&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;li&gt;&amp;nbsp;32 Megs of Ram (SD133, in a slot)&lt;/li&gt;&lt;li&gt;8 Megs Flash Rom, in a 32Pin Dip Socket&lt;br /&gt;&lt;/li&gt;&lt;li&gt;some boot rom (in a socket, unknown type)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;300 Mhz AMD Geode Processor&lt;/li&gt;&lt;li&gt;VGA, RS232, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/IEEE_1284" title="IEEE 1284" rel="wikipedia"&gt;IEEE1284&lt;/a&gt;, Ethernet(10?), USB(1/1.1/2?), 2xPS/2 ports, and Audio I/O.&lt;/li&gt;&lt;li&gt;&lt;a class="zem_slink" href="http://msdn.microsoft.com/en-ph/embedded/" title="Windows CE" rel="homepage"&gt;Windows CE&lt;/a&gt; .net 4.2&lt;/li&gt;&lt;li&gt;1x unused IDE port.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Standard IEC C13 Power Socket.&lt;/li&gt;&lt;li&gt;Case can be opened without screwdriver :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Next is the Computer Lab International et5000n.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;li&gt;128 Megs of Ram( SD133, in a slot, 2 slots total )&lt;br /&gt;&lt;/li&gt;&lt;li&gt;16 Meg IDE SSD (Power Quotient International)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Via C3 Processor @ 533 MHZ&lt;/li&gt;&lt;li&gt;VGA, RS232, IEEE1284, Ethernet(10/100), 2xUSB(1/1.1/2?), 2xPS/2 ports, and Audio I/O.&lt;/li&gt;&lt;li&gt;Windows CE.net 4.2&lt;/li&gt;&lt;li&gt;1x unused IDE port.&lt;/li&gt;&lt;li&gt;Standard IEC C13 Power Socket&lt;/li&gt;&lt;li&gt;&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Conventional_PCI" title="Conventional PCI" rel="wikipedia"&gt;PCI slot&lt;/a&gt;, with PCI-&amp;gt;&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/PC_Card" title="PC Card" rel="wikipedia"&gt;PCMCIA&lt;/a&gt; adapter (PCMCIA usable from outside)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Case can be opened by removing 3 screws on the back plate.&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The et3000w's motherboard appears to be some sort of custom, system specific board. Indeed, even the power supply is built into it. Due to the custom ROM chip, this looks like a bit of a dead end. Now, after opening the 5000, I realized it was nothing more than a mini-ITX board. There's a little tiny &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/ATX" title="ATX" rel="wikipedia"&gt;ATX PSU&lt;/a&gt; off to the side, a spare molex power plug, 2x IDE ports this time, 2 &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Synchronous_dynamic_random_access_memory" title="Synchronous dynamic random access memory" rel="wikipedia"&gt;SDRam&lt;/a&gt; slots, and a bios battery. The 3000 might have one too, but I put it away for now.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;When these things boot up, they show a Computer Lab logo, then boot Windows CE. If you look at Computer Lab's website, you could order similar machines with Windows XP/Embedded or Linux. Also, you could pick how much RAM you wanted.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Back to the battery. If you take it out, wait a minute or so, and put it in, guess what happens on the next boot - a standard Award Bios comes up complaining about invalid configuration. It seems all they did was upload a new boot image, turn on fast boot, and disable the keyboard messages. However, they seemed to do a poor job. The bios has options for a floppy drive, of which there is no connector, and for some other non-existant ports. So now we can load code to this guy. A standard &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Parallel_ATA" title="Parallel ATA" rel="wikipedia"&gt;IDE drive&lt;/a&gt; should do the trick. Also, the PCMCIA is really just a PCMCIA-&amp;gt;PCI adapter, so potentially you could add almost anything.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The 16 Meg SSD is pretty neat, and very small. Also, it requires no external power, unlike most CF-&amp;gt;IDE adapters. It contains a Windows CE .net 4.2 Build with a load of terminal emulation software and some version of Internet Explorer. The 5000 boots up noticeably faster than the 3000.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;*Note: The numbering scheme seems to go something like this: et&amp;lt;motherboard identifier&amp;gt;&amp;lt;Original OS Install identifier&amp;gt;&lt;/span&gt; 
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Modular RISC Machine: Design Process</title>
    <id>http://rsaxvc.net/blog/2009/7/16/Modular RISC Machine: Design Process.html</id>
    <updated>2009-07-16T21:03:00Z</updated>
    <link href="http://rsaxvc.net/blog/2009/7/16/Modular RISC Machine: Design Process.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So, I'm going to build this little modular &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Reduced_instruction_set_computing" title="Reduced instruction set computing" rel="wikipedia"&gt;RISC&lt;/a&gt; machine.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Core isn't the right word for a division in this processor. I think `Channel`, is a bit more accurate. Although the design should scale for an arbitrary number of channels, and for channels with an arbitrary bit width, I plan to make a dual-channel, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Nibble" title="Nibble" rel="wikipedia"&gt;4bit&lt;/a&gt; channel demonstration( an 8 bit computer). With any luck, I should be able to extend the design to a 16 bit computer, which is the limit of the largest &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Static_random_access_memory" title="Static random access memory" rel="wikipedia"&gt;SRAM&lt;/a&gt; I've been able to find for a low price. So the sections I need to design/purchase:&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;li&gt;Modular &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Program_counter" title="Program counter" rel="wikipedia"&gt;Program Counter&lt;/a&gt;, parallel load, with Overflow output.&lt;/li&gt;&lt;li&gt;Modular &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Arithmetic_logic_unit" title="Arithmetic logic unit" rel="wikipedia"&gt;ALU&lt;/a&gt; with carry-in and carry-out&lt;/li&gt;&lt;li&gt;Registers&lt;/li&gt;&lt;li&gt;&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Control_unit" title="Control unit" rel="wikipedia"&gt;Control Unit&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2-&amp;gt;1 &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Multiplexer" title="Multiplexer" rel="wikipedia"&gt;Multiplexers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;TriState Buffers&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Parts List:&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;li&gt;3 Registers&lt;/li&gt;&lt;li&gt;1 ALU&lt;/li&gt;&lt;li&gt;1 Program Counter&lt;/li&gt;&lt;li&gt;1 &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Address_bus" title="Address bus" rel="wikipedia"&gt;Address&lt;/a&gt; Latch&lt;/li&gt;&lt;/ul&gt; 

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=891fd0a7-d1fe-415f-a55c-a4533322169a" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Ghost in the Shell</title>
    <id>http://rsaxvc.net/blog/2009/7/13/Ghost in the Shell.html</id>
    <updated>2009-07-13T21:01:05Z</updated>
    <link href="http://rsaxvc.net/blog/2009/7/13/Ghost in the Shell.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;I hope the cables in 'Ghost in the Shell' are firewire.&lt;/span&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Core Failure</title>
    <id>http://rsaxvc.net/blog/2009/6/28/Core Failure.html</id>
    <updated>2009-06-28T20:55:58Z</updated>
    <link href="http://rsaxvc.net/blog/2009/6/28/Core Failure.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So, for the past few days, my computer has been acting very strangely. It often locked up or rebooted all by itself. Today I finally learned what had caused it. I happen to own of the earlier &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Multi-core_processor" title="Multi-core processor" rel="wikipedia"&gt;dual-core processors&lt;/a&gt;, a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Pentium_D" title="Pentium D" rel="wikipedia"&gt;Pentium D&lt;/a&gt; with &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Hyper-threading" title="Hyper-threading" rel="wikipedia"&gt;hyperthreading&lt;/a&gt;. Running &lt;a class="zem_slink" href="http://htop.sourceforge.net/" title="Htop (Unix)" rel="homepage"&gt;HTOP&lt;/a&gt;, I could see only 2 processors, where there should be four. Usually, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Central_processing_unit" title="Central processing unit" rel="wikipedia"&gt;CPUs&lt;/a&gt; in linux count first the real cores, then the virtual cores. In my computer, Cores 0 and 2 were the only ones running. I feared a corrupted bios had turned off my second core, but alas, Core 1 is dead. I'm quite happy with the fail-state though. Once the core completely died, my computer is running fine...well, half as fast as it used to, but it's still pretty good.&lt;/span&gt;

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=46322a39-94f2-49ce-855e-ed93d410b115" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Cheapest webcam on ebay, now with OpenCV support!</title>
    <id>http://rsaxvc.net/blog/2009/6/23/Cheapest webcam on ebay, now with OpenCV support!.html</id>
    <updated>2009-06-23T20:53:16Z</updated>
    <link href="http://rsaxvc.net/blog/2009/6/23/Cheapest webcam on ebay, now with OpenCV support!.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;I while back I bought a Sigma Micro USB &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Webcam" title="Webcam" rel="wikipedia"&gt;webcam&lt;/a&gt;. These little guys will run you about $5 with overseas shipping included. They're supported by the&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;a href="http://linux-uvc.berlios.de/"&gt;&amp;nbsp;UVC-Video&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;drivers in linux, but until recently, &lt;a class="zem_slink" href="http://opencv.willowgarage.com/wiki/" title="OpenCV" rel="homepage"&gt;OpenCV&lt;/a&gt; didn't support their output format. But with OpenCV 1.1, all that is fixed. The standard webcam interfaces work great with this camera, and I've started playing with some &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Corner_detection" title="Corner detection" rel="wikipedia"&gt;corner detection&lt;/a&gt; on it.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;However, there are a few catches:&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;li&gt;Don't expect to get more than a few &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Frame_rate" title="Frame rate" rel="wikipedia"&gt;frames per second&lt;/a&gt; right now. With no processing, I get 6fps.&lt;/li&gt;&lt;li&gt;Linux can only drive the camera at 640x480 for right now&lt;/li&gt;&lt;li&gt;The Auto White Balacing is terrible.&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;All-in-all, probably worth about five dollars. At least it allows you to do basic opencv camera work.&lt;/span&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">A New Idea about Realtime Image Processing</title>
    <id>http://rsaxvc.net/blog/2009/6/12/A New Idea about Realtime Image Processing.html</id>
    <updated>2009-06-12T20:48:54Z</updated>
    <link href="http://rsaxvc.net/blog/2009/6/12/A New Idea about Realtime Image Processing.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The more &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Image_processing" title="Image processing" rel="wikipedia"&gt;image processing&lt;/a&gt; I deal with, the more I'm convinced a better solution is needed than pre-made image &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/List_of_toolkits" title="List of toolkits" rel="wikipedia"&gt;toolkits&lt;/a&gt;. Evaluating a 640x480 image, even just once, can be processor intensive. Every processing toolkit I've seen has the same basic parts, an image class/interface, some I/O &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Function_%28mathematics%29" title="Function (mathematics)" rel="wikipedia"&gt;functions&lt;/a&gt;, and some image modification functions. &lt;a class="zem_slink" href="http://opencv.willowgarage.com/wiki/" title="OpenCV" rel="homepage"&gt;OpenCV&lt;/a&gt; at least gives you raw pointer access to the image, but the problem here is that each of these transforms are always applied sequentially.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Some time ago, I wrote a simple &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Segmentation_%28image_processing%29" title="Segmentation (image processing)" rel="wikipedia"&gt;image-segmentation&lt;/a&gt; algorithm. However, because this was a realtime task, it needed to be made as fast as possible(&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;a href="http://rsaxvc.net/code/3filter/"&gt;see here&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;). What I completed was a giant mess of c/c++, with loops hand-unrolled to remove edge conditions from them. With optimization, 50fps &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Best%2C_worst_and_average_case" title="Best, worst and average case" rel="wikipedia"&gt;worst-case&lt;/a&gt; (P4, 3.2). However, later I needed to add some functionallity to the segmentation algorithm. Re-opening this code was a nightmare. Even though I had plenty of comments, it would've been about 1/6 the size if I hadn't been crunched for &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Central_processing_unit" title="Central processing unit" rel="wikipedia"&gt;CPU&lt;/a&gt; power.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Raw_image_format" title="Raw image format" rel="wikipedia"&gt;raw image&lt;/a&gt; access and image-optimized code are still necessary for real-time image processing (I look forward to doing it in python, whenever that becomes doable).&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Also, the fewer passes you can make through an image, the better( usually ). The problem with most(perhaps all) premade image toolkits, is that they encourage sequential execution of functions. For example, if I wanted to double contrast, then apply a threshold, and then halve the contrast, the image would be contrasted, then thresholded, then contrasted. We've made a total of three passes through the image to do our three functions. O(N) on the number of functions isn't bad, but it isn't necessary either. It would be faster to say, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Pixel" title="Pixel" rel="wikipedia"&gt;Pixel&lt;/a&gt;(x,y) = (composition of multiple rules). In this way, the pixels, which now have a single, CPU intensive step, only have to be read and written once. I don't know of a single compiler that can optimize this case.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;If we can break our image processing down to the pixel level, we can apply multiple complex transformations in one step. If we can do that, we can minimize &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Memory_bandwidth" title="Memory bandwidth" rel="wikipedia"&gt;memory bandwidth&lt;/a&gt; usage and increase our cache utility.&lt;/span&gt;

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=a159fbce-c026-408a-ac3f-a7a0629be6f2" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">So, apparently MT works in ELinks</title>
    <id>http://rsaxvc.net/blog/2009/4/30/So, apparently MT works in ELinks.html</id>
    <updated>2009-04-30T20:38:32Z</updated>
    <link href="http://rsaxvc.net/blog/2009/4/30/So, apparently MT works in ELinks.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;br /&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Finding a New Fileserver OS: Step Four - Debian Saves the Day</title>
    <id>http://rsaxvc.net/blog/2009/4/11/Finding a New Fileserver OS: Step Four - Debian Saves the Day.html</id>
    <updated>2009-04-11T20:34:02Z</updated>
    <link href="http://rsaxvc.net/blog/2009/4/11/Finding a New Fileserver OS: Step Four - Debian Saves the Day.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Debian/kFreeBSD. Wow. Everything I've ever wanted.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Stable/Fast kernel&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;ZFS support&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;OpenGL Acceleration&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;GNU Userland&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Right now I've got it in a virtual machine, but it is amazing. Just apt-get whatever you need.&lt;/span&gt; 
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Design of an Modular, Arbitrary word length RISC machine</title>
    <id>http://rsaxvc.net/blog/2009/4/7/Design of an Modular, Arbitrary word length RISC machine.html</id>
    <updated>2009-04-07T20:30:53Z</updated>
    <link href="http://rsaxvc.net/blog/2009/4/7/Design of an Modular, Arbitrary word length RISC machine.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;I&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;'ve always been impressed with the simplicity of the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/One_instruction_set_computer" title="One instruction set computer" rel="wikipedia"&gt;OISC&lt;/a&gt; ( one instruction set computer). One day, I had an interesting idea-Why not build it? In about six hours I had finished my first &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Design" title="Design" rel="wikipedia"&gt;design&lt;/a&gt; on a whiteboard.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Now, the 7400 logic series contains a lot of &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/4-bit" title="4-bit" rel="wikipedia"&gt;4-bit&lt;/a&gt; chips(registers, a counter I could use for a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Program_counter" title="Program counter" rel="wikipedia"&gt;program counter&lt;/a&gt;, tri-state buffers, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Multiplexer" title="Multiplexer" rel="wikipedia"&gt;multiplexers&lt;/a&gt;, and full adders). A four bit OISC machine with direct addressing has only 16 words. Keep in mind that an instruction is 3 words. So a 4-bit oisc could only hold 5 instructions, with a 4-bit bank for data. So I set out to design an 8-bit machine.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The first step in designing the 8bit machine was implementing effectively 8bit components out of &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Nibble" title="Nibble" rel="wikipedia"&gt;4bit&lt;/a&gt; parts. Turns out, that almost all the necessary constructs are simply 2x4bit constructs. Here's an image of that first machine, partially implemented in&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;a href="http://oregano.gforge.lug.fi.uba.ar/"&gt;oregano&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;img alt="oisc-v1.png" src="http://208.53.181.144/blog/OISC/oisc-v1.png" width="627" height="827" class="mt-image-none" style="" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Did you notice the symmetry? You can implement an 8bit component with 2 4bit components and some control glue.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Sadly, I had forgotten one very important step in the OISC architecture, and so my design was worthless-or so I thought. My roommate Ryan Meuth (of irontaco.com fame) showed me that what I had designed was a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Cellular_automaton" title="Cellular automaton" rel="wikipedia"&gt;cellular automata&lt;/a&gt; simulator. It was pretty cool, and I'll upload the schematics someday. However, it still wasn't a &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Turing_completeness" title="Turing completeness" rel="wikipedia"&gt;turing complete&lt;/a&gt; machine, so I set out to design it again.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=5e2fc401-fd7a-4d54-8c71-5c68b1f4973e" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Finding a New Fileserver OS: Step Three - Giving Up</title>
    <id>http://rsaxvc.net/blog/2009/4/7/Finding a New Fileserver OS: Step Three - Giving Up.html</id>
    <updated>2009-04-07T20:15:16Z</updated>
    <link href="http://rsaxvc.net/blog/2009/4/7/Finding a New Fileserver OS: Step Three - Giving Up.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Well, I didn't make it. I spent a while with OpenSolaris, which was the closest I've come to a non-linux posix I could love. Original Solaris is still a load of outdated software, and has the least user-friendly cli I've ever used. Nexenta is a half implemented joke. FreeBSD would never boot, and fuse doesn't support things like mmap.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So I'm back to linux Raid5/jfs. It's a little slow, but my data is all safe. In fact, I had a sata cable come loose recently, and it emailed me, and I plugged it in, no questions asked, a few minutes later the drive was done.&lt;/span&gt; 
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Finding a New Fileserver OS: Step Two - Testing</title>
    <id>http://rsaxvc.net/blog/2008/11/22/Finding a New Fileserver OS: Step Two - Testing.html</id>
    <updated>2008-11-22T01:16:46Z</updated>
    <link href="http://rsaxvc.net/blog/2008/11/22/Finding a New Fileserver OS: Step Two - Testing.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;Having decided on Sun's &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/ZFS" title="ZFS" rel="wikipedia"&gt;ZFS&lt;/a&gt;, I am left with the following list of operating systems to test:&lt;div&gt;&lt;ul style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 20px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; list-style-type: disc; list-style-position: outside; background-repeat: no-repeat repeat; "&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;Solaris&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/OpenSolaris" title="OpenSolaris" rel="wikipedia"&gt;OpenSolaris&lt;/a&gt;&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;&lt;a class="zem_slink" href="http://www.nexenta.org/" title="Nexenta OS" rel="homepage"&gt;Nexenta&lt;/a&gt;&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;&lt;a class="zem_slink" href="http://www.freebsd.org/" title="FreeBSD" rel="homepage"&gt;FreeBSD&lt;/a&gt;&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 1em; font-weight: normal; "&gt;Linux2.6/Fuse&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Virtualbox Testing Setup(real setup):&lt;/div&gt;&lt;div&gt;1(4) &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Central_processing_unit" title="Central processing unit" rel="wikipedia"&gt;CPU&lt;/a&gt;&lt;/div&gt;&lt;div&gt;1(4) Gig Ram&lt;/div&gt;&lt;div&gt;ide0,0: 16 gig hard drive-6 for &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Operating_system" title="Operating system" rel="wikipedia"&gt;OS&lt;/a&gt;, 10 for ZFS (80 gig OS drive)&lt;/div&gt;&lt;div&gt;ide0,1: DVDRom&lt;/div&gt;&lt;div&gt;ide1,0: 10 gig for ZFS&lt;/div&gt;&lt;div&gt;ide1,1: 10 gig for ZFS&lt;/div&gt;&lt;div&gt;(4x500Gig Sata)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Solaris&lt;/div&gt;&lt;div&gt;I've worked with Solaris before, but I can't say I enjoyed it. It was a lot of work to install, but has been running non-stop save power outages for a while now. It's actually remarkably efficient, and a rather slim kernel, but I really would like to use this box as a desktop now and then.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OpenSolaris&lt;/div&gt;&lt;div&gt;OpenSolaris has come a long way. I mount the ISO, boot off the CD, it asks me to choose a kernel with GRUB(I choose x86 + gui), and then the machine boots into a full &lt;a class="zem_slink" href="http://www.gnome.org/" title="GNOME" rel="homepage"&gt;Gnome Desktop&lt;/a&gt;. Next a fancy graphical installer installs to the 6 gig partition with standard ZFS flawlessly. I can even play gnibbles in the VM. After a reboot, everything works perfectly. Creating the &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Non-standard_RAID_levels" title="Non-standard RAID levels" rel="wikipedia"&gt;RaidZ&lt;/a&gt; pool was equally easy (for someone who knows the Solaris command-line). It even has a graphical package manager, not the same as aptitude, but I can deal.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nexenta&lt;/div&gt;&lt;div&gt;Nexenta is supposed to be the Ubuntu of Solaris. However, it seems a lot like they repacked Solaris packages as DEBs. There's a ton of packages named SUNW....blahblahblah...blah...packagename. Creating a RaidZ pool was rather easy though, as it should be, and completed the creation in less than 30 seconds. However, Nexenta doesn't support ZFS compression or encryption, which is a huge bummer. ZFS compression, applied sparingly, often increases write speed at the expense of some minor CPU performance.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;FreeBSD&lt;/div&gt;&lt;div&gt;Odd - I couldn't get FreeBSD to install in &lt;a class="zem_slink" href="http://www.virtualbox.org" title="VirtualBox" rel="homepage"&gt;VirtualBox&lt;/a&gt;. Backburnered.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Linux2.6/Fuse&lt;/div&gt;&lt;div&gt;This worries me:&amp;nbsp;&lt;a href="http://zfs-on-fuse.blogspot.com/" style="text-decoration: underline; "&gt;http://zfs-on-fuse.blogspot.com/&lt;/a&gt;&amp;nbsp;So, it seems that ZFS/Fuse currently suffers from the Gigantic Raid Write Whole. You have to disable your drive write buffers if you're using anything like MD or LVM with it, which often makes things very slow. Backburnered.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=7aeb874f-a2a6-46fa-8532-7929a60633d5" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Finding a New Fileserver OS: Step One - Filesystems</title>
    <id>http://rsaxvc.net/blog/2008/11/12/Finding a New Fileserver OS: Step One - Filesystems.html</id>
    <updated>2008-11-12T01:15:00Z</updated>
    <link href="http://rsaxvc.net/blog/2008/11/12/Finding a New Fileserver OS: Step One - Filesystems.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;div class="asset-header" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div class="asset-meta"&gt;Recently, I started to run out of hard drive space. Previously, I was using this machine as a Linux desktop/fileserver, but as I've become more accustomed to running &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Mac_OS_X" title="Mac OS X" rel="wikipedia"&gt;OSX&lt;/a&gt;/Windows2003/Linux2.6 on my laptop, I've lost the need for a local console.&lt;/div&gt;&lt;/div&gt;&lt;div class="asset-content entry-content" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div class="asset-body"&gt;&lt;br /&gt;Previous setup:&lt;br /&gt;2x250Gig 7200RpM Sata drives in &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Standard_RAID_levels" title="Standard RAID levels" rel="wikipedia"&gt;Raid-0&lt;/a&gt;&lt;br /&gt;1x80Gig drive for backup&lt;br /&gt;&lt;br /&gt;New Setup:&lt;br /&gt;4x500Gig 7200RpM drives in Raid5/Raid6/&lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/ZFS" title="ZFS" rel="wikipedia"&gt;ZFS&lt;/a&gt;/BTRFS&lt;br /&gt;assuming 20MB/s = 160Mb/s&lt;br /&gt;1x80Gig drive for OS&lt;br /&gt;&lt;br /&gt;Comparisons:&lt;br /&gt;FSCK Checking Time&lt;br /&gt;Compression&lt;br /&gt;OverHead&lt;br /&gt;Data Safety&lt;br /&gt;Speed ( I want 400Mb/s from the array)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/ZFS"&gt;ZFS&lt;/a&gt;&lt;br /&gt;I've used ZFS with &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Solaris_%28operating_system%29" title="Solaris (operating system)" rel="wikipedia"&gt;Solaris 10&lt;/a&gt; before, and I must say I'm impressed. It offers dynamic compression, multi-drive mounts, and redundancy up to a level of your choosing. We used ZFS on the ACM fileserver. It handles 12 drives (18Gig, 15kRpM scsi drives) with double redundancy (3 failures must occur before data loss). The main bottleneck in this system is the 100Meg Sun HappyMeal Ethernet card, which it can effortlessly keep filled with AFS data. Also, the CPUs in this box are 400Mhz each, so I figure 4xP4s will have no trouble at all with fewer drives. What about a filesystem check? ZFS keeps things stable at all times. A full scrub is relative to the amount of data stored, not the size of the disks. Supported &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Operating_system" title="Operating system" rel="wikipedia"&gt;Operating Systems&lt;/a&gt;: OSX Snow Leopard, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/FreeBSD" title="FreeBSD" rel="wikipedia"&gt;FreeBSD&lt;/a&gt;, Solaris, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/OpenSolaris" title="OpenSolaris" rel="wikipedia"&gt;OpenSolaris&lt;/a&gt;, and Linux/FUSE.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Btrfs"&gt;BetterFS&lt;/a&gt;&lt;br /&gt;BetterFS is supposed to replace Ext4 when it is done. It isn't done yet though. When done, it should feature multi-drive mounts (but only Raid0/Raid1 style), CopyOnWrite for everything, ACLs, and online FSCK. However, at time of writing, it isn't done yet. Supported Operating Systems: Linux.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5"&gt;Raid-5&lt;/a&gt;&amp;nbsp;with a standard filesystem&lt;br /&gt;Raid-5 is a method for adding checksumming to a group of block devices. It presents you with one virtual drive consisting of many hardware drives. However, you lose 1 drive out of n for parity, so your efficiency is (n-1) drives, and there have been some problems with Raid5 scaling to very large numbers of drives. Supported Operating Systems: Linux, FreeBSD, NetBSD, Solaris, OpenSolaris, and Windows Server.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_6"&gt;Raid-6&lt;/a&gt;&amp;nbsp;with a standard filesystem&lt;br /&gt;Raid-6 is much like Raid-5, but you use the equivalent of two drives for parity, so your efficiency is (n-2). This also takes more cpu time to write, the Raid has to be checked in its entirety, not just the space with files on it, and still has scalability problems. Supported Operating Systems: Solaris/OpenSolaris, or any other with a hardware card.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dragonflybsd.org/hammer/index.shtml"&gt;HammerFS&lt;/a&gt;&lt;br /&gt;HammerFS is a relatively recent filesystem for &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/DragonFly_BSD" title="DragonFly BSD" rel="wikipedia"&gt;DragonFlyBSD&lt;/a&gt;. It's neat in the way that it supports clustering, data checksums, multidrive mounts, and dynamic rollback/versioning. However, I only have one machine, so its not the best of options. Supported Operating Systems: DragonFlyBSD.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Decisions, Decisions&lt;/b&gt;&lt;br /&gt;Factors:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I don't want anything that isn't supported by at least two operating systems. So long HammerFS and BetterFS.&lt;/li&gt;&lt;li&gt;I don't want to be locked to a single model hardware card. So long Raid-6&lt;/li&gt;&lt;li&gt;I'd like Linux(liveCD rescue) and OSX support (laptop rescue)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fast Fast Fast&lt;/li&gt;&lt;/ul&gt;I'm really just left with ZFS. I mean, Raid-5/EXT3 and Raid-5/JFS have worked for me in the past, but I imagine checking a 2TB array will take forever with that setup. I've seen ZFS perform in the past, so it will be the first FS I test. Now the question is: what OS do I run?&lt;/div&gt;&lt;/div&gt; 

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=a0c6d2fc-30ac-4068-8164-699a0e1a3d71" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">JAUS: a testament to poor design and early adoption.</title>
    <id>http://rsaxvc.net/blog/2008/6/10/JAUS: a testament to poor design and early adoption..html</id>
    <updated>2008-06-10T01:10:48Z</updated>
    <link href="http://rsaxvc.net/blog/2008/6/10/JAUS: a testament to poor design and early adoption..html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Suppose two very different robots meet each other some day. Wouldn't it be wonderful if they could handshake, and then talk to each other in a very nice, simple, predefined way. It's such a wonderful concept. In fact, it is such a wonderful concept that the US Department of Defense wanted it done, so it put together a plan. JAUS is what they invented. I went to a conference last week to hear about it.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;JAUS (the Joint Architecture for Unmanned Systems) is an acronym for exactly what it does not do. Joint-usually meaning that the team that worked on it is from a diverse group, but I suspect that the group did not contain any experienced network programmers because of one glaring error.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Networks have been big endian since the beginning of time(teletypes), and from the time x86 workarounds have been in place, programmers have been using things like htons() and ntohs() to make sure their data is in the proper format for networks( big endian ). Not so with JAUS! With JAUS, x86 programmers no long have to worry about network byte safety, because everyone else will!&lt;br /&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;That's the level of enthusiasm about this particular item the speaker had. I suspect that the JAUS folks first started laying out some code and later discovered that JAUS on Macs couldn't talk to JAUS on PCs. Next they probably figured out what endian-ness is. The speaker basically recommended I keep two copies of all code: One for big-endian, and one for little-endian.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium; font-family: 'Times New Roman'; color: rgb(0, 0, 0); "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Now, they also call JAUS an architecture. To say that, is to say that something can be built on JAUS. However, the only thing that JAUS is good at doing, is message passing. You know what else is good for message passing? UDP. JAUS is a decent multi-component message passing standard, but because the rest of JAUS is so dysfunctional, you can't really rely on JAUS messages to go where you want them to, do what you intend them to do, or accomplish much of anything useful. You know what else is good at putting data where it belongs? IP addresses and TCP ports.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Back to the two robots meeting in a field. Robot A has data for Robot B. These two robots are within PAN(personal area network) range of each other, so they can send data back and forth. The only question is: can they understand each other? Probably not. What if Robot A and Robot B were designed, built, and programmed by the same people? Well...maybe. The problem is that JAUS has its own identification system built into the JAUS header. The JAUS identification system lets you specify which component you want to message behind the same IP address. So, suppose A wants to ask B where it is located. A would look up the identifier for position that the programmers for A used and query B with it. The problem? B might not use the same identifier as A did. At best, B will ignore unknown messages from A. At worst, a "where are you?" from A could be a "fire weapon" command. JAUS does have some default records bolted on to the architecture now, but don't trust it: if your robot has to communicate with an older JAUS implementation, you've got nothing and JAUS gains you nothing. You'll have to keep records of each set of JAUS protocols for every revision, which is remarkably hard to do with a closed standard.&lt;/span&gt;&lt;font class="Apple-style-span" color="#000000" face="'Times New Roman'"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=5e8de7ae-1539-4d13-b9fb-4b057bfa788e" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Searching, Sorting, and the Memory-Time Tradeoff</title>
    <id>http://rsaxvc.net/blog/2008/6/8/Searching, Sorting, and the Memory-Time Tradeoff.html</id>
    <updated>2008-06-08T01:12:26Z</updated>
    <link href="http://rsaxvc.net/blog/2008/6/8/Searching, Sorting, and the Memory-Time Tradeoff.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Case A: Suppose you needed to search through a black and white ( real B&amp;amp;W, not greyscale ) picture and pull out a list of white objects from the black background?&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Case B: Suppose you needed to sort 50 Gigabytes of unsigned shorts?&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Most people will tell you that the limit for sorting is n*log(n). But that's not really the whole story. The hard limit to any sorting algorithm is actually linear time. I say this, because in Case B, you could sort them rather easily if you knew where to put each item, irrelevant of the others. Suppose there are ten numbers. I look at the first number, and if I instinctively know where to put it, I can put it where it needs to go, and continue sorting the array in the same way. Many, many problems do not lend themselves to this type of solution, but Case B, and in a way, Case A both do.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Solving Case B: There's 50GB of unsigned shorts. An unsigned short ranges from 0 to 65535. Great for postal codes, not so great for much of anything else. An unsigned short also happens to take up 2 bytes, so there are 25,000,000,000 unsigned shorts to sort. Assuming they are all the same (worst case), we'll need a data type that can hold all of them...how about an unsigned long long(ULL)? A ULL can hold 18446744073709551616 distinct values, and there happens to be a prebuilt structure for them in gcc. Now that we've established some definitions...on to the game plan.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So we read in the first unsigned short. For our purposes, a 1337. By it's very nature, we can make some inferences about where to put it. Assuming there's an even distribution, we can assume it'll end up somewhere on the left of the mean...or better yet, we can use its absolute position.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;We're going to need an array of counters for this next trick, something like "unsigned long long counters[65536];" And we'll just increment the 1337 counter by one. For the next 24,999,999,999 unsigned shorts, we'll do exactly the same thing. Now we have an array containing counts from one to (at worst) 25,000,000,000. All we have to do is traverse the array, reassembling the sorted structure.&lt;br /&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So how long would it take to sort 50GB of files holding Unsigned Shorts? About as long as it takes to read the unsorted files and write the sorted files. I discovered this algorithm last week on a robotics competition, while trying to solve Case A. (it's actually been done before-&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;a href="http://www.citebase.org/abstract?id=oai:arXiv.org:cs/0408040"&gt;right here is a great paper on it&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;-I wasn't the first. I was a little disappointed.) But anyhow, it has some great features:&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;li&gt;Time complexity is linear for large collections of objects, or constant for small collections.&lt;/li&gt;&lt;li&gt;It is easily extended to sort complex data structures, although there are some rules.&lt;/li&gt;&lt;li&gt;It's a stable sort for larger objects, if implemented properly. (Use an array of queues instead of the counters)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Sadly, it has the following disadvantages&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;li&gt;It requires an onto mapping for all objects to be sorted&lt;/li&gt;&lt;li&gt;It works great on standard memory, but performance degrades for files or NUMA machines, because the underlying data structure must contain all objects in ram.&lt;/li&gt;&lt;li&gt;The characteristic to sort on must be limited by a maximum value, and that maximum value should be small in order to prevent the constant time component from growing too large.&lt;/li&gt;&lt;li&gt;Only works well for large collections of objects. For most collections of objects smaller than the range of the characteristic to sort upon, you're probably better off with introsort or one of it's ancestors.&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;I've posted example code and runtimes&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;a href="http://rsaxvc.net/code/hashsort"&gt;here&lt;u&gt;.&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;If you look at the file 'run' you'll see the number of unsigned shorts sorted, and the second column is the seconds required to sort them. Keep in mind that each unsigned short also needs a call to rand(), which takes up the majority of processing. Also keep in mind that this example doesn't reassemble the data, which is trivial, but also builds into the time complexity MAX(linear term, constant term).&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Anyways...how does this help solve Case A? The hard limit of A is linear against width, and linear against height. Assuming a fixed ratio (in this case 4:3), the hard limit is quadratic against either.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The first algorithm I thought of was pretty simple, and horrendously slow. Lets say each pixel will belong to a "blob" and each "blob" can have multiple pixels. In my case, I used an STL vector.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So to start, search through the picture until a white pixel was found. Set the pixel to black, check if it can be stored in a known blob (if a blob is adjacent to it), otherwise create&amp;nbsp; a new blob, and recursively scan the 8 pixels around this found pixel.&amp;nbsp;&lt;br /&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;This algorithm has two failing points. The first, is that the recursive factor will scan each pixel more than once. This isn't optimal, especially if we're looking to make this go fast. Secondly, since my blobs are made of vectors, not only must we search through each blob, we must search through every single pixel. Thankfully, I added a little hack, some range checking. Each blob knew the ranges it spanned(MaxX, MaxY, MinX, MinY), and so often checking an entire blob for adjacency with a pixel would only take a few operations, but other times it took an entire linear search. I could have sorted each blob internally by some characteristic, say X or Y, but this is just building on a broken machine, like ripplesort is to bubblesort.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The first addition is to make the algorithm non-recursive. Ryan Meuth used this in his approach and solved the 'U' problem (finding two parts of a blob before finding the center) by the addition of a lookup table.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;So, in much the same way, search through the image, creating new blobs if needed and appending to existing blobs. But, if you ever find a pixel that is adjacent to two blobs, mark it in the table and combine them later.&amp;nbsp;&lt;br /&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;This is a little slower, because each pixel has to be compared against every single blob, regardless of a previous match, but it is much faster than my recursive solution above. What may perform even faster, is combining blobs on the spot.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;The second fix is to store each blob as a 2-dimensional array of pixels. In fact, if you can spare the memory, allocate an entire image-worth. To check if a pixel is adjacent to a blob, you can take its position in the array, and look around it to see if there are other set pixels. In this way, a lookup on a blob now has a constant time of eight lookups. Inserting a pixel into the blobspace will still be linear over the number of blobs, but as far as I can tell, that can't be helped. We still have one small problem: each blob has its pixels stored in an obnoxiously hard-to-use format, being a picture. The solution is simple: create a hybrid structure. Each blob has two containers: a matrix and a queue. Insert a pixel into the blob, and you insert it into both. To obtain a list of all pixels in a blob, simply process the queue.&lt;/span&gt;

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=14807c78-043e-4855-9d0a-bca0a75c600a" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Complex Computational Systems: Planning is Key</title>
    <id>http://rsaxvc.net/blog/2008/5/31/Complex Computational Systems: Planning is Key.html</id>
    <updated>2008-05-31T00:51:18Z</updated>
    <link href="http://rsaxvc.net/blog/2008/5/31/Complex Computational Systems: Planning is Key.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;I'd have to say that programming a robot from the ground-up is the most complex project I've ever worked on. Granted, we built this robot from aluminum, motors, gears, and wire. The three items we didn't build are a set of stereo vision cameras, a computer, and a small power-controller. And how do we integrate the separate software projects?&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Earlier this year, the electrical, mechanical, and computing groups sat and decided upon the best way to integrate these systems. We created a document outlining which other systems a given module would need to communicate with. Groups were then responsible for creating message passing interfaces between their modules.&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Fast forward to today. Every module works quite well in its own environment. The vision system can pick out white road-lines and construction signs when the robot is parked. The drive system is so simple it requires only three lines of code to move the robot. The AI can drive through a virtual model every time. But we're at competition now-and nothing works. One person is gluing it all together. He asked me for help, and there are global pointers everywhere. After a few hours, it started to work. It is the most complex, ugly thing I've seen. Every so often, there are segfaults whenever code ignored mutexes (there are actually pointers to mutex-protected memory).&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;For such a volatile system, it's working surprisingly well. This system goes against every design standard I've seen-it is a barrel full of monkeys all shouting commands at each other, and every so often monkeys shout at the same time, and scream louder, making the other monkeys act funny. But all-in-all, it looks like its working, even if we neglected to test before the competition.&lt;/span&gt; 

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=e6521551-bb33-4f0a-90aa-7517a7604556" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">Robotics, Pervasive Computing and Mobile Connectivity  </title>
    <id>http://rsaxvc.net/blog/2008/5/29/Robotics, Pervasive Computing and Mobile Connectivity  .html</id>
    <updated>2008-05-29T00:49:13Z</updated>
    <link href="http://rsaxvc.net/blog/2008/5/29/Robotics, Pervasive Computing and Mobile Connectivity  .html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;It wasn't too long ago when the only way to get a data connection was a large brick-like phone-sort of like on "Congo". Very few people could justify a mobile connection for everyday use. Now, you can purchase a data plan for $5 or $10 per month attached to your phone, and have access almost anywhere. In the past, I've listened to streaming radio on a sailboat in the middle of the Lake of the Ozarks. Now, I've ridden from Rolla, MO to Rochester, MI with internet connectivity the entire way. Not only was there internet on my phone, but with a few lines of Linux shell script, my laptop became an access point, dialed through my phone, and connected them with a NAT so that team members in both vehicles could work on code.&amp;nbsp;&lt;/span&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;Mobile connectivity is driving the pervasive computing market forward. While on the road, I was able to do mapping, look up email addresses, and read online. However, there was one computer with us that was even more connected. Aluminator, our prize competition robot, has a harness for a cell phone and a gps receiver. It also has motor sensors detecting how far/where/how fast it moves.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;There are three items in the area of Mobile Computing that I'd like to see in my lifetime:&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;ul&gt;&lt;li&gt;A global positioning system that works indoors, even in basements, possibly a little underground. The key: These sensors would have to become small enough and cheap enough that almost every device would have one. Your TV could know where your remote is, anywhere in your house.&lt;/li&gt;&lt;li&gt;I want to see a pervasive wireless network. Right now I can get online in what I estimate is at least half of the United States. Eventually, I want to be able to travel the world without fear that I won't be able to check my email, or buy train tickets online. The key: These chipsets/antennas would have to be small enough and mass produced enough to fit inside of every notebook computer or PDA and cheap enough that every producer would include one.&lt;/li&gt;&lt;li&gt;Secure, two+ factor authentication for everyone.&lt;/li&gt;&lt;/ul&gt;With these technologies, mobile computers will become an extension of the individual. My PDA would record my car's position in a parking lot and point me back to it (actually, Garmin Colorados do this now) But there would be no reason for so many separate devices. Right now I carry a phone, a proxcard, a calculator, and a laptop in my bag. Eventually these devices will fuse into one. One of my systems already has more than enough processing power. Another has a powerful mathematics language. Another is part of my authentication. The last finds me the closest pizza in any town. Someday, somehow, even if I don't live to see it, everyone will have affordable, fast, mobile connected computing.&lt;/div&gt;

&lt;div class="zemanta-pixie" style="margin-top:10px;height:15px"&gt;&lt;a class="zemanta-pixie-a" href="http://www.zemanta.com/" title="Enhanced by Zemanta"&gt;&lt;img class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=72d4565b-e267-4332-b786-7c08188058e8" alt="Enhanced by Zemanta" style="border:none;float:right" /&gt;&lt;/a&gt;&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="http://rsaxvc.net/blog/atom.xml">
    <title type="text">A New Home</title>
    <id>http://rsaxvc.net/blog/2008/5/26/A New Home.html</id>
    <updated>2008-05-26T00:45:53Z</updated>
    <link href="http://rsaxvc.net/blog/2008/5/26/A New Home.html" />
    <author>
      <name>rsaxvc</name>
    </author>
    <content type="html">&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; white-space: pre-wrap; "&gt;So, I finally broke down and purchased a new dns name, and put together an MT blog. It did take about 12 hours to install all the perl modules it wanted. I spent about six hours mostly working on robot code, and then pulling down a new perl module and building it whenever the terminal went inactive. After starting to build imagemagick, I realized that Solaris Make doesn't handle multiple cpus, not even when instructed to. So halfway through, I downloaded Stallman's GNU Make, built it, ran a make clean;make -j8 , and it was done in a few minutes. What's the point of Big Old Solaris Iron without multithreaded code?

As of this posting, the server hosting this is loaded with:&lt;/span&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; white-space: pre-wrap; "&gt;4x400 Mhz UltraSparcIIs (4mb cache)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; white-space: pre-wrap; "&gt;12x18GB(min) SCSI SCA drives (11 of which are in RAIDZ2)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; white-space: pre-wrap; "&gt;1792 MB RAM (ECC, informs you when sticks are dying)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; white-space: pre-wrap; "&gt;Solaris 10 (Ubuntu actually ran pretty well, and had graphics support for the CG4, but a bad SCSI driver destroyed the RAID5 after a few reboots-yay backups)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; white-space: pre-wrap; "&gt;Happy Meal Ethernet!&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; white-space: pre-wrap; "&gt;All being said, it makes a pretty stable and responsive webserver. Now if only we could get it off of that laggy shared T3. 

Now for a little history. Years ago, in the dark ages, there was a teacher named Fickret Ercal. Fickret had something to do with the school vision processing lab and was in charge of buying them a new system. He choose a then-$64,000 Sun server. Keep in mind that at this point in time, Sun was one of the few companies offering such power in such a small space. The only other possibilities were IBM/POWER, DEC/Alpha, and SGI/MIPS. Eventually, the machine was given to ACM, where it sat in the office for untold ages. Flash forward to last spring.

I was elected ACM server administrator for our local chapter. We had an Athlon XP running as the shell/webserver. Something happened and it started scanning the campus for SSH servers. Tim noticed it and disconnected it from the network. My roommate at the time, Doug Kelly, recommended Solaris and installed it on the old beast. Why Solaris? We really wanted RAIDZ/ZFS. I was willing to settle for Ubuntu, but it died after a few reboots and lost all of the hard drive labels for its software RAID5. No BSD supported RAIDZ on Big Endian at the time (FreeBSD does now, but it's an ugly hack). And so, only Solaris was left. It took a few tries to get all the configs set up. That and the fact that the expansion boards have to go into certain slots or they won't work. But eventually, a serial console came up, and it was installed. Next the old Athlon XP was set up with Debian and OpenAFS was used to communicate between them-11 hard drives on the Sun make a ZFS Zpool, which is exported under /afs/mstacm.org. Users can now login to acmshell.device.mst.edu, and edit the same files stored on acm.device.mst.edu. You can also go to here to learn about how to set up your personal computer to connect to our AFS space.

Overall, I'm pretty happy with the machine. It isn't blindly fast (except for access times), but it is rock solid. A few weeks ago the web pages started acting a little slow. The culprit? A bad hard drive says dmesg. The disk was audibly clinking as the head slammed across the drive. A few zpool commands and it was running fine again, just with degraded redundancy (equivalent to RAID5). When we got the new drive, a few more zpool commands and it was happily updating blocks and metadata from the other ten drives. Keep in mind that there was no reason for downtime in this period of time. When the drive went out, the webpages were slow only until cached. When the drive came out and the zpool was scrubbed, there was some high cpu usage, but when files were rechecked and marked as good, their access time/speed went back to normal. Replacing the disk was much the same. Hopefully we can get a bigger UPS for it and then there will be no more downtime. Right now, it's up between storms.

So you want to know why I'm pumped? Well, because the title to this post is one letter away from being a Star Wars title.&lt;/span&gt;&lt;/div&gt; 
</content>
  </entry>
</feed>
