brandontreb.com Tips And Resources For Software Consultants

Fluid For Mac

As of OSX Lion, I have started to seriously loathe some of the build-it Mac apps (such as Mail, and iCal). While I previously had no issues with them, they now seem to be very clunky and crash quite often. Being a developer, I thought “why don’t I write an app that wraps web apps for you so you basically get “native web apps” that have icons and are launchable?”.

After a quick Google search, I realized this already exists!. The app is called Fluid and it does an incredible job of what I described above and more.

Here are the feature highlights.

  • Create a “native” Mac app for any web app
  • Custom icon for each “native” app you create
  • Full screen mode
  • User scripps. These are my favorite. They allow you to update the badge count based on information in the browser. See below for a sample user script.

Sample User Script For Twitter

<code class=’javascript’>(function () {
        if (window.fluid) {
            setInterval(function updateBadge() {
                var counts = /\d+/.exec(document.title);
                if (counts && counts[0] > 0) {
                    window.fluid.dockBadge = counts[0] > 99 ? ‘99+’ : counts[0];
                } else {
                    window.fluid.dockBadge = ”;
                }
            }, 2000);
        }
    })();</code>

Source

Fluid is free with some minimal features, but I urge you to drop the $4.99 to gain full screen mode and user scripts. It’s well worth it. I am not affiliated with them in any way, just a happy customer.

Download Fluid

Amazon – A Terrible Solution To A Huge Problem

tl;dr; Don’t buy a Kindle Fire for your kid until they resolve the parental control issues. Wifi password protection is their current solution, and it sucks.

Like many parents, I thought it would be a good idea to get a tablet device for my son so that he could play some educational games and watch some Netflix (in moderation of course). After doing quite a bit of research, I settled on the Kindle Fire. Before the Apple fanboys give me crap, know that I am one, I have an iPad, it’s too expensive for my son.

Honestly, I really love the fire. I think it has the least terrible Android interface of any of the devices. It’s intuitive and my 3 year old was able to grasp navigation right away. In addition to navigation, he quickly figured out how to acquire new content (apps, video, children’s books) thanks to Amazon’s “One-Click Ordering”. Obviously, Amazon thought the process they use on the web transfered well to a tablet device and was not willing to compromise on that. That’s neither here nor there. You can find plenty of posts about user’s complaining about the initial lack of parental controls.

The Update

Shortly after receiving some pretty rough reviews for their interface, Amazon rolled out their first update which brought us to 6.2.1. In addition to fixing some of there terribly choppy UI, they rolled out their “fix” for the lack of parental controls.

I noticed a new security setting that I had hoped would allow the device to require a password for content purchase, but it turns out the setting is to password protect enabling wifi.

Password protect enabling wifi? Really?

This is laughable at best. What a worthless feature. I could not figure out why anyone would ever want that. And then I had a conversation with “tech support”.

Their “Solution” Confirmed

After seeing an email from Amazon the other day showing my purchase for $17.99 for Team Umizoomi Season 1 (whatever the crap that is), which obviously my son purchased, I set out to chat with customer support. The conversation went something like this:

Me: Refund!? No parental controls!

Outsourced Guy: Enable Wifi Password = protection!

Me: No, watch Netflix! Browse Web! Stupid Solution

Outsourced Guy: Yes Netflix Need Wifi. Did I solve your problem?

Me: ?

Outsourced Guy: Phone Number. Call Video Support

So there you have it. Amazon actually pushes this as their solution to the lack of parental controls. My suspicions were confirmed by Outsourced Guy.

Conclusion

It’s sad that a huge company such as Amazon feels that their process is more important than listening to their customers. Although their devices have been selling like fire (badum ch!), they need to address such gaping issues if they are to maintain their edge in the “affordable” tablet space. Especially as the younger generations start embracing the technology.

Why I Went Back To Jekyll – Also Rackspace Sucks

Recently, I was pretty humbled when a post of mine titled WordPress To Jekyll And Back Again made it to the front page of Hacker News. I was a little down on Jekyll for the reasons listed in that post and was feeling pretty good about my WordPress install.

At the time, I was running my own virtual instance on Rackspace cloud hosting (we’ll get to this momentarily). I also had all of the caching and optimization plugins installed and welcomed the Hacker News traffic.

As you can imagine, the influx of HN traffic crashed the server multiple times and I was (with good reason) mocked in the comments (“must be because he’s ‘back to WordPress’”). So, I asked for advice and further “beefed up” my setup switching from Apache to Nginx, upping the ram, and switching caching plugins. WordPress is a beast and hard to optimize. That’s not even the kicker as to why I switched away.

