Archive for the ‘Tech’ Category:

Google Calendar Map

June 12th, 2009

As previously mentioned in my google maps mashup post, I love maps.  Due to the clean APIs and very fast response, many people have built  cool mashups using the maps API.  I even got paid to do one for landmarkfinder.  But recently I’ve been using google calendar alot, and with all the summer action here in Chicago I wanted an easier way to know where and when to go places. 

Enter my new Google Calendar Maps Mashup. Basically it takes a google calendar and plots all the events on a map.  Well, at least all events that have a valid map address.  The mashup works with any google calendar, as long as its public. Basically you provide the URL of a google calendar XML Feed, my javascript code eats it up and spits out markers on the map and lists them on the right side.  The list is really a table, with sortable columns (sort by day, event name, address). The map acts like a filter - you only see events that occur on the map canvas.  For example, if the map is zoomed in to show downtown Chicago, you might only see events in grant park.  But if you zoom way out you will see events in north chicago or suburbs, too.  This is great when there is a calendar with tons of events going on all over the place.  If you only have a couple events or all the events are the same location, its not too exciting.    Check it out.

I got to know jquery and javascript a little better during this project  - I’m even planning on releasing my code as plugin.  Expect that in a week or two after i’ve cleaned it up and solidified the features and UI.

Share/Save/Bookmark

Blurb Book

May 28th, 2009

Last week a book I made and printed using blurb.com arrived.  It’s one of many photo books I’ve made (see qoop books), but my first using blurb.   I liked the control i had when making it - There’s an app for the mac that lets you pick a template for each page and add pictures and text accordingly. It took me a while to figure out what pictures to put in there, plus write text for each one.

I ordered a 7×7 book, 200 pages, Hardcover with image wrap (no dust jacket). It was $48 + $8 shipping. see more blurb prices.

I am quite satisfied, the quality is close to that of regular books. My only complaint is that a couple of my pages didnt’ print - the inside flap - I assume its because i opted for no dust jacket. Sigh. Compare cover to blurb preview, also compare to Qoop Books.

Share/Save/Bookmark

Testing IE on a Mac

May 6th, 2009

I love my macbook pro, as most mac owners do, but if you develop web sites you need a good way to test IE, since 2/3 of the internet uses it (browser stats).  Since IE doesn’t run on MAC, you’ll need one of the following solutions:

  • VMWare Fusion 2 vs Parallels 4
    • Pros: IE running on a real Windows OS (2000, XP, Vista), fast and easy to use IE alongside mac apps (once setup - parallel note).
    • Differences: Both are very similar, Parallels 15% faster than Fusion (src), Fusion better (src2, src3)
    • Cons: Both around $80 (30 days free), You’ll need 2GB+ disk space to install a vmware OS
  • VirtualBox 2.2
    • Pros: Free version of VMWare Fusion and Parallels, from trusty Sun.  With “Guest Additions” Installed (instructions in user manual), works almost as well as Fusion 2.
    • Cons: Longer setup, flew glitches (src).
  • Bootcamp

    • Pros: Restart computer, booting into a real Windows install
    • Cons: must restart computer to test IE
  • Xenocode
    • Pros: run different instances of a program (ie6, ie7, and ie8)
    • Cons: only runs on windows, need fusion, parallels, or virtualBox
  • ie4osx
    • Pros: free
    • Cons: only intel mac, a little buggy, requires darwine and X11,
  • Other

I ended up using VMWare Fusion 2, since I had a copy of XP and liked using vmware in the past. Man, do i love it! Fustion 2 is much better than the older version - Installation was super easy. And once installed, you can run it 2 ways - all windows apps (IE7, Firefox, etc) running in one vmware-windows-xp mac application window, or switch to unity mode which lets windows apps (IE7, firefox) run on their own mac application window. I prefer the Unity way - the first time I ran IE the logo appeared on my mac dock and I chose to “keep on dock” to quickly launch and test in IE. Awesome.  In order to test IE6, IE7, and IE8, you can either create 3 vmware virtual machines (XP only likes one version of IE), or create one XP virtual machine with one version of IE and launch the other IE versions thru xenocode (seems to work OK).  Overall IE on the mac this way is kinda slow, but so incredibly easy it makes up for it.

UPDATE: Virtualbox is working smoothly .. not as good as vmware, but good enough to not buy vmware once my free 30 days are finished.

UPDATE 2: Figured out a good way to debug javascript in IE - use Microsoft Visual Web Developer. Setup Instructions: http://axonflux.com/how-to-get-internet-explorer-j - more options: http://notetodogself.blogspot.com/2008/08/debug-javascript-in-ie.html

