My List of Android Apps

Here are some Android apps worth having. I’ll add to this as I find more:

K-9 Mail client:
https://market.android.com/details?id=com.fsck.k9

ColorNote; great task list/note taking:
https://market.android.com/details?id=com.socialnmobile.dictapps.notepad.color.note

AL Voice Recorder:
https://market.android.com/details?id=com.andlabs.vr

Alarm Clock Plus:
https://market.android.com/details?id=com.vp.alarmClockPlusDock

Andricious; if you use Delicious to manage bookmarks:
https://market.android.com/details?id=com.sherbert.delicious

Astro File Manager:
https://market.android.com/details?id=com.metago.astro

Opera Mobile Web Browser; better than default, you can actually save files to locations on SD card you want!
https://market.android.com/details?id=com.opera.browser

Barcode Scanner; useful for QR codes, sharing contacts via barcode, scanning ANYTHING:
https://market.android.com/details?id=com.google.zxing.client.android

ConnectBot; terminal emulator:
https://market.android.com/details?id=org.connectbot

Evernote App; if you don’t know what evernote is, you should check it out:
APP: https://market.android.com/details?id=com.evernote
HOME PAGE: https://www.evernote.com/

Flashlight; lets you turn on your flash LED on as a flashlight.:
https://market.android.com/details?id=com.devuni.flashlight

Hackers Keyboard; much better than default, landscape is full, normal keys:
https://market.android.com/details?id=org.pocketworkstation.pckeyboard

Handsent SMS; I wanted to customize my SMS/MMS views, layout, and this let me:
https://market.android.com/details?id=com.handcent.nextsms

Music Folder Player; just got this, my mp3s aren’t tagged well, I just want to play a whole dir:
https://market.android.com/details?id=de.zorillasoft.musicfolderplayer

AnyPost; connects to ping.fm, twitter, facebook:
https://market.android.com/details?id=com.skamped.anyposts

Xabber, XMPP/Jabber client:
https://market.android.com/details?id=com.xabber.android

Xotof; if you are hosting Gallery 3.0, this integrates super well:
APP: https://market.android.com/details?id=com.xotof
Gallery Home: http://gallery.menalto.com/

JPEF Magic!

Links to the code first!

Github: http://github.com/timbotron/JPEF-Magic

What is JPEF Magic, you ask?

JPEF (Javascript, PHP, Email Form) Magic is a package which handles email forms in an elegant and simple manner. Essentially, it lets you add email forms to your site and deploy addition email forms down the road much quicker then creating each one from scratch.

Notable features..

  • Consolidation; instead of validation and post-processing on each form page, handled with one file
  • Email generated has full text from questions on form
  • Settings for email processing (Email Subject, From, etc) are handled in hidden inputs on form
  • After success, passes all the email body to the ‘on success’ page you’ve set up
  • Allows you to have one “Form submitted successfully” page, with the users info displayed.

Why did I make it?

I come across this need all the time. I always think, “Oh I’ll just throw a form together.” but after you take care of the php to mail it, error checking, it does take time. Couple that with the fact I hate using the name value in emails as the question. I wanted a way to just have the exact language of the question on the form be what was included in the email, with minimal duplication by me. Hence, JPEF Magic was born.

Check out the demo at: http://lab.citracode.com/jpef_magic/

My perfect office soup bowl/mug

Just a quick one today, pretty much unrelated to anything. :)

It is getting colder, as Autumn is losing territory to it’s rival, Winter. That means soup should be the lunch of choice here for a while at the office. There’s only one problem.. I have no bowl.

I ended up ordering this:
it's a bowl

It’s perfect! A handle so I can easily carry it back to my desk, but big enough to handle soup cans of all sizes, and homemade soup as well.

You can find it Here on Amazon

Installing/upgrading Firefox in a Linux environment

This is pretty simple, but I wanted to write up how to install/upgrade Firefox manually, in a Linux environment.

First thing that was tricky is, where is the “proper” place to install it? There is much debate on this point still, but I believe that installing to the /opt directory seems to make the most sense.

So we’ve downloaded the Firefox version we want to install:

[text]firefox-7.0.1.tar.bz2[/text]

It is sitting in a directory:

[text]/home/tim/downloads/[/text]

