<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://www.shaftnet.org/users/pizza/styles/feed.css"?>
<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Filed under: Free Software | I dream of rain</title>
<atom:link href="http://www.shaftnet.org/users/pizza/archives/free_software/index-rss.xml" rel="self" type="application/rss+xml" />
<link>http://www.shaftnet.org/users/pizza</link>
<description>Ruminations and lamentations, percolations and departations</description>
<dc:language>en-us</dc:language>
<dc:creator>Solomon Peachy</dc:creator>
<dc:date>2013-03-07T19:47:19-05:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2013/03/07/anyone_looking_for_a_kernel_hacker/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2013/03/07/anyone_looking_for_a_kernel_hacker/index.html</guid>
<title>Anyone looking for a kernel hacker?</title>
<dc:date>2013-03-07T19:47:11-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software, Life and other BS</dc:subject>
<description>
<![CDATA[<p>For reasons I won't bother getting into here (other than to throw some 
token insults at Congress -- but they only hastened it along), I've been 
notified that, as of tomorrow and until further notice, I've been cut 
back to four day work weeks.</p>

<p>So it's time I kick myself into active job hunting.  Anyone looking for 
an experienced software engineer that's highly proficient in C and is 
quite comfortable slicing and dicing low-level kernel (Linux, RTOSes) 
and device driver (Wireless Network, Sound, Printer, etc) code?</p>

<p>I've done high-level systems design, low-level board bringups, database 
backends, Web UIs, data mining, test engineering, you name it.  Python, 
Perl, C, Shell, and Java. Javascript, C++, and even C# in a pinch.  What 
I don't know, I pick up as needed.</p>

<p><a href="http://www.shaftnet.org/users/pizza/slp_resume.pdf">My current resume</a> 
is available, naturally.</p>

<p>I'm based out of Melbourne, Florida, but for some time I've been wanting 
an excuse to move on.</p>

<p>It can't hurt to try, eh?</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2013/03/02/linux_wifi_driver_hackery_yay/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2013/03/02/linux_wifi_driver_hackery_yay/index.html</guid>
<title>Linux wifi driver hackery, yay</title>
<dc:date>2013-03-02T08:15:16-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>Since it's still a little too chilly outside for me to take apart my 
car to replace a defective seatbelt buckle, it's time for a writeup on 
what I've been up to with my wifi driver hacking.</p>

<p>First, the <a 
href="http://git.shaftnet.org/git/gitweb.cgi?p=compat-wireless-cw1200.git;a=summary">ST-E 
CW1200 driver</a>.  For some reason, I keep being surprised at the 
amount of major surgery between the releases.  Since my <a 
href="http://marc.info/?l=linux-wireless&m=136035553814767&w=2">last 
posting to linux-wireless</a>, there's been a lot of work:</p>

<ul> 
<li>Completely rewrote BSS join logic -- IBSS now works!</li> 
<li>Respect TKIP/CCMP group key rx sequence counter</li> 
<li>Improved 802.11g (ERP) coexistence</li> 
<li>Eliminated callback function pointer structures</li> 
<li>Detect CW1160/CW1260 chips (fw load is different though)</li>
<li>Greatly simpified BSS loss detection</li>
<li>Fixed deadlocks and/or OOPSen when hot-unplugging non-idle devices</li>
<li>Pulled support for Sagrad SDIO modules into a separate module that provides the appropriate platform data</li>
<li>Simplified Beacon filter configuration</li>
<li>Many, many, many checkpatch-suggested cleanups</li> 
</ul>

<p>I'll probably prepare another upstream submission this weekend, 
seeing that the driver is now handling everything I'm throwing at it.  
Finishing CW1260 support needs to wait until I have hardware to test 
aginst.</p>

<p>Next, I've also spent time on the rt2800usb driver, adding the ability to
<a href="http://marc.info/?l=linux-wireless&m=136222631725600&w=2">write 
changes back to the eeprom and embedded eFuses</a>.  This lets folks 
update the production data baked into the module at manufacture time, 
which is occasionally necessary when your module vendor sends you seven 
hundred modules with a single bit flipped that breaks a legacy product's 
driver.  As an aside, Ralink's official drivers are... painful, to say 
the least.  But kudos to Ralink for maintaining them!</p>

<p>Finally, I started adding support for my employer's STLC4560-based 
modules to the p54 driver.  They come in both SPI and SDIO variants, and 
have an onboard EEPROM for storing the Production Data.  The existing 
p54spi driver is hardwired to have the PDA loaded from userspace, and 
there's no support for SDIO devices at all.  This is a lower-priority 
project, but it is nice to be working with the venerable 
NWN/Intersil/GSV/Conexant/ST 'ARM MAC' again.</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2013/02/13/domain_registrar_recommendations/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2013/02/13/domain_registrar_recommendations/index.html</guid>
<title>Domain registrar recommendations?</title>
<dc:date>2013-02-13T22:27:43-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>In a couple of months, one of my domains is up for renewal.  I've 
been using Dotster for years now, ever since I ran screaming from 
Verisign <em>nee</em> Network Solutions back in the day, but my eye is 
wandering.</p>

<p>Mainly because Dotster does not, nor does it have any plans to, 
support DNSSEC and IPv6 glue records.</p>

<p>If this goes well, then I'll be moving the rest over as they 
eventually expire.</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2013/01/27/sunday_hackery/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2013/01/27/sunday_hackery/index.html</guid>
<title>Sunday Hackery</title>
<dc:date>2013-01-27T16:06:45-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>Faced with no getting-my-hands-dirty offline projects today, I 
decided to spend some time on various F/OSS projects that I've neglected 
as of late.</p>

<p>The morning started with a flurry CW1200 driver hacking; this time 
focusing on simplifying its interrupt handling.  In the process I 
eliminated two more compile options and three bus-level virtual 
functions.  As nice as it is to write code, it's even nicer when you 
delete it without any loss of functionality!</p>

<p>After that, I put my money where my mough was and wrote a systemd 
unit file for Photo Organizer's background workers.  For years I've been 
using screen and a sudo-driven cmdline to fire them off, because I could 
never come up with a reliable (and portable) init script to do the 
trick.  No longer.  As an aside, systemd is brilliantly put together and 
worlds beyond anything that's come before.  It JustWorks(tm).</p>

<p>Then I pulled out my notes and turned my attention to Gutenprint.  
The Kodak 1400's unexpected complications derailed my plans a bit, but 
there were still three related printers whose spool formats I'd decoded 
-- The Kodak 8500, the Mitsubishi CP3020D/DU/DE, and the Mitsubishi 
CP3020DA/DAE.  They are now all supported by Gutenprint, and awaiting 
testing.  The latter two are the ones I'm most concerned with, as I took 
a few liberties with the spool format.</p>

<p>Basically, the Mitsubishi-branded printers don't spool the data 
linearly into the printer; they basically write the color-interleaved 
data in backward chunks.  Consequently, the printer can't start printing 
until all the data is received.  To simplify things, I'm sending the 
data linearly in one big chunk.  Hopefully it will work.  We'll find out.</p>

<p>On that note, if there's someone out there with one or more of these 
printers, care to help out?  Either by doing some test prints for me, or 
better yet, sending me the printers?  :)</p>

