Jeff Epler's blog2012-06-13T12:49:53ZPhotos, electronics, cnc, and moreJeff Eplerjepler@unpythonic.netStippleGen 2—Stippler, turned friendly2012-06-13T12:49:53Z2012-06-13T12:49:53Zhttps://emergent.unpythonic.net/01339591793
<div style="float:right;clear:right"><!-- 7368233514_59f7d25603.jpg--><div class=albumouter style=width:306px id=><div class=albumimage style="width:306px;margin-left:0.0px;"><a href="https://media.unpythonic.net/emergent-files/01339591793/7368233514_59f7d25603.jpg" class="thickbox" rel="album" title="
Mark Twain, 5000 white stipples by oskay"><img src="https://media.unpythonic.net/emergent-files/01339591793/7368233514_59f7d25603-small.jpg" width=300 height=274></a><div ><div style="float: right" ><a href="https://media.unpythonic.net/emergent-files/01339591793/7368233514_59f7d25603.jpg"><img class=zoom src="https://media.unpythonic.net/emergent-files/default/zoom.png"></a></div><a href="https://media.unpythonic.net/emergent-files/01339591793/7368233514_59f7d25603.jpg">Mark Twain, 5000 white stipples by oskay</a></div></div></div>
</div>
A long time ago I wrote <a href="https://emergent.unpythonic.net/01108611472">stippler</a> and <a href="https://emergent.unpythonic.net/01133127497-stippler-source-release">put the source on my blog</a>.
However, it was pretty user-hostile software and doesn't even build with
current versions of Linux without modification. That's why I'm gratified
to see <a href="http://www.evilmadscientist.com/2012/stipplegen2/">StippleGen 2</a>, free software (LGPLv2.1+) that performs a similar function
but with a nice-looking user interface. I haven't tried it myself, but
if you are interested in making this kind of art it surely warrants a look.
CropGUI 0.1.1: now with gtk2009-07-24T02:19:06Z2009-07-24T02:19:06Zhttps://emergent.unpythonic.net/01248401946
<div style="float:right;clear:right"><!-- cropgtk.png--><div class=albumouter style=width:306px id=><div class=albumimage style="width:306px;margin-left:0.0px;"><a href="https://media.unpythonic.net/emergent-files/01248401946/cropgtk.png" class="thickbox" rel="album" title="Gtk version of cropgui"><img src="https://media.unpythonic.net/emergent-files/01248401946/cropgtk-small.jpg" width=300 height=259></a><div ><div style="float: right" ><a href="https://media.unpythonic.net/emergent-files/01248401946/cropgtk.png"><img class=zoom src="https://media.unpythonic.net/emergent-files/default/zoom.png"></a></div><a href="https://media.unpythonic.net/emergent-files/01248401946/cropgtk.png">Gtk version of cropgui</a></div></div></div>
</div>
<a href="https://emergent.unpythonic.net/01235516977">Earlier this year</a>, I released a
program for lossless cropping of jpeg images. This week, based on
feedback from Ingrid, I ported the program to gtk (it originally used
tkinter).cropgui: A Linux GUI for Lossless JPEG Cropping2009-02-24T23:09:37Z2009-02-24T23:09:37Zhttps://emergent.unpythonic.net/01235516977
<div style="float:right;clear:right"><!-- cropgui.jpg--><div class=albumouter style=width:306px id=><div class=albumimage style="width:306px;margin-left:0.0px;"><a href="https://media.unpythonic.net/emergent-files/01235516977/cropgui.jpg" class="thickbox" rel="album" title="Cropping a tiny insect"><img src="https://media.unpythonic.net/emergent-files/01235516977/cropgui-small.jpg" width=300 height=228></a><div ><div style="float: right" ><a href="https://media.unpythonic.net/emergent-files/01235516977/cropgui.jpg"><img class=zoom src="https://media.unpythonic.net/emergent-files/default/zoom.png"></a></div><a href="https://media.unpythonic.net/emergent-files/01235516977/cropgui.jpg">Cropping a tiny insect</a></div></div></div>
</div>
<b>Update</b>: See the <a href="https://emergent.unpythonic.net/01248401946">newer version of cropgui</a>
<p>Of the pictures from my recent trip I'd like to put online, I've found
that in 75% of the cases where I want to retouch the photo, it's to crop
it and nothing else. Since I shoot in jpeg, it's a lossy process to
load the jpeg in gimp, crop it, and write the result.
<p>But it turns out that debian's jpegtran has a "-crop" flag which
performs lossless cropping of jpeg images as long as the crop is to a
multiple of what the manpage calls the "iMCU boundary", a (usually?) 8x8
block of pixels. This feature was pioneered by Guido of <a href="http://jpegclub.org/">jpegclub.org</a> some years ago.
<p>There's apparently a nice <a href="http://www.softpedia.com/progScreenshots/Jpegcrop-Screenshot-91058.html">Windows front-end to this program</a>, but I didn't find a Linux one. So I wrote one! It's pretty basic,
but it gets the job done. You can download it below.Canon Digital Rebel XSi (450D) on Linux Ubuntu Hardy 8.042009-02-14T16:24:20Z2009-02-14T16:24:20Zhttps://emergent.unpythonic.net/01234628660
<div style="float:right;clear:right"><!-- IMG_0135.jpg--><div class=albumouter style=width:306px id=><div class=albumimage style="width:306px;margin-left:0.0px;"><a href="https://media.unpythonic.net/emergent-files/01234628660/IMG_0135-medium.jpg" class="thickbox" rel="album" title="ufraw-converted image"><img src="https://media.unpythonic.net/emergent-files/01234628660/IMG_0135-small.jpg" width=300 height=200></a><div ><div style="float: right" ><a href="https://media.unpythonic.net/emergent-files/01234628660/IMG_0135-medium.jpg">(M)</a><a href="https://media.unpythonic.net/emergent-files/01234628660/IMG_0135.jpg">(L)</a></div><a href="https://media.unpythonic.net/emergent-files/01234628660/IMG_0135.jpg">ufraw-converted image</a></div></div></div>
</div>
gimp-ufraw (ubuntu hardy) would open cr2 files from my new camera (Canon
Digital Rebel XSi, aka 450D), but until I applied <a href="http://const.deribin.com/ufraw_and_Canon_450D">a patch</a> the colors were all
wrong. (This is <a href="https://bugs.launchpad.net/ubuntu/+source/ufraw/+bug/228623">on launchpad</a> but
not fixed in an official ubuntu package yet)
<p>Another nice tool with this camera is <tt>gphotofs</tt>, which allows the
camera to be mounted as a filesystem even though it uses PTP rather than
mass storage. The one packaged for Ubuntu Hardy works nicely.
<p>XO-1 screen simulation2008-11-17T15:16:13Z2008-11-17T15:16:13Zhttps://emergent.unpythonic.net/01226934973
<div style="float:right;clear:right"><!-- olpcgui.png--><div class=albumouter style=width:306px id=><div class=albumimage style="width:306px;margin-left:0.0px;"><a href="https://media.unpythonic.net/emergent-files/01226934973/olpcgui.png" class="thickbox" rel="album" title="olpcgui.py in action"><img src="https://media.unpythonic.net/emergent-files/01226934973/olpcgui-small.png" width=300 height=276></a><div ><div style="float: right" ><a href="https://media.unpythonic.net/emergent-files/01226934973/olpcgui.png"><img class=zoom src="https://media.unpythonic.net/emergent-files/default/zoom.png"></a></div><a href="https://media.unpythonic.net/emergent-files/01226934973/olpcgui.png">olpcgui.py in action</a></div></div></div>
</div>
I failed to resist the <a href="http://laptop.org">new G1G1 program</a> and
ordered myself an XO-1 today. As a lot of geeks are, I'm intrigued by the
screen. <b>Updated:</b> sped up the simulation a bit with a pyrex module.Cairo-based waveform demo2008-08-15T02:59:44Z2008-08-15T02:59:44Zhttps://emergent.unpythonic.net/01218769184
<div style="float:right;clear:right"><!-- trace2.png--><div class=albumouter style=width:306px id=><div class=albumimage style="width:306px;margin-left:0.0px;"><a href="https://media.unpythonic.net/emergent-files/01218769184/trace2.png" class="thickbox" rel="album" title="Image generated by waveform demo"><img src="https://media.unpythonic.net/emergent-files/01218769184/trace2-small.png" width=300 height=300></a><div ><div style="float: right" ><a href="https://media.unpythonic.net/emergent-files/01218769184/trace2.png"><img class=zoom src="https://media.unpythonic.net/emergent-files/default/zoom.png"></a></div><a href="https://media.unpythonic.net/emergent-files/01218769184/trace2.png">Image generated by waveform demo</a></div></div></div>
</div>
It's late, but I just wanted to toss this online. It's a Python / Cairo / Gtk
based waveform viewer. Maybe it will become the foundation for a replacement
for both emc2's halscope and the sump.org logic analyzer GUI, when I find
a hundred hours or so to work on it.
<p>The main feature is that when a trace has more than one sample per horizontal
pixel it goes into a sort of "envelope" mode, with a fainter trace showing
the min and max and the bright trace following the median (not mean) value.
<p>The demo writes out 3 static pngs, then shows a window that you can re-size
to get an idea of the responsiveness. I have only run on a very beefy machine
so far, which gives the impression that all is well. Resizing is tolerable,
and exposing (and, by analogy, scrolling, when I get around to it) is pretty
responsive.
<p><p><b>Files currently attached to this page:</b>
<table cellpadding=5 style="width:auto!important; clear:none!important"><col><col style="text-align: right"><tr bgcolor=#eeeeee><td><a href="https://media.unpythonic.net/emergent-files/01218769184/demo.py">demo.py</a></td><td>7.0kB</td></tr></table><p>
Making a YouTube video of X program2007-11-26T19:29:20Z2007-11-26T19:29:20Zhttps://emergent.unpythonic.net/01196105360Instructions for recording any X program into a video suitable
for upload to youtube
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/fWKYQUj5AOs&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/fWKYQUj5AOs&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>The Bayer sensor vs the Foveon sensor (part 2 of 2)2006-10-23T18:15:08Z2006-10-23T18:15:08Zhttps://emergent.unpythonic.net/01161627308<div style="float:right;clear:right"><!-- cactus.jpg--><div class=albumouter style=width:306px id=><div class=albumimage style="width:306px;margin-left:0.0px;"><a href="https://media.unpythonic.net/emergent-files/01161627308/cactus-medium.jpg" class="thickbox" rel="album" title="cactus"><img src="https://media.unpythonic.net/emergent-files/01161627308/cactus-small.jpg" width=300 height=225></a><div ><div style="float: right" ><a href="https://media.unpythonic.net/emergent-files/01161627308/cactus-medium.jpg">(M)</a><a href="https://media.unpythonic.net/emergent-files/01161627308/cactus.jpg">(L)</a></div><a href="https://media.unpythonic.net/emergent-files/01161627308/cactus.jpg">cactus</a></div></div></div>
</div> In this part of the article, I present
the images and compare the results to my predictions.