I love how “open” Android is!

November 30th, 2011

The great argument I’ve heard for Android is how it is “open”. It is an open system, unlike the iPhone or Windows Mobile which are closed. That openness has led to some interesting revelations, the latest of which is this number: http://www.huffingtonpost.com/2011/11/30/carrier-iq-trevor-eckhart_n_1120727.html

To summarize, security researcher, Trevor Eckhart, found some hidden software in Android made by Carrier IQ. It logs phone numbers, text messages, searches, and every url you visit, even SSL. Now, I think this should be looked at as a feature rather than a privacy risk. Android is all about being “open”, so why isn’t your personal information open as well. There is no such thing as a free lunch, so there is no such thing as a free operating system. You are paying for it with your personal information.

Anyone who is surprised by this must not understand Google’s business model. Everything they do is based around selling ads and customer’s personal information. They don’t have a single product that doesn’t do that. With that in mind, can you really be surprised?

 

As an addendum. My first recommendation is of course to buy an iPhone, because it’s a fantastic device, but if you refuse for whatever reason, the new Windows 7 Phones are fantastic as well. They don’t have all the apps that the iPhone does, but given that Microsoft has the cash to pay people to make apps for them, I don’t think that will be the case for long.

Adventures in Objective-C

October 14th, 2011

I’ve been lucky enough to have a new mobile project at work to continue refining my objective-c skills recently. I’m definitely moving into new territory with custom view drawing, zooming, and some advanced interactions.

So far, I have found the quartz drawing to be the most interesting. Not only can you draw using paths, rectangles, and ovals, but you can use the same language constructs (CGPath in this case) for hit testing. This allowed me to use build an single instance variable to use for hit testing and drawing. I had a total of 52 distinct objects, some with several pieces to them, that were able to draw, zoom, and hit test for under a megabyte of memory.

I was surprised at I was able to do so much with so little memory. I initially had fears that I would be running into all sorts of memory management issues with so many distinct objects on screen. I feel like this just shows how developed objective-c really is.

I have been a PHP developer for quite some time, so objective-c is a huge departure from what I’m used to. The wealth of fully baked frameworks/classes available make it a joy to develop in. PHP has a huge number of frameworks as well, but they are all addons rather than being built in. I really like how MVC is just the way the language works, rather than some convoluted system laying on top of the language. I equate objective-c to smalltalk. I only used smalltalk once at Georgia Tech, and I hated it at the time. As I’ve had to develop larger applications, I’ve come to appreciate that experience.

The main thing that stands out as incredibly useful is the delegate pattern used so thoroughly throughout objective-c. I don’t know that we even discussed this pattern in school, which seems absurd to me. It is incredibly powerful, because it gives people a way to inject code between actions without subclassing or modifying the base class.

I guess to sum up, I am really enjoying building things in objective-c because the language does most of the work for me. As Steve Jobs said, you want the language to give you the first few floors of scaffolding, so you can put the difficult top floors on a solid base.

Visionary

October 5th, 2011

The world has lost a visionary. Sadly, we will not get to see any more of his great ideas.

Rest in peace Steve Jobs.

If you are disappointed by the iPhone 4S, you aren’t paying attention

October 5th, 2011

The common story around the internet (prior to Steve Jobs, RIP) is that the iPhone 4S is disappointing. People are disappointed that it isn’t the iPhone 5. Here’s the problem, it is the iPhone 5!

The iPhone 4S is better than the iPhone 4 in every way, except for the form factor. This is in much the same way that the iPhone 3GS is better than the iPhone 3G. The internals of the phone are what everyone expected with some extras. The dual antennas sending and receiving at the same time? Awesome. CDMA and GSM in one device instead of two distinct devices? Awesome. 8MP camera with 1080P video? Awesome. All of this without even mentioning the amazing software. iCloud, Siri, iOS5, and let’s not forget Cards.

So the “let down” is that the form factor didn’t change. Did anyone ever stop to think that the form factor is good? I certainly think it is. Perhaps Apple feels they have refined it to near perfection, and there is nothing more to do. The phone is an excellent weight, feels good in your hand, and looks fantastic. Why change something that isn’t broken? Not to mention the costs associated with changing the form factor just for the sake of changing it.

I guess the basis of this post is, if you’re disappointed in the iPhone, do yourself a favor and be quiet. The phone is solid in every way, and Apple is going to sell millions of them.

Be Great, Be Great, Be Great

September 29th, 2011

I remind young people everywhere I go, one of the worst things the older generation did was to tell them for twenty-five years “Be successful, be successful, be successful” as opposed to “Be great, be great, be great”. There’s a qualitative difference.

- Cornel West

The first time I read the above quote, I felt some deep stirring in myself. I knew I agreed, but I didn’t know what to do. Over time I have realized that I always focused on being successful. I was never focusing on being great. Once I came to full realization, I decided to do something about it. I decided I wanted to be great.