<p>... and the day is far from over.</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2013/01/22/okay____this_is_certainly_strange/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2013/01/22/okay____this_is_certainly_strange/index.html</guid>
<title>Okay... this is certainly strange..</title>
<dc:date>2013-01-22T21:34:48-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<pre>
Date: Tue, 22 Jan 2013 20:49:36 -0500
From: Jay Ronkonkoma <3ncryption1@gmail.com>
To: undisclosed-recipients: ;
Subject: Thank You for your hard work

I'm a big fan of your work on Wireshark.  I was wondering what else you had
going on,  what you were doing that was new,  anything I could read would
be greatly appreciated.


Also, if you have the time and inclination.  please mail a postcard to my
daughter Amanda.  She would love to get a little post card from you.  she
is now 7 going on 15 if you know what I mean.
I would appreciate it, and I know she would love it.  If you don't I
appreciate your time

Amanda Elia
[[ address snipped ]]
Ronkonkoma, NY 11779

Humbly,

Jay Elia
</pre>

<p>I can't help but think this a soliticitation for highly illegal 
activities, <em>if you know what I mean.</em></p>

<p>It's also been something like six years since my last contribution to 
Wireshark, so it would seem someone's busy harvesting addresses from 
old commit logs or somesuch.</p>

<p>EDIT: I've reported this email to google via gmail's abuse form.  
Going to pass this on to the feds too, once I figure out how to do that.</p>

<p>EDIT2: I've reported this to the National Center for Missing &amp; 
Exploited Children's hotline.</p>

