Well folks, let’s try this again.
Across the Universe is an excellent young adult science fiction novel.
Across the Universe takes place on the first generation ship launched from Earth in our relatively near future. It’s told from two different points of view, alternating by chapter.
While not as action-packed as The Hunger Games, which I see Across the Universe being compared to in other reviews, it deals with the same themes of authority, rebellion, and relationships. Similarly, it doesn’t presume knowledge of science fiction tropes and culture.
While I haven’t confirmed it by asking someone younger than myself, I believe the beginning five pages are a good hook–in fact, I believe they grab you better than a lot of the recent YA sf does.
Is engaging within 5 pages: check!
Doesn’t require the reader to be an experienced SF reader: check!
Deals with authority, rebellion, relationships: check!
Across the Universe will be released January 11th, 2011.
Across the Universe is the first time I’ve even glimpsed inside the machinations of a modern teen book launch.
There’s a short launch day author video:
which is is different than the book trailer:
and of course, there’s an Across the Universe Facebook fan page.
The book website has interactive diagrams of the ship, done up pretty nicely. Normally I hate flashy interfaces, but it was kinda cute how you could zoom up and get cutaways of the different sections of the ship.
One of the things I do when I read a book I enjoy is look for the author on Twitter. Sometimes they’re fun to follow. Beth Revis, the author of Across the Universe, has a static website, a blog, and a Twitter page, @bethrevis.
Something that’s kinda awesome is that io9 will be posting a 111 pg excerpt from 11:11 AM Eastern to 11:11 PM Eastern on 01.11.11. That’s a substantial portion of the book! The first chapter seems to be on Beth’s site in a more permanent capacity.
Anyway, now that it’s released, Across the Universe is available at Amazon, your local indie bookstore, and hopefully your local library!
I got a few 128×64 graphics LCDs for Christmas. One of the first things I did with them was make a Mandelbrot Set viewer–with zoom!
The video is available in HD, and viewable in a larger size if you click through. The music is “Mandelbrot Set” by Jonathan Coulton.
The Mandelbrot Set is a fractal. You can zoom on the border and get pretty pictures. There are a bunch of cool facts about the Mandelbrot Set at Wikipedia, and Jonathan Coulton has a sweet song about it.
Download the Arduino sketch for the Mandelbrot Set viewer.
This requires a GLCDks0108 library available on the Arduino Playground. Currently, to run, this library needs a simple modification! In ks0108.h, move the line
void WriteData(uint8_t data); // experts can make this public but the functionality is not documented
to the public: section. This function allows you to write a byte to the display, and advances the cursor. After a cursory browsing of the datasheet, it appears the fastest way to write data to the screen. I’m in the process of getting this change made in the library so this modification won’t be necessary.
The code for this isn’t too difficult. The actual drawing of the Mandelbrot set is pretty much exactly as described in this nice Mandelbrot Set tutorial. It goes over the theory and the code for drawing the fractal. The only change I made in drawing the fractal was that I calculate 8 points, and then draw them to the screen as a group. This matches how the screen wants to receive data, and wastes less time interfacing with the LCD.
The zooming functionality is taken care of by a simple state machine in the loop() loop.
If you want to run this on a different microcontroller, the C should be fairly portable.
In terms of hardware requirements, I used a ks0108 graphics LCD. These are available from a variety of vendors–but be careful and check your pinouts! The specific one I used was this 128×64 graphics LCD from Sparkfun, but there are a variety of displays listed in the Arduino Playground site for the graphics library I used.
Besides the LCD, I used a 220 ohm resistor (R1) and switch (SW1) to toggle the backlight, a 10k potentiometer (VR1) for setting the display contrast, two buttons (SW2, SW3) for back and forward, and a 10k potentiometer (VR2) for the cursor.
I would like to take a look at fixing some of the rounding issues. There are some places where the drawing “looks funny” after enough zooms. I’m pretty sure it’s due to rounding issues with the limited floating point precision.
I would also like to improve the “back button” functionality so that you can go back in the middle of the zooming process if you make a mistake.
The controls could likely be made more intuitive by using something with a joystick. The software interface matches the input paradigm of a knob and some buttons, but if there was a cursor, and then moving the cursor made a box, the zoom would likely be more intuitive. This could be implemented with the Wii nunchuck.
More photos are available at my Mandelbrot Set photo set.
Feel free to contact me.
EDIT: This order is complete.
I’ll be making an order to Digi-Key and Mouser in the next week or so, and it will likely have the following items:
- 50+ PIC16F685 – http://mouser.com/search/ProductDetail.aspx?qs=VDoAoI/EFTMXFGEC6Nk2wQ%3d%3d
- 50+ 20-DIP IC sockets – http://mouser.com/search/ProductDetail.aspx?qs=IGgAdOvCTsSPfAw5mgVtBg%3d%3d
- 50+ 8 MHz resonator – http://mouser.com/search/ProductDetail.aspx?qs=nteEd8b0WbV5Q8PyNR3R1g%3d%3d
- 150+ Green 7 segment common anode LED Displays – http://search.digikey.com/scripts/dksearch/dksus.dll?Detail&name=160-1577-5-ND
- 50+ 4khz piezos in little plastic case – http://mouser.com/ProductDetail/TDK/PS1240P02CT3/?qs=sGAEpiMZZMs%252b6Ea5iKw4JoP/J/qwrEG3
- 50+ little black switches – http://mouser.com/search/ProductDetail.aspx?qs=xDsBkp9LkocT0c8K%252b5e/gA%3d%3d
- 100+ canonical push buttons – http://mouser.com/search/ProductDetail.aspx?qs=lK7M36XCk6JQHckSc1xIsg%3d%3d
- 50+ 10uF electrolytic caps – http://search.digikey.com/scripts/DkSearch/dksus.dll?vendor=0&keywords=P966-ND
- 50+ .1uF ceramic caps – http://search.digikey.com/scripts/dksearch/dksus.dll?Detail?name=BC1148CT-ND
- 150+ 2N3904 NPN BJT – http://search.digikey.com/scripts/dksearch/dksus.dll?Detail?name=2N3904FS-ND
- 50+ 3AAA plastic holders – http://mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMupuRtfu7GC%252bXP/CnkDyb6FUk/Lf9fbyJQ%3d
If you’d like to get some of these parts at the lower cost due to the quantity, let me know how many of what part you’d be interested in. If we get to the next price break, I’ll email folks and let them know .
Because of the holidays, the parts will probably be pick-upable shortly after the new year. I can bring the parts to TCMaker the first few meetings of the year, before school starts up again.
I’ve set up little MediaWiki instances for small groups to do work in. One problem consistently encountered is a lack of awareness of updates and changes. The Recent Pages RSS is an ok step, but sometimes RSS isn’t an option. While there are RSS to Email services, the problem can also be solved directly in Mediawiki.
I used an extension I found on the Mediawiki, MailNotification. It provides a way to email all registered users of the wiki a summary page of all the changes made since the last time an email went out. Set up in cron, it’s an excellent way to make Mediawiki more suitable for small group collaboration.
The plugin doesn’t seem to be updated anymore, and it’s had a variety of issues for me everytime I update MediaWiki. I’ve been tinkering with the code, adding more details to the summary page and making sure it works with modern versions. I threw the code up on github last week, and provided a tagged release.
Feel free to let me know if you have any issues installing or using this plugin, and if you have any patches, feel free to send them my way.
Currently, Arduino 0017 doesn’t work in 64 bit Linux, including Ubuntu 9.04. Arduino includes a copy of libRXTX, which is for 32 bit systems. Ubuntu only offers up to librxtx 2.1 something as of August 2009, and that doesn’t help either.
There’s a pretty quick way to get everything working–even the Serial Monitor!
The solution is to download Arduino 0017 for 32 bit Linux. Extract the files, and remove lib/librxtxSerial.so and RXTXcomm.jar.
Download rxtx-2.2pre2-bins from the RXTX folks. Extract the files, and copy RXTXcomm.jar and x86_64-unknown-linux-gnu/librxtxSerial.so to the Arduino lib/ directory, basically replacing the two files that came shipped with Arduino 0017.
Doing this doesn’t enable any other java application on your system to use the newer RXTX libraries, but that isn’t a problem for me. I’d much rather keep the rest of my system using packages from the repositories. The Arduino devs seem to be completely on top of the problem and the Ubuntu devs are aware as well.
Today, I read a blog post where Thomas said he was graphing the numbers of messages in his Evolution mailbox to track himself and his progress at keeping his inbox empty.
I wrote and released a Python script that does the same for IMAP servers, called inbox_count.
It’s located at http://feelslikeburning.com/projects/inbox_count/.
I made my own electronic handheld word guessing game similar to Electronic Catchphrase a few days ago.
For more details, go to the Klugephrase website.
I’ve been playing around with git and github recently, and out popped this little project, episode filer. It files your tv shows into proper directories, taking just a little bit of monotony out of your day.
The project page is at http://feelslikeburning.com/projects/episode-filer/ and it’s on github at http://github.com/adamwolf/episode-filer/.
Recently, Dreamhost began cracking down on people using their space to store personal backups. The policy states that only website-related content is supposed to be stored in your webspace area. They provide a 50GB area for you to store any files–called the Backups user. Previously, you could only SFTP into it or something–you couldn’t rsync to it easily, so it was approximately worthless to me. However, Dreamhost has a place where you can vote for features and changes, and one of them I was voting on was allowing rsync over SSH to your backups user. I got the email this morning saying it was completed, and decided to play around with encrypted, incremental backups using Duplicity.
I use duplicity to maintain my offsite backups with a “backups buddy,” someone I trade backups with. I don’t want to allow them access to my files, even if I trust them. What if they get pwned and my files end up on the internet? No thanks!
Duplicity is Free, open source, and relies on some nice standards. It uses gpg, and has a variety of endpoints supported, like Amazon S3, Gmail, and of course things like rsync servers and file servers.
Instead of me walking you through setting up GPG and SSH keys, why don’t I point you on over to rsync.net’s tutorial on duplicity, and add a little discussion.
First off, security. They export your gpg passphrase. That doesn’t really hide the passphrase from anyone who is logged on to your local machine. Is that ok? That’s your call. Assuming your gpg keys for backups aren’t the same as your normal keys, and assuming you don’t let other people log into your machine, and assuming you run a tight shop normally, that might be ok. This doesn’t lower the security of the remote site. If the Feds or Dreamhost or whoever try to open your files from the remote (Dreamhost’s) end, without access to your computer, this doesn’t lower the security.
There is discussion around the ‘nets about turning off signing might allow you to not have to export your passphrase. I haven’t tried this, but it sounds like it might be a worthwhile tradeoff. Increasing the security of your gpg keys but eliminating the chance you can cryptographically prove your backups weren’t tampered with in their encrypted form is a call you’d have to make.
Next, Dreamhost has a 50 GB limit on the Backups user, and instead of stopping you at 50 GB, Dreamhost will charge you 10 cents a gigabyte per month. You’ll have to monitor that yourself.
To actually use their tutorial, replace the destination of the commands to backup.dreamhost.com, and replace the user with the user that Dreamhost gives you when you activate the user through the pane.
Pretty nifty, Dreamhost, pretty nifty…