Happy Testing!

Share/Save/Bookmark

Hostmonster Sux

April 28th, 2009

I loved hostmonster.com ever since I signed up with them in September 2007.  They are a dirt cheap web hosting with pretty much unlimited storage, lots of easy to install applications, and ssh access.  SSH is very important for developers like me - I can get in there and do my business cmd-line style, as all hardcore developers like to do it.

But then after 19 months the abuse department gets all up in my business.  Basically they suspended all my sites and removed ssh access without any notification whatsoever.  After several unanswered emails and form submissions, I call and finally get a hold of somebody.   Initially he was cool - he gave me back my ssh access so at least i could get to my files.  But when I tried to get out of him what I needed to do end my account suspension, he kept it vague, telling me I was not allowed to store stuff online.

  • First we ended up arguing for almost 20 minutes over the fact that I had 4 versions of my resume on there (all publicly addressable) .. he claimed that was storage.
  • Then it became an issue of any file not linked to by my website was storage - what, i can’t put stuff on my site and email a link to it to my friends? I have to publicly link to it from my blog or something?  what type of policy is that?
  • The last issue revolved around .tar, .tgz, and .zip files.  First he said they were allowed if it was “software release or something similar”, which makes sense.  But how does that really differ from having my resumes as a .tar file?  Ok, now that i question the policy changes - he refines his statement and says those files are never allowed.  sigh. Again, WTF?
  • Over and over I asked the same 2 questions - what do i have to do to remove suspension and what is hostmonster policy.  The answer was always the same subjective “no online storage allowed”.

Sure, they are legally allowed to do that - their Terms Of Service (TOS) state they are not to be used as online storage and can suspend users without notification for violating this rule.  Online storage is a pretty broad term, legally they could suspend any one of their users since its pretty hard NOT to store anything on your website.  But the way they handled me was incredibly rude and disrespectful.  In the back of my mind I wonder if they just wanted to get me to leave since I used so much storage - several GB’s of jpgs (all 35,000+ are now on flickr).

The guy I spoke to was the acting manager of the abuse department the day I called, April 8.  He was childish, immature, and seemed to be on a power trip.  I attempted to get a hold of anyone else in management thru various form submissions, emails, and phone calls, but 36 hours later (almost 3 days since initial suspension) I gave in and signed up with mediatemple.net and started moving my domains over.  The next day I got a voicemail from the real manager of the abuse department, but by then I was behind in work and already moved to mediatemple, so why sink any more time in this?   This post is to just warn people - hostmonster.com sux.

So if you noticed some hiccups a couple weeks ago, this is why.  For that I apologize.

Share/Save/Bookmark

Google Maps Mashups

March 27th, 2009

I’ve always loved maps, and when google maps came out they raised the bar.  After they released their maps API and the mashups began.  The first cool one I remember was a craigslist mashup that listed all apartments for rent on a map - that’s huge when you’re new to a city, and invaluable in renting-competitive cities like NY and SF.  Now there are tons of mashups out there, and here’s a few that I’ve found recently.

Random mashups (coolest ones first)

Build your own map: (sorted by compete monthly usage 2/2008-2/2009 more)

Find more maps (reference)

What’s your favorite map?

Share/Save/Bookmark

Iphone OS 3.0 Beta

March 18th, 2009

iPhone 3G

I’m totally excited. Yesterday Apple announced the newest version of the iPhone OS, 3.0, to be available in June 2009 to both iPhones (original and 3G), and iPod Touch (1st and 2nd generation).  For those building iPhone apps, the beta version of 3.0 SDK is available now.  That means developers can actually start playing with 3.0 TODAY.

Here’s my favs from what’s new in 3.0

  • Cut, Copy, and Paste (finally)
  • Send photos, contacts, audio files, and location via MMS (iPhone 3G only)
  • Push Notification Service
  • In App Purchase Support
  • Peer to Peer Support
  • Maps API
  • Audio and Video Enhancements

I’m glad to see cut’n'paste is gonna finally work.  So many times I want to copy a URL from a text or email to Safari, or copy an address to google maps.  However, I’m really pissed that MMS (send a picture message) is only for iPhone 3G.  Back in 2005 I was using my cell phone to send pictures AND VIDEO to my friends phones.  2 years later I bought the iPhone, and now I still can’t do it.  As a phone, iPhone kinda sux.  But as the most awesome portable touchscreen internet customizable high quality audio and video playback device, iPhone rules.