<p>EDIT3: Many others have also received this email.</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2013/01/20/success_with_the_kodak_professional_1400/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2013/01/20/success_with_the_kodak_professional_1400/index.html</guid>
<title>Success with the Kodak Professional 1400</title>
<dc:date>2013-01-20T08:38:44-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>About a week ago a massive box was left on my doorstep containing a 
lightly-used Kodak 1400 large-format dye-sublimation printer.  Lightly 
used to the grand total of a whopping 72 prints, according to the 
self-test page.</p>

<p>Unfortunately, my elation turned sour when I discovered that I 
couldn't just dump the raw spool file to the printer.  Firing up a USB 
sniffer under WinXP, I discovered that the to-the-printer protocol bore 
little resemblance to the spool file -- even the image data itself used a 
different format.  To top it all off, the printer needed intelligent 
buffering.</p>

<p>So, armed with the USB sniffer output, I heavily modified the spooler 
I wrote for the Canon SELPHY printers.  Last night, I achieved success, 
and succesfully printed the WinXP test page I'd previously generated, 
but also an image printed using gutenprint.</p>

<p>The Kodak 805 printer that replaced this one probably needs a similar 
treatment (given that it uses the same spool file format) but unless 
someone sends me a printer (or cash) I won't be able to test that theory 
out.</p>

<p>I still have to generate another couple of test prints under WinXP to 
decode two remaining protocol options, but other than that, the Kodak 
1400 printer is now usable under Linux!</p>

<p>Oh, this is the first image I printed on this thing via Gutenprint.  
I wish I could say it was something I took.</p>

<p><a 
href="http://hubblesite.org/newscenter/archive/releases/2011/38/"><img 
src="http://imgsrc.hubblesite.org/hu/db/images/hs-2011-38-a-web.jpg"></a></p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2013/01/12/more_driver_hackery/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2013/01/12/more_driver_hackery/index.html</guid>
<title>More driver hackery</title>
<dc:date>2013-01-12T22:10:34-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>This morning, I submitted the third pass at the CW1200 WLAN driver to 
the linux-wireless list.  The changelog is too long to list here, but 
the bulk of the changes were teased from a code dump that Sony released.  
It seems they went through much the same pain as I did, and of course none of the changes made it upstream.</p>

<p>Aside from the Sony changes, the single biggest change was a 
rebalancing of the tx/rx handling, so that it's now considerably fairer.  
Of course, there was the usual pile of small changes, including a fix 
for an OOPS triggered by the broken IBSS code.  It's still broken, but 
at least it's not crashing anything now.</p>

<p>We'll see where v3 goes.  Hopefully merged into linux-next, or 
barring that some meaningful feedback on what I need to do next.</p>

<p>In other news, Before the new year I added support to Gutenprint for 
the Kodak 9810 dyseub printer.  None of the code's been committed yet, 
but there's no real rush.  I'm now waiting on a Kodak 1400 printer to 
show up -- Once I've verified my core gutenprint changes are sound and 
that printer works, I'll commit everything, marking the untested models 
as experimental.</p>

<p>Then I'll tackle the Kodak 8500 and the Mitsubishi CP3020D/CP3020DA, 
not that I'll be able to test those either..  Afterwards, I'll see about 
the more modern Mitsubishi printers if I'm feeling so inclined.</p>

<p>I really need to start getting rid of this pile of Canon dyseub 
printers.  Maybe four, instead of twelve.  At least the incoming Kodak 
1400 is a large-format model!</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2013/01/08/css_hackery/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2013/01/08/css_hackery/index.html</guid>
<title>CSS hackery</title>
<dc:date>2013-01-08T23:44:55-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>One of the tasks I got up to during my recent "vacation" was the 
first real hacking on the code powering my photo site in more than a 
year.  This time, the changes are mostly cosmetic in nature.  I've been 
removing javascript/DOM hacks in favor of CSS3 to style the buttons, 
checkboxes/selections.</p>

<p>The result is far simpler markup and faster page loads because 
there's no javascript rewriting the page on the fly.  In fact, the only 
javascript present now is the code that inverts the image selection, and 
even that's far simpler because it just walks the list of checkboxes and 
toggles them.</p>

<p>I'm also giving attention to the layout and especially element 
spacing; trying to generally improve the intangible "feel" of the site 
through subtle tweaks that make things much more visually pleasing.</p>

