Thursday, August 4, 2011

The Driving Force Behind Software Evolution

Technology has long been a passion of mine. I obviously enjoy gadgets and learning about hardware and iterative software improvements. In addition, I also find it interesting to observe what actually pushes these changes. I often think about the impetus that causes things like Moore's Law to hold true. 

At this time, I'm interested in the process that keeps Apple and Google on the cutting edge of innovation. When the iPhone came out in 2007, it was definitely a game-changer, but it was lacking in many, very glaring ways. Even its successor, the iPhone 3G had major features missing, that users cried out for. A few notable features missing from these early devices were, a video camera, MMS capability, and the ability to assign custom desktop wallpaper. 

A group of developers (hackers, if you will) saw an opportunity, and took it upon themselves to learn the platform and implement the features that the public wanted, but Apple had not included. The jailbreak community grew from a small subset of the iPhone population to a pretty big chunk. At one point, Jay Saurik, a major figure in the iOS Jailbreak community, estimated that more than 10% of iPhones were jailbroken.

Whether or not this number is true is inconsequential; Apple still took notice, and a legal battle ensued. In 2010, jailbreaking was declared legal in the US. I think this is definitely to Apple's benefit, although I am not sure they would publicly admit it. This appears to be the path of development for the iOS platform:

Jailbreakers introduce a feature --> Apple officially implements it --> The bar is raised for third-party developers

I'm not sure whether or not Apple feels the same way, but I can see how the jailbreak community has helped Apple's development of iOS. The jailbreakers implemented features that the iOS community at large wanted. They allowed my iPhone 3G to shoot video. They gave me the ability to send picture mail before AT&T and Apple officially sanctioned it here in the US. Winterboard allowed me to make my iPhone LOOK as fun as it felt.

These, and many more features that the jailbreak community gave us first, were eventually integrated into iOS. It appears as if Apple does pay attention to what the jailbreakers are doing. Undoubtedly, there are many things the software could do, but the hardware limitations might not allow them to run to Apple's high standard of quality. In this case, some features have to wait until the next hardware iteration. However, it could be speculated that Apple has taken some development cues from jailbreakers. 

When Apple does implement some of these changes, the developers on the platform must also seek new ways to utilize the improvements. For instance, the Camera app in iOS 5 will allow users to make basic edits natively. Pretty much the only reason I have Photoshop Express on my iPhone is to crop photos. There are numerous apps in the App Store now that will become obsolete when this new functionality arrives. Because of this, iOS developers will have to adapt. They must come up with new ideas to capture our imaginations. And I am sure they will.

By Apple perpetually seeking to improve its own platform, it forces the development community to step it up. A stagnant platform becomes boring. I believe Apple realizes that, and will not allow us (as end-users or developers) to become bored with its products.

With iOS 5, I think the platform has really grown up on iPhone, iPod, and iPad. iOS on AppleTV is still relatively under-developed. There are plenty of features that could be added to the device. I am sure the jailbreakers and Apple both have big plans in store for it. I, for one, am excited to see what's in store next!

Monday, June 6, 2011

My iOS5 Wishlist

I've been meaning to post this wish list for the past couple weeks. Since today is the start of WWDC 2011, figured I'd hammer it out before anything is officially announced lol. I've see other people's hopes for the next iteration of iOS, but none of them were the same as mine. Some of the lists were unrealistic, and not likely to be implemented, judging from the type of company Apple is. I believe my list to be a compilation of reasonable features - the logical progression to a still-developing, yet already stellar platform.

Social Network Integration
I would like to see a default option for Twitter, Facebook, AIM, etc. In Preferences, the user would set their preferred clients (i.e. - Echofon, Twitter, TwitBird). From any app, when the user long presses the screen, more options would come up, in the same manner as Select/ Copy/ Paste now, giving the options to Tweet, Post to Facebook, IM, or blog.

More AirPlay Support
I want apps like HBO GO, Xfinity, and ABC Player to support AirPlay. I think this is more likely to happen than HDMI out capabilities in iOS. I'm gonna go out on a limb and say Apple is not interested in people using their iPhones to replace AppleTV; they'd rather sell you both, and give them the ability to talk to each other.