I like the “Push Notification Service” because it allows custom iPhone apps to do receive messages from the internet even if they are not running.  For example, when you get a SMS Text message, an alert pops up on the iPhone with the text message, which you can close or reply, launching the Text Messaging app.  Similarly, the new push service allows an alert to pop up for a custom app.   However, if user hits close the alert goes away and the app is not run.   That means that background processing is still not allowed.  Another way to view it is:  Internet –>  iphone –> Human –> iphone app.  I much prefer this view:  Internet –>  iphone –> iphone app.  Skip that human interactive component and let the app process a notification as it sees fit.   NOTE: originally I thought 3.0 would allow background processing, but 3.0 beta SDK corrected me.

If you want to make money, the “In App Purchase Support” is huge.  You can make an app cost $0.99 in iTunes, offering some basic functionality at a low price point for mass adoption.  Then offer premium services for an additional $1.99 (or whatever) right there in the app - it does not get easier.  Perfect for games (download the next 10 levels for $1.99) or for monthly services ($5.99 for next months premium financial or sports information).

Peer to Peer Support is cool because it makes it easier for iPhones to talk to each other (or other devices that support apple’s bonjour protocol).  Examples include games (just like online multiplayer playstation games), exchanging virtual business cards, or sharing documents.

Maps API has a lot of potential, especially since its closely intergrated with Google Maps API (terms).  Combined with location aware (GPS or cell tower triangulation) phones, this makes it much easier for apps to have custom annotations displayed near the user’s location.  You can also do some of this in safari, skipping the iPhone app and just makeing a website page specific for iPhones (the new safari in 3.0 allows javascript to know users location).

Audio and Video have also been updated.  With iPod Library Access, an app can play any song on the phone. One example would be a game tied to a specific playlist, where each game event (begin, score, foul, goodbye) is mapped to a song, allowing users to customize the audio themselves.  Video Streaming is improved - now you can playback video streamed from a standard HTTP (Web) Server.  Expect more websites to have a feed made for mobile devices. Core Audio and Audio Recording got newer engines under the hood, including support for more codecs and software decoding.

Share/Save/Bookmark

OpenID

January 29th, 2009

Today I started using OpenID.  Even though its been around for years and major players like Yahoo have adopted it, I had trouble finding good documentation - Even I had trouble understanding how it works exactly.  So, I wrote this little blog as Overview/FAQ for OpenID.


What Is It?

As the name suggests, it is an Identification system that is free, safe, secure, and open source.  Nobody owns the system, it is not and will never be a money maker, and you control your own identity. The goal is to have one identity and use it everywhere on the internet instead of having a login/password for every website out there.


How Does It Work?

When you want to login to a website, instead of giving a username and password, you give your OpenID URL. The site then redirects to your “OpenID Provider” (see definitions below) where you are authenticated and then back to the original site.  If it is your first time on the website, some new user info (first name, last name, etc) may be filled out for you.  It is important to note that safety and security are important - passwords are not transferred back and forth - it is similar to how HTTPS can make a secure connection to your online bank.


Why Should I Use It?

You don’t have to remember individual username/passwords, just your OpenID URL.  Also, you can have profile information associated with your OpenID that can be shared.  For example, when you register on a new website, you often fill out first name, last name, username, password, email, etc.  Instead of doing all that, you just provide your OpenID URL and it will automatically get your first name, last name, email, or whatever other info you have decided to publicly share.


Why Should I NOT Use It?

If you only visit a few different sites when you’re online, and those sites don’t support OpenID, then there’s no point now. Competition includes Google Friend Connect and Facebook Connect, meaning those 2 major players most likely won’t support OpenID (src).