<p>The goal here is to clean out as much legacy cruft as possible, so I 
can more easily make more complex (but necessary) UI changes.  There are 
still too many tables used for layout/formatting; I'll be trying to 
eliminate those next.</p>

<p>I'm back to working on this thing for my sake, solving my own needs, 
making it into something I want to keep on using, and I must say it's a 
nice change.  Yay for (useful) productivity!</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/12/25/more_reverse_engineering_goodness/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/12/25/more_reverse_engineering_goodness/index.html</guid>
<title>More reverse engineering goodness</title>
<dc:date>2012-12-25T23:23:58-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>I decided to make a sweep of it and decode the raw spool formats for 
the remaining "Professional" Kodak photo printers, the 8500 and 9810.  
This means that all of Kodak's professional dyesub printers will be 
supported, save for the long-since-discontinued ML-500.</p>

<p>But I digress.  It turns out the 8500 is essentially a 
rebadged/tweaked Mitsubishi CP3020D, albeit without 8x12 support and a 
third variation of the Mitsubishi block-chunked image format -- packed 
BGR data, sent in one ginormous data block but wrapped in the 
"traditional' 3020D control blocks.  That will require no changes to 
gutenprint to support, so I'll probably implement support for the 8500 
before the CP3020D/DA models it's based on.</p>

<p>Meanwhile, The 9810 is very different from the other Kodak models.  
It uses a command-stream type of format that's on the verbose side but 
is otherwise well-structured, with the raw RGB data being sent in a 
plane-interleaved fashion.  Supporting it will require no core changes 
either.</p>

<p>so, this is my plan of attack over the next couple of days:</p>

<ul>
<li>Kodak 9810</li>
<li>Kodak 8500</li>
<li>Mitsubishi CP3020D</li>
<li>Mitsubishi CP3020DA</li>
<li>Other (current!) Mitsubishi models?</li>
</ul>

<p>Anyway.  Time to go to bed.</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/12/25/another_two_kodak_printers_supported/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/12/25/another_two_kodak_printers_supported/index.html</guid>
<title>Another two Kodak printers supported..</title>
<dc:date>2012-12-25T12:08:56-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>Just added support to Gutenprint for the Kodak 605 and 805 dyesub printers.  They 
were mostly the same as the 6800 and 1400 (respectively) they replaced.</p>

<p>I've also reverse-engineered the raw dump formats of the Mitsubishi CP3020D and the 
CP3020DA 8x10 dyesub printers.  They use a somewhat convoluted block-oriented format, 
with the former using CMY-based plane interleaving and the latter using RGB-based 
scanline interleaving.  To add joy to the mix, the blocks are sent to the printer in 
reverse order (bottom-up), but within each block the scanlines are top-down.</p>

<p>Once the Kodak 1400/805/6800/6850/605 support is reviewed and committed into 
Gutenprint, I'll start working on the low-level changes necessary to support these 
Mitsubishi printers.</p>

<p>Maybe a grateful user will mail one of them to me in thanks?  (hint hint)</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/12/24/and_then_there_were_two_more/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/12/24/and_then_there_were_two_more/index.html</guid>
<title>And then there were two more</title>
<dc:date>2012-12-24T23:06:30-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>Just added support for Kodak 6800 and 6850 photo printers to 
Gutenprint.  The main difference between them is that the 6850 is faster -- 
8s (vs 11s) for a 4x6 print -- and natively supports 5x7 media.</p>

<p>There are many thousands of these printers deployed in self-serve 
photo kiosks, and they're trivial to find on ebay.  Cost per 4x6 print 
is under $0.17 and media refills are very easy to obtain.</p>

<p>Meanwhile, the 6800/6850 has been superceded by the 605, and the 1400 
has been superceded by the 805.  If I'm still motivated I may try to add 
support for those models too..</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/12/24/pre-holiday_hackery/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/12/24/pre-holiday_hackery/index.html</guid>
<title>Pre-Holiday Hackery</title>
<dc:date>2012-12-24T15:34:21-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>It's been a busy few days, and my vacation hasn't even started yet.</p>

<p>I accomplished two major tasks this weekend.  First, I finally kicked 
off new attempt to mainline a Linux driver for the <a 
href="http://www.stericsson.com/products/cw1200-wlan.jsp">ST-E 
CW1100/CW1200 WLAN chipsets</a>.  The first post to linux-wireless went 
over fairly well, and the suggestions (many of which were already on the 
pending list) kicked off a flurry of updates culminating in a <a 
href="http://article.gmane.org/gmane.linux.kernel.wireless.general/101877">second 
revision</a> posted later that day.</p>

