1.1.3 - IPSF Keep's On Truckin' 4
Like I thought, IphoneSimFree’s unlock continues to work with recent iPhone updates. Taking the baseband out of lockdown requires a little minicom pockery until we see a patched lockdownd - I’ll look into patching it this weekend. In the meantime, here’s some screens of Google Maps’ location finder in action:

Lightweight, fast Rails stack - Thin & nginx 1
Since purchasing a slice of heaven a few days ago, I’ve setup a very lightweight Rails stack consisting of Thin & nginx for my Rails needs. Since I went for a slice with just 256MB of RAM, memory consumption becomes a pretty serious issue. nginx has been around for quite a while now, and has recently started to become more and more popular in Rails deployments due to the fact that’s incredibly lightweight, very fast and stable - perfect not only for VPS jerks like me, but for anyone who really doesn’t feel it’s necessary to run Apache for static content/cluster proxying/load balancing. Thin is something I came across very recently and I decided to try is as a replacement for mongrel since I’d heard some great things about it, even if it is still alpha. It’s performance in comparison to mongrel (even with a tacked on event machine) looks very impressive on paper:

Setting up clustering with it is a snap, just spawn the processes and pipe them into nginx. Here’s a startup script borrowed from Stephen Celis:
namespace :thin do
namespace :cluster do desc 'Start thin cluster'
task :start => :environment do
`cd #{RAILS_ROOT}`
port_range = RAILS_ENV == 'development' ? 3 : 8
(ENV['SIZE'] ? ENV['SIZE'].to_i : 4).times do |i|
Thread.new do
port = ENV['PORT'] ? ENV['PORT'].to_i + i : ("#{port_range}%03d" % i)
str = "thin start -d -p#{port} -Ptmp/pids/thin-#{port}.pid"
str += " -e#{RAILS_ENV}"
puts str
puts "Starting server on port #{port}..."
`#{str}`
end
end
end
desc 'Stop all thin clusters'
task :stop => :environment do
`cd #{RAILS_ROOT}`
Dir.new("#{RAILS_ROOT}/tmp/pids").each do |file|
Thread.new do
if file.starts_with?("thin-")
str = "thin stop -Ptmp/pids/#{file}"
puts "Stopping server on port #{file[/\d+/]}..."
`#{str}`
end
end
end
end
end
end
Then spawn however many processes you want using something like:
rake thin:cluster:start RAILS_ENV=production SIZE=2 PORT=3000
To stop them, use:
rake thin:cluster:stop
With that all nicely setup, you can use an nginx config similar to mine to get things in order:
upstream dapperjerk {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
server {
listen 80;
server_name www.dapperjerk.com;
rewrite ^/(.*) http://dapperjerk.com permanent;
}
server {
listen 80;
server_name dapperjerk.com;
access_log /home/jason/public_html/blog/log/access.log;
error_log /home/jason/public_html/blog/log/error.log;
root /home/jason/public_html/blog/public/;
index index.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect false;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://dapperjerk;
break;
}
}
}
And that’s really all there is too it. I’m not a masochist so I’ve never bothered to fully read Apache’s documentation, but I don’t think I’m going out on a limb here by saying that it seems to be a lot easier to manage nginx. I haven’t really put thin through its paces yet, but we’ll see in the coming weeks as I cobble together a custom blog app to run this place.
iPhone GPS (while we wait) 6
Since we’re all stuck waiting for a 1.1.3/1.1.4 jailbreak, I’ve yet to actually see how Google Maps’ faux GPS works in person. LocateMe, a neat cell tower triangulation app showed up in official Installer.app repositories last night so I got to take it for a spin. It works really, really well. It pinpointed me to within 200m of my actual location. Here’s some screenshots:


AOL testing XMPP
You’re a couple of years late to the party guys, but pull up a stool and lets chat.
xmpp.oscar.aol.com: 5222
screenname@aol.com / ICQUIN@aol.com
Enable TLS
1.1.2 OTB Unlocked (Hardware)
Some semi-good news for poor sods with 1.1.2 out of the box iPhones reached my eyes & ears this morning - 1.1.2 iPhones with the v4.6 bootloader can now have their bootloader downgraded to 3.9 and then unlocked. Unfortunately this remains a hardware testpoint method for the time being. If you’re brave and fearless you can follow geohot’s guide to doing this here.
Dearest NVIDIA, 1
Please please please fire whoever is in charge of naming conventions. I present to you, dear readers, the 8800 series in order of performance:
- 8800 GS 384MB
- 8800 GS 768MB
- 8800 GTS 320MB
- 8800 GTS 640MB
- 8800 GT 256MB
- 8800 GT 512MB
- 8800 GTS 512MB
- 8800 GTX 768MB
- 8800 ULTRA 768MB
Remember the old days when explaining what graphics card you had went something like this?
“So yeah, what kind of graphics card do you have nub”
“Voodoo 2”
“Cool, 8MB or 12MB?”
Jiggy - Native iPhone apps using JavaScript! 3
“Simply put, Jiggy is the easiest way to create applications for the iPhone (or iPod Touch). With just Jiggy and a browser, you’ll be able to write an awesome iPhone application in a matter of minutes. JiggyApps run natively on the iPhone, so there is no messing around with HTML and the limitations of Mobile Safari. At the same time, you don’t need a compiler or even a Mac, because JiggyApps are written in JavaScript.” - http://www.jiggyapp.com/
Came across a few days ago and thought I’d share, it’s incredibly nifty. Basically, with the Jiggy runtime, you write your application in pretty JavaScript and see this code bootstrapped and executed as a native iPhone application. As it’s JavaScript, the syntax is very nice too:
Plugins.load( "UIKit" );
var window = new UIWindow( UIHardware.fullScreenApplicationContentRect );
window.setHidden( false );
window.orderFront();
window.makeKey();
window.backgroundColor = [ 1 , 1 , 1 , 1 ];
var mainView = new UIView();
window.setContentView( mainView );