I have found the transition from a focus on success to a focus on greatness is difficult. I have found myself increasingly frustrated, because I only really know how to be successful. That is what we are training our society to be in our education system. We focus on the short term. Pass the next test. Finish the next assignment. We lose sight of the final goal. I lost sight of all of my goals.

My goal is to be an innovator in my field. My goal is to push the boundaries of the technology I use. My goal is to speak about what I have done and motivate others to be great. I want to create something different. I want to inspire others to create something different.

My goal is to encourage and enhance education. My goal is to make sure every student has access to science, math, art, music, literature, history, and any other subject they are interested in. I want to help students to learn and be great themselves. I want to support a society that supported me.

I think by focusing on these goals, I can be great. I will be great, because I am trying to help others be great.

Whenever I have doubts, I read that quote, and then I watch this:

Carl Sagan is an excellent source for inspiration.

Fab.com is Fab

September 29th, 2011

If you haven’t seen fab.com, I highly suggest you check it out. Here is my invite link: http://fab.com/n8ozg5

The site is basically a daily deal site focused around design. The typical products are furniture, lighting, art books, clothing, and the occasional trinkets. To date, I have made 5 purchases at Fab and loved every single one of them. I bought Plumen bulbs, signed and numbered lithographs of Lady Gaga and Patton Oswalt, Supernova Lights, a Che-Bart shirt, and finally some Urbanears headphones.

Why am I writing about this? I think they have executed on the daily deals plan properly. I’ve tried groupon, scoutmob, and livingsocial, but never found anything that was all that interesting. There are the very occasional things that are nice, but you’re always buying a coupon for something else. Why not sell me an actual product like Fab? Why not sell me something that is harder to find? Why not sell me something hard to find at a nice discount?

Fab has executed on those “why nots”. I bought products. I bought the Plumen bulbs that I had seen before, but never found a way to purchase at the time. I bought the Supernova lights that were hard to find and discounted $120. That’s an excellent execution.

Fab has found the key to daily deals. Sell people things that they want, but have a hard time buying. Don’t sell services, sell products.

Thoughts on the new Facebook

September 27th, 2011

I’m sure everyone has been using the new Facebook layout for a few days now, and I figured I’d write down some of my thoughts on it.

My first impression is that it isn’t that different from the old layout. You still have the main feed down the middle, and all kinds of crap on the sides. Nothing new by any means. What does bother me is that they’re trying to decide what is important to me automatically. I hate it when someone tries to tell me what I’m interested in.

The old feed allowed you to view what they determined the top stories or you could view everything chronologically. Call me crazy, but I always viewed the chronological “most recent” feed. I didn’t want to miss anything important, and that way my way of doing it. Did I see a bunch of things I didn’t care about? Sure. There is an easy fix though, usually those people are spammy and annoying, so you can unfriend them or block their updates. I have a few people that I unfriended, and a few that I blocked updates from.

I think Facebook thought they could appease people like me with the box on the right hand side showing everything that’s going on. The problem there is that it shows me what songs people are listening to (don’t care), anything anywhere that someone liked (don’t care), and nothing is grouped (each comment on an item is a separate item). This is too much information.

That means that people like myself that were filtering the feed ourselves are now stuck with either the automated feed or the raw feed. Neither of those options really appeal to me, but I just have to put up with it.

Do I hate the new layout? No. Is it somewhat annoying? Sure. Will I come up with a new “workflow” for getting information? Absolutely.

That’s how the world works. Things change. We adjust. The new becomes the old.

At least this time I didn’t get invited to any groups that are “1,000,000 strong to change Facebook back”. Of course, those groups only have a few thousand people in them.

Recovery

September 26th, 2011

For a while now, I’ve been trying to think of new things to write about, and I obviously haven’t had much success. Beyond just writing, I was having trouble motivating myself to do much of anything, be it work, freelance, or fun. For the life of me, I couldn’t figure out why I was having so much trouble with motivation. Nothing I did seemed to work. It’s obvious to me now, and it was probably obvious to others what the problem was.

Burnout.

I was burned out on work, burned out on the common activities I did, burned out on just about everything. What’s somewhat amusing is that I read about burnout fairly frequently, and I always think I’ll recognize it when it happens. That may be the one problem most people fall in to. It is hard to know when you’re getting burned out. By the time you do realize, you have to make a major course correction to fix it. For me, that course correction has been a 5-day weekend. Thursday through today.

I originally planned to fly to New York City as a vacation to visit a friend. However, plans fell through, and I ended up not going. At first I was somewhat depressed that my vacation wasn’t going to happen, but sometimes changes are better. Instead I’ve stayed at home and done only what I want to do.

I’ve gone out to dinner and had great conversations. I went ice skating for the second time in my life. I went to Music Midtown on a whim with a friend. I spent an entire day getting to know someone new. I trained for my triathlon. I watched an entire season of Married With Children.

I did not think about work. I did not think about freelance. I did not work on any personal projects. I did not worry.

I was and am happy.

PHP Community Conference Thoughts

April 24th, 2011

