Saturday, February 11, 2012

I just released a brand new app, only this time it's for business. Quote Maker Pro, or QuoteMaker Pro, depending on whether or not your search engine tries to correct the spelling, is a business app for the iPad that allows you to create sales proposal and quotations. Please take a look at it on my main web site, or on the app store. My main web site has a link to the documentation too.

Sunday, September 11, 2011

Great Introduction to Computer Programming Concepts

This is a great site that let's people with no computer programming experience whatsoever learn the basics of coding. This is really excellent!


This is a really cool PDF that introduces what arduino electronic prototyping is via a fun comic strip format.

Thursday, March 10, 2011

This guy is amazing!

I saw this link for a TED presentation and have to admit I was blown away. This guy's ideas on reinventing education are wonderful. And his website is equally amazing. I would strongly suggest taking a moment to watch his presentation and then head on over to his web site to see some amazing educational tutorials on hundreds of topics.

Here is the video...

And here is his web site...

This is really a great resource!

Thursday, May 6, 2010

Soundtastic for iPad Released

Being able to change the pitch of a sound from that of a monster all the way up to the sound of a chipmunk makes Soundtastic the coolest new sound app for the iPad. Not only can you record you own sounds, but you have a built in selection of pre-recorded sounds to get you started quickly, You can tap all across the screen to change the pitch of one sound over and over again or tap on multiple sounds in sequence to make your own symphony of unique sounds. Use Soundtastic to keep your toddlers amused while waitng for your food to arrive. Or make lots of space for yourself on the subway. With practice you can probably ensure your mother-in-law stays at her house instead of yours for the rest of the month.

Angry Guy 2.1 for iPad Released

Angry Guy is a simple shoot-em up video game with a twist. The twist is that you can make the enemy game piece out of any photo you want to do so with. Just snap a quick picture using your camera, or choose a picture out of your photo library, and Angry Guy let's you easily mask out the background so it can quickly become the target of the game. The good news is that you play the role of a heavily armored tank that can blast the enemies out of the sky as they swoop by across the sky. The bad news is that your enemy can also drop missiles on you, and while you are in a tank, a tank doesn't move very quickly, so you'll have to plan your shots and avoid incoming fire as well. You get 250 points every time you hit an enemy, but you lose 100 points if you get hit and you also lose 50 points every time one of your shots misses.

PhotoToy 2.0 for iPad Released

PhotoToy lets you play with your photos by applying them like stickers on top of a variety of 3D Shapes. You can tack your photos on top of cubes, pyramids, spheres and stars. You can then adjust their speed of rotation, size, and movement. You can add multiple shapes at once, and stack them on top of each other, or have them bounce around on the screen each having their own separate paths. You can shake your iphone to shuffle them around, click on one to edit it's settings, or drag it around into a new position. You can also take a snapshot of your creation and save it to your photo library, and PhotoToy is smart enough to remember your creation so you can continue working on it the next time you open it up.

Saturday, April 10, 2010

2D Terrain Mapper for use with iPhone SDK, Coco2D, Chipmunk and SpaceManger

There are a number of fantastic libraries available for writing games on the iPhone. Cocos2D is an amazing 2D graphics engine. Chipmunk is an equally awesome physics library. And SpaceManager allows you to integrate chipmunk with Cocos2D without leaving the comfort of Objective C. The problem I had was synching the graphic images I was using in Cocos2D with the shapes I defined in Chipmunk. I could assign simple shapes to simple graphic objects easily enough, but when it came to a dynamically changing moving terrain, that was another story. So after hunting around for a solution, I found some code for a color picker for the iPhone by the helpful folks over at After hunting around the web some more, I was able to find a few other missing pieces that allowed me to cobble together the code I needed. I've gathered a demo file together and attached it to this post. It's not as clean as I would like it to be, and surely some of it could be written better, but hopefully it will be helpful to some of you out there. Basically, with this demo project, you can see how you can take a PNG of a ground terrain set against a transparent background and this project will follow that terrain by starting at the top of each column in the image and working it's way down until it hits the first non-transparent pixel in each column. It then uses that data to produce segments for chipmunk, which allow your game pieces to follow the terrain accurately.

The file is located here. It's a zip file of an Xcode project.


Sunday, December 20, 2009

Denise's Madrigal Singing Group

Well, another holiday season is upon us and Denise and her friends are busy again singing all around South Jersey. To give her a little publicity, I thought I would post a link to their website here. So here it is!

Thursday, December 10, 2009

FireFox/Safari Ajax Status Code 0 Bug

OK, this is an old issue I am bringing back up to the front since other people are now asking me about it. We had used FireFox 1 and 2 for years as our default browser for our web-based business system that we wrote in-house. When trying to upgrade to FireFox 3, we started getting all kinds of XMLHTTPRequest errors, and it's an issue with the status code returning 0 and the xmlhttprequest actually failing to send data.

I've put an exagerated example up on the following link

