<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7260018730345237004</id><updated>2011-11-27T17:04:34.171-08:00</updated><category term='install'/><category term='debug'/><category term='Microsoft SDET interview'/><category term='GPartEd'/><category term='tomosophy'/><category term='pwnagetool'/><category term='3g'/><category term='ipsw'/><category term='psp hacks'/><category term='zune 80'/><category term='iphone'/><category term='xcode'/><category term='iphone programming'/><category term='interviewing'/><category term='iphone repair'/><category term='pwnage'/><category term='homebrew'/><category term='teardown'/><category term='repair'/><category term='psp programming'/><category term='project'/><category term='disassembly'/><category term='jailbreak'/><category term='hardware'/><category term='Windows 7'/><title type='text'>Fat Tom's Tech Journal</title><subtitle type='html'>This is a means for me to document my technological exploits, so that I may more easily reproduce (or avoid) them in the future. If anyone learns anything from this, well then that's cool too. . .</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-3744215908883514737</id><published>2011-08-04T11:53:00.000-07:00</published><updated>2011-08-04T12:00:52.206-07:00</updated><title type='text'>The Driving Force Behind Software Evolution</title><content type='html'>&lt;div style="text-align: justify;"&gt;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 &lt;a href="http://en.wikipedia.org/wiki/Moore's_law"&gt;Moore's Law&lt;/a&gt; to hold true.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;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.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;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 &lt;a href="http://www.saurik.com/id/12"&gt;more than 10% of iPhones were jailbroken&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Whether or not this number is true is inconsequential; Apple still took notice, and a legal battle ensued. In 2010, &lt;a href="http://www.wired.com/threatlevel/2010/07/feds-ok-iphone-jailbreaking/"&gt;jailbreaking was declared legal in the US&lt;/a&gt;. 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:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Jailbreakers introduce a feature --&amp;gt; Apple officially implements it --&amp;gt; The bar is raised for third-party developers&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;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&amp;amp;T and Apple officially sanctioned it here in the US. &lt;a href="http://www.saurik.com/id/9"&gt;Winterboard&lt;/a&gt; allowed me to make my iPhone LOOK as fun as it felt.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;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.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;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.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;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.&lt;br /&gt;&lt;br /&gt;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!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-3744215908883514737?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/3744215908883514737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2011/08/driving-force-behind-software-evolution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/3744215908883514737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/3744215908883514737'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2011/08/driving-force-behind-software-evolution.html' title='The Driving Force Behind Software Evolution'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-911710957948980408</id><published>2011-06-06T09:54:00.001-07:00</published><updated>2011-06-06T20:58:40.226-07:00</updated><title type='text'>My iOS5 Wishlist</title><content type='html'>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. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Social Network Integration&lt;/b&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;More AirPlay Support&lt;/b&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Player for Downloaded Media&lt;/b&gt;&lt;br /&gt;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&lt;br /&gt;&lt;br /&gt;&lt;b&gt;OTA Updates&lt;/b&gt;&lt;br /&gt;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.&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;More SMS/ text input features&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rich text - this could be expanded to Mail as well. I would love to be able to say "&lt;b&gt;&lt;i&gt;I&lt;/i&gt;&lt;/b&gt;" instead of "EYE" to emphasize myself in the first person. I always thought BBM was cool, and wished iOS had something similar.&lt;/li&gt;&lt;li&gt;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.&amp;nbsp;&lt;/li&gt;&lt;li&gt;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.&lt;/li&gt;&lt;/ul&gt;I think these few changes will make iOS an even more attractive platform. Can't wait to see what actually happens!&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-911710957948980408?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/911710957948980408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2011/06/my-ios5-wishlist.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/911710957948980408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/911710957948980408'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2011/06/my-ios5-wishlist.html' title='My iOS5 Wishlist'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-8156051092750114338</id><published>2011-05-24T17:54:00.001-07:00</published><updated>2011-05-24T17:54:56.361-07:00</updated><title type='text'>The Sludge Test, Blackbox Software Testing, and Reverse Engineering</title><content type='html'>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. &lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;(Check out my lil drawing I did to illustrate the hardware setup....boredom + iPad is a dangerous combination smh.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href='http://photo.blogpressapp.com/show_photo.php?p=11/05/24/3232.jpg'&gt;&lt;img src='http://photo.blogpressapp.com/photos/11/05/24/s_3232.jpg' border='0' width='281' height='210' style='margin:5px'&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-8156051092750114338?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/8156051092750114338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2011/05/sludge-test-blackbox-software-testing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8156051092750114338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8156051092750114338'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2011/05/sludge-test-blackbox-software-testing.html' title='The Sludge Test, Blackbox Software Testing, and Reverse Engineering'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-1345855763947945895</id><published>2011-05-20T12:17:00.001-07:00</published><updated>2011-05-20T12:17:29.434-07:00</updated><title type='text'>Be Nice To People</title><content type='html'>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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-1345855763947945895?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/1345855763947945895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2011/05/be-nice-to-people.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1345855763947945895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1345855763947945895'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2011/05/be-nice-to-people.html' title='Be Nice To People'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-3736791026222754133</id><published>2011-05-03T17:13:00.001-07:00</published><updated>2011-05-04T07:24:07.369-07:00</updated><title type='text'>Learning Computer Security</title><content type='html'>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 &lt;a target="_blank" href="http://en.wikipedia.org/wiki/PwnageTool"&gt;Pwnage Tool&lt;/a&gt; and &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Redsn0w"&gt;redsn0w&lt;/a&gt; for iPhone, and the long list of tools for obtaining root access on Android devices. &lt;br /&gt;&lt;br /&gt;Recently, I started reading &lt;a target="_blank" href="http://www.amazon.com/Computer-Security-ebook/dp/product-description/B000TYYSXM/ref=dp_proddesc_0?ie=UTF8&amp;n=133140011&amp;s=digital-text"&gt;Computer Security&lt;/a&gt; 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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;One other book I'm looking forward to reading is &lt;a target="_blank" href="http://www.google.com/products/catalog?oe=UTF-8&amp;hl=en&amp;client=safari&amp;q=mobile+device+security+for+dummies&amp;um=1&amp;ie=UTF-8&amp;cid=17760615658770062324&amp;sa=X&amp;ei=lpXATbG1FcH8rAGkvYG1Bg&amp;ved=0CEgQ8wIwBQ#"&gt;Mobile Device Security for Dummies&lt;/a&gt; when it comes out in July. &lt;br /&gt;&lt;br /&gt;For some hands-on experience, I have been looking at the topic of penetration testing. &lt;a target="_blank" href="http://www.blackbuntu.com/"&gt;Blackbuntu&lt;/a&gt; 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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-3736791026222754133?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/3736791026222754133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2011/05/learning-computer-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/3736791026222754133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/3736791026222754133'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2011/05/learning-computer-security.html' title='Learning Computer Security'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-7761622229169625</id><published>2011-03-04T14:17:00.001-08:00</published><updated>2011-03-09T07:09:13.100-08:00</updated><title type='text'>PICAXE 14M Board</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;main: high 0&lt;br /&gt;pause 1000&lt;br /&gt;low 0&lt;br /&gt;pause 1000&lt;br /&gt;goto main&lt;/blockquote&gt;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.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-ZsjGK8oWysk/TXFlzyHrlvI/AAAAAAAAAOs/ftiD71WfPqY/s1600/New+Image.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="https://lh4.googleusercontent.com/-ZsjGK8oWysk/TXFlzyHrlvI/AAAAAAAAAOs/ftiD71WfPqY/s400/New+Image.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;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 &lt;a href="http://www.amazon.com/PICAXE-Microcontroller-Projects-Evil-Genius/dp/0071703268"&gt;Picaxe Microcontroller Projects for the Evil Genius&lt;/a&gt;. I really like this book so far...(and no, not just because of the title)!&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-Pp3K_gnTVnc/TXeXcOM5AZI/AAAAAAAAAOw/PcaS_B__5dw/s1600/photo.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="https://lh5.googleusercontent.com/-Pp3K_gnTVnc/TXeXcOM5AZI/AAAAAAAAAOw/PcaS_B__5dw/s400/photo.JPG" width="298" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Here's my beautifully soldered board ::toot toot::&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-7761622229169625?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/7761622229169625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2011/03/picaxe-14m-board-i-recently-bought-pic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/7761622229169625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/7761622229169625'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2011/03/picaxe-14m-board-i-recently-bought-pic.html' title='PICAXE 14M Board'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-ZsjGK8oWysk/TXFlzyHrlvI/AAAAAAAAAOs/ftiD71WfPqY/s72-c/New+Image.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-6866347733371968628</id><published>2011-02-21T11:31:00.001-08:00</published><updated>2011-02-21T11:31:34.902-08:00</updated><title type='text'></title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;p&gt;MobiDevDay 2011&lt;/p&gt;&lt;p&gt;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. &lt;/p&gt;&lt;p/&gt;&lt;p&gt;At the event this time, there were presentation on Android, iOS, Windows Phone 7, Kinect, and a few other development technologies. &lt;/p&gt;&lt;p/&gt;&lt;p&gt;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!&lt;/p&gt;&lt;p/&gt;&lt;p&gt;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. &lt;/p&gt;&lt;p/&gt;&lt;p&gt;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!&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-6866347733371968628?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/6866347733371968628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2011/02/mobidevday-2011-this-weekend-i-got.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6866347733371968628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6866347733371968628'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2011/02/mobidevday-2011-this-weekend-i-got.html' title=''/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-8121186957944884493</id><published>2010-08-04T07:17:00.000-07:00</published><updated>2010-08-04T12:04:45.211-07:00</updated><title type='text'>iPhoDroid: My Adventure</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/TFmLizrV3qI/AAAAAAAAANY/h3Wuvrwaf3U/s1600/Linux+penguin-computing.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/TFmLizrV3qI/AAAAAAAAANY/h3Wuvrwaf3U/s320/Linux+penguin-computing.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;A couple weeks ago, I heard about the &lt;a href="http://www.iphodroid.com/"&gt;iPhoDroid project&lt;/a&gt;. At the prospect of dual-booting my iPhone with iOS and Android, my palms got sweaty and my knees got weak. It felt like the room was spinning and my tongue got numb.&lt;br /&gt;&lt;br /&gt;So I decided to give it a shot.&lt;br /&gt;&lt;br /&gt;I read up about the project and the prerequisites, and got everything I needed to get this accomplished. One of the requirements was that the iPhone had to be jailbroken (check!) not by Spirit (DOH!)*. So I went through the process of restoring my iPhone to 3.1.2 and then jailbreaking with Pwnage Tool (my favorite anyway).&lt;br /&gt;&lt;br /&gt;&amp;nbsp;*&lt;span style="font-size: x-small;"&gt;In a moment of sheer curiosity a while back, I jailbroke  with  Spirit...it was so easy, it &lt;a href="http://stackoverflow.com/questions/2668867/what-does-jailbreak-do-to-the-iphone-technically"&gt;made    me wonder&lt;/a&gt; why people would go through any OTHER methods of   jailbreaking.&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After that, I downloaded &lt;a href="http://iphodroid.googlecode.com/files/iPhoDroid_0.6beta_R12d_%28for3G%29.zip"&gt;iPhoDroid 0.6 beta R12d (for3G)&lt;/a&gt; to my MacBook and followed the instructions. Very easy. One thing that threw me off is that during the install process, there is no touchscreen, so I had to press the power button to scroll and the home button to select.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/TFmbJMUbBNI/AAAAAAAAANg/vgxyHHAySI0/s1600/photo+1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/TFmbJMUbBNI/AAAAAAAAANg/vgxyHHAySI0/s320/photo+1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;While installing, it appeared to freeze at a point. I looked up the last message where the install stopped (can't recall it right now, sorry), and &lt;a href="http://www.idroidproject.org/forum/"&gt;the forum&lt;/a&gt; just said to run the install again. After that, it worked!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/TFmbKXcCLAI/AAAAAAAAANo/aqNGupVBOT4/s1600/photo+2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/TFmbKXcCLAI/AAAAAAAAANo/aqNGupVBOT4/s320/photo+2.JPG" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/TFmbLpv6y6I/AAAAAAAAANw/h7LHLApscko/s1600/photo+3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/TFmbLpv6y6I/AAAAAAAAANw/h7LHLApscko/s320/photo+3.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Once Froyo was installed, I actually hugged my phone close to me because I was so excited. People around might have given me weird looks, I dunno, but whatever - I was happy. That happiness tinted a little bit when I realized touch screen still didn't work....and it crashed, but I was still elated at the fact that Android was indeed running on my iPhone.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/TFmbky-IcoI/AAAAAAAAAOA/gaFwCS6_zYU/s1600/photo+4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;And now I even had a problem to solve! YES!&lt;br /&gt;&lt;br /&gt;So I found &lt;a href="http://code.google.com/p/iphodroid/updates/list#"&gt;the issue&lt;/a&gt; and followed the instructions. I verified the SHA-1 hash on the download. That checked out fine. I reinstalled Open iBoot and the Froyo distro, this time watching the output carefully. There were no errors. But while the OS was loading, I mistakenly rebooted....and bricked my iPhone. However, I didn't panic. &lt;a href="http://www.iphodroid.com/bricked/"&gt;I found this&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;So now, back at square one. I restored, and re-jailbroke. This time, with redsn0w. Went through the same process...&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=9&amp;amp;ved=0CDsQtwIwCA&amp;amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D7GL6LH6ufhM&amp;amp;ei=R3ZZTNLuFsKNnQeX39SqCQ&amp;amp;usg=AFQjCNH04TqH46ijO5m-fW7_XQNqIqhtnA&amp;amp;sig2=kQo7TV0YLAKJPHeHt5p53w"&gt;AND IT WORKS!!!!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/TFmbky-IcoI/AAAAAAAAAOA/gaFwCS6_zYU/s1600/photo+4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/TFmbky-IcoI/AAAAAAAAAOA/gaFwCS6_zYU/s320/photo+4.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-8121186957944884493?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/8121186957944884493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/08/iphodroid-my-adventure.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8121186957944884493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8121186957944884493'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/08/iphodroid-my-adventure.html' title='iPhoDroid: My Adventure'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-grE8_yHnn4/TFmLizrV3qI/AAAAAAAAANY/h3Wuvrwaf3U/s72-c/Linux+penguin-computing.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-4470547372369147132</id><published>2010-08-02T07:37:00.000-07:00</published><updated>2010-08-02T07:54:39.890-07:00</updated><title type='text'>Motorola 68000 Programming</title><content type='html'>Funny how if you truly have an interest in something, you'll come back to it. In college, I had a terrible experience with assembly programming. My professor, who was probably a skilled engineer at work, regrettably was not a very good teacher. It was obvious that he knew the material, but could not find an efficient way to communicate the concepts to the class. As a result of that, I was kind of turned off by 68k programming.&lt;br /&gt;&lt;br /&gt;Recently, the urge to learn assembly has crept back in my mind, and I picked up my book again and downloaded the &lt;a href="http://www.easy68k.com/"&gt;Easy68k &lt;/a&gt;IDE. I'm currently strengthening my foundation of the 68k processor and microprocessors in general. Now that it's not in a forced, stressful environment, it's actually much more enjoyable. I see how this could have been fun in college, under the right circumstances lol.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/3356344/do-different-68k-simulators-have-different-trap-tasks/3382971#3382971"&gt;Here's&lt;/a&gt; some progress on the subject.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-4470547372369147132?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/4470547372369147132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/08/motorola-68000-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/4470547372369147132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/4470547372369147132'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/08/motorola-68000-programming.html' title='Motorola 68000 Programming'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-2619630893223484156</id><published>2010-07-12T11:28:00.000-07:00</published><updated>2010-07-13T09:45:07.423-07:00</updated><title type='text'>Eclipse and Java for the Total Beginner</title><content type='html'>So I decided to get serious about learning &lt;b&gt;Java&lt;/b&gt; today. I took a course in college, but it didn't really prepare me as much as I'd like. These tutorials that I found are really helpful. They are not only filling in the gaps I missed in Java and OOP, but teaching me the features and functionality of the &lt;b&gt;Eclipse IDE&lt;/b&gt; as well.&lt;br /&gt;&lt;br /&gt;I am getting to implement various aspects of &lt;b&gt;Agile/ XP Methodologies&lt;/b&gt;. I'd previously read about these, but am now getting a chance to put them into practice. I am learning about &lt;b&gt;Unit Testing&lt;/b&gt; and &lt;b&gt;Test-Driven Development&lt;/b&gt;, by creating test cases before the classes. I am also building competency using &lt;b&gt;JUnit testing framework&lt;/b&gt;, and the &lt;b&gt;Eclipse IDE &lt;/b&gt;as a whole. &lt;br /&gt;&lt;br /&gt;In addition to these video tutorials, I'm also taking online training on Principles of Object-Oriented Programming &lt;br /&gt;through my job. The goal is to be a more well-rounded programmer with a strong understanding of fundamental primciples. Eventually, this will help me properly dive into Android programming as well.&lt;br /&gt;&lt;br /&gt;Check out the &lt;a href="http://eclipsetutorial.sourceforge.net/totalbeginner.html"&gt;Java tutorials&lt;/a&gt; out if you're interested!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-2619630893223484156?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/2619630893223484156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/07/eclipse-and-java-for-total-beginner.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/2619630893223484156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/2619630893223484156'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/07/eclipse-and-java-for-total-beginner.html' title='Eclipse and Java for the Total Beginner'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-1438262620754915225</id><published>2010-07-06T09:02:00.000-07:00</published><updated>2010-07-06T09:02:05.796-07:00</updated><title type='text'>Aahhhh, so THAT'S the big deal about 4G</title><content type='html'>I decided to do some reading on 4G and see what all the fuss is about.&lt;br /&gt;&lt;br /&gt;Now I know.&lt;br /&gt;&lt;br /&gt;If my understanding is correct, it just switches all communications to a really fast IP-switched data network. In contrast, 3G used circuit-switched technology for voice and IP for data. 4G implements VOiP for calls, so there's no need for separate networks for voice and data. And looking at the theoretical speeds (100 Mbit - 1Gbit/ sec), I can clearly see what the commotion is about. I would LOVE to work on implementing this network. Can't wait till I can at least access it here lol.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-1438262620754915225?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/1438262620754915225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/07/aahhhh-so-thats-big-deal-about-4g.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1438262620754915225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1438262620754915225'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/07/aahhhh-so-thats-big-deal-about-4g.html' title='Aahhhh, so THAT&apos;S the big deal about 4G'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-540349241373557103</id><published>2010-06-29T13:45:00.000-07:00</published><updated>2010-06-29T13:45:51.456-07:00</updated><title type='text'>My iPhone 4 Story. . .</title><content type='html'>So, on June 24, the new iPhone 4 was released. I had no intentions of getting one on that day. I just said that I'd upgrade my 3G to iOS 4 and jailbreak it to get multitasking and whatnot. However, after work I decided to head to the mall anyway, just to see what was going on. I fully expected the Apple store to be sold out, and all the lines long gone.&lt;br /&gt;&lt;br /&gt;Upon arrival at the mall, I encountered a line of people stretched all the way down the hall from the Apple store (those who had pre-ordered online), as well as another line which stretched the other way down the hall (for walk-ins). . . so I said I'd wait in line.&lt;br /&gt;&lt;br /&gt;After waiting for about 2 hours (and getting free food, courtesy of Apple), one of the Apple store employees came out, counted the people in line, stopped at me, looked me directly in the eye with the "damn, homie" look and said "sorry dude, looks like we won't have any phones from you on back." I said ok, but decided to wait until the last one was sold before I left.&lt;br /&gt;&lt;br /&gt;About a half hour later, he came back, counting again. This time, he stopped about 10 people ahead of me and told us that there DEFINITELY wouldn't be any phones for us, but that we could put our names on the priority reservation list to be informed as soon as the store gets more. Lots of people left at this point. But once again, I said ok, but decided to wait until the last one was sold before I left. &lt;br /&gt;&lt;br /&gt;Ten minutes later, the regional manager, who happened to be in this particular store, comes out and says, "right now there are no more iPhones in stock, however I'm going to call all the other stores in the area an and see if they have extras that they can bring." And they did...1 hour later, I left the Apple store with my new 32 GB iPhone 4.&lt;br /&gt;&lt;br /&gt;I wish the people standing with me in line who punked out could see this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-540349241373557103?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/540349241373557103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/06/my-iphone-4-story.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/540349241373557103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/540349241373557103'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/06/my-iphone-4-story.html' title='My iPhone 4 Story. . .'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-8058940710365693661</id><published>2010-06-24T13:28:00.000-07:00</published><updated>2010-06-24T13:28:05.670-07:00</updated><title type='text'>Research: How to launch iOS app upon device startup</title><content type='html'>I have long been interested in the deep innerworkings of the iPhone (now iOS). I have gotten into iOS development, and &lt;a href="http://tomstechjournal.blogspot.com/2010/04/what-is-jailbreak.html"&gt;poked into the process of jailbreaking&lt;/a&gt; and the filesystem of iDevices.&lt;br /&gt;&lt;br /&gt;Today I was given a task to research the possibility of launching an app when the iDevice boots. I know that it is possible, since certain jailbreak apps/ processes are loaded upon startup. My digging led me to learn about daemons and how they work. This is incredibly useful to me in my quest to understand under the hood of iOS. Here are the results from my research.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The device will have to be jailbroken in  order to have access to the filesystem. I recommend Pwnage. It takes a  lot longer than Spirit, but is more secure. &lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;With &lt;a href="http://spiritjb.com/" target="_blank"&gt;Spirit&lt;/a&gt;,  you simply plug in your iPhone, open the Spirit app, press a button,  and you're jailbroken. Spirit is what's called a "untethered userland  jailbreak." Which means it exploits a hack in user (rather than kernel)  mode in the UNIX filesystem. It therefore does not require iTunes to  reboot the device and perform low-level tasks. Apple usually fills these  holes in the minor updates (i.e. 3.1.x). &lt;br /&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://blog.iphone-dev.org/" target="_blank"&gt;Pwnage  Tool&lt;/a&gt;,&amp;nbsp; builds a custom .ipsw file from an official copy. After that  process is complete, you restore it to the device using iTunes. &lt;a href="http://tomstechjournal.blogspot.com/2009/09/how-to-jailbreak-iphone-3g.html" target="_blank"&gt;This is my preferred method&lt;/a&gt;. It takes about 30  minutes (maybe more), but some Pwnage jailbreaks will persist through  software updates.There are Pwnage jailbreaks for 3.2 and 4.0 software  already.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://www.ipodtouchfans.com/forums/showthread.php?t=224341" target="_blank"&gt;Here is a list&lt;/a&gt; of iOS daemons. Depending on the  functionality of the app, we can delete many of these in order to clear  up some overhead RAM.&lt;/li&gt;&lt;li&gt;We will have to create a daemon to launch our app. &lt;a href="http://chrisalvares.com/blog/?p=7" target="_blank"&gt;This tutorial&lt;/a&gt;  goes into it as well as &lt;a href="http://monofact.wordpress.com/2008/07/21/making-a-daemon-running-on-the-iphone/" target="_blank"&gt;this one&lt;/a&gt;. The .plist will obviously have to be customized, but these two just prove that it is possible.&lt;/li&gt;&lt;li&gt;Overriding the home button is the other issue I'm researching. In addition to &lt;a href="http://moreinfo.thebigboss.org/moreinfo/SBSettings.php" target="_blank"&gt;SBSSettings&lt;/a&gt;, there are other apps which allow you to  associate user interactions on the screen (swipe, pinch, touching the  volume display, etc) with system actions (e.g opening apps, toggling  settings). More research is needed on this, but I do believe it is a  feasible task.&lt;/li&gt;&lt;/ul&gt;This stuff is VERY interesting to me. I'm glad that I'm finally starting to get somewhere in my quest to understand what's happening in the system itself.&lt;br /&gt;&lt;br /&gt;Too bad I just decided today that I want an iPhone 4. I'm almost sure they're all gone now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-8058940710365693661?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/8058940710365693661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/06/research-how-to-launch-ios-app-upon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8058940710365693661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8058940710365693661'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/06/research-how-to-launch-ios-app-upon.html' title='Research: How to launch iOS app upon device startup'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-7143984686741684449</id><published>2010-04-25T22:35:00.001-07:00</published><updated>2010-04-25T22:35:48.911-07:00</updated><title type='text'>Code Specification Development</title><content type='html'>Recently I was given a unique opportunity. I was charged with the task of creating the code specification document for the official project which resulted from the proof-of-concept I developed. I was eager to take on such an assignment, as it presented a chance to learn a new area of the engineering process.   &lt;br /&gt;&lt;br /&gt;Since I'd never written one before, it took a bit of explaination from my boss for me to get the picture. Before he explainsed it to me, I had an idea, but was not completely comfortable with what I was doing. &lt;br /&gt;&lt;br /&gt;I created an initial revision in Pages, using on a previous document as a template and screen mockups which illustrated the app's intended functionality. I went through each of the screens defined and established global variables, inputs and outputs, and specific functionality and data constructs necessary for the app to operate properly. &lt;br /&gt;&lt;br /&gt;Being that it was a small project, the code specification didn't take long to develop. It took about a full work day to complete. &lt;br /&gt;&lt;br /&gt;One of my favorite professors, Ben Sweet, preaches about the importance of engineering documentation. The time spent up front on providing detailed specifications saves time down the road on clarification and debugging.&lt;br /&gt;&lt;br /&gt;I agree that this process is a necessity, and feel more well-rounded as an engineer because of this experience. It's good to have knowledge in multiple areas of development in order to be a proficient engineer.            &lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPhone&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-7143984686741684449?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/7143984686741684449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/04/code-specification-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/7143984686741684449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/7143984686741684449'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/04/code-specification-development.html' title='Code Specification Development'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-8962900802226484801</id><published>2010-04-19T12:16:00.000-07:00</published><updated>2010-04-19T12:16:47.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jailbreak'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>What is jailbreak?</title><content type='html'>OK, I obviously know HOW to jailbreak, but I'm interested to know what the actual process does to the phone. I posted on a couple forums to find my answer. &lt;a href="https://devforums.apple.com/message/205476#205476"&gt;Apple Developer Forums &lt;/a&gt;was no help (as I suspected). But the folks at &lt;a href="http://stackoverflow.com/questions/2668867/what-does-jailbreak-do-to-the-iphone-technically"&gt;Stack Overflow&lt;/a&gt; gave a pretty decent explanation/ discussion on the topic. Check it out! Very interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-8962900802226484801?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/8962900802226484801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/04/what-is-jailbreak.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8962900802226484801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8962900802226484801'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/04/what-is-jailbreak.html' title='What is jailbreak?'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-6624294377851717186</id><published>2010-04-19T06:11:00.000-07:00</published><updated>2010-04-19T06:12:14.400-07:00</updated><title type='text'>The Embedded Muse 194</title><content type='html'>--------------------------------------------------------------&lt;br /&gt;Embedded Muse 194   Copyright 2010 TGG       April 19, 2010&lt;br /&gt;Permanent link to this issue: www.ganssle.com/tem/tem194.htm&lt;br /&gt;--------------------------------------------------------------&lt;br /&gt;You may redistribute this newsletter for noncommercial purposes. For commercial use contact info@ganssle.com. To subscribe or unsubscribe go to http://www.ganssle.com/tem-subunsub.html or drop Jack an email at jack@ganssle.com.&lt;br /&gt;&lt;br /&gt;EDITOR: Jack Ganssle, jack@ganssle.com&lt;br /&gt;&lt;br /&gt;Contents:&lt;br /&gt;- Editor's Notes&lt;br /&gt;- Quotes and Thoughts&lt;br /&gt;- Book Review - An Arduino Workshop&lt;br /&gt;- Book Review - Book Review - Hello World&lt;br /&gt;- Tools and Tips&lt;br /&gt;- Jobs!&lt;br /&gt;- Joke for the Week&lt;br /&gt;- About The Embedded Muse&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Editor's Notes&lt;br /&gt;--------------&lt;br /&gt;Are you happy with your bug rates? If not, what are you doing about it? Are you asked to do more with less? Deliver faster, with more features? What action are you taking to achieve those goals?&lt;br /&gt;&lt;br /&gt;In fact it IS possible to accurately schedule a project, meet the deadline, and drastically reduce bugs. Learn how at my Better Firmware Faster class, presented at your facility. See http://www.ganssle.com/onsite.htm .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Embedded Systems Conference is April 26-29 in San Jose, CA. I'll be there most of the week - be sure to say hi!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Quotes and Thoughts&lt;br /&gt;------------------&lt;br /&gt;DO-178B is an avionics standard for software that's widely used. There are 5 levels, A-E, with A being the toughest to achieve. According to "DO-178B Costs Versus Benefits" (Vance Hilderman, HighRely Inc), the cost of DO-178B is:&lt;br /&gt;Level D: Level E + 5%&lt;br /&gt;C: Level D+30%&lt;br /&gt;B: Level C+15%&lt;br /&gt;A: Level B+5%&lt;br /&gt;(that is, level A is 65% more expensive than level E.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Book Review - An Arduino Workshop&lt;br /&gt;---------------------------------&lt;br /&gt;Have you heard about Arduino? Not me, at least not till Joe Pardue sent me a copy of his new book (An Arduino Workshop). To quote the website: "Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments."&lt;br /&gt;&lt;br /&gt;Yeah, another board. But this one is targeted to people like artists who want to harness a bit of computing to build unusual interactive exhibits, as well as to anyone wanting to use an embedded system without going through a lot of development hassle. And the Arduino community does replace some of the computer science lingo with their own artsy words - a program is a "sketch," for instance. "Compile" gives way to "verifying the sketch."&lt;br /&gt;&lt;br /&gt;If you remember those Heathkit and Radio Shack introduction to electronics kits, this book will tickle your memories. It's really an intro to embedded systems, and I do mean a basic start-from-square-one sort of work. The writing is crystal-clear and just irreverent enough to be fun.&lt;br /&gt;&lt;br /&gt;Unlike a lot of books that front-load readers with the basics, by page 23 you're already loading a simple program onto the board. The author teaches, first, simple programming using Arduino's very C-like lingo by making the reader interact with the board. Less than 20 pages later one is constructing simple circuits on Arduino's prototyping breadboard and learning the basics of electronics. One will not earn an EE degree, but by the end of the book you're using opto-couplers, interrupts and have even built and programmed a motor speed controller with feedback. Each project is simple, fun, and can be done in an evening's playtime.&lt;br /&gt;&lt;br /&gt;Part of the genius of this book are the proliferation of beautifully-drawn sketches that show how to hook up the electronics, both in schematic form and pictorially. They're downright artsy, in keeping with the Arduino philosophy, and so clear a techno-adverse artiste could assemble the circuits.&lt;br /&gt;&lt;br /&gt;I found only two faults with the book. First, the title is awful and analogous to calling a book that teaches driving "The Ford Fiesta." Second, the 200 page paperback lists for $50 on Amazon, which narrows the target market. Tack on the $90 development kit and things are getting a little pricey.&lt;br /&gt;&lt;br /&gt;That market does, of course, include starving artists. But many of us know kids who are curious about computers and even embedded systems (though they may not know the term). This book is an ideal entry point for them. It's so accessible a middle-schooler would have no problem with it, and I bet even a precocious 7th or 8th grader could master it.&lt;br /&gt;&lt;br /&gt;All in all one of the best basic hands-on books I've seen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Book Review - Hello World&lt;br /&gt;-------------------------&lt;br /&gt;Warren and Carter Sande's "Hello World - Computer Programming for Kids and Other Beginners" is also another introductory book, but aims for the broader audience of programmer-wannabes, rather than firmware jockeys. Also a hands-on book, "Hello World" involves the reader in writing code very early on. That code is all in Python, which is a bit foreign to most embedded systems people, though the language is certainly gaining in popularity outside our narrow niche.&lt;br /&gt;&lt;br /&gt;Though the book does a good job at revealing the nuances of the Python language, pick a different tome if you're a pro and want to learn Python. This volume is more targeted to learning to program in general.&lt;br /&gt;&lt;br /&gt;The book is very "modern" in that it makes ample use of white space, sidebars, and nifty chip art. Some of the latter is very good; I especially liked the authors' use of railroad tracks to illustrate the nesting of multiple conditionals.&lt;br /&gt;&lt;br /&gt;Each chapter ends with a quick summary - which I like a lot - and questions. Even better, the appendix has answers to the questions.&lt;br /&gt;&lt;br /&gt;Like "Arduino," "Hello World" is also aimed at the rank novice programmer who needs to be carefully shepherded through the learning the elements of programming. This, though, is a much larger book and covers much more of the ideas that are important to programmers, like sorting and linked lists.&lt;br /&gt;&lt;br /&gt;Occasional asides titled "Thinking Like a Programmer" introduce important concepts - like careful use of names - in just a paragraph or two.&lt;br /&gt;&lt;br /&gt;In the olden days books like this used Basic as it was very accessible. (And hard as it is to believe, people even wrote real programs in Dartmouth Basic.) Python is an analogous choice today as it is free and is interpreted, and it supports modern concepts like OOP.&lt;br /&gt;&lt;br /&gt;All in all a very good book to bring a novice up to speed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tools and Tips&lt;br /&gt;--------------&lt;br /&gt;Thomas Pircher wrote: "For your list of tools, I'd suggest having a look at pycrc. It can calculate any CRC and generate C/C++ source code. The used CRC variant can be chosen from a fast but space-consuming implementation to slower but smaller versions especially suitable for embedded applications. pycrc is available at http://www.tty1.net/pycrc/&lt;br /&gt;&lt;br /&gt;"Also useful if you need to look-up a particular set of CRC parameters is: http://regregex.bbcmicro.net/crc-catalogue.htm"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ray Keefe had a number of recommendations: "We use Beyond Compare and it is a fabulous tool.  It also does file syncing and I use it for moving code and other documents between networked and non-networked computers.  It can even be used for backups in 'Mirror files' mode and you can set up rules too so it only handles the files and subdirectories you want it to.&lt;br /&gt;&lt;br /&gt;"For complete system snapshots we use Shadow Protect from Storage Craft http://www.storagecraft.com/ .  We have set it up to do full system snapshots weekly and 2 hourly incremental backups.  The recovery console lets you map the repository as a drive and you can browse it so it is also great if a file gets trashed and you just want to go back to a version from more than 2 hours ago.  This is useful for files not in our revision control system such as installed executables that get trashed by an upgrade that goes wrong.&lt;br /&gt;&lt;br /&gt;"For revision control we are using Team Coherence.  We selected it for 2 features we particularly liked:&lt;br /&gt;- You can set up projects with objects that are mirrors from a central location.  So we can have generic code we use for all our clients and mirror that to each client without them having to know anything about the other clients or our internal project structure.  It seems each client has a different theory on file and directory structures so this gives us tremendous flexibility while keeping to the 'write it once' maxim (closely followed by the 'so you only have to test it once' maxim).  And of course, updates to any version are automatically reflected back to all versions.  So you have to be careful as this can spread defects just as effectively as features.&lt;br /&gt;- the repository can be backed up even when in use.  No need to manage that or have any down time.&lt;br /&gt;&lt;br /&gt;"They now offer a free license for single/freelance developers http://www.teamcoherence.com/vmfreelicense.aspx which is a great way for these programmers to have good access to tools like this.  Revision control pays for itself every week in my experience."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Jobs!&lt;br /&gt;-----&lt;br /&gt;Let me know if you're hiring firmware or embedded designers. No recruiters please, and I reserve the right to edit ads to fit the format and intents of this newsletter. Please keep it to 100 words.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Omni Flow Computers, (www.omniflow.com) in Houston, TX is looking for two people:&lt;br /&gt;&lt;br /&gt;** Contract - Embedded Systems Software Engineer **&lt;br /&gt;The candidate's primary responsibilities will be developing flow computer firmware on a Freescale Coldfire platform. This position requires a senior level software engineer with extensive design skills using a realtime OS (RTXC a plus). Familiarity with Modbus &amp; HART protocol, Ethernet and serial communications is desired.&lt;br /&gt;&lt;br /&gt;Excellent written skills with experience developing requirements specifications, detailed design specifications and performing documented unit testing are required.&lt;br /&gt;&lt;br /&gt;This is a long-term (~12 months) contract position. Due to the current lack of detailed requirements and the necessity for daily dialog, the developer will be required to work daily at our facility in Houston. For this reason, the developer should be located in Houston or be willing to relocate at their expense.&lt;br /&gt;&lt;br /&gt;Please send a resume, hourly rate information and a thorough answer to the following question to bwedding@omniflow.com:&lt;br /&gt;&lt;br /&gt;- Describe your firmware design philosophy in general and specific terms as applied to developing real-time, mission-critical software.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;** Windows/Embedded Software Engineer **&lt;br /&gt;The candidate's primary responsibilities will be developing an MFC-based Windows application to remotely configure and operate our flow computers. Experience with Visual C++ 2008 is required.&lt;br /&gt;&lt;br /&gt;Familiarity with Modbus protocol, Ethernet and serial communications is desired. Excellent written skills with experience developing requirements specifications, detailed design specifications and performing documented unit testing are required.&lt;br /&gt;&lt;br /&gt;This is a permanent position. The developer should be located in Houston or be willing to relocate at their expense.&lt;br /&gt;&lt;br /&gt;Please send a resume and your answer to the following question to bwedding@omniflow.com:&lt;br /&gt;&lt;br /&gt;- List your personal top 10 programming rules for developing robust and correct software. They may cover design, code, unit testing, etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Joke for the Week&lt;br /&gt;-----------------&lt;br /&gt;Something in the way it fails,&lt;br /&gt;Defies the algorithm's logic!&lt;br /&gt;Something in the way it coredumps...&lt;br /&gt;I don't want to leave it now&lt;br /&gt;I'll fix this problem somehow&lt;br /&gt;&lt;br /&gt;Somewhere in the memory I know,&lt;br /&gt;A pointer's got to be corrupted.&lt;br /&gt;Stepping in the debugger will show me...&lt;br /&gt;I don't want to leave it now&lt;br /&gt;I'm too close to leave it now&lt;br /&gt;&lt;br /&gt;You're asking me can this code go?&lt;br /&gt;I don't know, I don't know...&lt;br /&gt;What sequence causes it to blow?&lt;br /&gt;I don't know, I don't know...&lt;br /&gt;&lt;br /&gt;Something in the initializing code?&lt;br /&gt;And all I have to do is think of it!&lt;br /&gt;Something in the listing will show me...&lt;br /&gt;I don't want to leave it now&lt;br /&gt;I'll fix this tonight I vow!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;About The Embedded Muse&lt;br /&gt;-----------------------&lt;br /&gt;The Embedded Muse is a newsletter sent via email by Jack Ganssle. Send complaints, comments, and contributions to me at jack@ganssle.com.&lt;br /&gt;&lt;br /&gt;The Embedded Muse is supported by The Ganssle Group, whose mission is to help embedded folks get better products to market faster. We offer seminars at your site offering hard-hitting ideas - and action - you can take now to improve firmware quality and decrease development time.  Contact us at info@ganssle.com for more information.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPhone&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-6624294377851717186?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/6624294377851717186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/04/embedded-muse-194.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6624294377851717186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6624294377851717186'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/04/embedded-muse-194.html' title='The Embedded Muse 194'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-4466928380116246557</id><published>2010-04-12T13:46:00.000-07:00</published><updated>2010-04-14T13:58:04.071-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone programming'/><category scheme='http://www.blogger.com/atom/ns#' term='xcode'/><title type='text'>POC proved the concept!</title><content type='html'>Last week I was given the responsibility of creating a proof-of-concept so that we can present to a company to try to get their business. I was a bit nervous because I had never had this type of pressure put on me. It was up to me to create an application nice enough as to capture the attention of this company and instill in them the necessity to do business with us.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyway, sparing you the dramatics (lol), it worked! I got word today that the company wants to move forward with us, and we'll be developing a full app for them. This is exciting for me because I built this app from the ground up. I ran into a couple of snags along the way, and worked through them by finding resources online as well as utilizing my teammates' knowledge.&lt;br /&gt;&lt;br /&gt;The POC wasn't perfect, but it was impressive enough to get us the work. Now I'm looking forward to perfecting it for the official builds!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-4466928380116246557?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/4466928380116246557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/04/poc-proved-concept.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/4466928380116246557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/4466928380116246557'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/04/poc-proved-concept.html' title='POC proved the concept!'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-542824669890876243</id><published>2010-03-03T11:09:00.000-08:00</published><updated>2010-03-03T14:55:10.381-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><title type='text'>Debugging EXC_BAD_ACCESS from a NSString</title><content type='html'>&lt;div style="text-align: justify;"&gt;While writing an iPhone application, I kept getting a mysterious crash during execution. There were no warnings or errors, but when I got to a specific point every time, it would crash. I decided to examine the console for messages. I found the message "&lt;b&gt;EXC_BAD_ACCESS&lt;/b&gt;" there.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I Googled this message and found &lt;a href="http://coderslike.us/2009/05/05/finding-freeddeallocated-instances-of-objects/"&gt;this site&lt;/a&gt; on setting the environment variables &lt;b&gt;NSZombieEnabled&lt;/b&gt; and &lt;b&gt;MallocStackLoggingNoCompact&lt;/b&gt;. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;u&gt;A little background&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.cocoadev.com/index.pl?NSZombieEnabled"&gt;&lt;b&gt;NSZombieEnabled&lt;/b&gt;&lt;/a&gt; - If I'm understanding this correctly, when this environment variable is set to YES, when an object is deallocated, instead of releasing it, the compiler will set its type to &lt;b&gt;_NSZombie&lt;/b&gt;. Because the memory is never freed, the object remains on the stack, but its type is now &lt;b&gt;_NSZombie&lt;/b&gt;. With a little command line usage, you can see where it was attempted to be freed, and whether or not it is intentional. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;a href="http://developer.apple.com/mac/library/releasenotes/DeveloperTools/RN-MallocOptions/index.html"&gt;MallocStackLoggingNoCompact&lt;/a&gt;&lt;/b&gt; - "causes malloc to remember the caller requesting each allocation, and  remembers it after the allocation is freed." (from &lt;a href="http://developer.apple.com/mac/library/navigation/index.html"&gt;Mac OSX Reference Library&lt;/a&gt;)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To set the environment variables, use this procedure:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Ctrl+Click on the executable in your project&lt;/li&gt;&lt;li&gt;Select "Get Info"&lt;/li&gt;&lt;li&gt;Select "Arguments" tab&lt;/li&gt;&lt;li&gt; Enter the variable information as seen in the screenshot below&lt;/li&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/S46rJDEKtYI/AAAAAAAAAMk/daMyLQ4yxMo/s1600-h/zombiescreenshot.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/S46rJDEKtYI/AAAAAAAAAMk/daMyLQ4yxMo/s320/zombiescreenshot.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Now, when I run the program, at the point of the crash, the console says: &lt;/div&gt;&lt;code wrap="hard"&gt;2010-03-01 19:13:46.924   CruzNomad[7952:207] &lt;i&gt;*&lt;/i&gt; -[CFString   stringByAddingPercentEscapesUsingEncoding:]:   message sent to deallocated instance   0x58448e0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At the gdb prompt, I issued the command: &lt;b&gt;info malloc-history 0x58448e0&lt;span style="font-weight: normal;"&gt;. This gave me the object's allocation/ deallocation&lt;/span&gt;&lt;/b&gt; history:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;code&gt;&lt;span class="typ"&gt;&lt;code&gt;Alloc&lt;/code&gt;&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Block&lt;/span&gt;&lt;span class="pln"&gt; address&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x058448e0&lt;/span&gt;&lt;span class="pln"&gt; length&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;64&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="typ"&gt;Stack&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="pln"&gt; pthread&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0xa0b33500&lt;/span&gt;&lt;span class="pln"&gt; number of frames&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;25&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;0&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x98e089bc&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; malloc_zone_malloc&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;1&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x21516aa&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; _CFRuntimeCreateInstance&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;2&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x2152bf8&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; __CFStringCreateImmutableFunnel3&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;3&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x21567d9&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;CFStringCreateCopy&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;4&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x21742fc&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; _CFStringCreateWithFormatAndArgumentsAux&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;5&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0xdb546&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="typ"&gt;NSPlaceholderString&lt;/span&gt;&lt;span class="pln"&gt; initWithFormat&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;locale&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;arguments&lt;/span&gt;&lt;span class="pun"&gt;:]&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;6&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0xdb4d8&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;+[&lt;/span&gt;&lt;span class="typ"&gt;NSString&lt;/span&gt;&lt;span class="pln"&gt; stringWithFormat&lt;/span&gt;&lt;span class="pun"&gt;:]&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;7&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x23aa3&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="typ"&gt;BuisnessCardViewController&lt;/span&gt;&lt;span class="pln"&gt; viewDidLoad&lt;/span&gt;&lt;span class="pun"&gt;]&lt;/span&gt;&lt;span class="pln"&gt; at &lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="typ"&gt;Users&lt;/span&gt;&lt;span class="pun"&gt;/.../&lt;/span&gt;&lt;span class="typ"&gt;Classes&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="typ"&gt;BuisnessCardViewController&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;m&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;85&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;8&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x3d6796&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="typ"&gt;UIViewController&lt;/span&gt;&lt;span class="pln"&gt; view&lt;/span&gt;&lt;span class="pun"&gt;]&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;9&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x347b4&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="pln"&gt;gm_menuViewController btn5_Pressed&lt;/span&gt;&lt;span class="pun"&gt;:]&lt;/span&gt;&lt;span class="pln"&gt; at &lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="typ"&gt;Users&lt;/span&gt;&lt;span class="pun"&gt;/.../&lt;/span&gt;&lt;span class="typ"&gt;Classes&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;menuViewController&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;m&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;535&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;10&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x357459&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="typ"&gt;UIApplication&lt;/span&gt;&lt;span class="pln"&gt; sendAction&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;to&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="kwd"&gt;from&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;forEvent&lt;/span&gt;&lt;span class="pun"&gt;:]&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;11&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x3baba2&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="typ"&gt;UIControl&lt;/span&gt;&lt;span class="pln"&gt; sendAction&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;to&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;forEvent&lt;/span&gt;&lt;span class="pun"&gt;:]&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;12&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x3bcdc3&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="typ"&gt;UIControl&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="typ"&gt;Internal&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; _sendActionsForEvents&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;withEvent&lt;/span&gt;&lt;span class="pun"&gt;:]&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;13&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x3bbb0f&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="typ"&gt;UIControl&lt;/span&gt;&lt;span class="pln"&gt; touchesEnded&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;withEvent&lt;/span&gt;&lt;span class="pun"&gt;:]&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;14&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x370e33&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="typ"&gt;UIWindow&lt;/span&gt;&lt;span class="pln"&gt; _sendTouchesForEvent&lt;/span&gt;&lt;span class="pun"&gt;:]&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;15&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x35a81c&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;-[&lt;/span&gt;&lt;span class="typ"&gt;UIApplication&lt;/span&gt;&lt;span class="pln"&gt; sendEvent&lt;/span&gt;&lt;span class="pun"&gt;:]&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;16&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x3610b5&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; _UIApplicationHandleEvent&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;17&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x2984ed1&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;PurpleEventCallback&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;18&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x2197b80&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;CFRunLoopRunSpecific&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;19&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x2196c48&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;CFRunLoopRunInMode&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;20&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x298378d&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;GSEventRunModal&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;21&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x2983852&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;GSEventRun&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;22&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x362003&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;UIApplicationMain&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;23&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x2c8c&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; main at &lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="typ"&gt;Users&lt;/span&gt;&lt;span class="pun"&gt;/.../&lt;/span&gt;&lt;span class="pln"&gt;source&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;main&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;m&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="lit"&gt;14&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="lit"&gt;24&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;0x2bfa&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; start&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="prettyprint"&gt;&lt;code&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;Line 7 says the problem was in line 85 of  BuisnessCardViewController.m. That line is here:&lt;br /&gt;&lt;code&gt;&lt;span class="pln"&gt;&lt;code&gt;fullAddress &lt;/code&gt;&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;[&lt;/span&gt;&lt;span class="typ"&gt;NSString&lt;/span&gt;&lt;span class="pln"&gt; stringWithFormat&lt;/span&gt;&lt;span class="pun"&gt;:@&lt;/span&gt;&lt;span class="str"&gt;"%@ %@"&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; fullAddress&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; myString&lt;/span&gt;&lt;span class="pun"&gt;];&lt;/span&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I read that the method &lt;code&gt;&lt;span class="pln"&gt;stringWithFormat&lt;/span&gt;&lt;span class="pun"&gt;: &lt;/span&gt;&lt;/code&gt;returns an autorelease object. I had to retain the variable right after its first usage, earlier in  the method.&lt;br /&gt;&lt;div style="height: 8pt; min-height: 8pt; padding: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code"&gt;&lt;code&gt;fullAddress = [NSString stringWithFormat:@"%@ %@", fullAddress, myString];&lt;br /&gt;[fullAddress retain];&lt;/code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code"&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;I  use it a few times in the implementation file. This is the first  operation I perform on it, so I decided to retain it here.&lt;br /&gt;&lt;br /&gt;I posted this question on &lt;a href="http://stackoverflow.com/questions/2360273/debugging-exc-bad-access-from-a-nsstring"&gt;StackOverflow&lt;/a&gt; and the &lt;a href="https://devforums.apple.com/message/175675#175675"&gt;iPhone Developer Forums&lt;/a&gt; (you need a login for the latter).  &lt;br /&gt;&lt;br /&gt;Such a rewarding feeling to get an issue debugged!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-542824669890876243?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/542824669890876243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/03/debugging-excbadaccess-from-nsstring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/542824669890876243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/542824669890876243'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/03/debugging-excbadaccess-from-nsstring.html' title='Debugging EXC_BAD_ACCESS from a NSString'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-grE8_yHnn4/S46rJDEKtYI/AAAAAAAAAMk/daMyLQ4yxMo/s72-c/zombiescreenshot.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-5022285647619006657</id><published>2010-02-25T17:24:00.000-08:00</published><updated>2010-02-25T17:24:28.180-08:00</updated><title type='text'>iPhone Programming Course</title><content type='html'>&lt;div style="text-align: justify;"&gt;A while ago, I stumbled across the &lt;a href="http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.3124430053"&gt;Stanford iPhone courses on iTunesU&lt;/a&gt;. The courses are videos of the actual iPhone development course at Stanford University. I used these a few months ago to get familiar with the XCode IDE and the iPhone SDK.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now that I actually landed a small gig as an iPhone developer, I have been thrown into the belly of the beast. Because I'm in such a fast-paced environment, I'm learning WHAT to do to get things working, but not so much WHY I'm doing it this way. I'd rather not be solely a creature of habit, and would like to understand the inner-workings of the code that I'm....coding. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;With that being said, I decided to take some time and revisit the Stanford iPhone course. I believe this will be time well-spent; an investment in my future as a Cocoa/ Objective-C developer. After finishing the first episode, I feel enlightened on a couple of nagging issues I had before. I'm sure this trend will continue as I progress through the course.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I actually found another &lt;a href="http://deimos3.apple.com/WebObjects/Core.woa/Browse/rwth-aachen.de.2800424446"&gt;iPhone course at RWTH Aachen&lt;/a&gt; (a German school). Maybe I'll check this out another time.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-5022285647619006657?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/5022285647619006657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/02/iphone-programming-course.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/5022285647619006657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/5022285647619006657'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/02/iphone-programming-course.html' title='iPhone Programming Course'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-6160690928929248901</id><published>2010-02-19T14:31:00.000-08:00</published><updated>2010-02-19T14:32:50.704-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tomosophy'/><title type='text'>Random Thought</title><content type='html'>I've recently come to the realization that few things are impossible - some things just haven't been done yet. As a software engineer, my job is to figure how to do these things.   &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-6160690928929248901?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/6160690928929248901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/02/random-thought.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6160690928929248901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6160690928929248901'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/02/random-thought.html' title='Random Thought'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-7613820144848983034</id><published>2010-02-08T20:17:00.000-08:00</published><updated>2010-02-08T20:17:23.240-08:00</updated><title type='text'>My First Deadline</title><content type='html'>The past two weeks have really introduced me to "The Fire" by which entry-level programmers are often baptized. I have been moving non-stop for 15 days straight now. On day #12 of my never-ending workweek, I was given an assignment: insert a Google Maps View on a pre-existing screen and drop a pin on a given address.....&lt;span style="font-size: x-large;"&gt;*&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;for delivery to the customer in 2 days.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I found lots of resources online and made a few practice apps. At the end of my research, I made a proof of concept to demonstrate the requested functionality. When the moment of truth came, and I was given access to the repository with the project's source code, I felt an overwhelming sense of...well, honestly, fear. But in addition to that, I felt proud that I had made it to a point where I could be held responsible for such a task. &lt;br /&gt;&lt;br /&gt;After I got myself together, I began to focus on the task at hand: integrating my code into the project. This would not be as simple as it seemed. I ran into lots of issues, from breaking the code altogether and having to start over and re-sync, to having it build, compile, and run but seeing no sign of my added functionality.&lt;br /&gt;&lt;br /&gt;There was a point where it looked like I might not make it. But I stayed up all night on Saturday, and even worked all day [Superbowl] Sunday (and did not watch the game), until I got the desired results. Of course, that couldn't be the end...although I got it working on my computer, I still had trouble committing the file to the repository. I had to delete the entire project, re-sync, then copy and paste my code into the files I altered to get this resolved.&lt;br /&gt;&lt;br /&gt;I managed to get my code checked in and made my deadline!&lt;br /&gt;&lt;br /&gt;This is really a big deal to me. This is my first time writing code to be used professionally. It is really a confidence builder to know that the company has enough faith in me to use my code in a release on a major project. I really feel like this was a huge first step on my path to becoming a professional software developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-7613820144848983034?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/7613820144848983034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/02/my-first-deadline.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/7613820144848983034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/7613820144848983034'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/02/my-first-deadline.html' title='My First Deadline'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-8301324049241587729</id><published>2010-01-13T14:13:00.000-08:00</published><updated>2010-01-18T14:18:53.312-08:00</updated><title type='text'>iPhone dev position</title><content type='html'>&lt;div style="text-align: justify;"&gt;YES! I recently got a part-time&amp;nbsp;contract position&amp;nbsp;as an iPhone developer with a small start-up company in the area. This opportunity is exactly what I've been looking for because I can learn Objective C and the iPhone/ iPod touch&amp;nbsp;SDK. I'm not expected to know it all already, and am learning it with a few others in my shoes. Since it's part time and contract, I can still have a full-time job (which I'm still looking for btw...). &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I definitely plan on learning as much as I can from this company!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-8301324049241587729?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/8301324049241587729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/01/iphone-dev-position.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8301324049241587729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/8301324049241587729'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/01/iphone-dev-position.html' title='iPhone dev position'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-433275672754124364</id><published>2010-01-07T07:36:00.000-08:00</published><updated>2010-01-07T10:10:34.084-08:00</updated><title type='text'>SPARKFUN FREE DAY!</title><content type='html'>I've been trying to keep this to myself, but today is the day the saints at &lt;a href="https://www.sparkfun.com/"&gt;Sparkfun&lt;/a&gt; are giving away $100 worth of free merchandise per customer until they reach $100k. All you have to pay is shipping! Currently, the site is down :-( but I'm waiting patiently for my turn. I just hope people are going to be honest and not cheat. I know it's inevitable with this clientele though :-\.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/S0X4glY-UWI/AAAAAAAAAMU/dJ4Td8C55F4/s1600-h/Untitled.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/S0X4glY-UWI/AAAAAAAAAMU/dJ4Td8C55F4/s320/Untitled.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Here's my list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9270"&gt;Telit GE-865-Quad GSM/GPRS Chip&lt;/a&gt;&lt;/li&gt;&lt;li&gt;GSM Antenna&lt;/li&gt;&lt;li&gt;SIM Card holder&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8448"&gt;Touchscreen for PSP&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Since I have a few PSPs, I figure I can experiment with one of them. I want to put a touchscreen on it. Seems like fun.&lt;br /&gt;&lt;br /&gt;Anyway, wish me luck!&lt;br /&gt;&lt;br /&gt;Update 1: :-(&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/S0YXNvNEeXI/AAAAAAAAAMc/B9OH6MHQ3-U/s1600-h/Untitle2d.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/S0YXNvNEeXI/AAAAAAAAAMc/B9OH6MHQ3-U/s320/Untitle2d.jpg" /&gt;&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Update 2: It's over. I didn't get it. Oh well. Gives me more time to plan my project instead of just impulse buying :-). I still plan on having these parts procured within the next 2 weeks.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Thanks anyway Sparkfun!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-433275672754124364?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/433275672754124364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2010/01/sparkfun-free-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/433275672754124364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/433275672754124364'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2010/01/sparkfun-free-day.html' title='SPARKFUN FREE DAY!'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-grE8_yHnn4/S0X4glY-UWI/AAAAAAAAAMU/dJ4Td8C55F4/s72-c/Untitled.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-6649556885304479610</id><published>2009-12-21T16:48:00.000-08:00</published><updated>2010-01-18T14:13:38.670-08:00</updated><title type='text'>Playing with a 555 Timer Circuit</title><content type='html'>&lt;div style="text-align: justify;"&gt;So I was bored yesterday and started going through my box of ICs. I came across a 555 timer chip, and an LED in my head went off:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;Why not try to make some LEDs blink??&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The original idea was to make a little blinking ornament or something. I still may, but I'm just happy I got it to work. Here's what I did.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I looked up the &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;ved=0CAsQFjAA&amp;amp;url=http%3A%2F%2Fwww.national.com%2Fds%2FLM%2FLM555.pdf&amp;amp;ei=GMFUS9aeJse0tgfu4pm8CQ&amp;amp;usg=AFQjCNEVpaF6Gf1hBUxV58aZ8kYrE4sn7g&amp;amp;sig2=9tJaZz8oq27AAXL4MEwpcg"&gt;555 timer datasheet&lt;/a&gt; and some example circuits. The &lt;a href="http://en.wikipedia.org/wiki/555_timer_IC"&gt;Wikipedia article&lt;/a&gt; had some really good information as well. I learned that there are two modes which the timer can operate: monostable and astable. Monostable mode is a one-time pulse. Astable mode repeats that pulse indefinitely.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Armed with my new knowledge on monostable and astable operation, I realized that I needed an astable circuit, because who wants their decoration to blink once and quit? That's no fun. Anyway, I looked up some of the formulas, which would have been intimidating, had I not been &lt;strike&gt;tortured by&lt;/strike&gt; introduced to all of these concepts during my university career.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In my net travels, I came across &lt;a href="http://www.doctronics.co.uk/555.htm"&gt;this excellent 555 resource&lt;/a&gt;. I learned that in order to get a duty cycle close to 50%, I need to choose R1 = 1k.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;After I had everything all wired, I powerd it up and the LED lit up....but it didn't blink. This bothered me for a second, then I realized what was the culprit: the capacitor I used was a really large value. I switched it out for a 100uF and it blinked, still slowly, but blinked nonetheless. The duty cycle was at 50% because of my R1 resistor value. Then, I switched out the capacitor for an even smaller value (1uF). This blinked very rapidly - much faster than I would like, but at least I was learning how the timer worked.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I realize that by using the formula, I can more accurately pinpoint a frequency. This was just a preliminary exercise though. I definitely hope to get deeper into this chip later.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-6649556885304479610?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/6649556885304479610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/12/playing-with-555-timer-circuit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6649556885304479610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6649556885304479610'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/12/playing-with-555-timer-circuit.html' title='Playing with a 555 Timer Circuit'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-2840584489125652682</id><published>2009-11-30T17:04:00.000-08:00</published><updated>2009-12-04T10:06:51.911-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>Power Supply Design</title><content type='html'>&lt;div style="text-align: justify;"&gt;For the project I'm working on, I need to design a power supply which results in an output voltage of 3.8V. I think I'm going to have the GE864 chip controlled by another micro in order to more easily control the timing required for power (turning the chip on and off requires a 1s pulse, restarting requires a 200ms pulse on a different pin).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Although I haven't selected the microcontroller I'm going to use yet, I have designed the circuit which will interface with its output, which corresponds to the GE864's input (ON or RESET pins). I have designed my power supply circuit with an input of +5V from the micro and an output of +3.8V going to the GE864.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Right now I'm getting power from an old PC power supply. I found the pinout for the main harness and switched the green and black wires in order to turn it on and off. Using my multimeter, I measured different output voltages between pairs of wires. Some were +12V, some were +5V. I decided to start with the +12V coming from one of the floppy connectors.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I ran power from the yellow wire on the floppy harness to the power block on my breadboard, and did the same with ground. To clean up the input some, I used a 100uF &lt;a href="http://www.engineersedge.com/instrumentation/tantalum_capacitors.htm"&gt;electrolytic capacitor&lt;/a&gt;. In order to bump down from +12V to +5V, I just used a &lt;a href="http://cache.national.com/ds/LM/LM78M05.pdf"&gt;7805 +5VDC Voltage Regulator&lt;/a&gt;&lt;a href="http://cache.national.com/ds/LM/LM78M05.pdf"&gt; &lt;/a&gt;from Radio Shack (way overpriced, I know, but instant gratification). I chose to go this route instead of just using the +5V from the PC's power supply because I wanted a more accurate reading. Coming directly from the supply wouldn't have given me as close to +5V as bumping down with the regulator.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So now, I have a clean +5V to work with. But I need to get to +3.8V. For this, I decided to use t&lt;strike&gt;he &lt;a href="http://cache.national.com/ds/LM/LM317.pdf"&gt;LM317T Adjustable Voltage Regulator&lt;/a&gt;, and I'd just design a circuit around it.&lt;/strike&gt;&lt;br /&gt;&lt;br /&gt;I just decided to use a good old-fashioned voltage divider. The LM317 was too tricky. The voltage divider was straightforward and since I was on campus, obtaining the parts was free, as opposed to&amp;nbsp; &lt;a href="http://www.radioshack.com/home/index.jsp"&gt;unnecessarily expensive&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Designing a circuit with my specifications was not difficult at all (&lt;a href="http://www.ltu.edu/engineering/electricalandcomputer/computer_faculty.asp#Dragon"&gt;Prof. Dragon&lt;/a&gt; is the MAN!). Here are my calculations:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SxlPpwnzcKI/AAAAAAAAAMI/vDwpcSHOBXU/s1600-h/equation.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SxlPpwnzcKI/AAAAAAAAAMI/vDwpcSHOBXU/s320/equation.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;V&lt;span style="font-size: xx-small;"&gt;in&lt;/span&gt; to the voltage divider was my +5V from the voltage regulator. V&lt;span style="font-size: xx-small;"&gt;out&lt;/span&gt; is the +3.8V that I need to power my chip. I selected a random value for R&lt;span style="font-size: xx-small;"&gt;2&lt;/span&gt; = 3k and just calculated R&lt;span style="font-size: xx-small;"&gt;1&lt;/span&gt; from the voltage divider formula. &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Here's the schematic representing my circuit:&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SxRrurpR0nI/AAAAAAAAAMA/2ZnYMWD1nPY/s1600/schematic.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SxRrurpR0nI/AAAAAAAAAMA/2ZnYMWD1nPY/s640/schematic.jpg" width="389" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;I used the 1N401 diode to protect against backwards current and the capacitors to filter the input and output. My theoretical output was 3.75. I actually measured 3.73, which should be fine for this&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;SO glad I got this working now! Next I can work on how I actually want to go about turning the chip on and off. I'm thinking of using a separate micro to send ON/OFF signals to the GE864 instead of doing it manually.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-2840584489125652682?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/2840584489125652682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/11/power-supply-design_30.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/2840584489125652682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/2840584489125652682'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/11/power-supply-design_30.html' title='Power Supply Design'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-grE8_yHnn4/SxlPpwnzcKI/AAAAAAAAAMI/vDwpcSHOBXU/s72-c/equation.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-1471016762034792732</id><published>2009-11-23T20:58:00.000-08:00</published><updated>2009-11-29T19:31:09.938-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>Project Schematic</title><content type='html'>&lt;div style="text-align: justify;"&gt;I'm working on a project using the &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9271"&gt;Telit GE864 chip&lt;/a&gt;, and have been having a hard time learning PCB design software so I can make the schematic for my circuit.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I went back and forth between &lt;a href="http://www.pcb123.com/"&gt;PCB123&lt;/a&gt;, &lt;a href="http://www.expresspcb.com/"&gt;ExpressPCB&lt;/a&gt;, and &lt;a href="http://www.cadsoft.de/"&gt;CadSoft Eagle&lt;/a&gt;. Although PCB123 and ExpressPCB seem like fine products, I eventually settled on Eagle because the others are proprietary. If I designed my schematic and board with their software, I had to buy from them (I think one of them has a free pizza offer when you order a board, which was tempting, but didn't quite seal the deal). And, from what I understand, Eagle is used in industry, so I figured it would be good to get familiar with it anyway. &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;My trouble was, I had never designed a schematic around a chip before. The only experience I had was designing simple circuits in &lt;a href="http://www.spectrum-soft.com/index.shtm"&gt;MicroCap&lt;/a&gt; with simple components (resistors, capacitors, diodes, power/ current sources, etc), but nothing with an actual chip. &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I recognize "the cloud" as an invaluable resource for engineering/ programming help. I registered for the &lt;a href="http://forum.sparkfun.com/"&gt;forums on Sparkfun&lt;/a&gt;. Within 30 minutes, I had a reply. Within an hour, I had my solution. Someone pointed me in the direction of the Sparkfun tutorials, which are immensely helpful. &lt;a href="http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=108"&gt;This one&lt;/a&gt;, in particular, described how to create a breakout board in Eagle. . . . which is EXACTLY what I needed to do. &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I found that instead of creating the library for the chip I want to use, I could just download the one the geniuses at Sparkfun had already created. While this simplifies my task greatly, it still leaves a great deal to be learned, which I completely appreciate!&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now I'm researching more on the chip and deciding what type of power supply I want to use. I may just design schematics for all of the suggested supply circuits in the GE864's instruction manual, for more experience with Eagle.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I'm very excited right now!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-1471016762034792732?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/1471016762034792732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/11/project-schematic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1471016762034792732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1471016762034792732'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/11/project-schematic.html' title='Project Schematic'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-1372374634180541570</id><published>2009-11-16T20:54:00.000-08:00</published><updated>2009-11-16T20:59:42.812-08:00</updated><title type='text'>The Debate Over Software Patents. . .</title><content type='html'>&lt;div style="text-align: justify;"&gt;I found this debate pretty interesting. Recently, there has been some controversy about the validity of patenting processes, which would directly affect software patents as well. The argument is that, since software is, in its most basic sense, purely mathematical, that it cannot be patented.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If this argument is upheld, I'm unsure of the repercussions for the world at large, but two things are for certain: Microsoft and Apple would be VERY unhappy, and the term "open-source software" would become a redundant phrase.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Since I have aspirations of becoming a patent attorney dealing with technology of this sort, I feel that this news directly affects me. I may have to adjust my career goals lol!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.theinquirer.net/inquirer/feature/1562231/patent-lawyers-understand-software"&gt;Here's the article I read.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-1372374634180541570?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/1372374634180541570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/11/debate-over-software-patents.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1372374634180541570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1372374634180541570'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/11/debate-over-software-patents.html' title='The Debate Over Software Patents. . .'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-6248002522630429448</id><published>2009-10-28T15:11:00.000-07:00</published><updated>2009-11-29T19:31:44.789-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='repair'/><category scheme='http://www.blogger.com/atom/ns#' term='disassembly'/><category scheme='http://www.blogger.com/atom/ns#' term='zune 80'/><category scheme='http://www.blogger.com/atom/ns#' term='teardown'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Replacing a Zune 80 glass screen</title><content type='html'>&lt;div style="text-align: justify;"&gt;My Zune has a history of breaking itself while I'm fixing it. &lt;a href="http://tomstechjournal.blogspot.com/2009/09/hacking-into-my-zune-literally.html"&gt;Last time I took it apart&lt;/a&gt;, I got it to WORK again, but cracked the screen. This weekend when I was in a &lt;a href="http://tomstechjournal.blogspot.com/2009/10/replacing-iphone-3g-glass-screen.html"&gt;portable-electronics-screen-buying-and-replacing mood&lt;/a&gt;, I decided I'd grab a Zune glass as well.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So, let's get started. For the sake of completeness, I'll go through the entire process, even though it's partially documented &lt;a href="http://tomstechjournal.blogspot.com/2009/09/hacking-into-my-zune-literally.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Required&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Zune 80/ 120 (I guess the HDD size doesn't matter. Second generation or above, non-flash, non-HD (where HD stands for High Def, not Hard Drive)) &lt;br /&gt;&lt;/li&gt;&lt;li&gt;New screen&lt;/li&gt;&lt;li&gt;T4 screwdriver&lt;/li&gt;&lt;li&gt;Tiny electronics flat head screwdriver (I prefer size 2.5 - 4.5) or a case opener tool&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SuiuzWSRaZI/AAAAAAAAAJI/QrKNaMwakRA/s1600-h/100_1318.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SuiuzWSRaZI/AAAAAAAAAJI/QrKNaMwakRA/s320/100_1318.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Procedure&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SuivA_jMxgI/AAAAAAAAAJQ/7yTiRY-vGX8/s1600-h/100_1319.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Remove the plastic clip from the top of the Zune with the flat screwdriver or case opener tool &lt;/li&gt;&lt;li&gt;Unscrew the two T4 screws at the top of the Zune &lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SuivA_jMxgI/AAAAAAAAAJQ/7yTiRY-vGX8/s1600-h/100_1319.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SuivA_jMxgI/AAAAAAAAAJQ/7yTiRY-vGX8/s320/100_1319.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Carefully, take the flat head screwdriver and gently pry, starting at the top where you just removed the T4 screws, and work your way all the way around. What you're doing here is undoing the clips all around the casing. **This is the part where I cracked my screen last time**&lt;br /&gt;&lt;/li&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SuivrohVuQI/AAAAAAAAAJg/neZIPAyEjiQ/s1600-h/100_1321.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SuivrohVuQI/AAAAAAAAAJg/neZIPAyEjiQ/s320/100_1321.JPG" /&gt;&lt;/a&gt;      &lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/SuivqP_lmJI/AAAAAAAAAJY/1fMtVSRRXWw/s1600-h/100_1320.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/SuivqP_lmJI/AAAAAAAAAJY/1fMtVSRRXWw/s320/100_1320.JPG" /&gt;&lt;/a&gt; &lt;li&gt;At this point, you should be able to remove the entire aluminum back, and see the Zune's nasty internals. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/Suiw7EK6goI/AAAAAAAAAJo/DCyuMJVySsg/s1600-h/100_1322.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/Suiw7EK6goI/AAAAAAAAAJo/DCyuMJVySsg/s320/100_1322.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SuixtdU9E8I/AAAAAAAAAJw/N0YFk0Syi-Q/s1600-h/100_1323.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SuixtdU9E8I/AAAAAAAAAJw/N0YFk0Syi-Q/s320/100_1323.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Remove all that #$%@ tape!&lt;/li&gt;&lt;li&gt; Take out the 6 screws holding down the motherboard. There are three pairs, each pair is a different size. Keep them in order! *Note - when you take out the screws on the side, a metal clip will also come loose.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/Sui30H21_uI/AAAAAAAAAJ4/quevrTfZpA4/s1600-h/100_1325.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/Sui30H21_uI/AAAAAAAAAJ4/quevrTfZpA4/s320/100_1325.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;For safety's sake, I removed the hard drive at this point. Lift the black flap on the ribbon cable connector. Use the flat head screwdriver to gently pry this up. Start from one end, and work your way to the other. This is a long tab, and will likely take more than one (probably two) pry-points to lift. (I know the picture shows the screwdriver in the middle. . . . disregard that :-|. . . . it was only for illustration's sake)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/Sui4RHItyfI/AAAAAAAAAKA/NhupE05UXu0/s1600-h/100_1326.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/Sui4RHItyfI/AAAAAAAAAKA/NhupE05UXu0/s320/100_1326.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;  Now, gently pry the board up with the flat screwdriver. Go evenly and CAREFULLY all the way around until you can lift the motherboard out of the case.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/Sui5IkmVXtI/AAAAAAAAAKI/RCQXcB1LZoM/s1600-h/100_1327.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/Sui5IkmVXtI/AAAAAAAAAKI/RCQXcB1LZoM/s320/100_1327.JPG" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/Sui5mazSfBI/AAAAAAAAAKQ/OY4h_uxNjKI/s1600-h/100_1331.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/Sui5mazSfBI/AAAAAAAAAKQ/OY4h_uxNjKI/s320/100_1331.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Whew. . . . now for the hard part. &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;&lt;b&gt;Removing the Glass Screen from the casing&lt;/b&gt;&lt;/u&gt; &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I won't post the failed attempts and pictures of me trying to get this glass out; I don't wanna upset those who get queasy at the sight of blood.&lt;b&gt; &lt;/b&gt;. . . &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;&lt;b&gt; &lt;/b&gt;&lt;/u&gt; &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Nah, just kidding. Bud it did take me some time to figure this out. The glass is held in with a strong adhesive. I tried pushing it out, scoring around the edges, and prying. Some of these worked better than other, then I realized that I could just heat it up with my heat gun! Then I realized that I don't have a heat gun. Then I realized that my wife does! &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/Sui86GrYB7I/AAAAAAAAAKY/10yBLfkogTE/s1600-h/100_1339.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/Sui86GrYB7I/AAAAAAAAAKY/10yBLfkogTE/s320/100_1339.JPG" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;HA! lookit the guy on the box &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/Sui873TD5tI/AAAAAAAAAKg/9TbQQ8Msxds/s1600-h/100_1340.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/Sui873TD5tI/AAAAAAAAAKg/9TbQQ8Msxds/s320/100_1340.JPG" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;Apply heat to both sides, pressing the glass out every so often. After the adhesive melts enough, you're in business!   &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SujAy4LAceI/AAAAAAAAAKo/0L5xXUUMc0o/s1600-h/100_1332.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SujAy4LAceI/AAAAAAAAAKo/0L5xXUUMc0o/s200/100_1332.JPG" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SujA0TeqPwI/AAAAAAAAAKw/j8xGu5kJ7mg/s1600-h/100_1333.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SujA0TeqPwI/AAAAAAAAAKw/j8xGu5kJ7mg/s200/100_1333.JPG" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/SujA2KK0cyI/AAAAAAAAAK4/CfIOilbJxoA/s1600-h/100_1334.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/SujA2KK0cyI/AAAAAAAAAK4/CfIOilbJxoA/s200/100_1334.JPG" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/div&gt;Remove the white tape from the new glass, replace the old one with it, and heat to activate the new adhesive. Put everything back together, and you're in there like swimwear!. . .    &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SujA5sQ4V7I/AAAAAAAAALI/wc2icW9wmoM/s1600-h/100_1337.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SujA5sQ4V7I/AAAAAAAAALI/wc2icW9wmoM/s320/100_1337.JPG" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/div&gt;. . . . unless you put the hard drive ribbon cable on backwards. In which case, you'll get this screen.   Fix it, and you'll get this one!   &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SujA7sOlsvI/AAAAAAAAALQ/X2_41X8Vsp4/s1600-h/100_1338.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SujA7sOlsvI/AAAAAAAAALQ/X2_41X8Vsp4/s320/100_1338.JPG" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-6248002522630429448?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/6248002522630429448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/replacing-zune-80-glass-screen.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6248002522630429448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6248002522630429448'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/replacing-zune-80-glass-screen.html' title='Replacing a Zune 80 glass screen'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-grE8_yHnn4/SuiuzWSRaZI/AAAAAAAAAJI/QrKNaMwakRA/s72-c/100_1318.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-6975999414603499994</id><published>2009-10-25T22:24:00.000-07:00</published><updated>2009-11-29T19:32:10.733-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='disassembly'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='3g'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone repair'/><title type='text'>Replacing an iPhone 3G glass screen</title><content type='html'>So lemme tell you about my crappy weekend. It all started Thursday night. I had just come back from a lovely night out with the Missus. I took my iPhone out of my pocket and threw it down on the bed. Unfortunately, I missed the welcoming, soft mattress, and hit the cold, hard, unforgiving wooden corner of the bed. The result: a shattered glass screen AND LCD.&lt;br /&gt;&lt;br /&gt;To make a long, sad story short, I just opted to buy a new iPhone from the Apple store for $199 the next day instead of paying $150 for new glass and LCD. I traded them the broken one and they gave me the discounted price. I was in a rush when I left the store, so I couldn't stop by Micro Center and buy myself any screen protectors. And I wasn't going to pay the ridiculous prices for any accessories in the Apple store. I didn't want my screen to get smudged, so I didn't put it in the old case I had. So I just went home, happy with my new, unprotected iPhone.&lt;br /&gt;&lt;br /&gt;Saturday, I was with my 2-year old nephew. I leaned over to pick him up, and out of my shirt pocket slides my brand new iPhone 3G (no S), kissing the cement floor face first. The result:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SuUn1OcpvvI/AAAAAAAAAH8/LClKa3UzaKc/s1600-h/100_1290.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SuUn1OcpvvI/AAAAAAAAAH8/LClKa3UzaKc/s320/100_1290.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So, in a matter of 2 days, I had managed to destroy two iPhone screens. This time, since it was just the glass, I just bought it and decided to install it myself. Here's how:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Required:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Broken iPhone 3G or 3GS (The glass and LCD are separate on the 3G models. On the OG, they're glued together, making replacement difficult)&lt;/li&gt;&lt;li&gt;Replacement glass screen&lt;/li&gt;&lt;li&gt;Flat head screwdriver, size 1.5 (or a case opener tool if you're so fortunate to have one)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Phillips screwdriver, size 000 &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Procedure:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Turn off the phone. This is to prevent shorting of any circuitry once we start digging in the iPhone's guts.&lt;/li&gt;&lt;li&gt;Using the Phillips 000, remove the two screws from the bottom of the iPhone&lt;/li&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/SuUsd5MkqtI/AAAAAAAAAIE/Gp51wLvjFwU/s1600-h/100_1292.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/SuUsd5MkqtI/AAAAAAAAAIE/Gp51wLvjFwU/s320/100_1292.JPG" /&gt;&lt;/a&gt;        &lt;/div&gt;&lt;li&gt;Use the 1.5 flat head screwdriver or the case opener tool to pry the screen up. Place the blade in between the chrome and the glass and separate the screen and LCD assembly from the back of the case.&lt;br /&gt;&lt;/li&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/SuUtvH1jNxI/AAAAAAAAAIM/-5N7Fqx3vSE/s1600-h/100_1293.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/SuUtvH1jNxI/AAAAAAAAAIM/-5N7Fqx3vSE/s320/100_1293.JPG" /&gt;&lt;/a&gt;       &lt;/div&gt;&lt;li&gt;Carefully tilt the screen/ LCD assembly up so you can see the numbered connections on the board. They are numbered 1, 2, 3. Remove these from the board in order. 1 and 2 are relatively straightforward, just use the flat screwdriver to pry them loose. The connector for 3 has a tab you must lift before it slides out. Proceed carefully.&lt;/li&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SuUusFWZJBI/AAAAAAAAAIU/ZaodXToYVko/s1600-h/100_1309.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SuUusFWZJBI/AAAAAAAAAIU/ZaodXToYVko/s320/100_1309.JPG" /&gt;&lt;/a&gt;      &lt;/div&gt;&lt;li&gt;Once the cables are disconnected, we can separate the LCD from the glass. Using the 000PH, remove the 5 screws indicated in the picture below. Some are covered with black tape, so you'll have to remove that.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SuUwSkAc04I/AAAAAAAAAIc/8kIESi623JQ/s1600-h/100_1300.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SuUwSkAc04I/AAAAAAAAAIc/8kIESi623JQ/s320/100_1300.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Slide, then lift the LCD out of the glass. If you lift it without sliding, you may bend or break parts of the assembly.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SuUxD0rXXiI/AAAAAAAAAIk/rUG6Ex5pCDc/s1600-h/100_1306.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SuUxD0rXXiI/AAAAAAAAAIk/rUG6Ex5pCDc/s320/100_1306.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Replace the broken glass with the new one, replacing all the screws in their proper places.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Reconnect the ribbon cables.&lt;/li&gt;&lt;li&gt;Slide the glass/ LCD assembly back onto the phone's back.&lt;/li&gt;&lt;li&gt;Replace the two screws.&lt;/li&gt;&lt;li&gt;Use protection! Don't wanna get burned again. . .&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/SuUyK1EwnuI/AAAAAAAAAIs/hVOcWwvNziw/s1600-h/100_1312.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/SuUyK1EwnuI/AAAAAAAAAIs/hVOcWwvNziw/s320/100_1312.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SuUyMLzNaZI/AAAAAAAAAI0/K8taVY74shc/s1600-h/100_1314.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SuUyMLzNaZI/AAAAAAAAAI0/K8taVY74shc/s320/100_1314.JPG" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SuUyNoYLkaI/AAAAAAAAAI8/eyraZplPNUs/s1600-h/100_1315.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SuUyNoYLkaI/AAAAAAAAAI8/eyraZplPNUs/s320/100_1315.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-6975999414603499994?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/6975999414603499994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/replacing-iphone-3g-glass-screen.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6975999414603499994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6975999414603499994'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/replacing-iphone-3g-glass-screen.html' title='Replacing an iPhone 3G glass screen'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-grE8_yHnn4/SuUn1OcpvvI/AAAAAAAAAH8/LClKa3UzaKc/s72-c/100_1290.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-9101355274080045897</id><published>2009-10-14T22:50:00.000-07:00</published><updated>2009-10-14T22:50:15.999-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft SDET interview'/><category scheme='http://www.blogger.com/atom/ns#' term='interviewing'/><title type='text'>Microsoft Interview Results</title><content type='html'>&lt;div style="text-align: justify;"&gt;I got an email from Microsoft today. Although I knew I didn't perform well on the phone/ LiveMeeting interview last Friday, there was still that small bit of hope that maybe I displayed something that they liked. . .&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Microsoft interview is easily the most grueling technical interview I've ever endured. But it was also the most FUN! (Speaking of the process in Redmond). The problems given are designed to make you think, and they sure do. I understand that they don't expect a candidate to get the problem 100% correct right off the bat (or at all, for that matter). They're really observing problem solving skills. My head hurt so bad after that interview, I went back to the hotel and just slept for like 5 hours. Then I got up and went to the bar.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This phone interview is my third meeting with Msft. I had a preliminary interview at a national convention this past March, and was flown to Redmond the next month. I thought I gave the performance of a lifetime on the six (6) (yes, s-i-x) interviews I had that day. I left Redmond feeling really good about my chances, but was sorely disappointed a couple of day later. That was a really tough disappointment - I did my absolute best, and it was still not good enough. Eventually, I got over it and decided to reapply as soon as I was eligible again.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Back to the present. . . &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As I opened the email, I braced myself for the imminent rejection, expecting to see an "unfortunately" right near the beginning. When I got to the fourth sentence, and there was still no "unfortunately," that little bit of hope began to shine brighter.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;And then I read the &lt;b&gt;&lt;i&gt;second half&lt;/i&gt;&lt;/b&gt; of the fourth sentence:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt; we will be pursuing other candidates whose background and abilities more closely match our needs at this time.&lt;br /&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;And things quickly went back to normal. The world didn't end. As I said, I knew I didn't perform very well in this one. I'm not upset or discouraged; but I know what I have to do now. I'm on a mission to become a better programmer. I have dedicated myself to learning as much programming as I can. I'm going to immerse myself in so much code that by the time I'm eligible to interview again, I will be able to better display what I know, and be the ideal candidate.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Here's the problem I was given. . .&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For an array of size n, choose the range of numbers which yields the greatest possible sum.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/Sta2CSj0v9I/AAAAAAAAAH0/sw0oFZXMCAE/s1600-h/microsoft.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/Sta2CSj0v9I/AAAAAAAAAH0/sw0oFZXMCAE/s320/microsoft.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt; &lt;span style="font-size: xx-small;"&gt;For this one, it happens to be array[0] through array[6], which equals 23.&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;But these are just random numbers I came up with for this example. It doesn't always end up where it is the entire range.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-size: small;"&gt;I managed to explain a brute-force method of finding the solution. But drew a blank when asked to describe the efficiency of it using Big-Oh notation. So, I faltered there. Anyway, I have been working on my CS basics, so that should be sharper next time around.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-size: small;"&gt;Very sleepy now. Good night! &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-9101355274080045897?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/9101355274080045897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/microsoft-interview-results.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/9101355274080045897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/9101355274080045897'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/microsoft-interview-results.html' title='Microsoft Interview Results'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-grE8_yHnn4/Sta2CSj0v9I/AAAAAAAAAH0/sw0oFZXMCAE/s72-c/microsoft.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-6748845480033835846</id><published>2009-10-14T22:14:00.000-07:00</published><updated>2009-10-14T22:14:14.019-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='psp hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='psp programming'/><title type='text'>PSP Programming</title><content type='html'>Still very excited about learning PSP Programming. Today, I completed another tutorial, which dealt with outputting different colors and formatted text to the screen.&lt;br /&gt;&lt;br /&gt;Although right now, I'm just following steps, it's still a great learning experience. I'm commenting my code so that I can look back at it and tell what each block does. These tutorials are really good. I wish they were available in a nice little PDF instead of just on the website.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.psp-programming.com/tutorials/c/lesson05.htm"&gt;Here's&lt;/a&gt; the tutorial I did today. The final product is an application that looks like this&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="background-color: black; color: white; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;RED: 0&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;GREEN: 0&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: xx-small;"&gt;BLUE: 0&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And using the direction pad, I can control the values of Red, Green, and Blue, respectively. As the values change, the number updates, and the background color changes accordingly. &lt;br /&gt;&lt;br /&gt;My wife humored me by telling me how "cool" it was. She's obviously very good with children :-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-6748845480033835846?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/6748845480033835846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/psp-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6748845480033835846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6748845480033835846'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/psp-programming.html' title='PSP Programming'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-2343556275811584686</id><published>2009-10-05T20:07:00.000-07:00</published><updated>2009-10-05T20:09:00.295-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='psp hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='homebrew'/><title type='text'>PSP Programming Progress</title><content type='html'>&lt;div style="background-color: white; color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;span style="font-size: xx-small;"&gt;Hello World.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: black; color: white; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;That phrase has never looked so good to me. Those 12 tiny characters in the top left corner of my PSP (Playstation Portable) screen represent, to me, a level of achievement I have been (mostly half-heartedly) trying to reach for over 3 years.&lt;br /&gt;&lt;br /&gt;In 2006, I first began my interest in PSP Programming. I downloaded &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt; (the Linux environment emulator for Windows), but had some trouble when compiling the PSP toolchain. I put it down and didn't resume again until 2008. I tinkered and read about it for a couple of weeks, then the same thing happened, and I again brushed it aside.&lt;br /&gt;&lt;br /&gt;This time, I dug really deep, researched the exact problem I was having, and found a way around it. Apparently, the toolchain is broken, and I had to either download someone else's entire Cygwin setup, which already had the PSP Toolchain compiled, or download a precompiled solution. I opted for the first, then read a quick "Hello World" tutorial, and was up and running!&lt;br /&gt;&lt;br /&gt;I know "Hello World" is generally hardly a means for celebration, but this has truly brought me some joy lol. . . . it's the little things. I'm especially happy that I got this accomplished just after one day of REALLY deciding to put my mind to getting this done. My goal for this week was to have a PSP development environment set up. Now that I've gotten that accomplished on MONDAY, I have to set a new goal lol. &lt;br /&gt;&lt;br /&gt;Now to make it do something useful!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-2343556275811584686?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/2343556275811584686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/psp-programming-progress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/2343556275811584686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/2343556275811584686'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/psp-programming-progress.html' title='PSP Programming Progress'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-6329564167689357291</id><published>2009-10-04T20:57:00.000-07:00</published><updated>2009-10-04T20:57:07.114-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft SDET interview'/><title type='text'>Microsoft Interview Preparation</title><content type='html'>&lt;div style="text-align: justify;"&gt;Earlier this year, I had the opportunity to fly to Redmond to interview with Microsoft for an SDET (Software Development Engineer in Test) position. To prepare, I read a couple of books, reviewed my materials from &lt;a href="http://www.blogger.com/goog_1254713567985"&gt;&lt;/a&gt;&lt;a href="http://www.kaner.com/index.html"&gt;Cem Kaner's&lt;/a&gt; Blackbox Software Testing course, and went over some technical programming examples. This was the most intense, brain-squeezing, mind-bending interview I had ever been on. . . . but it was really &lt;b&gt;fun&lt;/b&gt;! And although I performed what I thought was exceedingly well, I was still not offered a position. I was disappointed, but not discouraged.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;My Microsoft recruiter consoled me and said that sometimes it takes people upwards of 3 tries to get hired. She said that I should work on my skills and try again in six months or so. I made it up in my mind that I would have that job, and that next time around, I would be more prepared, and give an even better shot than the first time.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Last week, I was scheduled for another phone interview (YES!!). Since that time, I feel that I have gained some very applicable knowledge directly pertaining to the type of positions I'm seeking. In addition, I've decided to take on some other projects. Among them are:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Reading &lt;a href="http://www.amazon.com/NET-Extreme-Programming-Experts-Voice/dp/1590594800/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1254714155&amp;amp;sr=1-1"&gt;Pro .NET 2.0 Extreme Programming&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Learning basic operation of&amp;nbsp;&lt;a href="http://nant.sourceforge.net/"&gt;NAnt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.psp-programming.com/tutorials/"&gt;PSP Programming &lt;/a&gt;- just to get some more OOP experience from another perspective. I enjoy writing programs and debugging them myself.&lt;/li&gt;&lt;li&gt;Re-reading &lt;a href="http://www.amazon.com/Art-Software-Testing-Glenford-Myers/dp/0471043281"&gt;The Art of Software Testing&lt;/a&gt; (which was recommended to me at my very first Microsoft interview, to prepare for the Redmond shindig)&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;I should have a firm grasp on (at least 2 or 3 of) these things by the end of this week. In addition, I'm going to read peoples' blog posts of their experiences dealing with the grueling SDET interview and what skills they chose to polish and highlight during the process. I have a couple of friends who work there too, so I'll try to get some of their input as well.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As you can see, I have my work cut out for me, but I'm determined!&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-6329564167689357291?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/6329564167689357291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/microsoft-interview-preparation.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6329564167689357291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/6329564167689357291'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/10/microsoft-interview-preparation.html' title='Microsoft Interview Preparation'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-5099402871863672317</id><published>2009-09-30T14:46:00.001-07:00</published><updated>2009-10-01T14:30:16.343-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GPartEd'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Installing Windows 7 on Acer Aspire 4330</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/SsUYLovxbGI/AAAAAAAAAGE/_aFFbn9fbEI/s1600-h/bios1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;I am a self-proclaimed MOOS - Master of Operating Systems. I like to install, reinstall, uninstall, and break operating systems. Eventually, I would like to build my own OS, for some reason or another. . .&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Anyway, recently (almost a year ago), my sister gave me her laptop to fix, because she had FUBAR'd it with viruses. I went through great pains (finding a USB FLOPPY drive to install SATA drivers) to put Windows XP back on it, but she preferred Vista, oddly. Vista never acted right, so she ended up giving it right back after I did that. Instead of fooling around with either of those, or torturing her with OSX86 or Linux, I just decided to wait on Windows 7 to become available.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;I have my 100% legal copy of Windows 7 now (via &lt;a href="http://msdn.microsoft.com/en-us/academic/dd759402.aspx"&gt;MSDNAA&lt;/a&gt;!), and it has JUST finished burning. Now I can get to the install process. I'm going to go through a fresh install of Windows 7 Ultimate on a hard drive. Let's go!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Formatting the hard drive.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;I have traditionally preferred using a separate disk editing tool than the one included in the Windows installer. For this task, I generally use &lt;a href="http://gparted.sourceforge.net/livecd.php"&gt;GPartEd (Gnome Partition Editor) Live CD&lt;/a&gt;. Download it and burn it to a disk. I won't go over how to do that here. But here are the steps for using it.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Start up the laptop which you want to install Windows.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;While booting, enter the BIOS. On the Acer Aspire, just press F2 when prompted during the boot process.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/SsUYLovxbGI/AAAAAAAAAGE/_aFFbn9fbEI/s1600-h/bios1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/SsUYLovxbGI/AAAAAAAAAGE/_aFFbn9fbEI/s400/bios1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Once in the BIOS, move over to the "Boot" menu and ensure that your CD/ DVD drive has higher boot precedence than your hard drive. Otherwise, the system will try to boot from the hard drive first. If there is a current operating system on there, it will start that up. If the drive is blank, you will receive an error message. To change boot priority order, highlight the desired drive, and press the appropriate key to move it up or down in the list. In my BIOS, it is F6 to move up, and F5 to move down. Press F10 to Save and Exit.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; **Note - I like to keep my boot options where the computer boots from the CD/ DVD drive whenever a bootable disk is present. If you prefer, you can change it back to HDD first after the install is complete. &lt;/span&gt;&lt;li&gt; You can usually roll with the default settings with Linux Live CDs. If you're not familiar with terminals, don't be intimidated. Just read the prompts, Live CDs are generally pretty user-friendly. &lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/SsQcu6uJldI/AAAAAAAAAEc/UHjw_VVjHyQ/s1600-h/iPhone+001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/SsQcu6uJldI/AAAAAAAAAEc/UHjw_VVjHyQ/s400/iPhone+001.jpg" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Think. . . are there any files on there that you really want? There's no turning back after this; they're about to disappear forever. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select any unwanted partitions and press "Delete."&amp;nbsp;&lt;/li&gt;&lt;li&gt;Think some more. There's still time before you send all your files into oblivion.&lt;/li&gt;&lt;li&gt;Hit "Apply" to make it official.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SsUYzZeFf_I/AAAAAAAAAHE/_SpmQ6hhf_Q/s1600-h/iPhone+011.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SsUYzZeFf_I/AAAAAAAAAHE/_SpmQ6hhf_Q/s400/iPhone+011.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Double click "Exit" and press OK to restart the computer&lt;/li&gt;&lt;li&gt;Remove the GPartED disk when prompted. &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Installing Windows&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Your boot order should still be CD/ DVD drive first, so insert the Windows disk right after removing GPartED, but before restarting.&lt;/li&gt;&lt;li&gt;Press Enter to restart (as prompted by the GPartED live CD)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SsUYtpufBsI/AAAAAAAAAG0/KhL3GBK6oUk/s1600-h/iPhone+012.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SsUYtpufBsI/AAAAAAAAAG0/KhL3GBK6oUk/s400/iPhone+012.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;After the installer loads, select your Language, Time and currency format, and Keyboard format.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SsUYq3BOa5I/AAAAAAAAAGs/Mgn_1lh-mH8/s1600-h/iPhone+014.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SsUYq3BOa5I/AAAAAAAAAGs/Mgn_1lh-mH8/s400/iPhone+014.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click "Install Now" &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/SsUYwSn3RRI/AAAAAAAAAG8/zTwzTW9SqZw/s1600-h/iPhone+010.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/SsUYwSn3RRI/AAAAAAAAAG8/zTwzTW9SqZw/s400/iPhone+010.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Read and accept the software license. Check "I accept the license terms." Click Next&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-grE8_yHnn4/SsUYdyZsa2I/AAAAAAAAAGM/0a7J1p8zbQI/s1600-h/iPhone+005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-grE8_yHnn4/SsUYdyZsa2I/AAAAAAAAAGM/0a7J1p8zbQI/s400/iPhone+005.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click "Custom (Advanced)" since we're installing a fresh copy of Windows, and not upgrading.&lt;/li&gt;&lt;li&gt;Select your hard drive or partition from the list.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-grE8_yHnn4/SsUYm0froCI/AAAAAAAAAGk/rWAPkXnfBaQ/s1600-h/iPhone+015.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-grE8_yHnn4/SsUYm0froCI/AAAAAAAAAGk/rWAPkXnfBaQ/s400/iPhone+015.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;**I won't go into how to partition here. This guide is just for a single-partition, single-boot system. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;(It looks a lot like Vista, but don't worry; it's definitely not. . . . I hope)&lt;/li&gt;&lt;li&gt;From this point on, it's pretty much auto-pilot, until it's time to fill in your user details.&lt;/li&gt;&lt;li&gt;After the system reboots, type in your user information.&lt;/li&gt;&lt;li&gt;Type in product key (this may be the last step for some of you posers out there heh heh heh)&lt;/li&gt;&lt;li&gt;Finish the rest of the options using your own preferences and common sense. I'm done here.&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;P.S - I recommend antivirus software. &lt;a href="http://download.cnet.com/3001-2239_4-10019223.html?spi=edce8543c040b2f624159e7e10cb2ef6&amp;amp;part=dl-85737"&gt;Avast&lt;/a&gt; is wonderful, and I don't just say that because it's free. . . . OK yes I do. No, it's really wonderful. I use it every time someone asks me to "fix their computer" cuz they downloaded a virus. Home version is 100% free. Professional is a free trial. Home is perfectly good, even if you're a professional.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-5099402871863672317?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/5099402871863672317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/09/installing-windows-7-on-acer-aspire.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/5099402871863672317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/5099402871863672317'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/09/installing-windows-7-on-acer-aspire.html' title='Installing Windows 7 on Acer Aspire 4330'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUYLovxbGI/AAAAAAAAAGE/_aFFbn9fbEI/s72-c/bios1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-5825258612681767827</id><published>2009-09-26T10:11:00.000-07:00</published><updated>2009-11-29T19:32:34.499-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='repair'/><category scheme='http://www.blogger.com/atom/ns#' term='disassembly'/><category scheme='http://www.blogger.com/atom/ns#' term='zune 80'/><category scheme='http://www.blogger.com/atom/ns#' term='teardown'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Hacking into my Zune. . . . literally</title><content type='html'>&lt;div style="text-align: justify;"&gt;OK, so over the past couple of years, my Zune 80 and I have had a love/hate/hate/hate/hate/love/hate/hate relationship. No matter how that may look in WRITING, the good truly has outweighed the bad. So when it zonked out on me this final time, I felt a moral obligation to try to save her (yes, "her". . . I actually named her Zoey). And since Zoey was [literally 2 days] outta warranty when I first started having this problem and Microsoft wanted $159 for service, I decided I had nothing to lose by finding a T4 screwdriver and trying to fix the problem myself.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;The problem:&lt;/b&gt; I couldn't seem to turn her on anymore, no matter what buttons I pressed (heh heh). When I pressed the "Play" button, I got the "low battery" indicator image. While plugged up (AC or USB), the "charging" graphic flashed, but the OS would never load.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;~~~...::flashback::...&lt;/b&gt;~~~&lt;br /&gt;&lt;/div&gt;&lt;i&gt;This had happened before, and I had simply given up on my baby. I just put her away in the box and used my PSP for a music player. I was sad, but it did the job. After leaving Zoey in the box for like 2 months, I came back, just to see what would happen, pressed the play button, and &lt;b&gt;VIOLA&lt;/b&gt;!* She came right on for me.&lt;/i&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;~~~...::/end flashback::&lt;/b&gt;...~~~&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: right;"&gt;&lt;i&gt;&lt;span style="font-size: xx-small;"&gt;*I know it's really voilà. . . just more fun this way&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;::siiiigh:: Back to reality. This time, I tried that and no luck. After exhausting all software options, my logic was that there must be something wrong with the battery. Maybe if I disconnected and reconnected it, then it would function again.If that didn't work I would go ahead and buy a replacement battery. Sooooooo, after a little deliberation, and a bit of mental preparation, I went ahead and got started.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;Note: Though it'll go without saying, I didn't have a camera while actually taking it apart. This is more of a journal entry than a tutorial.&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Procedure:&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;I got an idea of how to do this from &lt;a href="http://www.rapidrepair.com/guides/zune2%2080gb/Zune2-80GB-Take-Apart-Guide.htm"&gt;Rapid Repair's Zune disassembly guide&lt;/a&gt;.&lt;b&gt; &lt;/b&gt;I improvised some of it as well, as you'll soon see.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Since the plastic cover at the top had already been lost, I didn't have to remove that. I just started by removing two T4 screws at the top of the unit.&lt;/li&gt;&amp;nbsp;&lt;li style="text-align: justify;"&gt;Now, this part was pretty tricky - removing the aluminum back. I suppose there should be an intermediate step describing how to loosen the backing first. So maybe I wouldn't have &lt;u&gt;&lt;b&gt;C&lt;/b&gt;&lt;b&gt;RACKED MY SCREEN&lt;/b&gt;&lt;/u&gt;! &lt;/li&gt;&amp;nbsp;&lt;li style="text-align: justify;"&gt;To loosen the casing, I took a very slim flat-head screwdriver, inserted it between the front and back casings and twisted slightly. There are clips holding the external case together. Twisting the screwdriver essentially gently unclipped them, and methodically pried the case open. . . too bad I discovered this procedure AFTER I had already &lt;u&gt;&lt;b&gt;CRACKED MY SCREEN&lt;/b&gt;&lt;/u&gt;!&lt;/li&gt;&amp;nbsp;&lt;li style="text-align: justify;"&gt;Now, once the casing was open, there was a lot of tape everywhere. Instead of just going on a tape-removing rampage, I drew a picture of what I had, just in case some wire or ribbon cable got disconnected in the process (which, inevitably, it did).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/Sr5HM0d8y6I/AAAAAAAAAEE/MhEOEFFnHA0/s1600-h/100_1289+copy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/Sr5HM0d8y6I/AAAAAAAAAEE/MhEOEFFnHA0/s320/100_1289+copy.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I took this picture after I got it apart (obviously). Although it's pretty crappy quality, you can see I flipped the hard drive over to have a better look at the battery connections.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It was here, when I saw one of the four wires (black, &lt;span style="color: red;"&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;blue&lt;/span&gt;, &lt;span style="color: red;"&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;red&lt;/span&gt;&lt;span style="background-color: black; color: white;"&gt;&lt;span style="background-color: white;"&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt; &lt;/span&gt;white&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;) leading from the battery to solder points on the board had come disconnected. I'm not sure if this happened with handling or if it was the cause of my problem. If it had come apart after I opened the Zune, then I still had accomplished my goal of disconnecting the battery. If it was already apart, then I had found a problem. Whatever the case, I knew it needed to be soldered back on.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It was a relatively simple solder job. I used some fingernail clippers to strip the blue wire back some, then heated the solder joint and set it in place. Turned it over, and saw the beloved Zune boot logo!&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;YIPPEEE!!!!&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;But that's not the end. . . after I got Zoey all buttoned up again, I noticed a new issue - the little "Hold" icon in the bottom of the screen was lit, and no button presses registered. Great. I pressed the Zune in a certain spot, and noticed while applying pressure directly over this particular place, the icon disappeared. So I took it apart again.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Here's the drawing I made:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/Sr5KVAHzQmI/AAAAAAAAAEM/jN5MjKB7jek/s1600-h/zune+drawing.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/Sr5KVAHzQmI/AAAAAAAAAEM/jN5MjKB7jek/s320/zune+drawing.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;At this point, I noticed that the ribbon cable which controlled the hold functionality was not being snugly held in place. I pressed down on the ribbon cable connection to the board, then toggled the hold switch, and it worked fine. I replaced the tape, put the zune back together, and all is well again. . . . . except for the cracked screen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-5825258612681767827?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/5825258612681767827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/09/hacking-into-my-zune-literally.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/5825258612681767827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/5825258612681767827'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/09/hacking-into-my-zune-literally.html' title='Hacking into my Zune. . . . literally'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-grE8_yHnn4/Sr5HM0d8y6I/AAAAAAAAAEE/MhEOEFFnHA0/s72-c/100_1289+copy.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7260018730345237004.post-1729192567394259117</id><published>2009-09-24T21:56:00.000-07:00</published><updated>2009-10-26T15:30:05.015-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ipsw'/><category scheme='http://www.blogger.com/atom/ns#' term='pwnagetool'/><category scheme='http://www.blogger.com/atom/ns#' term='jailbreak'/><category scheme='http://www.blogger.com/atom/ns#' term='3g'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='pwnage'/><title type='text'>How to Jailbreak an iPhone 3G</title><content type='html'>OK, so this being my first post, I'll start with something simple. Something which I've had to do many times over the past 9 months - jailbreaking my iPhone.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Let's start with defining "jailbreak." Well, in my own words, Apple has put stupid limitations on this wonderful piece of phonery, and jailbreaking is removing those limitations. A factory iPhone is like having a &lt;a href="http://www.digitalcarwallpapers.com/wallpapers/lamborghini/2003_Lamborghini_Murcielago_RGT_1024x768_01.jpg"&gt;Lamborghini Murcielago&lt;/a&gt; with a governor at 15 mph. For example, Apple says that the iPhone 3g doesn't do video. The correct statement is, "Apple doesn't ENABLE the iPhone 3g to do video." Jailbreaking does. . . . among with a host of other things.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;***Theoretically, jailbreaking DOES void your warranty, but if you have a problem, just restore your original software before taking it to the Apple store. It's the equivalent to GM saying your warranty is void because your car is dirty - just wash it before you take it in. Problem solved. Amen.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Anyway, enough blabber. Let's get to the biz. &lt;br /&gt;&lt;br /&gt;This guide will go through jailbreaking NOT UNLOCKING the iPhone 3G for use with AT&amp;amp;T service. Unlocking allows you to use the iPhone with any GSM service provider (in the US, there are only 2: T-Mobile and AT&amp;amp;T). There are similar, but different, procedures for the first-generation iPhone, iPhone 3GS, and iPod Touch. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Things you'll need:&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;An iPhone 3G (duh)&lt;/li&gt;&lt;li&gt;The proper .ipsw (&lt;b&gt;iP&lt;/b&gt;hone &lt;b&gt;s&lt;/b&gt;oft&lt;b&gt;w&lt;/b&gt;are file (which you can find relatively easily by &lt;a href="http://www.google.com/search?hl=en&amp;amp;safe=off&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;hs=riu&amp;amp;q=iphone+3.0+ipsw+download&amp;amp;aq=f&amp;amp;oq=&amp;amp;aqi="&gt;Googling&lt;/a&gt;). . . . or better yet, &lt;a href="http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-6578.20090617.VfgtU/iPhone1,2_3.0_7A341_Restore.ipsw"&gt;here&lt;/a&gt;) &lt;b&gt;This tutorial is stricly for 3.0&lt;/b&gt; &lt;span style="font-size: x-small;"&gt;**(or 3.01. . . .so I guess that's not strictly. I suppose the more accurate way of saying it is, it's not for 3.1. Although I haven't tried jailbreaking 3.1 yet, I've just read bad things about it.)&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A jailbreak application. &lt;a href="http://blog.iphone-dev.org/post/126908912/redsn0w-in-june"&gt;redsn0w&lt;/a&gt; is cute, but I like &lt;a href="http://thepiratebay.org/torrent/4963802/PwnageTool_3.0.dmg"&gt;PwnageTool&lt;/a&gt; better. It's easy, and has more configuration options.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Procedure:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; If you have your iPhone set up already, you may wanna back it up before proceeding. It'll preserve your texts, contacts, calendars, settings, etc. I recommend even doing a full back-up as opposed to just syncing. In iTunes, right-click (Ctrl+Click on Mac) your iPhone and select "Back Up." Let it do its thing&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open PwnageTool and select iPhone 3G. Click Next arrow &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/SrxlNrNoALI/AAAAAAAAAC8/9_pNNNfqgIU/s1600-h/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/SrxlNrNoALI/AAAAAAAAAC8/9_pNNNfqgIU/s320/1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Browse to the correct .ipsw file &lt;b&gt;"iphone1,2_3.0_7a341_restore.ipsw"&lt;/b&gt; and continue &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/Srxle5WyO6I/AAAAAAAAADE/XMXgPnr7288/s1600-h/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/Srxle5WyO6I/AAAAAAAAADE/XMXgPnr7288/s320/2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;  Select "General," then press Next arrow. &lt;span style="font-size: x-small;"&gt;(At this screen, you can customize your applications. I'm skipping that, because I've had trouble when I pre-install certain jailbroken apps. I haven't narrowed it down to which one(s) yet though. So just to be safe, don't mess with any more of these options unless you know what you're looking for).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-grE8_yHnn4/Srxlhf7lsvI/AAAAAAAAADM/LRv_ZAYey4k/s1600-h/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-grE8_yHnn4/Srxlhf7lsvI/AAAAAAAAADM/LRv_ZAYey4k/s320/3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Deselect the Options "Activate the phone" and "Enable baseband update" and make the Root partition size 700 Mb. This is a safe number, maybe too big, but so what. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-grE8_yHnn4/Srxljr__qrI/AAAAAAAAADU/ZbM-ae2CJDw/s1600-h/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-grE8_yHnn4/Srxljr__qrI/AAAAAAAAADU/ZbM-ae2CJDw/s320/4.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Click the Back arrow to return to the options menu&lt;/li&gt;&lt;li&gt;Click "Build" and then the Next arrow&lt;/li&gt;&lt;li&gt;Choose a location for your jailbreak file. It will be named something like &lt;b&gt;"iphone1,2_3.0_7a341_custom_restore.ipsw"&lt;/b&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;At some point in the building process, it will prompt you for your system password. Enter it.&lt;/li&gt;&lt;li&gt;After the file builds, PwnageTool will guide you into putting the iPhone into DFU mode.&amp;nbsp;&lt;/li&gt;&amp;nbsp;                          &lt;ul&gt;&lt;b&gt;Entering Device Firmware Update mode&lt;/b&gt;&amp;nbsp;&lt;li&gt;Although the application will guide you through this, I'll still cover it here.  &lt;/li&gt;&lt;li&gt;Turn off the iPhone 3G&lt;/li&gt;&lt;li&gt;Hold Home and Power button for 10 seconds&lt;/li&gt;&lt;li&gt;Release Power button, but continue holding Home button for additional 10 seconds&lt;/li&gt;&lt;li&gt;If this procedure completes correctly, PwnageTool will tell you.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&amp;nbsp; &amp;nbsp; &lt;li&gt;After entering DFU mode, open iTunes. You should get a pop-up saying iTunes has found an iPhone in recovery mode. You must restore this iPhone before it can be used with iTunes"&lt;/li&gt;&lt;li&gt;Hold Shift (Option on Mac) while clicking "Restore" in iTunes. This will allow you to navigate to your custom restore file.&amp;nbsp; &lt;/li&gt;&lt;li&gt;Select the custom restore file, and you're off!&lt;/li&gt;&lt;li&gt;If the restore fails, restart your computer and try again. That usually fixes it. &lt;br /&gt;&lt;/li&gt;&lt;li&gt;After iTunes finishes the restore, it will ask you to set up your iPhone. Sync from the latest version that you saved in the Preparation section of this tutorial.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Screenshots from PwnageTool by &lt;a href="http://blog.iphone-dev.org/"&gt;iPhone Dev Team&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7260018730345237004-1729192567394259117?l=tomstechjournal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tomstechjournal.blogspot.com/feeds/1729192567394259117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tomstechjournal.blogspot.com/2009/09/how-to-jailbreak-iphone-3g.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1729192567394259117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7260018730345237004/posts/default/1729192567394259117'/><link rel='alternate' type='text/html' href='http://tomstechjournal.blogspot.com/2009/09/how-to-jailbreak-iphone-3g.html' title='How to Jailbreak an iPhone 3G'/><author><name>Thomas</name><uri>http://www.blogger.com/profile/11201599748665391822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_-grE8_yHnn4/SsUdbTIadGI/AAAAAAAAAHM/-I51CkdgJtU/S220/me+tying+tie.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-grE8_yHnn4/SrxlNrNoALI/AAAAAAAAAC8/9_pNNNfqgIU/s72-c/1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
