Skip to content

A Note on Bumpers

I thought it odd when, from the very beginning, the iPhone 4 had bumpers. From the moment that the first leaked photos hit the streets, the phone was wrapped in a bumper. Now, the word on the street is that tomorrow, Apple’s going to announce free bumpers for all. Call me paranoid, but I’m sure they planned this all along. They made a sweet phone with antenna issues, but in the cut-throat world of cell phone design (where every cubic millimeter is vital to being successful) they decided it was better to go to market with antenna issues and use bumpers to cover their asses than to scrap the flawed design and start again.

Sexy Alphabet Image Generator

When my girlfriend came across this erotic alphabet, the first thing she wanted was to be ableĀ  to spell out various things with it. Add a pinch of python and php and the result is the Erotic Alphabet Image Generator.

The source code of the script used to generate the images is available here.

Tagged , , , , , , ,

M-Set update

So, I know that I’ve been harping on this a bit, but I’ve re-written my M-Set renderer in C, so it’s faster, and I’ve added a few more command line flags to make it easier to use.

Get the code here.

Tagged , , , , , ,

Update: Migratory Internet Junk

I know it’s taken me a long time to post this, but I received my box of migratory junk on May 10! I got box INTJ-7 which had been shipped out by a nice guy from San Diego. I don’t have a lot to say now (and no pictures) but I’d like to share some of what I got out of it. Perhaps my biggest find was right on top: a Hand Held Products IT4410 2D barcode scanner. On the product page I found theĀ manual (pdf link) which explains all of its features.

HHP 4410HD Barcode Scanner

It turns out that the scanner emulates a PS/2 keyboard and will read almost any 1D or 2D barcode symbology. After a few hijinks with a loose ribbon cable and flaky PS/2 support on my computer I got the scanner working perfectly. I was even able to change its configuration by scanning barcodes from the manual displayed on my LCD (though I don’t know if it will work with glossy screens — mine is matte).

I’m planning on putting up a more complete summary of what I’ve found, but here are a few other things that caught my eye:

  • A solenoid-controlled proportional valve for small pneumatics or hydraulics.
  • A bag of large rubber grommets, one of which I cut up to replace the feet on a table lamp.
  • Three matched stepper motors.
  • A worm-gearbox connected to a large motor with integrated optical encoder.
  • A wide variety of IR LED/phototransistor gates.
  • A pile of 1.8V, 2.5V and 3.3V voltage regulators.

Stay tuned for pictures and more details on what I’m taking and what I’m going to do with it.

Tagged , , , , , , , , , ,

Heads Up: Migratory Internet Junk

If you haven’t heard of TGIMBOEJ (The Great Internet Migratory Box Of Electronics Junk), you should definitely check it out. The basic idea is that a box of random electronic junk gets shipped between makers and tinkerers, each of whom take something and contribute something to the box, and document what they end up doing.

To make a long story short, I was recently offered a chance to receive one of these migratory lending libraries, so expect to see something in this space about it soon.

Tagged , , , , , ,

Clever Stencil

I ran into this stencil on the side of a fire extinguisher box at Reed College and thought it was delightful.

Tagged , , , ,

More Mandelbrot

I just recently revisited the M-Set code from my Perl Snippets post. The code I had was pretty ugly, so I decided to rewrite it in Python. The result is not only a lot cleaner and easier to understand, but it’s also a lot faster:

$ time python mandel.py > \dev\null
real	0m0.051s
user	0m0.036s
sys	0m0.010s
$ time perl mandel.pl > \dev\null
real	0m3.518s
user	0m3.463s
sys	0m0.029s

You can find the code here.

This script works well for zooms, as long as you stay below a few thousand iterations. The following picture was generated with x=-1.1887204, y=-0.3032472, width=0.01 and 150 iterations.

Tagged , , , , , ,

A useful calendar in Conky

Since I got a new desktop a month or so ago, I’ve been running Ubuntu as my main operating system, and am using Conky for a nice heads-up-display. There are a lot of articles on the web about both Ubuntu and Conky, but one thing I couldn’t find a good, accurate how-to on was getting a calendar that highlighted the current date. While getting the calendar is easy using the cal command, actually getting the date highlighted is somewhat hard, and all of the articles I found suggested methods that broke in various situations. However, I managed to get it all worked out, and have a beautiful calendar that looks like this:

After the jump, I’ll give you the code and explain how it all works. Continue reading ›

Tagged , , , , , , , , , ,

iWork Autosave

So I had the wonderful experience this weekend of losing over 1,200 words of work on a paper because I forgot to save it regularly. I was really, really sad about that and really bummed that Pages, my word processor of choice (I love the formatting tools), doesn’t support either autosaving or document recovery. However, my preference for Pages is strong enough that I didn’t jump ship to an auto-saving editor. Instead I went out and found WorkSaver. WorkSaver
Worksaver simply sits in your menubar and, at a definable interval will save every iWork document you have open, provided that it’s already been saved once. This means that when I’m writing I don’t have to even worry about saving my document after creating it and choosing where to save it. Of course, it’s a shame that you have to manually save the file when you create it, but it’s a lot better than losing all your work. I can highly recommend WorkSaver if you use iWork simply for the peace of mind it provides. Of course, it’s not perfect for everybody, but when I’d rather focus on writing a paper than on making sure my computer doesn’t decide to make it all go away, WorkSaver is just what I need.