NOTE: JQuery and Prototype also have the same problem. Safari does too. The code I included was simply so the file could run without any external libraries being needed.

Here's a jQuery version that produces the same problem

Here's the link to my mozilla bug tracker entry on the issue

What I did find out by looking around is that I was able to work around my particular issue by using jQuery Ajax Abort method to remove any pending ajax requests during page unload.

This SEEMS to work for me, but your milage may vary...the problem for me is I have a lot of old code that doesn't use jQuery, so updating all of it would be a major effort.

if (self.jQuery)
if (self.jQuery.ajax)

It would be great if I had an explanation for what's going on or another fix.

Saturday, November 14, 2009

New iPhone App Web Site is Up

I finally got around to making at least something of an effort at putting all my iPhone apps on a web site. The new site is located here

Christmas Holiday Fun on the iPhone and iPod Touch

Naughty or Nice Detector is actually one of the first apps I wrote for the iPhone. With the holiday season quickly approaching, I thought I'd make an official post about it this time. This is a simple app which uses the iPhone's accelerometer (tilt sensor). You simply aim your iPhone (or iPod Touch) at someone and by simply tilting it slightly upward or slightly downward the iPhone will declare that person as either ""Naughty" or "Nice". Available on the App Store

Window and Tab Limiter Add-On for FireFox

I just finished re-writing and greatly improving my window and tab limiter extension for FireFox. As an IT manager, I've always been amazed with how many users complain about their workstation's speed, when in fact many times it turns out that at least part of the problem is that they have 50 million web browser windows (or tabs) open. So I've written a FireFox extension to help with the problem. It has 3 modes of operation. One is where the user is gently reminded they have too many windows open, and if the user wants to continue working like that, they can. The next mode forces the user to close at least one window before continuing. And then lastly there is a stealth mode that closes windows and tabs automatically. I also added the ability to password protect the preferences so people can go in and undo what they shouldn't be undoing. I've uploaded the extension to Mozilla's add-ons "sandbox", but I now have to wait until the approve it for general distribution.........the sandbox version is (currently) located here....

Saturday, September 26, 2009

SpaceManager - Fantastic Library for Cocos2D and Chipmunk Integration for the iPhone

I've been struggling for some time writing my first Cocos2D game for the iPhone using Chipmunk Physics. The problem is the constant back and forth between Objective C and C. Now someone has solved this problem for me by releasing SpaceManager. Here's a link to the official's a great piece of work. Many thanks to the coders who wrote this....

Slacker Radio for the iPhone is better than Sirius

I stopped my Sirius satellite radio service and have signed up for the full version of Slacker Radio. It's MUCH cheaper ($4 versus $12), and the audio quality is BETTER, and the fact that I have unlimited skips means I'm not stuck to the playlist on the 5 or 6 sirius music stations that reflect my eclectic taste in music. Now if only I could control Slacker via a remote on my steering would be perfect.

Amy's Organic Frozen Meals are Fantastic

In my quest to be healthier, I've stumbled about Amy's Organic Frozen Meals. They are magnificent. Usually eating healthly has meant I have to give up flavor, but so far, the meals I've tried are fantastic. I actually prefer them over any other frozen meal. The cheese enchiladas are so good my whole family fights over who get the last one out of the fridge. I also have enjoyed the Country Cheddar Bowl, the Tamala Verde Meal, and the Tortilla Casserole. Healthy food that tastes great. It's about time.

Monday, September 21, 2009

Great Place for Car Repair Found in South Jersey

My lovely wife Denise has once again found a great local merchant providing great service to us. In this case it's Integrity Automotive on the Black Horse Pike. They helped us bring down the cost for repairs, found us a hidden rebate from the manufacturer even after it looked like the current one had expired, and were fast, friendly and courteous. If you need some car work done. I highly recommend them.

Monday, August 17, 2009

Confessions of an iPhone HTTP Live Streaming Video Geek

I did it!!!! I finally got HTTP live streaming working on the iPhone version of my company's web site. I hope to pass on a few tips for those who are just starting out and also maybe those of you who've been trying for a while but are still having trouble.

Note: I could not have done any of this without the fabulous instructions posted by Carson on

I also want to thank Corp186 on the Apple Developer Forums for writing and releasing his open source segmenter, which this script depends on in order to work.

If you'd like to see streaming in action and have an iPhone with OS version 3.0 or later, you can try going to my company's web site at and you should see an iPhone specific web site that will play streaming video. It works great. The only issues that remain for me is that the videos always appear grainy for the first couple of seconds since it seems to first start at the lowest available bit-rate even on Wifi, and the current ffmpeg version doesn't seem to encode transport streams as cleanly as it could, so there is some skipping during playback which is somewhat distracting.