<p>Those submissions have spawned a fair amount of commentary and some 
patches; I've spent most of the day so far incorporating a massive code 
drop from Sony, for example. That's undergoing some testing now, and I'm 
hoping other interested parties will step up and get some wider test 
coverage in so we can get this driver into the next Linux release cycle 
(3.9).  I created a public git repo of my working tree, which will live 
on until the driver is accepted upstream:</p>

<pre>git://git.shaftnet.org/compat-wireless-cw1200.git</pre>

<p>I'm going to hold off on submitting a v3 patch until I get more 
feedback and testing, which means it probably won't happen until after 
the new year.  Apparently most folks take it easy this time of year.</p>

<p>Thankfully, I've had another project to keep me busy.  I've spent a 
fair amount of time working on the <a 
href="http://gimp-print.sourceforge.net/">Gutenprint</a> printer driver 
package too, fixing support for the Kiosk-scale Sony UPP-DR150 photo 
printer (~8 seconds for a 4x6 print!) and adding support for the 
larger-format (8x10/8x12) Kodak Professional 1400 printer.  I don't own 
either printer; instead I reverse-engineeried the raw data generated by 
the printers' Win32 drivers.</p>

<p>Not bad for two and a half days' work, eh?</p>

<p>Meanwhile, there are now twelve Canon SELPHY photo printers on my 
desk.  The entire line is supported except for the CP-790, CP-530, and 
CP-520 -- and then only because we don't know what their USB PIDs are.  
The only one with known problems is the positively-ancient CP10, which 
locks up after the first (successful!) print.  All other models 
JustWork(tm) now. I should start getting rid of most of these.</p>

<p>If I find myself with more time on my hands I may try to add support 
to Gutenprint for another Dye Sublimation printer.  Ideally it would be 
one still commercially available, not too expensive, and a larger format 
(eg 8x10) because I can put that to use.  We shall see..</p>

<p>If I'm feeling particularly masochistic, I'll continue with my 
fumbling efforts to implement dock detection for <a 
href="http://www.rockbox.org">Rockbox</a> on the Sansa Fuze v2.  I 
haven't made much headway on that gargantuan reverse-engineering effort; 
it's mainly an exercise in learning a new set of skills.</p>

<p>I've also started reworking my website's CSS to improve its curb 
appeal.  Like any other software undertaking, days when you delete more 
than you add fill me with joy.  If I'm feeling particularly ambitions, 
I'll try doing the same to my photo archive; it could use some sprucing 
up too, but its underlying <a href="http://po.shaftnet.org">plumbing</a> 
is what could use some real hardcore loving.  It's been neglected for 
far too long, but even that's beginning to pick up, as I've begun to 
experiment with different workflows.</p>

<p>I'm really enjoying this burst of coding.  It's especially nice when 
you have something to show for it!</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/12/10/pondering_photo_organizers_future/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/12/10/pondering_photo_organizers_future/index.html</guid>
<title>Pondering Photo Organizer's Future</title>
<dc:date>2012-12-10T19:29:50-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>Last week I formally released an update to <a 
href="http://po.shaftnet.org/">Photo Organizer</a>.  It was the first 
release in two years, and had no new features whatsoever -- just a largeish
pile of bugfixes.</p>

<p>I've been thinking about PO's future lately; where I'd like it to go, 
and to a lesser extent, how to get there.  I still don't have a good 
answer.  Pretty much every feature on the wishlist is pretty invasive, 
and I just don't have the drive to make it happen, because PO has 
largely done what I've needed.</p>

<p>Most features I've added over the years have been due to my workflow 
requirements, and I've largely hit a dead end on that front.  I've 
started to experiment with alternative workflow models, but until 
something gels into a new ideal, PO won't change much.</p>

<p>Since I started on a photo-a-day commitment, my workflow has had to 
cope with more regular postings, and it's exposed a few cracks in how I 
used to do things.  I'd like to automate some things better, but I'm 
running into bigger-picture limitations in how I combine PO with my 
blogging software.  For example, none of my "witty" captions have made 
it back into PO.  Fixing this properly means writing a RESTful API to 
manipulate arbitrary data, which is a huge undertaking.</p>

<p>That said, the biggest driver of change is the massive event-type 
photography binging like what I got up to last weekend.  (Last night I 
batch imported 44 gigabytes of NEF files; 3,588 images) -- I need a 
better way of grouping, tagging, and ranking images to manage this sort 
of thing better.  Proper hotkey support would make this a lot easier.</p>