Player for Downloaded Media
Presently, when someone emails me an audio file, I have to find that message every time I want to listen to it. Same thing if I listen to a file from a website - I have to visit that site every time I wanna hear the the track. I would love the ability to import to iTunes directly from the device, but I don't think that'll happen. As an alternative, Apple could implement a separate player for all downloaded media. It could be an extension to Safari that holds all media files, compiles them into a list, and makes them readily accessible whenever the user wants to watch or listen. I am presently experimenting with replacing my laptop with my iPad. I haven't used my MacBook for anything in the past 2 months for anything except software updates and sometimes charging my iOS devices. I occasionally download mixtapes not available in iTunes. In these cases, I have to use my computer to sync. By implementing this feature, they would reduce my dependency THAT much more lol. Which leads me to

OTA Updates
It would make updating so much easier than having to reinstall the entire OS every time. I'm not sure if Apple would implement this because of the inherent security (i.e. recapturing jailbroken devices) in doing a full OS install. Would be nice though.

More SMS/ text input features
  • Rich text - this could be expanded to Mail as well. I would love to be able to say "I" instead of "EYE" to emphasize myself in the first person. I always thought BBM was cool, and wished iOS had something similar.
  • Native URL shortener - definitely would come in handy in staying under the 160-character SMS limitation. SMS would automatically sense hyperlinks in text, then connect to a shortening service in the background while the user is typing (configurable in Preferences as well), and replace the longer URL with the shortened one. 
  • Ergonomic iPad keyboard. I've seen some on Cydia, but none like I imagine. I want one that is curved to accommodate my natural hand position on the keyboard.
I think these few changes will make iOS an even more attractive platform. Can't wait to see what actually happens!

- Posted using BlogPress from my iPad

Tuesday, May 24, 2011

The Sludge Test, Blackbox Software Testing, and Reverse Engineering

Remember back in 9th grade physical science class, there was a lab called the sludge test? We were given a beaker with an unknown mixture of materials (sludge), and had to scientifically deduce its make-up by using methods of physical and chemical decomposition we had learned in class. There was a list of possible substances (water, salt, alcohol, etc), and their extraction methods (boiling, filtration, titration, etc). Based on the combination of tests we performed, we could make educated guesses with some degree of certainty as to make-up of the substance in the beaker.

Little did I know, this would be the basis of blackbox software testing (and reverse engineering) I would use in my career down the road.

At work recently, my team needed to find the attributes that went into the calculation of a GPS value called "uncertainty." Since this is established in a lower level of software, provided by one of our suppliers, we do not have access to the code which calculates the value. When tasked with investigating this value, I immediately thought about the sludge test. I began thinking about possible parameters which could affect the value, and ways to verify their presence.

One of the values which sprang to mind was SNR (signal to noise ratio). I came up with the idea of splitting a strong GPS signal to a very low level, and observing the effect on the uncertainty value. If it drops lower each time the signal is split further (with all other factors held constant), we can safely assume that signal quality is included in the calculation.

(Check out my lil drawing I did to illustrate the hardware setup....boredom + iPad is a dangerous combination smh.)




Test engineers need to have an open, creative mind. The most effective QA and testing methods involve innovative, colorful thinking. Closing your mind off to an idea before considering it can be costly, in that it can result in missed bugs, which are generally more stressful if discovered later in the process than earlier.

This recent epiphany that high school wasn't completely useless really shocked me to the core. I feel an obligation to spread this realization to the world now. Wow.

Friday, May 20, 2011

Be Nice To People

At one point in my career, colleague and I visited one of our small suppliers. His opinion of the company was not very high. He did not think well of the company, and therefore, felt as if he didn't have to treat the employees well. It was almost as if he thought they were beneath us, just because we were with the giant company, and they were a smaller business, with less resources. He thought they would go out of business soon, and generally was not very friendly to them. That's not to say he was unfriendly, he was just very matter-of-fact - not very personable.

I feel that, regardless of the company's status or reputation, we work with PEOPLE, not a faceless company. People have feelings, and can pick up on your attitude, body language, and the way you treat them. If, by chance, this company does go under, the people will still exist. They will go on to take other positions, at other companies, where we might meet again later down the road. What if, the next time we meet, they happen to be in positions to help us out? Something to consider, but not the sole reason to treat someone with respect.