I open up a terminal and type:

[text]sudo tar -jxvf /home/tim/downloads/firefox-7.0.1.tar.bz2 -C /opt/[/text]

What is this command? Let’s break it down:

  • sudo – “The following commands we are going to run as super user”, necessary for putting things in the opt directory.
  • tar -jxvf – The tar program is what can compress and uncompress archives. We are using the options jxvf
    • j – the compression method that was used is bzip2
    • x – We are going to be extracting the archive.
    • v – We want the output to be verbose, so we’ll see every file extracted.
    • f – We are going to tell it the file to extract.
  • /home/tim/downloads/firefox-7.0.1.tar.bz2 – The full path to the Firefox archive we are going to be installing.
  • -C /opt/ – We want to specify the directory /opt/ as where it is going to be extracted to.

Then, bam Firefox should be extracted to the /opt/firefox directory. Then what do we need to do? Well, depending on your Linux distribution, you need to add a shortcut to that to your menu somewhere, so it’s easy to get to. The program the shortcut should point to is:

[text]/opt/firefox/firefox[/text]

UPGRADE: For upgrading your Firefox install you have in the /opt/ dir, you do the exact same thing. :)

Now I don’t have to spend the 1 min remembering how to do this every time a new version of Firefox comes out. Hope it helps others.

Handling the URI structure change when moving to new CMS

I recently worked on an internal project that replaced a current web app. The new one had a cms behind it, and was overall a better product. So, we made it live, and moved the old tool. And all heck broke loose, since staff had bookmarks pointing to the old location all over the place.

Here is an example of the old link structure:

http://example.com/sub_dir/filename.html

The new link to the same content:

http://example.com/sub_dir/view.php?doc=filename

Now, sure I could try searching and replacing everywhere those links could live, but that sounds like a disaster. Instead I leveraged the mighty power of the mod rewrite in Apache.

I created a .htaccess file in the sub_dir/ directory. Then I added:
[text]
ReWriteEngine on
RewriteBase /sub_dir
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*).html view.php?doc=$1
[/text]

1) We are turning on the rewrite engine. 2) setting the base directory as sub_dir. 3) Saying “If the requested file is not found..”. 4) “Grab the text before the .html, and put it where the $1 is”.

And bam! All those old links, when hit, point to the correct page. I thought this would be much harder than it was. I’m trying to tag the heck out of this post, so if others are looking to do the same thing, it is here for them.

What appears to be a sweet payment system

I am sure people already know all about this service, but I didn’t so I thought I’d share. Stripe is a payment system for web apps, where everything lives on their servers, you don’t need to store any sensitive info yourself. That is very appealing to me. Also, their API looks really straightforward.

The cost is reasonable as well. 2.9% of the transaction, plus 30 cents.

Soon, I hope to have a reason to build their services into a web app. :)

I don’t control all the communication

Does this ever happen to you? You get an email or text from someone you haven’t heard from in a while, with a message of, “Hope all is well, haven’t heard from you in a while.” Or something similar. What is even worse are the ones you hear it through others, where someone says, “Bob Balaw wanted me to tell you he misses you.”

The older I get, the more this irks me. My main gripe with it is this: Communication goes both ways. It isn’t my responsibility to always initiate communication. If someone misses you, why don’t they contact you? At least with something more than a, “haven’t heard from you in a while”. Because that means that I haven’t heard from them in a while too. But the implication I see there is that it is my responsibility to contact them, and I haven’t. Which really, if you think about it, is manipulative. Some emotional blackmail, that. Especially if they use a parent or someone you really care about to convey the message.

I guess my point is this: if you want to talk to someone, or miss someone, initiate communication! Don’t send guilt-laden messages.

This post is in no way is a result of recent life events. :)

I don’t like it.

I’m looking at my blog, and I am totally uninspired to write.

I look at my blog circa 2004 and I totally want to write on that! Why is that?

I miss the old internet. There was less concern with slick-looking pages, and more excitement about just getting content up there. Part of it is too, it reminds me of my excitement I had back then for my blog.

I’m redesigning my site to make it look like my old Movable Type site. Maybe then I will post more. And I don’t care that it won’t look slick, this blog is primarily for me, after all.