<p>Meanwhile, if the other seeds I've been sowing come to fruition, I'll 
be working with models on more formal shoots.  This will require yet 
another type of workflow -- less organization, but considerably more 
post-processing.  This means the current versioning system must be 
beefed up to handle multiple RAW renderings and sidecars.  Distributing 
the final images also exposes weaknesses of PO's permission system.</p>

<p>At the of the day, PO's just a tool that's supporting my needs as a 
photographer.  I'd rather be behind a camera than in front of a 
computer, especially given that I already spend eight or so hours a day 
writing software for my day job.</p>

<p>Anyway.  As I type this, my PO instance houses some 143,434 images, 
of which 120,070 are mine.  Not counting filesystem overhead, they take 
up some 1,509,037,063,959 bytes of disk space.  Yowza.</p>

<p>In other words, PO's going to be maintained pretty much forever.</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/11/13/66354__it_works/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/11/13/66354__it_works/index.html</guid>
<title>66/354: IT WORKS!</title>
<dc:date>2012-11-13T18:57:05-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Photos, Free Software, Project_365</dc:subject>
<description>
<![CDATA[
<p><a href="http://www.peachyphotos.com/po/photo/194874:271845"><img src="http://www.peachyphotos.com/po/image/194874:271845:2.jpg"/></a></p>

<p>This deceptively simple printer test page has been literally five 
years in the making.  It is the first time anyone's been able to 
successfully JustPrint(tm) with the "newer" Canon Dyesub printers under 
Linux, at least without jumping through some annoying hoops.</p>

<p>But it's not quite done yet.</p>

<p>I still need USB PIDs for the Canon ES3, CP-200(*), CP500, CP520, 
CP530, CP710(*), CP770(*), and CP790.</p>

<p>The ES20, ES3, CP-10, CP-100(*), CP-200(*), CP-220, CP-300(*), CP500, 
CP710(*), CP770(*), CP800, CP810, and CP900 models are theoretically 
supported but, need testing/confirmation.</p>

<p>Finally, the ES40 and CP790 are unsupported until someone comes along 
and either donates a printer (or cash) or is willing to be a guinea 
pig.</p>

<p>So, if you have one of these printers and want to use it under Linux 
(or modern OSX), drop me a line.</p>

<p><em>* == Already in the mail, so to speak.</em></p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/11/10/63365__theyre_breeding/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/11/10/63365__theyre_breeding/index.html</guid>
<title>63/365: They're Breeding...</title>
<dc:date>2012-11-10T17:56:24-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Photos, Free Software, Project_365</dc:subject>
<description>
<![CDATA[
<p><a href="http://www.peachyphotos.com/po/photo/194860:271817"><img src="http://www.peachyphotos.com/po/image/194860:271817:2.jpg"/></a></p>

<p>I'm now up to <em>eight</em> Canon dye-sublimimation photo printers, 
with two more bundles of joy on their way, all in the name of Free 
Software.  It's interesting; a proprietary printer driver was the spark 
that spawned the Free Software movement, and I'm continuing the 
tradition with these.</p>

<p>The <a href="http://gimp-print.sourceforge.net/">Gutenprint</a> stack 
is far more capable than the original Canon dyseub printer drivers.</p>

<p>On a slightly related note, Anyone out there have a coloriometer I 
can borrow?  I'd like to fully calibrate these things.</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/10/27/photo_printers_and_libusb_oh_my/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/10/27/photo_printers_and_libusb_oh_my/index.html</guid>
<title>Photo printers and libusb, oh my!</title>
<dc:date>2012-10-27T11:48:49-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>A while back, I picked up a Canon SELPHY ES1 dyesub photo printer, 
only to discover it didn't work properly under Linux, thanks to it 
needing an intelligent spooler to prevent lockups, and being just 
different enough from earlier models to require tweaks to 
gutenprint.</p>

<p>So, in the spirit of Free Software, I patched gutenprint, and wrote 
the spooler.  Over time, the spooler got smarter, supported more printers, 
achieved sentience, and brought about world peace.</p>

<p>...Until Apple revved OSX's printer subsystem and Canon neglected to 
release updated drivers for, well, most everything.  Since my tool was 
written to use linux's native usblp support, OSX users were SOL.</p>

<p>Last night, I finished rewiring it to use libusb, and accept input on 
stdin.  This enables it to be used in a CUPS filter chain, and 
theoretically supports OSX.  But that remains to be tested..</p>

<p>...And I finally moved it to version control:</p>

<pre>
        git://git.shaftnet.org/selphy_print.git
        http://git.shaftnet.org/git/gitweb.cgi?p=selphy_print.git
</pre>

<p>It still needs USB IDs for most of the SELPHY line, but otherwise 
seems to work fine with my ES1, ES2, and ES30 printers, at least on Linux.</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/09/18/oooh_i_can_haz_missle_launcher/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/09/18/oooh_i_can_haz_missle_launcher/index.html</guid>
<title>Oooh, I can haz missle launcher?</title>
<dc:date>2012-09-18T13:19:14-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<pre>
[pizza@stuffed ~]$ lsusb
Bus 001 Device 003: ID 04f9:0039 Brother Industries, Ltd 
Bus 002 Device 002: ID 1941:8021 Dream Link WH1080 Weather Station / USB Missile Launcher
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
</pre>

<p>Unfortunately, what I have hooked up to my system is a rather 
pedestrian weather station, not the more interesting missile launcher.  
And yes, I know it just fires nerf darts or something like that, but I 
can still dream about an Anti-Air missile installation controlled via 
USB, can't I?</p>

<p>On the other hand, I doubt .mil publishes their interface 
specifications, and reverse engineering a missile launcher is likely 
rather expensive.  Not to mention mildly dangerous.. </p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2012/06/12/i_can_haz_kernel_hacker/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2012/06/12/i_can_haz_kernel_hacker/index.html</guid>
<title>I can haz kernel hacker?</title>
<dc:date>2012-06-12T20:22:44-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p><a href="http://www.sagrad.com/">My employer</a> is looking for another software engineer.
Not to toot my own horn, but they basically need another me -- a low-level system hacker type.  
We design and manufacture our own hardware, so there will be a ton of device driver work, board 
ports, and general kernel hacking work for both Linux and various RTOSes.  There will also be a 
healthy amount of network protocol and general "big picture" system design sort of stuff.

<p>An ideal candidate will be able to code C in their sleep, and have a pretty healthy 
understanding of the intracacies (and harsh realities) of the IEEE802.11 alphabet soup.</p>

<p>We also are in need of a kickass QA person.</p>

<p>Oh, we're located in Melbourne, Florida, but we're open to long-distance relationships.  If 
you're interested, drop me a line.</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2011/07/08/the_continuing_joy_of_photo_printers_and_free_software/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2011/07/08/the_continuing_joy_of_photo_printers_and_free_software/index.html</guid>
<title>The (continuing) joy of photo printers (and free software)</title>
<dc:date>2011-07-08T22:28:13-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Photos, Free Software</dc:subject>
<description>
<![CDATA[
<p>Way back in 2007 I picked up a Canon SELPHY ES1 compact photo 
printer.  After some gnashing of teeth, I <a 
href="http://www.shaftnet.org/users/pizza/archives/2007/11/11/the_joy_of_photo_printers_and_free_software/index.html">hacked 
support</a> into <a href="http://gutenprint.sf.net">gutenprint</a>, and 
all was good.  Canon meanwhile announded three successive generations of 
their ES-series of printers, and I just assumed they worked the same 
way, since the CP-series were all compatible with each other.</p>

<p>It turned out the ES-series weren't.  In fact, every generation was 
subtly incompatible.  (Indeed, the latest generation of CP-series is 
also incompatible with everything else!).  But thanks to a motivatd 
soul, I was supplied with printer dumps for nearly every dyesub printer 
Canon created.  It piqued my interest, and I started generating dumps 
for the rest of the ES-series, filling in the support matrix for all 
paper types.  The code was committed to guetenprint about a week ago, 
but remained untested.</p>

<p>I decided to trolling eBay for the second and third-generation 
printers (ES2/20 and ES3/30, respectively), and much to my surprise, my 
lowball bids on two of them won.  My "new" ES2 turned up a couple of 
days ago, and the ES30 should be here tomorrow.  I spent late last night 
and part of tonight rewriting the smart print spooler the ES1 needed, 
and about 30 minutes ago I finally succeeded with successful prints with 
the ES1 and ES2.</p>

<p>The ES2 is slightly larger than the ES1, has a better UI and a more 
efficient paper path.  It also adds Memory Stick support.  Otherwise, 
it's identical under the hood, with the same print speed and output 
quality as the ES1.  We'll see what the ES3/30 brings to the table when 
I eventually end up with one.</p>

<p>But in keeping with tradition, here's the first picture I 
(successfully) printed with the ES2:</p>

<p><a href="http://www.peachyphotos.com/po/photo/86112:99778"><img src="http://www.peachyphotos.com/po/image/86112:99778:2.jpg"/></a></p>

<p>This was shot outside my office a couple of years ago.</p>

<p>I'd like to find a colorimeter so I can get a calibrated printer 
profile, but as usual, there's an endless line of more important stuff 
I'd like to get first -- like some grids for my studio flashes.  Damnit, 
photography's an expensive thing to dabble in..</p>]]>
</description>
</item>
<item>
<link>http://www.shaftnet.org/users/pizza/archives/2011/02/07/dmraid_sucks___mdraid_sucks_less___3ware_ftw/index.html</link>
<guid isPermaLink="true">http://www.shaftnet.org/users/pizza/archives/2011/02/07/dmraid_sucks___mdraid_sucks_less___3ware_ftw/index.html</guid>
<title>dmraid sucks. mdraid sucks less. 3Ware FTW.</title>
<dc:date>2011-02-07T13:31:29-05:00</dc:date>
<dc:creator>Solomon Peachy</dc:creator>
<dc:subject>Free Software</dc:subject>
<description>
<![CDATA[
<p>About two hours ago I was happily puttering around in a shell on the 
server that hosts most of my digital existence.  Until, after a routine 
software update, I was suddenly presented with some disturbing sights:</p>

<pre>
[pizza@stuffed] ~]$ yum  
Bus error
[pizza@stuffed] ~]$ dmesg
-bash: /bin/dmesg: input/output error
</pre>

<p>It seems that something had gone very, very wrong.  I trumped home to 
find the console full of disk error messages.  But that shouldn't have 
brought the system down; The OS was installed on a pair of drives set up 
in a RAID1 mirror.  There's no excuse for a read failure -- If one drive 
failed, the other should have picked up the slack and kept the system 
working.</p>

<p>Well, *should*.  I made the mistake of setting up the RAID1 mirror 
using the "dmraid" tools, which piggyback on the motherboard's 
"fakeraid" metadata. Unfortunately, it seems that this mode of operation 
doesn't handle failures worth a damn.  And that there's no easy way to 
migrate from the "dmraid" stuff to the very mature and robust native 
Linux "dmraid" tools.</p>

<p>The dmraid tools have one major disadvantage though -- they are much 
more dificult to boot from, and from the motherbord's perspective, if 
the primary drive fails, the array becomes unbootable.  So by using 
dmraid intead of mdraid, I ended up trading one (minor) failure case for a 
much more serious one.</p>

<p>How does one work around this quandry?  By going for a real hardware 
RAID controller.  The ones with onboard pocessors that do all the heavy 
lifting.  The ones that hide the messy details from the OS. The ones 
that are designed to JustWork(tm) and NotFail(tm). </p>

<p>The ironic thing is that this server already has a hardware RAID 
controller in it, a 3Ware 9550SXU-8LP, but it's maxed out with two 
4-drive RAID5 arrays totalling about 7TB.  This server's predecessors 
both had 3Ware RAID controllers -- and in my decade-long experience with 
3Ware controllers, I've not had a single controller-related failure, 
ever.  They JustWork(tm), handling too-numerous-to-count drive failures 
cleanly and transparently.</p>

<p>So, I just ordered another 3Ware 9550SXU-4LP controller to plug my OS 
array into.  It's used so I got it for cheapcheapcheap, and like the one 
I already have it's two generations older than their current top-line 
models, but it'll be more than good enough for a simple RAID1 array. 
Migrating the dmraid array over to the new controller will be an 
interesting proposition even without the flaky drive complicating 
things, but since downtime is unavoidable thanks to dmraid's failings, I 
might as well make sure things are done right.</p>

<p>If I hadn't picked up another hardware controller, I'd have migrated 
to mdraid, and booted off of an USB stick.  That solution has worked 
great at work, and those USB sticks are trivial to back up and replicate 
in case of failures.</p>

<p>In other news, the tally from this weekend is 5581 RAW photos taking 
up some 62Gigs of space.  Been to busy to post anything, but as my backlog empties out, you'll be seeing more here again.</p>]]>
</description>
</item>
</channel>
</rss>