I sent individual, personalized emails to every member of the team, thanking them for their support during our visit. It was a small gesture, but hopefully they realize that their assistance was genuinely appreciated. I consider myself to be a people person, and I know that I would enjoy a note like that. I wouldn't expect it, but it would be an added bonus to my day. Something like that sets people apart, and not only looks good on the individual, but reflects well on the company the person represents. It reminds others there is a human element to business operations, and that's what it boils down to: people interacting with other people.


- Posted using BlogPress from my iPad

Tuesday, May 3, 2011

Learning Computer Security

I have always been interested in learning computer and mobile device security. I hear the terms "buffer overflow," "jailbreak," "root," etc, and have a genuine interest in learning what security vulnerabilities are, how to find them, and how people incorporate them into mobile device tools like Pwnage Tool and redsn0w for iPhone, and the long list of tools for obtaining root access on Android devices.

Recently, I started reading Computer Security by Dieter Gollmann. This book is filling in many of the holes I had in my understanding of computer security. Over the past week or so, I've been getting through a chapter every other day or so. They're pretty small-sized chapters, which makes getting through the heavy topics not QUITE so tedious lol.

I'm considering suggesting this as a course for the Detroit Area Pre-College Engineering Program (DAP-CEP). I've been a nuclear energy instructor with the program for the past 2 semesters, and I participated in numerous DAP-CEP programs in high school. I think an introductory course on computer security would be very interesting and helpful to the students. This book is very heavy reading though, so it would take a lot of manipulation to make the curriculum more easily digestible to a non-professional audience.

One other book I'm looking forward to reading is Mobile Device Security for Dummies when it comes out in July.

For some hands-on experience, I have been looking at the topic of penetration testing. Blackbuntu looks very promising for learning about security hands-on. I would like to take a class, but haven't found anywhere in my area with the particular topic I'm looking for yet.

This topic interests me very much. It's funny how much I enjoy learning this stuff on my own. If I had the class in school, I'm not sure it would be this easy and fun lol.


- Posted using BlogPress from my iPad

Friday, March 4, 2011

PICAXE 14M Board


I recently bought a PIC-AXE starter kit from Sparkfun in an effort to get more embedded/ microprocessor programming experience. The compiler uses a very simple high-level language (BASIC), so it was easy to pick up.

I wanted to start out with a 'Hello World'-type project. Since interfacing with an LCD is much more complex, i just went with blinking an LED. The logic for this operation was incredibly simple - just 5 lines of code:
main: high 0
pause 1000
low 0
pause 1000
goto main
Building the circuit was slightly more tricky, but still easy. I made a mistake that I had to fix before it worked. Since I'm using the project board, which has all the 14M's outputs going through the ULN2803 (Darlington transistor array), I had to connect the LED in series with a 330Ω resistor, between 4.5V and the transistor output pin. Initially, I had it between the output pin and ground, so it didn't work.

Such a simple circuit, but it represented a big break through for me in the learning process. I'm looking forward into digging more into Picaxe Microcontroller Projects for the Evil Genius. I really like this book so far...(and no, not just because of the title)!

Here's my beautifully soldered board ::toot toot::
 

Monday, February 21, 2011

MobiDevDay 2011

This weekend I got the opportunity to attend MobiDevDay in Downtown Detroit at the Compuware building. This event is a gathering of mobile developers and enthusiasts in the area. We network and learn from each other through a series of lectures and presentations.

At the event this time, there were presentation on Android, iOS, Windows Phone 7, Kinect, and a few other development technologies.

Going into the event, I was excited at the prospect of getting an introduction to more platforms, as well as possibly learning more about iOS and Android. I was certainly not disappointed!

I attended sessions on XCode, iOS Programming with Blocks, Intro to Android 2.x, Intro to Windows Phone 7, and Connect with Kinect. Each of these sessions served as an introduction, or overview, but the presenters each gave their own contact information, as well as links to resources for the topics which they presented.

Definitely looking forward to networking with the people I met at this event, and becoming more involved in the local developer's communities in and around Detroit!