In my case, the hardest part of this project was dealing with the large number of videos I would have to convert. I had 8 different video files I needed to iphone-enable on our web site. Now, let's think about that process for a minute.

  • 8 video files need to be converted to at least 3 different transport streams (at 3 different bit rates)
  • So our 8 files turns into at least 24
  • Then those 24 files need to be segmented into say, 10 second segments, and since each of my videos are up to 10 minutes long, we are talking about hundreds of segmented transport streams.
  • Then for each group of segmented files at a given bit rate, I have to create an m3u8 playlist to connect them all together.
  • Finally, I need to make a master playlist, which contains a list of all of the bit-rate specific playlists I created above.

Sounds complicated? It might at first, but actually after you work with it for a bit it is actually quite logical and very straightforward, but even so, we are talking about creating a LOT of files

This might be doable if you have one video, but even so, if you make one mistake, you have to start all over.

And I wanted to be able to try different scenarios. Trying different bit rates. Trying different segment lengths. Doing that manually and consistently with that many videos would be mind boggling

So I took some time and cobbled together a php script that will help automate the entire process.

I had big plans. First I was going to write an app in RealBasic and run it as a stand-alone app with a nice professional GUI. Realizing I had already worked 70 hours this week, I came to my senses and thought about making a nice command line php utility. And I did just that, except I skipped the process of adding the ability to add parameters via the command line. To get the script done, and to get back to my real work, I am attaching below a simple php script, and in order to change the arguments, you currently need to edit the script (which is pretty easy). OK, it's not as elegant as it could be, but it's 10 times easier than doing it manually.

So, here is a link to download a zipped copy of the script

The code is actually well commented, so it's easiest just to download the file and open it in your favorite text editor, but for a quick summary....

You need to indicate the location of your raw, pristine m4v files, and also where you would like the final product to go. You also need to tell the program where your segmenter is (not everyone who reads this will understand how to Set Path, so I'm trying to keep it simple). You then indicate the URL where the streams are going to wind up, the name of the master play list for each video (the master playlist is what you'll put in the source parameter of your HTML video tag). There is an array where you can change the bit rates that will be used, the audio sampling frequency, the width and height of the resulting video (also applies to aspect ratio), and finally the length of each segment in seconds.









For me, this is great. I could try different settings, run the script, and while all 8 videos are encoded and segmented, I could go and do other things (if you have a lot of videos, this takes a lot of time)

For those of you who want to do live streaming but are intimidated by command line stuff, it's really not that hard to do.

Carson's article does a great job explaning what to do, and the hardest part if you are new to this would be the compiling ffmpeg from source code.

Before you try anything, make sure you have the latest version of Apple's Developer Tools installed on your machine. Then it's just a matter of downloading the ffmpeg source and compiling it.

Compiling apps from source is beyond the scope of this post, but basically, you download the source code to a folder. Make VERY VERY sure your current directory location is the one where the actual code files you just downloaded are contained in and then enter "./configure", then "make", and finally "sudo make install".

In the case of ffmpeg, Carson points out a bunch of parameters you will have to add to the config command in order to set it up properly. And if you are starting from scratch, ffmpeg will give you compile errors unless you download some stuff first. In my case, on a standard Leopard install, I first had to download and compile "faac", "faad2", "lame", "x264", and "yasm" (and after that, you'll also need to download and compile Corp186's segmenter). In Carson's tutorial, he points out that you need to modify the make file in order to get the segmenter to compile, so don't forget that little step.

Also, for anyone new to working from the command prompt, be careful when you just copy and paste stuff out of a browser window, as you may actually be pasting special characters into the command line that will look like spaces to you but in reality are something else entirely. You'll go crazy trying to figure out why things aren't working. In going through Carson's tutorial, I had to find/replace on something that looked like an "x" but actually wasn't and replace it with a normal x. The same thing can happen with spaces. When doing stuff like this, BBEdit (which is the best editor in the world), or it's little brother Text-Wrangler, both have a wonderful Zap Gremlins feature to find and fix these special characters.

OK, that it for now. I have to get back to doing my real work to pay the mortgage. I hope the script is of use to you

Once again, if you have an iPhone with OS 3.0 or later on it, you can check the videos out on the iPhone enabled version of my company's web site......

Remember, the above link will only work correctly for iPhone users running 3.0 or greater.

Saturday, August 15, 2009

I'm now a Multi-Hundredaire!!!

My 4th iPhone app, 3D Photo Toy, which was easily the most complicated app I've done for the iPhone, has fizzled before it could ever sizzle. Last year, my first few apps earned me at least a few hundred dollars for my efforts (hence, my status as a multi-hundredaire), but sadly, 3D Photo Toy, which was my first attempt at working with 3D graphics, something I've been wanting to do for years, hasn't even covered the cost of my annual developer renewal. I never expected to get rich off of apps like this, but with the millions of iphone users out there, I was expecting at least a few hundred dollars. Amazingly, I think I made more money back when I wrote software for the Newton!

Saturday, June 27, 2009

The Titan Rocket Debacle

It never changes......I buy cool stuff. I tell the kids to try it. They refuse for weeks. They finally try it. They love it. One day, maybe they'll listen to me from the start.