SSL enabled

I just enabled SSL on this site in a fit of paranoia. It shouldn’t cause any problems, but please let me know if you notice something that’s broken. Normal browsing shouldn’t be affected, but site login is forced to SSL. My (self-signed) certificate has SHA1 fingerprint 6c:e4:77:91:e8:59:f8:d1:fd:ea:cf:87:6b:af:ce:3b:19:be:fa:b5.

D-meter updates

I’ve been able to do some more work on the divergence meter now. The university’s labs made short work of the surface-mount soldering, but there were some hitches in the assembly and testing phase, in which I discovered some of the part footprints were wrong, and it was a bit of trouble getting the programmer working. I was able to work around most of the bad footprints, but some of them were barely salvageable, since the through-holes were too small. I was able to drill them out on the drill press in the lab, but that left me with very small contact areas to solder to, so I had a few hideous solder joints.

Read More…

Static libpng on win32 with CMake

Working on mkg3a upgrades for libpng more, I was getting unusual crashes with the gnuwin32 libpng binaries (access violations when calling png_read_int()). It turned out that the libpng dll was built against an incompatible C runtime, so I had to build static libraries. With the official libpng source distribution (and zlib), building static libraries was reasonably easy. Using the MSVC make tool in the libpng source tree, I first had to build zlib. The default build (for some reason) doesn’t build the module containing _inflate_fast, so I had to add inffast.obj to the OBJS in zlib/win32/Makefile.msc (this manifested as an unexported symbol error when linking a program against zlib).

Read More…

High-availability /home revisited

About a month ago, I wrote about my experiments in ways to keep my home directory consistently available. I ended up concluding that DRBD is a neat solution for true high-availability systems, but it’s not really worth the trouble for what I want to do, which is keeping my home directory available and in-sync across several systems. Considering the problem more, I determined that I really value a simple setup. Specifically, I want something that uses very common software, and is resistant to network failures. My local network going down is an extremely rare occurence, but it’s possible that my primary workstation will become a portable machine at some point in the future- if that happens, anything that depends on a constant network connection becomes hard to work with.

Read More…

Locating packages with cmake

When building programs with cmake on non-UNIX systems, it can be a pain to specify the location of external libraries. I’ve been upgrading mkg3a to support using libpng to load icons in addition to the old bmp loader, but that means I need to link against libpng, and also zlib (since libpng depends on zlib to handle the image compression). Compiling it all on Windows, however, is not an easy task, since there’s no standard search path for libraries like there is on UNIX systems (eg /usr/include for libraries, /usr/lib for libraries..). I didn’t find any good resources on how to make it work in my own searches, so here’s a quick write-up of the process in the hopes that it’ll be useful to somebody else.

Read More…

rtorrent scripting considered harmful

As best I can tell, whomever designed the scripting system for rtorrent did so in a manner contrived to make it as hard to use as possible. It seems that = is the function application operator, and precedence is stated by using a few levels of distinct escaping. For example: # Define a method 'tnadm_complete', which executes 'baz' if both 'foo' and 'bar' return true. system.method.insert=tnadm_complete,simple,branch={and="foo=,bar=",baz=} With somewhat more sane design, it might look more like this: system.method.insert(tnadm_complete, simple, branch(and(foo(),bar()),baz())) That still doesn’t help the data-type ambiguity problems (’tnadm_complete’ is a string here, but not obviously so), but it’s a bit better in readability.

Read More…

Divergence meter progress

One project which I’ve been working on since about October and just got around to creating a project page for is the divergence meter. There’s not a lot to see there yet, but I’ve recorded my notes on what the design needs and the outline for the control and power supply module. I ordered the PCB in early December in the hopes that they would be available for me to work on while in Wauwatosa during the semester break. That didn’t pan out, so unfortunately the whole project won’t move until next week, when I return to Houghton and can get my boards from the mailbox.

Read More…

Experiments with a high-availability /home

I was recently experimenting with ways to configure my computing setup for high availability of my personal data, which is stored in a Btrfs-formatted partition on my SSD. When my workstation is booted into Windows, however, I want to be able to access my data with minimal effort. Since there’s no way to access a Btrfs volume natively from within Windows, I had to find another approach. It seemed like automatically syncing files out to my NAS was the best solution, since that’s always available and independent of most other things I would be doing at any time. Candidates The obvious first option for syncing files to the NAS is the ever-common rsync.

Read More…

A few small projects

Going through some of my old projects this evening, I came across a couple little tools I wrote. I’ve uploaded them here in the hope that others will find them useful. They are the GCNClient GUI and RX BRR calculator. I make no guarantees of the utility of these pieces of software, but they may be useful as examples in how to perform some task in the .NET framework (both are written in C# for .NET), or just for performing the very specific tasks which they are designed to perform.

Back to wordpress

After about a year of running a purely static site here, I finally decided it would be worthwhile to move the site backend back to Wordpress. I moved away from Wordpress early this year primarily because I was dissatisfied with the theming situation. While lightword is certainly a well-designed piece of software and markup, I wanted a system that would be easier to customize. Being written and configured in PHP (a language I don’t know and have have little interest in learning), I decided Wordpress didn’t offer the easy customizeability that I wanted in a web publishing platform, and made the switch to generating the site as a set of static pages with hyde.

Read More…