Definitions

  • OpenID-Supported Site
    AKA “Relying party” or “service provider”. This is a website that allows you to login using OpenID URL. They will mention OpenID or have the logo (pictured above).   More info, including list of sites.
  • OpenID URL
    The URL you provide to the OpenID-Supported Site, must support OpenID and is usually unique.  You can have more than one. For example, yahoo, flickr, blogger, and aol all support OpenID, so if you have an account with them you have an OpenID URL.  Some sites, like Yahoo, allow you to simply use yahoo.com as a shortcut to your OpenID URL (which is something like http://me.yahoo.com/a/FSegzjtnmOzMcgVI3)
  • OpenID Provider
    This is an entity that verifies who you are then provides information about you to the OpenID-Supported Site. Examples: MyOpenID.com, Verisign, Yahoo.


Examples

Here are some examples of OpenID-Supported sites I use: Sourceforge.net, CareerEco.com, Plaxo, and my.pbwiki.com. I use Yahoo as my OpenID Provider.  That means I sign up by entering “yahoo.com” as my OpenID URL, the site redirects to yahoo.com, yahoo asks me to continue, then I’m back on the site signed in.  With high speed internet this only takes a few seconds.

First I enabled OpenID at Yahoo.  This is super simple, and by default shares the following information: Full Name, Nickname, Yahoo! Email Address, Gender, Time Zone, and Language .. although not all sites will use it.  You can edit that info at profiles.yahoo.com.

Then, the first time I signed up with Plaxo, I went to sign in page, and picked “sign in with openid” and entered “yahoo.com”.  Yahoo auto-authenticates you and asks to Continue, displaying the Plaxo URL.  Click on continue and you are redirected back to plaxo, with info filled out.

If you are paranoid, you might not want to use a 3rd party like yahoo to store your info.  If you have your own server on the internet, you can setup your own OpenID Provider for you or your friends using phpMyID or any other OpenID Identity Servers.


More OpenID

Share/Save/Bookmark

iPhone as a Remote

January 28th, 2009

Yay. Today I finally got it working the way I want - use my iPhone as a remote control when watching movies. If you’re not a uber geek, you might want to stop reading now. Move along.

I use VLC on my mac as my media player. Why? Cuz it plays everything - all types of .avi, .movs. mp3s mpgs, dvds - and lets you program hotkeys to do what you want. For example, I use spacebar for play/pause, and “.” and “,” for jumping forward or backward 15 secs at a time (tivo has trained me well). What else do you need? Volume is done thru my stereo - laptop audio out goes there, and laptop DVI goes into HDMI on my 40″ Bravia. But it sux to have to get up to pause or rewind 10 seconds to see that scene again. So I had to get a remote.

I found it hard to find a good remote control app on the iPhone - Apple’s “Remote” app only controls iTunes, which is good only for playing music (I’m not gonna import GB’s worth of .avi’s into iTunes, Hello..). I really liked the Telekinesis Uniremote app, it has slick remote interface, but I could only get VLC to play/pause (no rewind/ff). XBMC and Movist options seem more complicated.

In the end, the free “mocha vnc lite” iPhone app worked adequately. First, you turn on Apple’s default VNC server - on Leopard, goto System Prefs, Sharing, check the box for “Screen Sharing”, then click on ‘Computer Settings’ button to the right, and on the popup check the box for “VNC .. password” and give it a password - you don’t want anybody in your neighborhood to start controlling your mac. (Tiger instructions). Make sure you remember your password and the IP address. Second, launch VLC on your mac and full screen that baby. Third, install and launch the “mocha vnc lite” app, enter the IP and password and it should connect just fine. Now, you only get a small section of your screen, but thats cool. Click on little keyboard icon to get keyboard, now you can spacebar pause/play your VLC player all night long.

Ending Geek transmission.

Share/Save/Bookmark

First iPhone App In One Day

January 4th, 2009

I was actually surprised by how easy it was to create my first iPhone app - From launching Xcode for the first time, building an application on the simulator, to paying $99 so i can legally put apps on my iPhone, and getting my app to run on my iPhone - all in one day.

The following is a summary of how to create your first app using iPhone OS 2.2 and the iPhone SDK available in December, 2008.  I write this blog since documentation can become out of date very fast (ahem, apple).

First, this is what you will need

  • Intel Mac with OS X 10.5.5 or later (I used 10.5.6)
  • iPhone SDK for iPhone OS 2.2 (I had build 9M2621)
  • iPhone with OS 2.2
  • $99 if you want to run your app on your iPhone - its free to develop and run on the iPhone simulator that comes with XCode

How to create a simple “Hello World” app on your iPhone

  1. Login to iPhone Dev Center
  2. Download and install iPhone SDK if you have not - its 1.56 GB (HUGE, may take more than a day to download).  It comes with XCode 3.1.2 and everything you need for iphone development.
  3. Follow this 6 minute Hello World video.  Note: after a minute he launches Interface Builder - one of the windows does not launch by default, launch it from - Tools - Identity Inspector
  4. Done with free section - Hello World on Simulator
  5. Pay $99 to join the iPhone Developer Program - lets you install apps on 100 devices (iPhone, iPod Touch)
  6. Once you’ve paid, download the “Program portal user guide” (right side, near top) from the iPhone Developer Program Portal, (links will not work unless you login and are in the program).
  7. Follow the instructions in the user guide (version 2.4 is what I had).  It is mostly accurate (getting certificates, etc) up to section called “Installing iPhone OS” (pg 18) where it says

    To run your code on an Apple device, you will need to install iPhone OS onto each development device and “restore” each device to a development state. Note: Once a pre-release version of iPhone OS is installed on the device you cannot restore the device to an earlier version of iPhone OS. The device may only be used for development and testing purposes until that version of iPhone OS is publicly released. Please DO NOT install the iPhone OS before registering device UDIDs, as installation on non-registered devices will render them inoperable. The public release version of iPhone OS should be installed using iTunes.

    ….

    1) Download the iPhone OS Disk Image (.dmg) from the iPhone Dev Center for the Apple device you are using.
    2) Connect your device to your Mac, close iTunes and launch Xcode.
    3) Once the device is detected by Xcode, select ‘Use for Development’ when prompted.

    • Ignore.  You do not need to download or install anything special for development if you have the regular retail version 2.2 on your iPhone (normally installed using iTunes).  I assume these instructions were for 2.1 or 2.0 or earlier.
    • Just backup iPhone on iTunes, close iTunes, launch XCode, go to Window - Organizer,
      click on your iPhone, click “use for development” under summary tab. That’s it.
  8. Continue with guide, create App ID (when choosing your “Bundle Identifier”, I recommend using asterisk like: com.mysite.*), install profile, etc.
  9. If you follow the guide exactly, you will see this error when you try to install app on your device (aka iPhone)

    Your mobile device has encountered an unexpected error (0xE800003A)
    ApplicationVerificationFailed

  10. Here’s how you fix the above
    • You must create entitlements.plist - On you XCode Project, goto File->New File…->iPhone OS -> Code Signing ->Entitlements.  Just name new file “entitlements.plist” (it should be created in your project directory).
    • Goto Build Info (on your main project window in XCode, right under “Groups & Files” click on project name at top, then click the big Info Icon at the top middle). Under “Build” section, look for “Code Signing Entitlements” - the Value is probably blank - double click, in the popup window type in the new file name “entitlements.plist”
    • Under Target Info (on your main project window in XCode, under “Groups & Files” Targets list click on project target name, then click the big Info Icon at the top middle). Under “Properties” section, change “Identifier:” from com.yourcompany.xxx to the “Bundle Identifier” you created  on the program portal website under App IDs - do not include the ten character “Bundle Seed ID” prefix, just the “Bundle Identifier” you picked. ex: com.chadnorwood.${PRODUCT_NAME:identifier}
  11. DONE.  You should now be able to create new projects and more apps.

