


Blog




Programming Toys
Links Worth Your Time
Links Worth Your Time
- xkcd (Web Comic)
- Penny Arcade (Web Comic)
- The Craft of War: BLIND (WoW Video)
- WoW Programming
Blog Post
I don't usually do reviews and this probably isn't the best place to post a review that people will actually be able to find, but here goes.I decided it was time to buy a charger, stand and fm transmitter for my iPhone. Previously I had been using the ubiquitous Griffin iTrip FM Transmitter and Car Charger with my 3rd generation iPod, but the old version I had didn't work with my iPhone so I basically decided to leave the iPod in the car. However, I recent decided I needed a stand for my iPhone to better use the maps and GPS while driving. Also, I don't have an auxiliary input on my car stereo. I'd prefer that over an FM transmitter any day.
So I researched a few of the FM Transmitters and stands that work with the iPhone and found none of them perfect, and most of them expensive. I finally settled on a CarFM by pdo because the price was right ($25-$45 depending where you buy) and the reviews were decent.
This is what I've discovered:
1) The CarFM has a headphone wire as well as an apple jack. This allows you to control the transmitter's input volume, but otherwise isn't very useful and requires plugging in two things instead of one. Also your volume will probably be maxed for the car, which means when you later use your iPhone with headphones the volume will be at max, beware!
2) The FM transmitter has a superior signal to any I've used before.
This has partially to do with the fact that it's connected by metal to your dashboard and partially just because it has a strong signal. However, it is so strong that nearby stations gain static. For instance set to 106.1 the transmitter makes the normally clear KROQ on 106.7 unlistenable.
3) The transmitter is always transmitting when plugged into the cigarette lighter, even if no iPhone/iPod is plugged in. I wish there were an off button to save my car battery a bit of charge. I think it's also still transmitting when the car is off, at least all the lights stay on, at least until the car cuts power to the cigarette lighter.
4) Receiving a phone call stops the music and puts the phone on speaker (iPhone speaker, not car speakers). This is essentially useless in a running car. I haven't tried it with a bluetooth headset yet, that might work better.
5) The stand seems to be sturdy enough in my car, better than I thought it would be, but it's still only held up by a circular connector, which might slip more over time.
6) The stand's flexible wire is obviously fixed length. In my case the length is pretty good, better than the short competitors.
7) The auto-seek button works pretty well at finding an empty station, but the transmitter is pretty strong so it doesn't have to be perfect anyway.
8) The station is on the top of the display which is a little awkward, but really if the signal is good you don't really need to look at after the initial setting. I'd recommend making a radio bookmark for the station you pick.
9) The station light and blue indicator light on the charger are always lit, which may annoy you and sucks a tiny amount of power. Not a big problem compared to the transmitter always transmitting.
If that sounds sufficient to you then go for it. It does what it says it does, but it's not perfect.
Labels: car, fm transmitter, iPhone, iPod, review
Blog Post
I was surprised when I couldn't easily google for a Lua deep compare function. It's main purpose is to compare tables and check if they have the same values, but of course it's recursive so it just uses ~= to check for difference in non-tables.Anyway, so I wrote my own and figured I'd post it here for posterity. Maybe you can come up with a shorter version?
-- Deep Equals
local function equals(t1, t2)
if t1 == t2 then
return true
end
if type(t1) ~= "table" or type(t2) ~= "table" then
return false
end
local v2
for k,v1 in pairs(t1) do
v2 = t2[k]
if v1 ~= v2 and not equals(v1, t2[k]) then
return false
end
end
for k in pairs(t2) do
if t1[k] == nil then
return false
end
end
return true
end
Labels: compare, equal, equivalence, lua, programming
Blog Post
I just died... and went to heaven... and I've come back to give you the recipe...Ingredients:
-Godiva Chocolate Liqueur
-Bailey's Irish Cream
-Ben & Jerry's Chocolate Fudge Brownie Ice Cream
Instructions:
1) Put them all together in a mug.
2) ...
3) Profit!
Oh man, you have no idea. You NEED to try this if you consider yourself a chocoholic. Otherwise.... no... there is no otherwise! You NEED to try this!
Blog Post
So I spend a lot of my time at work tooling around on a remote server through ssh. Here are a few of the aliases I use everyday that make my life a little simpler. Put them in your login script and save yourself some headaches!#setup color ls
alias ls ls-F ; set color=ls-F
#ls shortcuts (cause 2 chars is better than 4!)
alias la 'ls -a'
alias ll 'ls -lg'
#vim color shortcut
alias vi 'vim -X'
#make grep ignore svn files
alias grep 'grep \!* | grep -v /\.svn/'
#remove those pesky Permission denied lines when using find
alias find 'find \!* |& grep -v /Permission denied/'
#change dir and list contents
alias cdls 'cd \!*; ls'
Blog Post
Ok, so this isn't a technical post nor applicable to the web at large, but last time I checked there were 30+ places to eat within 5 miles of UC Irvine (my place of work). So, I'll try and enumerate some of them here if I can; obviously I wont get all of them. I'll probably stick to <$10 ($) and <25 ($$) per person places that you might eat at lunch.On Campus @ UCI
| University Center
| Albertsons Place
|
Culver Center
| ||
The Bluffs
| Michelson CPK Place
| Miscellaneous
|
TODO:
Ralphs Place (Harvard and Main) - Corner Bakery,
Jamboree places by Google - Wienerschnitzel,
Crossroads Shopping Center (Barranca and Culver) - Target,
The District (Barranca and Jamboree) - Chick-fil-a
If you've got any more let me know!
If you don't know where something is... Google it!
Blog Post
Of course, I didn't find a similar report until after I had started installing the update.But let me confirm:
The 2.0.1 update for the iPhone released today does in fact overwrite firmware and undoes what the PwnageTool allowed.
I haven't yet tried to use the 2.0.1 .ipsw with the PwnageTool, but I doubt it will work.
In fact when installing 2.0.1 after the pineapple log popped up it was followed by a cartoon of Steve Jobs with his hands in the air and a 'say' bubble over his head, which I didn't look at fast enough to read. Then it went to an apple logo like the un-jailbroken boot screen.
It seems the update is actually a re-image of the iPhone operating system. I'm going to try using the PwnageTool on the 2.0.1 ipsw and see if that works.
Edit: PwnageTool does not yet work with the 2.0.1 firmware.
Edit #2: PwnageTool Has now been updated to work with the latest firmware.
Blog Post
1) Jailbreak your iPhone
I'm gonna assume you did this already, if you're actually trying to change your root password. There's no reason to change your password unless you jailbreak your iPhone, because no one will be able to access its command line in the first place.- PwnageTool: http://blog.iphone-dev.org/
2) Enable and use Terminal on your iPhone
- Open the new Cydia app that PwnageTool installed and install MobileTerminal
- Launch the new MobileTerminal app (Skip to step 3)
2.1) (Alternate) Enable and use ssh on your iPhone
- Open the new Cydia app that PwnageTool installed and install OpenSSH
2.2) (Alternate) SSH into your iPhone from a computer on the same network
- Get the iPhone's IP from Settings > Wi-Fi > Blue arrow next to your network > IP Address
- At the command prompt (In Terminal on Mac or an ssh client on a PC):
ssh root@iphone.ip.address.here
- Enter the default root password: alpine
3) Change your iPhone's root password
- At the command prompt:
/usr/bin/passwd
- Enter your new password twice as asked.
- You may also want to change the password for the 'mobile' user:
/usr/bin/passwd mobile
You Win! Now random people wont be logging into your iPhone.
Copyright © 2007 Karl Isenberg
Design by Karl Isenberg

