Cyanogenmod Infuse 4G (Unofficial rom build)
[ROM][2.3.7]Compiled CM7 for Infuse - Updated 1/12/2012.
Some developers over at XDA have been working on porting Cyanogenmod 7 to the Samsung Infuse 4G. While there is not yet an official Cyanogenmod release, there is a working rom available at the link above. While I would have preferred to wait until the Infuse code is added to the official Galaxy S branch to set this up on my phone, the recent CarrierIQ news gave me sufficient motivation to go ahead with this rom.
The instructions in the linked thread have everything you need, including instructions on how to root. I used a different method to root my device when I first got it (installing a different kernel using Odin), which actually caused me a bit of trouble; after rooting I had reinstalled the stock kernel, which bootlocked my phone. It took me a while to realise this was the problem, but once I did I just reinstalled the community kernel and everything went smoothly from there.
So far my experience with this rom is quite good. I have found that Swype has been a bit crashy, so I've had to reinstall it a couple times, but other than that have experienced no bugs.
EDIT: The link was to a thread that was no longer being updated, so I changed it to an active one.
Free SSL certs with StartSSL
StartSSL™ Certificates & Public Key Infrastructure - How to Install.
I've always been frustrated by the fact that SSL certs for a website run in the $70/year and up range, which sets https (without having to deal with annoying untrusted certificate warnings and errors) beyond my limited, hobbyist budget. However, I recently heard about StartSSL offering free basic certs, so I set it up today.
After a bit of fiddling (the SSL way of doing things is new to me), it's all up and working! At first only Chromium was calling my site verified, Firefox wasn't giving a bad cert error but was not convinced of the site's authenticity, and Fennec & the Android browser were giving me unknown cert errors. It turned out I hadn't installed the chain certs (a new concept to me), but once I got those in, everything was golden.
Cyanogenmod (Android) on touchpad
I recently got an android phone (I'm using it to write this blog post, over an ssh tunnel no less) and the joy of all these great apps tempted me to try to install Cyanogenmod's Android port on the touchpad on the weekend. The process was very smooth, and it is working quite well. I got a couple of sleeps of death, but disabling the screen lock seems to have clearwd it up.
Vive les logiciels libres!
HP Touchpad running Ubuntu Linux!
We managed to get our hands on an HP touchpad in the fire sale, and I've been playing with getting Linux running on it. Here are a couple of videos of where it's at so far. About the only thing not working at this point is screen rotation, which I personally don't have the skills to implement. Hopefully the webos-internals crew will get it figured out soon.
A couple of key tools making it workable on the tablet are easyswipe for gestures and onboard for the onscreen keyboard. I had to build my own onboard keymap for the device. The desktop environment is LXDE, to keep things light and snappy.
For instructions on how to do this, check out this thread at precentral. The first post will get you into a basic Ubuntu environment, then my instructions on how to get to a nice desktop are down on page five of the thread.
Why I Love Free/Open Source Software (or, unity maildir indicator applet take 2)
EDIT: with Chris' consent, the script is now released under the WTFPL.
So this morning I wandered over here to my blog to post about ethics and software, specifically on the topic of why I appreciate Free Software and avoid Apple products, but I noticed this comment on a post about a script I had written (good thing I decided to look through my auto-filtered comment spam folder!). Chris Irwin had found the script, and made it better, implementing a feature I had not bothered to figure out how to do for myself, and posted the source.
This is the greatness of open software: find something that is almost what you need, but not quite, so change it! Share, and share alike!
I took a look at his code, and adopted it myself. And then I modified it more, to make it a little better still. Here's the latest version: maildir-indicator.py Chris licensed his changes under the GPL3, so the same license applies to this.
Antisocial Networking
Facebook. Everybody has it. Everybody uses it. It is worth billions. Google is trying to muscle in on its game with Google+. But exactly what does it do?
Honestly, it seems like the answer to that question is not much. It allows us to share photos. It allows us to keep up to date on what our friends are doing. It allows us to write blog posts, comment on friends' interactions, photos and posts. The thing is, we've had applications to do all of this for decades. Think about it: blogs, flickr and its ilk, message boards... facebook hasn't actually developed anything new here. Yes, now they're moving into voice & video chat, but again, that's nothing new. The only thing that facebook does that's new is to aggregate these activities together in one centralised, easy to use place. And they make a boatload of money by manipulating all that data we've entrusted to them to sell us stuff.
Now, my opinions on centralised, monolithic cloud apps are well known (short version: I think they're terrible for freedom, personal data ownership, and privacy). And yet I use facebook on a daily basis. But wouldn't it be nice if we could simply add the aggregating glue that facebook excels at on top of the technologies that already ran the social content before FB existed? I mean, build a facebook-like interface that would let us see and interact with friends blogs, photos, statuses, etc, but let the data stay on those distributed systems? So if you comment on a friend's blog post that shows up on your social feed, that comment gets pushed out to their actual blog, be it wordpress, blogger, drupal, or whaever other platform, instead locking everything in Facebook's own servers? It's kind of like an RSS aggregator, with the twist of pushing data out rather than just pulling it in.
I've been mulling this idea for a goodly while, and this week (since I wanted a vacation project) I started coding up a prototype. It's still in really early development, but it's gradually coming together, and is showing promise. I'll surely post more information in the coming days. Here are a few notes on what it does/will do:
- Aggregate social data from a number of sources (blogs, twitter, image feeds, etc). So far, I've got twitter and rss incoming
- Allow a Person (or friend) to not simply be linked to one such service, but many -- ie, Joe could have a blog, twitter feed, image feed, etc, all of which are attributed to a unified Person on the feed (this is implemented)
- Allow transparent replying to each of these feeds. This is without a doubt going to be the most difficult part, particularly to open up as many services as possible. I'm hoping to build this on OpenID as much as possible.
It actually seems pretty simple, doesn't it? I'd love to hear what others think of the idea. While I realise that it's unlikely that this will spark a revolution, I'm hoping it'll prove interesting at least to a certain community. If and wen I get it to a point where it's useful, I'll release the source and set it up as a public service.
If by any chance you have programming inclinations and would like to help out, drop me a line. I'm building it on python and django, so obviously familiarity with these technologies would help...
Unity indicator applet: maildir check
UPDATE: My code was found by another mutt user and modified, his changes are here, and I've changed it a bit more here. It now integrates with the unity messaging menu and shows notifications like it should!
As I mentioned in my last post, I've been transitioning to a local Maildir for my email. One downside to this is that the mail indicator included with Ubuntu's Unity desktop requires you to run Evolution to get mail updates. Now I know it also works with certain other MUAs (ie, Firebird), but I like Mutt, so I just wanted a simple indicator in Python to check my Maildir. So I did some googling and found some examples of indicator applets in Python, and coded up as simple applet. Voilà:

So all it does is poll my Maildir, and turn the icon red when I have messages; pretty simple. As you can see I currently have two little mail icons in my indicator; that's because I'm not integrating at all with the Ubuntu messages indicator. If I get a coding itch I'll investigate doing that. Other things I'd like to add are configurability for mailboxes as well as MUA of choice (the Config menu item is just a stub right now) and popup notifications for new messages. If I get those things done I might actually feel inclined to submit the code to someone, somewhere. For the moment, I'll leave the code here in case anyone wants example code of a really simple indicator applet. Feel free to do whatever you want with this code.
#!/usr/bin/env python
import sys, os, gtk, appindicator
CHECK_FREQUENCY = 60 # seconds
MAILDIRS = [ "/home/brad/Maildir/" ]
DEBUG_LEVEL = 0
class mailIndicator:
def __init__(self):
self.ind = appindicator.Indicator ("debian-doc-menu",
"indicator-messages",
appindicator.CATEGORY_APPLICATION_STATUS)
self.ind.set_status (appindicator.STATUS_ACTIVE)
self.ind.set_attention_icon ("new-messages-red")
self.buildMenus()
self.ind.set_menu(self.menu)
def buildMenus(self):
self.menu = gtk.Menu()
self.mutt_item = gtk.MenuItem("Launch Mutt")
self.mutt_item.connect("activate", self.launch_mutt)
self.mutt_item.show()
self.menu.append(self.mutt_item)
self.maildir_item = gtk.MenuItem("Configure Maildir(s)")
self.maildir_item.connect("activate", self.maildir_clicked)
self.maildir_item.show()
self.menu.append(self.maildir_item)
self.quit_item = gtk.MenuItem("Quit")
self.quit_item.connect("activate", self.quit_clicked)
self.quit_item.show()
self.menu.append(self.quit_item)
def run(self):
self.check_mailbox()
gtk.timeout_add(CHECK_FREQUENCY * 1000, self.check_mailbox)
gtk.main()
def maildir_clicked(self, widget,data=None):
# stub
m = gtk.MessageDialog(None, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE, "STUB")
m.run()
m.destroy()
def quit_clicked(self, widget,data=None):
sys.exit(0)
def launch_mutt(self, widget,data=None):
os.system("gnome-terminal -e mutt &")
def check_mailbox(self):
DEBUG("Checking Maildirs")
newmail = False
for maildir in MAILDIRS:
newmail = (newmail or (len( os.listdir(maildir + "new") ) > 0))
if newmail == True:
self.ind.set_status (appindicator.STATUS_ATTENTION)
DEBUG("new mail detected.", 2)
else:
self.ind.set_status (appindicator.STATUS_ACTIVE)
DEBUG( "no new mail detected.", 2)
return True
def DEBUG(message, level = 1):
if DEBUG_LEVEL >= level:
print message
if __name__ == "__main__":
indicator = mailIndicator()
indicator.run()
Encryped mailbox on mailserver
I've been playing with a bunch of security/crypto software lately and am considering migrating my mail server off of Google Apps to my own server. In considering potential setups, I thought it would be nice to be able to have my mail server encrypt all incoming mail before storing it. That way, if ever the server is compromised, there is no way that an attacker could read my email. The flow I wanted was to have Postfix deliver to Procmail, which would encrypt the message with GPG to me, then store it in the server-side maildir. The encryption is done asymmetrically, so only my public key is stored on the server -- the messages cannot be decrypted until I have downloaded them onto my machine.
Before implementing all this, I decided to Google whether anyone else had done it before, and I found this wiki page that laid it all out like child's play. I guess I'm not quite as original as I had thought. That's ok, though -- it was simple, it works, and it's effective.
My homemade Kindle case
I made a case for my kindle yesterday. The materials used were:
1) the cover from an old Bescherelle (a French verb reference book)
2) an old pair of jeans
3) 2 paperclips to make the hooks (zoom in on 4th picture to see)
4) thread
5) a bit of plastic to mount the hooks in the spine.
I plan on adding an elastic strap à la Moleskine.
The Antigrav Magnetic Spice Rack
Ok, so the name makes it sound a little more high tech and futuristic than it really is, but still, it's an effective way of storing my spices. They're organized by a mix of alphabetical and style of cuisine (ie, Indian spices together, Itailan, together, Mexican, Chinese, etc).
The project was pretty simple. Step one was fastening a metal plate under a cupboard. I used the top of a music stand the rest of which had been lost.

I then used Gorilla Glue to glue neodymium magnets (from eBay) to the top of my spice jars:
So the glue would stick, I scratched up the smooth surface of the magnets and the top of the spice jars with sandpaper.
And that's it!