The PHP Community Conference was my first time attending a conference. I definitely enjoyed the experience and will go again. Honestly, I should have gone to a conference earlier in my life, because I feel like I learned so much about development and myself.

The first thing I learned was a renewed sense of humility. In my little bubble I felt I was near the top, but outside of that bubble, I realized I am not quite so hot. There are people doing amazing things with new development, profiling, testing, deployment, etc. I, meanwhile, push out predominately CMS sites with the occasional custom site. The custom sites aren’t anything to laugh at, as they require some expertise, but nothing on the scale of what I saw. This was a truly sobering moment.

That brings me to my second feeling, motivation. I feel energized to go out and do many of the things I heard discussed. I want to act on this new knowledge to improve myself and the company I work for. We can and should do better than we are. Beyond that, I need to get involved in open source; I need to start filing bug reports; I need to start posting fixes; I need to contribute to the community as a whole. Up to now I have been a freeloader, the time has come to give back.

With that motivation, I want to really start a company. I have tried and failed in the past, but I need to learn from those mistakes. I always tried to go it alone, and I’ve realized that won’t work. I need someone to work with me and provide the pieces of the puzzle I don’t have. Luckily, I have that person now, and we’re in the first steps of that dream. I have a doubly renewed motivation to move forward. I’m going to stop waiting for certain things to get done and just go for it. I need to stop treating things like they are a single chronological thread and start multithreading (pardon the pun). Stop thinking, and start doing.

I also have the motivation to start trying to speak. I have wanted to be a conference speaker for a while now, but having never been, I didn’t know quite what that entailed. I never felt like I had anything interesting to say, and I probably didn’t. That means I need to go out and do something worth talking about. From there, I’ll gain the experience and the clout to be a speaker. Maybe one day I can provide the inspiration to someone else to get up and do something new.

On my drive home I had to make the choice of what I would take away from the conference. I saw two options: become depressed and resign myself to going nowhere or become energized and go out to do something great. I feel that I’ve chosen the latter and hope that time will see that to be true. Words are cheap, actions are rich.

PHP Community Conference: Day 2

April 23rd, 2011

Day 2 turned out to be amazing just like day 1. The talks were all focused on stories in the context of project evolutions.

The opening Keynote by Rasmus Lerdorf was great. He is the guy that got PHP off the ground in the 90s. He talked about performance measures that can be taken in PHP, and things that all developers should be doing, but most don’t. He focused in on what PHP is and isn’t.

Next I attended Drew Mclellan’s talk in Perch. He discussed how the project came about, his successes, his failures. He talked about how they set a goal to make sure all support requests were unique. If a support request came in the goal was to fix the problem not just for the person asking, but for all future users.

After that I went to Paul Reinheimer’s talk on XHProf and Wonderproxy. He talked about getting Wonderproxy started, and the kinds of projects it could be used for. Basically the service provides proxies for developers to use to test features in their code that rely on GeoIP data. For instance, running credit card transactions through certain vendors based on the user’s country of origin. It was an interesting product, and he talked about some of the difficulties in getting a company started. One of the main problems he has to deal with is SEO. There are an enormous number of sites hosting garbage about proxies just to raise their pagerank, and he said he isn’t willing to do that, because he wants to make the web better, not worse. I really respect that. For XHProf, he talked about some of the amazing profiling that can be done. Basically, XHProf counts all of your function calls in a run, and shows you graphs with all of the data. You can even compare previous runs to new runs, basically giving you historical profiling over code changes. This is great because it will give you a real sense of whether your change was good or bad for performance. Definitely a tool I’m going to look into using.

The third talk of the day for me was Laura Beth Denker’s talk on the evolution of testing at Etsy. She went into some great depth on the testing tools and methodology used, as well as the basic rollout system. Essentially, Etsy uses a Continuous Integration method, and they were rolling out 3 changes a day 6 months ago. Over the last 6 months they have altered their procedures to increase the number of tests from 1500 to 7000, while decreasing the runtime of those tests from 30 minutes to 7 minutes. This has allowed them to release 40 changes a day to production. That is an amazing turnaround. The talk has gotten me thinking about how we handle rollouts at my current job, and our system is woefully inadequate. Additionally, I’m going to enforce some strict rules on myself for my startup to ensure a great process from the beginning.

For the last talk I went to, I’m not really sure what to say. The focus was on how to tell stories and convince users of something, but it was somewhat dampened by NDA constraints. I’m sure Marcel Esser had some cool things to talk about, but just couldn’t.

The closing keynote was given by Terry Chay, and it was probably my favorite talk of the conference. He definitely had the engagement of the audience. He talked about some of the great things that PHP can do, but also talked about some of the things it currently can’t, and what we can do to fix it. We need to focus on getting PHP into the cloud, because Rails currently does it better. I definitely felt like he ended the conference on an inspirational note.

I’ll have a wrap-up some time later today or tomorrow with my over-arching thoughts on the conference. I had a lot of time to think on the drive back last night, but I’m still trying to piece together what I want to take away.