Tagged , , , , , , ,

Perl Snippets

I’ve been getting into a mood lately that makes me fiddle around with fun Perl stuff, but sadly school’s picking up to the point that writing anything up isn’t going to happen. However, I have a couple short scripts that I’m just dying to share.

Just Another Perl Hacker

I figured that it was about time in my hacking career (read: I was bored enough) that I should make a japh script. After a couple attempts I came up with this:

#!/usr/bin/perl
while(<DATA>){
 	for (map{ord($_)-33}split ''){
		$__++;
		$_||(print(chr($__+19))&&($__=0));
	}
}
 
print "\n";
 
__END__
                   /|                        |\
      !            ; :                        : :
                  | Y,                      ,P |
     !             |  Yb.        __        ,dP  |
                  l\  YMMb,_ _,/  \,_ _,dMMP  /f
  !                 j;  `YMMP'  `--'  `YMMP'  ;j
                   : \   YP`-._    _.-'YP   / ;
  !            !      \ `\,  _,\_    _/,_  ,/' /
                     `,_,   \`o>  <o'/   ,_,!'
                         `\            /'
                           |  _    _  |
      !                     / 88b  d88 \
                           \ `8P  Y8' /``-.
             !               `\,    ,/      \
                             _`----'        \
                  !        _.'/ '          `, \
                        .'_,'_..._          \ ;
       !               .',/.dMMMMMMb. |      /  \
                    .'./.MMMMMMMMMMM ; !    /    ;
                   / /.MMMMMMMMMMMMM/     /     ;
                  | ;dMMMMMMMMMMM!P/'   ,/'   !    ;
                  |/dMMMMMMMMMP'     .'          |
   !               ;dMMMMMMMMM|     _/            |
                 ;dMMMMMMMMMMb_|_!| /;            ;\,
                 dMMMMMMMMMMMM`M`M`;.---..      '   `\,
                :M!MMMMMMMMMMMMMMMP/'     `\            \
               /|MMMMMMMMMMMMMMP/          \    _!_      `.
  !            / |MMMMMMMMMMMMMM|            |.-'  `-._    \         .'\
             ;!  ;MMMMMMMMMMMMMM|            :         `-._ `-.     /  _\
             |   ;!MMMMMMMMMMMMM;            |             `-. `-.._.'/
              \   `\YMMMMM!MMMP/'\           |                `~~----'
               `-._, ``YMMMP'_.-'\         ! ;_
                 |      /         `-.,_./     7
                _/    `\,    !        /      _/
             ,-' ,  ,   /         _.'      /
            (_(_(__(__.'       !,-'        /
                              (__(__(_(_/'

Download.

I’ll let you go ahead and figure it out on your own. It’s not super-hard, but it’s fun.

Mandelbrot

In another fit of boredom I decided that it was finally time to create a mandelbrot set renderer. I originally tried to make one of these in basic, long before I had the math to do so. I was proud that I got the real axis to render, and figured it was time to complexify it. To keep things simple I decided to make it render an ASCII-art version of the set that would fit in a terminal window. The output looks like this:

                        ...............................:::::oo@@@@o::::..........
                      ...............................::::::O@@@@@@@@o:::::.......
                     .............................::::::::oO@@@@@@@@o::::::::....
                   ...........................::::OOO8ooO@O88@@@@@@8@O8o::::Oo:..
                  .......................:::::::::o8@@@@@@@@@@@@@@@@@@@@OO@@@@::.
                 ...................:::::::::::::oOO@@@@@@@@@@@@@@@@@@@@@@@@@o:::
                ................:::::::::::::::o@@@@@@@@@@@@@@@@@@@@@@@@@@@@Oo:::
               ..............::::@oo::oOoo:::ooo@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8o:
               ...........:::::::oO@@@O@@8@OooO8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O::
              ..........:::::::::oO@@@@@@@@@@88@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@::
              ........:::::::8ooO8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o::
              .:::::::::::::oO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o:::
              @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Oo::::
              .:::::::::::::oO@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o:::
              ........:::::::8ooO8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o::
              ..........:::::::::oO@@@@@@@@@@88@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@::
               ...........:::::::oO@@@O@@8@OooO8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O::
               ..............::::@oo::oOoo:::ooo@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8o:
                ................:::::::::::::::o@@@@@@@@@@@@@@@@@@@@@@@@@@@@Oo:::
                 ...................:::::::::::::oOO@@@@@@@@@@@@@@@@@@@@@@@@@o:::
                  .......................:::::::::o8@@@@@@@@@@@@@@@@@@@@OO@@@@::.
                   ...........................::::OOO8ooO@O88@@@@@@8@O8o::::Oo:..
                     .............................::::::::oO@@@@@@@@o::::::::....
                      ...............................::::::O@@@@@@@@o:::::.......
                        ...............................:::::oo@@@@o::::..........

The code’s far from polished and not what I like to publish, but it’s a fun thing to look at and offers you some neat abilities to poke things around and fix some pesky problems that just need clear thinking applied to them. It’s available here.

Tagged , , , , , , , , , ,