A Call From Rackspace…

About a month ago, I realized my blog was down. I figured that it might have been that I was featured somewhere else which was crashing it (again I was rolling my eyes at WordPress). But then, I got a call and email from a very helpful Rackspace employee. The email went like this:

Despite the very best efforts of or our Engineering and Datacenter Operations Teams, unfortunately the host machine that your cloud server ‘Websites’ resides on was not able to be recovered. At this point, we are looking at complete data loss.

and… Rackspace, in this poorly phrased email, was basically like. “Well, sucks to be you, hope you had a backup!”. Well, I admit this is partially my fault for not having a backup as I am a bit of a n00b when it comes to server admin, but I had been hosting for years on (don’t judge me) GoDaddy before that and a couple years on Rackspace. I had no idea that hosting companies didn’t have backups of their own. It would seem that this might be crucial to their business.

Needless to say, I lost everything including a jewelry site that I ran (not many sales), an iPhone leaderboard site (not very popular), 2 of my buddies WordPress blogs, and my current WordPress blog.

Jekyll To The Rescue

I was pretty angry at Rackspace and myself for never making a backup, but then it hit me that most of my posts had been converted to Jekyll and were backed up in a github repository. I was able to restore my blog within a few minutes (now hosted on GitHub) and recover the WordPress posts from the Feedburner cache of my site.

As for my buddies’ sites… I feel for them :(

New List Of Why Jekyll Is Awesome

  • Automatically backed up – This is huge. If not for switching to Jekyll at one point, I would have lost years worth of content. If you have every tried to back up WordPress, it’s a huge frackin pain since the database dump usually gets HUGE.
  • Free To Host – I’m not sure why I was so stubborn about doing my own hosting. I am now hosting on GitHub and it couldn’t be more stable and fast.
  • Mobile Blogging – This was my largest gripe about Jekyll. I was jealous that I couldn’t blog from my iPhone like WordPress users. Well, I have found a pretty decent solution (tutorial to follow), which involves a combo of Prompt, Screen, and Vim.
  • Content Oriented – WordPress makes it super easy to dump tons of images into your posts. While blogging with Jekyll (inside of Vim in my case), it’s a little bit more of a pain to add your own images. That being said you must be choosy forcing you to focus more on the content and less on using visual crutches.
  • Blog Anywhere – This was another limitation I was placing on Jekyll in my last post. However, I just wasn’t using Jekyll to its full potential. I was building my site locally and rsyncing it up to my server. This process was a little tedious and discouraged me from writing many new posts. Now, hosting with github, posting is as simple as a quick push to the repo.
  • Ninja Fast – This one should be obvious.

Conclusion

I am quite happy blogging with Jekyll. As far as I’m concerned there is no reason to ever host my own blog again (as long as Github doesn’t ditch pages 😉 ). Also, if you currently have stuff on Rackspace, go make a backup now (or ditch them altogether). Thanks for reading and look out for my next post about mobile blogging with Jekyll.

Happy Blogging!

New Year – New Theme: Focus On The Content

As you may have noticed, my blog has a new (much cleaner) theme. For 2012, my blogging goals are to focus much more on content rather than flashy visuals.

I have also minimized my set up to save blogging costs (I now blog for FREE) and to simplify things greatly. Here is my new setup:

  • Jekyll as my “blog engine”
  • The WPTypo WordPress Theme I ported this to Jekyll
  • GitHub for hosting (it’s free).
  • Vim – I’m using this as my “blog editor”. There are some incredible plugins that I am using to help facilitate blogging using Jekyll (post on how I do this to follow)

That’s about it. I am now free from server costs and my blog is always backed up and easily accessible.

2011 has been a very successful year in terms of blogging for me. In addition to writing here and on iCodeBlog, I have recently started blogging for Mobile Tuts + on the Envato Network. You can check out my 7 part game series on creating a caterpillar game using Cocos2D here.

I can’t wait to start posting some great content in this new year. Given my new setup, I literally have to adhere to the title of this post as blogging in VIM doesn’t really lend itself to visuals ;).

Happy New Year and Happy Hacking in 2012!

SVProgressHUD Is Quickly Becoming My Favorite iOS Library

From the first time I saw this effect in the Tweetie (now Twitter for iPhone), I was crazy about it. I had written my own hacks to make something close, but it was always terrible. Within the past few months, I have been using a perfect/elegant solution to this problem called SVProgressHUD.</p>

Using this in your project is as easy as calling:

// showing
[SVProgressHUD showWithStatus:@"Logging in…"];
// hiding
[SVProgressHUD dismiss];

Clone SVProgressHUD On Github