Friday, March 8, 2013

I've moved from Blogger!

I'll continue to blog, but I'm hosting my own site now. Please check me out over at blog.thomasphillips.info!

Monday, February 4, 2013

The Engineering Profession

Came across this quote I really liked on Jack Ganssle's newsletter The Embedded Muse.

Engineering ... it is a great profession. There is the fascination of watching a figment of the imagination emerge through the aid of science to a plan on paper. Then it moves to realization in stone or metal or energy. Then it brings jobs and homes to men. Then it elevates the standards of living and adds to the comforts of life. That is the engineer's high privilege. (Herbert Hoover, 31st president of the United States)



- Posted using BlogPress from my iPad

Tuesday, January 15, 2013

iOS (POSIX) Security

I've long been interested in learning more about jailbreaking/ device security. The problem is, I did not know where to start. The topic requires so much knowledge about other fields, that it's kinda impossible to just jump right into finding exploits. In my quest for info, I learned lots about Unix, POSIX, and Apple's implementation into their iOS (and Mac) devices.

Recently, I found the iOS Hacker's Handbook. This is the book I've needed all this time. It's perfect for the stage I am in my learning. It goes through building custom ramdisk images for iOS 5, using scripts and tools (redsn0w) that have already been developed and tested. By not reinventing the wheel, so to speak, I can incrementally increase my understanding of the subject without being inundated with technical jargon beyond my comprehension lol.

There are some scripts that don't work as presented in the book, so I opened them in TextEdit and examined them, making changes when necessary to fit my particular situation. This has made me much more comfortable with Unix shell scripting, as well as served as served as a great introduction to python for me. Hope DevTeam has room for me!

Now to think of a clever hacker pseudonym...th0mas probably isn't gonna cut it, huh?

Monday, October 15, 2012

Wait...I'm smart???


At work the other day, I came to an astonishing epiphany - I am smart. Like smarter than I thought I would ever be. Don't get me wrong, I'm not conceited. I just thought of all the obstacles I've overcome on the route I took to get to where I am, and I became almost overwhelmed with a sense of pride in my accomplishments to date, as well as excited about the things I have yet to achieve.

Y'all still don't feel me tho..here's a little background.

Wednesday, October 10, 2012

Above all else - Persevere

Sorry if I've told this story before..I just felt compelled.

I was never a stellar student. I wasn't horrible, but I did what I had to do to make it through. I got my first C in the 4th grade. I think it was in handwriting...mighta been math, but that's not important - I had never gotten anything lower than an A to that point. I did well enough through junior high to place into Renaissance High School - [arguably] the best public school in Detroit.

Monday, October 1, 2012

Favorite under-the-radar iOS 6 and iPhone 5 features

I just wanted to post a few thoughts of my first week with iPhone 5 (2 weeks with iOS 6). Overall, I like them both. The features they advertise are always nice, but I always appreciate the silent updates - the things that generally go unnoticed, but add to (or detract from) the user experience.


Wednesday, September 26, 2012

AppleScript to create Address Book Entries

For work, I created a test for MAP-enabled devices. Being that iPhone now supports MAP, I figured a good test would be to create a huge contacts list on the iPhone, then pair the device to the unit under test and see how it responds. I (obviously) did not want to have to manually create hundreds or thousands of contacts, so I looked into using Automator or AppleScript.

Thursday, September 20, 2012

iOS6 - Limit Ad Tracking

I hate ads. I hate them online. I hate them on my windshield when I get back to my car after parking downtown. And I especially hate them on my mobile devices - an environment I used to feel safe. 

After updating to iOS6, I found a new "Advertising" category buried in my Settings > General > About menu. The next screen presents a switch that allows you toggle a feature called Limit Ad Tracking. 

Tuesday, September 18, 2012

Keep the pinout handy

A small lesson I learned [the hard way] today lol. When creating a cable or connector with multiple connections, it's always a good idea to keep the pinout nearby. Today I was making a couple DB9 to banana jack cables for connecting my CANCaseXL to a test bench. I only use 3 connections used on the DB9, and I broke each one out to a different color banana jack:

Friday, September 7, 2012

Linux From Scratch - Build Environment

Recently, the homie Mike put me up on the Linux From Scratch project. I have always wanted to compile Linux, and eventually want to create my own Android-based device. Even if it's just for my desk at home, it's a goal of mine to one day build a multimedia computer where I design EVERYTHING - hardware and software.

Friday, August 31, 2012

Linux From Scratch

I have had an interest in Linux for quite some time. Now that I have a bit more understanding of device architecture (core, OS, and application layers), I'd like to try my shot at building Linux from source code, with the end goal learning how to port my own distribution to custom hardware.

Monday, June 25, 2012

Arduino + Wii Nunchuk

Came up with a nice little hack with a Wii Nunchuk. The point of the project is to calculate the force of a swing of a Wii Nunchuk, using the built-in accelerometer, and output it on an LCD display. I found some useful information on starting the project here, including a handy hardware adapter to allow using the Nunchuk without cutting the USB cable (which I actually bought from Sparkfun). There's also download links to the library needed to interface between Arduino and Nunchuk via i2c.

I had to edit a couple of things in the library itself to get it working specifically to my application, but everything turned out really well. It's amazing how much you can learn just by seeking knowledge.

Friday, June 8, 2012

Arduino Uno + LCD

I did some reading on the Arduino forums and learned how the inputs and outputs work, along with interfacing with a LCD screen. I came up with a simple project that would:

  1. Count to ten from 0, displaying the counter on the LCD
  2. Display a message when it reaches 10
  3. Flash a Green LED for 5 seconds
  4. Count to 0 from ten, displaying the counter on the LCD
  5. Display a message when it reaches 0
  6. Flash a Red LED for 5 seconds
Having fun with this Arduino thing lol.

Monday, April 2, 2012

Arduino!

So I finally bought myself an Arduino Uno. I have been wanting to get more into micros and embedded computing for a while, but did not know how. Arduino is the perfect solution for relative beginners such as myself. Within a week of buying it, I had a project in mind I wanted to work with. Wanna hear it? Here it go:

I found the WiiChuck Library, and decided to make a little project which would take accelerometer data from the Wii Nunchuk, do a couple of calculations, and show the result on an LCD. This would give me some experience with Arduino, an external library (WiiChuck), and an internal library (LiquidCrystal). I'll try to update the results here as I make progress.

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::