Links

Share/Save/Bookmark

Leopard Upgrade

December 17th, 2008

Leopard OS X

Yesterday I upgraded my macbook pro to Leopard, the latest OS X operating system, over a year after Apple released it.  Whew.  It took me 4 days to organize, clean and backup my stuff (over 200GB), about a day to figure out how to install leopard without a bootable DVD (see leopard dmg install), and less than an hour to do the actual install.  Why now?  Not because of all the new features, but because I wanted to develop an iPhone app. Stay tuned for more on that.  Yay.

After a fresh install, here’s what I add/customize:

  • Firefox 3 [Free] - fast, but I love that it remembers all URLS and you just type any part of the URL or Page Title and it shows you dropdown of possible matches.  Also love these firefox add-ons/plugins: greasemonkey, web developer, firebug, live HTTP Headers, more.
  • iLife ‘08 [$$] - new iTunes (love the Genius), new iPhoto (love the auto-grouping of events), and more.
  • Adobe CS4 [$$] - gotta have Photoshop, Acrobat, Indesign, etc.
  • VLC [Free] - best media player out there - avi, mpg, mp3, mov, wav, etc - i love “hot keys” -† its FREE
  • Xee [Free] - Excellent gif/jpg viewer (don’t *need* this in leopard)
  • iSquint [Free] - convert digital camera movies from big file sizes to smaller for upload, sharing, ipod, or iphone.
  • Transmission [Free] - bit torrent client, so you can download movies, tv, games
  • Handbrake [Free] - Rip DVDs - in one-step, create .avi movies for ipod, iphone, etc.
  • iStumbler [Free] - helps you find a good wifi signal when you’re not home or office.
  • SuperDuper [Free] - easy way to back up your entire laptop to external drive or network.
  • Chicken of the VNC [Free] - if you have a windows or linux box, put vnc server on it, then install this vnc client on your mac, and now you can control your windows from mac!

Share/Save/Bookmark