Growing tired of the Apple Remote conflicts in Snow Leopard with the likes of Boxee, Plex and Hulu Desktop? Well, we have some good news to report. IOSPIRIT today announced the release of Candelair.
Entries from October 2009 ↓
Candelair Fixes Apple Remote Under Snow Leopard
View original post found on 123Macmini.com authored by (author unknown)October 23rd, 2009 — mac
Psystar’s $50 Software Lets You Put Snow Leopard on a Non-Hacked PC [Psystar]
View original post found on Gizmodo authored by Jason ChenOctober 22nd, 2009 — mac
Not content with waging a crazy legal battle with Apple based on just selling hardware with Snow Leopard on it, Psystar is now selling software that lets you put OS X on any new PC.
You can actually download a trial version yourself before you hand over your $50. Keep in mind that you’ll need to have a machine with one of these processors in order for this to work: Intel Core 2 Duo, Core 2 Quad, i7 or Xeon Nehalem. We haven’t tested Rebel EFI, so we can’t say how well it works. Let us know if you’ve had luck with it. [Psystar via LoopInSight]
Use/Build Tools for Yourself
View original post found on Enormego Developer Blog authored by Saverio MondelliOctober 15th, 2009 — web20
One of the things that we’ve been focusing on lately has been building tools to better manage our products and services. It’s amazing what a well designed tool can tell you about your business. When I say “tool”, I’m referring to an application. Whether it be a web app, a desktop app or even a simple spreadsheet, creating a good “tool” that can help you leverage data that you’ve collected, or even help you collect data to analyze is a great thing to have.
For example, our F-MyLife application leverages multiple ad networks to fill it’s inventory. It currently uses the AdWhirl SDK to do this and it worked great for a while; however, our buddies over at MobClix built a much better ad aggregation platform with far more networks and we’ve since moved most of our traffic to MobClix so they can manage it. Since the AppStore is a pain in the ass and getting an update out would have taken weeks, we were able to allocate all of our traffic to MobClix via AdWhirl and MobClix’s new platform was able to handle everything from there. We ran our ads like this for over a month and then we started noticing a dropoff in our revenue. We scrambled to find out what the problem was, but since we were filtering through data from multiple networks, it was nearly impossible to put two and two together.
We decided that in order to analyze all of this data and really see connections between everything, we were going to need to build something. So Shaun spent a few nights working on a web application that pulled in all of our data from all of our networks so it could be analyzed and displayed in a readable format along with some charts. This was a huge life saver. After reviewing the reports that we built for ourselves, we noticed a huge problem with our click-through rates and began working with everyone to resolve them.
Had we not built this tool, we probably would of never known the real cause of the issue. In fact, had we built this tool a month ago, we would of identified the bug earlier and we could have fixed it.
You don't always need to "roll your own solution" though. There are tons of products and services out there designed to fix problems just like yours, you just need to research them and set them up. A similar scenario occurred with our servers. We run FML/TWI & ProTip on Amazon's EC2 infrastructure and we monitor everything with Pingdom. The other night, we had a 6 hour downtime between 2am EDT and 8am EDT. The problem was remedied by a simple lighttpd restart; however, during that time, we lost a lot of revenue. This wasn’t the first time that this happened either! So, yesterday, we setup Scoutapp to keep an eye on our server load and monitor some other metrics (like MySQL). When we woke up, we were greeted with a bunch of alerts from Scoutapp telling us that we had 1 SQL query which was taking an awfully long time to run and bogging down the server. We logged in, identified the query, figured out why it was taking so long to run and remedied the problem by adding an index to one of our tables. Done!
If it weren’t for Scoutapp, we would of had to manually log into each server, every morning and manually check the slow query logs. This is painstaking and given that we’re a small company with hundreds of things in the works at any given time, we don’t have the free time available to check logs. Scoutapp saw a problem, let us know about it, and we fixed it. A tool saved our ass yet again.
This happens over and over in the software development business. After you’re done with the product, and it makes you a little bit of money, you NEED to build or setup tools that can help you manage your new business. If you don’t, you’ll spend all of your time managing your first product instead of working on your next.
Heartbeat was the first tool we built to manage our AppStore products. It’s been a great asset to us and after having had over a year of experience on the AppStore, we’re working on Heartbeat 3.0 which will incorporate all of the knowledge that we’ve gained through the past year.
It seems counter-productive when you’re a small company, but that’s when these little things help the most. You don’t have the time to do it all, so it’s important to automate as much of your business as possible. Services like Pingdom and Scoutapp have helped us maintain uptime on our servers. Others like Sifter and Tender have helped us keep track of bugs and deal with support issues from our customers.
There are a ton of other products and services out there that can help you run your business. If you can’t find one to meet your specific needs, spend some time, and build your own. Trust me, you’ll thank yourself in the long run.
iRobot Makes First Version of T-1000 or Number Six—We Will All Die Anyway [Robots]
View original post found on Gizmodo authored by Jesus DiazOctober 13th, 2009 — cool
Gizmodo’s bullpen five minutes ago. Me: “Holy f*ck. Check this.” Matt: “We’re all dead.” Me: “We’re so f*cked.” Wilson: “Soft robotics. That’s a scary phrase.” Jason: “You mean a sexy phrase. Mmmm. Soft robots.” Wilson: “Now, jamming skin…
That is sexy. Jammable slurry. Wow, a little hot under the collar here. This really is nuts.”
It is really nuts indeed: A shape-shifting robot blob that can squeeze through cracks. Sounds familiar? Of course it does. But clearly, this iRobot and Darpa researchers don’t read or watch any Sci-Fi material whatsoever.
In any case, ladies and gentlemen, it has been a pleasure and a privilege writing for you. Now, enjoy the rest of your lives. They won’t last much more. [JWZ via Make]
GlideTV: Smooth, Egg-Shaped Media Remote
View original post found on Wired: Gadget Lab authored by Charlie SorrelOctober 13th, 2009 — gear

The GlideTV is a couch mouse, something pretty handy when a lot of us are watching TV and movies on our computer screens. It works over USB, and you plug a dongle into the machine to play. From there, you can control your cursor with a touchpad, and there are a few buttons which mimic the ones most used on a keyboard, like Escape and Enter. The best part is the rim around the pad which neatly contains a lot of extra buttons. And because it works like a regular mouse and (limited) keyboard, it works with most machines, from Media Center PCs to Macs to PS3s.
But the keyboard is the problem for this otherwise sexy half-egg (it looks like a sex toy, as you can see in the photo of it being fisted, above). If you are using Windows, you can download the GlideTV Navigator software, which will give you an onscreen keyboard, but we all know how quick and easy they are to use (not very, if you were wondering).
Still, the GlideTV, which comes from the brains of the people behind VUDU and SageTV, packs a lot into a tiny device. And at $150, that’s a good thing: For the same price, you could pick up a wireless keyboard with a trackpad or trackball. Then again, the GlideTV will fulfill that other living-room remote requirement: It can be lost down the back of the sofa. Try that with a full-size QWERTY. If only the Glide people would put a vibrator inside. Then it would be perfect.
Product page [GlideTV. Thanks, Patrick!]
Dev-Team Releases Jailbreak – PwnageTool 3.1.4
View original post found on Apple iPhone School authored by BrookeOctober 13th, 2009 — iPhone
The Dev-Team has released a jailbreak for firmware 3.1.2. The jailbreak (PwnageTool 3.1.4) works for the iPhone 2G, 3G and 3GS. It also work on the 1G and 2G iPod touch. It does not support the 3G iPod touch at this time. PwnageTool only works on a Mac (no Windows version yet).
If you are an unlocker, “It is super important that people who need the unlock to understand they can keep it only by starting at 3.0 (or earlier) and updating solely to custom IPSWs that don’t update the baseband. For those who have been onboard the “unlock train”, simply install ultrasn0w via Cydia once you’ve restored to your custom IPSW. Don’t forget to turn off the “3G” setting in Settings->General->Network if you use T-Mobile in the U.S.A.”
Below is a snippet from the Dev-Team’s website. However, you will want to check out their blog for full information and the download.
Be sure to read everything carefully before you begin your jailbreak.
Pwnage Pie
Here are some details on our latest version of PwnageTool 3.1.4 for Mac OS X which supports the 3.1.2 release of the iPhone software for iPhone 2G/3G/3GS and iPod Touch 1G/2G.
If you’re already jailbroken (by whatever means), you don’t need to mess around with DFU mode at all. Just create (or get from a friend) your custom IPSW and Option-Restore (Shift-Restore on Windows) to it via iTunes. Don’t enter DFU mode at all. Please make sure you are restoring to the custom IPSW, not the stock one from Apple! For best results, use the latest iTunes (9.0.1) — which includes a nice new application organizer.
This release allows your baseband to remain unlocked at 3.1.2, but it does not unlock a new baseband put there by restoring to official 3.1.x. It is super important that people who need the unlock to understand they can keep it only by starting at 3.0 (or earlier) and updating solely to custom IPSWs that don’t update the baseband. For those who have been onboard the “unlock train”, simply install ultrasn0w via Cydia once you’ve restored to your custom IPSW. Don’t forget to turn off the “3G” setting in Settings->General->Network if you use T-Mobile in the U.S.A.
Note for 3GS users not already jailbroken and stuck at 3.1.x: this version of PwnageTool has a side feature to jailbreak your 3GS. It uses a simple implementation of the usb control msg hole found by chronicdev, geohot, and our very own gray. Now that the hole is public and in use, we expect Apple to close it by the next major firmware update. That’s why 3GS users need to get their ECID hashes for 3.1.x now, and need to stay onboard the “jailbreak train” in all future updates. For more details on what this means, please see our earlier posts or ask in our comments section (moderated by the always helpful @angie and @confucious!).
For the early adopters who ran blackra1n and are having problems with mobilesubstrate, winterboard, diskaid, or ifunbox, you can install a custom .ipsw from PwnageTool to fix these issues. That’s because all jailbroken devices accept a custom .ipsw created by PwnageTool. (However, if you ran blackra1n on a 3G or 3GS that means you updated to stock 3.1.x, and the carrier unlock is now out of reach. We’ll continue to work on a carrier unlock for the latest basebands, but the timeframe for such an unlock is unknowable.)
Note: If you use internet tethering on a carrier that doesn’t officially support it, you’ll lose it by going to 3.1.x. Stay back at 3.0 until a hack for that is developed.
SUMMARY:
* The iPhone 3GS is now supported out of the box in PwnageTool 3.1.4 (or if you have upgraded to 3.1.x in iTunes)
* The iPod 2G is still supported in PwnageTool 3.1.4 but you must already be jailbroken (we’ll update this if there’s a big demand from non-jailbroken ipt2G owners)
* The iPod touch 3G is NOT supportedDETAILS:
1. GOLDEN RULE: If you are using a iPhone 3G or iPhone 3G(S) with ultrasn0w and rely on ultrasn0w to obtain cellular service then you should only update your device with an .ipsw that is made with the new PwnageTool. There are no second chances with this. You need to remember that PwnageTool will provide an upgrade path to newer versions of the iPhone software in the future.
2. Please read all parts of this post before downloading and using these tools.
3. Read items 1, 2 and 3 again and again.
4. At the bottom of this post are the bittorrent files for the 3.1.4 capable version of PwnageTool.
5. PwnageTool will work for the iPhone 3GS
6. PwnageTool will work for the iPod touch 2G
7. PwnageTool WILL work for Original iPhone (1st Generation), the iPhone 3G and iPhone 3G(S) and the iPod touch (1st Generation and 2nd Generation) but NOT the iPod touch 3rd generation.
8. For 3G and 3G(S) users who are Pwned, PwnageTool is your key to updating in the future, just remember to never install an update directly from Apple, always use an .ipsw that has been created with PwnageTool.
9. There is no Windows version of PwnageTool it is a Mac OS X tool only, we are not developing a Windows version of PwnageTool.
iPhone App Design Trends
View original post found on Smashing Magazine Feed authored by Jen GordonOctober 9th, 2009 — iPhone, ui
![]()
For the past two years, the elegant iPhone has housed some of the most poorly designed applications you could imagine. The hype surrounding iPhone has prompted many designers across the globe to try their skills with the new mobile medium. The result are literally thousands of various iPhone-applications that are often hardly usable and counter-intuitive. However, some designers invest a lot of time and efforts into creating usable and original user interfaces (yes, there are usable and creative UIs).
This article explores the ways in which designers use graphical elements and screen interactions to create iPhone-applications that are easy on the eyes and mind. The aim of this article is to display common trends and design approaches in iPhone app design – please notice that they are not necessarily optimal ones from the design or usability point of view.
1. Mirroring Native iPhone UI Elements
“Tell them what you’re gonna tell them, tell them, and then tell them what you told them.” Creating a whole new OS within your app can be fun, but when you’re dealing with the mobile medium, people just want to get stuff done. Getting stuff done means that the designer has to get into the flow of the OS and create an app that requires zero explanation for the end user to operate. Mirroring the layout and UI elements that the user is already familiar with saves time and energy. So it seems quite convenient to use this approach when designing iPhone-applications.
Facebook (iTunes Link)
In the new Facebook 3.0, you’ll find a grid layout that users can swipe left and right to access more categories. Because it mirrors Apple’s native UI, users do not have to “learn” how to use it all over again. A similar approach exists in Web design: users expect to see a logo in the top left, navigation along the top, etc. Facebook has taken this concept mobile, using large buttons that are easily distinguishable and tap-able.

Where (iTunes link)
Where has a similar concept, allowing users to swipe left and right to access more data.

Tweetdeck [iTunes link]
Tweetdeck is a good example of user interface design on many levels. Notice how the design highlights recent updates. The application could display the updates in a new window, with a categorized or tabbed list. But it doesn’t. Instead, a more familiar dialogue menu is displayed — it serves as a springboard to jump to a specific category or to clear the messages altogether.

2. Simplifying The Interface
Simplifying user interfaces may sound like a mechanical task, but what lies beneath the surface of user interface design? The answer is simple: users. And what do users want? What makes them all warm and fuzzy? How do you deliver what they want so that they don’t even notice how they are consuming information?
Facebook’s first release did a great job of fitting a lot of core functionality into a small space. The problem, of course, is in laying out all that data and creating an intuitive interface. Compare 3.0 with the first release, and you’ll see how they took a “springboard” approach to streamlining the interface, keeping it intuitive and maintaining functionality.

Flickr [iTunes link]
Flickr is another example of how to achieve a good balance between functionality, visual design and the small display area on mobile devices. Think about it: what is at the core of Flickr? Photos. Its users probably do not want to look at big clunky navigational elements; instead, they are looking for pictures. Flickr has managed to fit all of its core functionality without heading down the highway to navigational hell. In fact, most elements in the navigation are handled by interacting with the photos themselves. Simple and smart.

3. Hardware-ish Look
Many utilities are breaking out of the conventional iPhone UI to take advantage of the device’s unique ability to respond to finger gestures. Many of these have hardware-ish interfaces that users are familiar with but come with perpetually shiny exteriors and clicks and pops that maintain their newness from the first to one-thousandth click. Next up, though: an app that gets dirtier the more you play with it.
Convertbot (iTunes link)
Convertbot reminds us of the proportion wheel we all used in grade school, except it’s more distinctive, original and creative.

Little Snapper (iTunes Link)
Little Snapper mimics the wheel that you turn on a typical digital SLR.

iHandy Level (iTunes Link)
iHandy Level simulates the look and functionality of a real, well-used leveler.

Where To? [iTunes Link]
This application looks like it belongs in a Mercedes. Plush leather, matte-finish tactile buttons: quality craftsmanship. We can just imagine how each button press feels solid, requiring the perfect amount of pressure.

4. Rich, Padded And Pretty List Views
You know that you are a geek designer when you get excited about the latest trends in list view design. And what do people do when they encounter a list view? Of course, they skim. And how do we make it easier for people to decide what interests them? That’s right: more visual cues!
Essentially, users are asking for a snapshot of what’s next, and then decide if they want more information. One way to do this is with big pretty buttons. Large and in charge, elegantly designed big buttons give the user a lot of information through their color, icons and typography.
Delivery Status Touch (iTunes Link)
Check out how Delivery Status uses appropriate colors on its big buttons to identify each brand. And it uses typography well to establish a hierarchy of information.

Be Happy Now (iTunes Link)
Be Happy Now’s big buttons convey the “be happy” mantra through a mellow color scheme and light, calm and clear typeface.

Next Read [iTunes link]
The Next Read application allows friends to share books. Here all books about a particular topic are presented, including the title, cover image, review rating and number of people who have recommended it. Notice the padding and a lot of white space for each navigation option; this makes the areas easily clickable and easier to navigate.

Nike [iTunes link]
Nike’s workout application for women includes a nice visual treatment and illustrations that match the brand. It breaks out of the traditional UI just enough to communicate the brand without making it difficult for users to understand the interface and how to use it.

Borange [iTunes link]
Borange is a “social availability” application that helps you coordinate meetings with friends. The list view presents a lot of information: friends you want to hang out with, the meeting location and a nice visualization of friends who are available.

5. Layered Interface
Several applications take advantage of the iPhone’s capabilities by layering the interface and making some elements stationary and others vertically or horizontally scrollable. This approach has several benefits:
- It reduces the number of traditional navigation elements that are necessary (i.e. fewer buttons help to avoid a cluttered interface).
- It gives users a faster route to the information they want.
- More screen space is available for information.
Tweetie (iTunes Link)
Tweetie uses layers to organize information specific to each of your Twitter friends. Just look at all of the information packed into this one screen!

Barnes & Noble [iTunes link]
Barnes & Noble has a layered interface that allows you to quickly slide through new releases at the top or dive into more categories below.

USA Today [iTunes link]
USA Today takes a slightly different approach to layering the interface in its “Pictures” section: it uses sliding panels to display blocks of information. While the interface may look cluttered at the first glance, one can easily get around it. The interesting part is that within each panel you can slide thumbnails left and right to view more images.

myPantone [iTunes link]
Would we expect any less from Pantone? The color picker shown above is a layered interface that lets you pick from a range of colors, sort and scroll as well as open and close detail screens, all without too driving you crazy.

6. Icons For The List View
Icons aren’t just for springboard-loving folks. On small screens, icons can give a huge boost to an application’s usability and navigation. Let’s now take a look at some examples of applications that use icons to their advantage.
iStudiez (iTunes Link)
This application uses various educational metaphors as icons to clearly communicate the purpose of the application. Excellent visual cues tell the student what’s happening today at a glance.

Top Floor (iTunes Link)
Top Floor uses simple and easily recognizable icons to quickly guide users to their category of choice.

New York Times
Isn’t it great when applications just let you do whatever you want to do? For an app with as much information as the New York Times’, users are bound to have their favorite sections. Well, guess what? The New York Times cares: it lets you customize the tab bar’s navigation to include only your favorite sections of the paper. Drag an icon down the tab bar and you are set. The downside of the design is, of course, its lack of visual appeal.

Filemaker [iTunes link]
Here is another example of beautiful icons that aren’t obscure or confusing. Designers should never use icons just for the sake of having icons. As designers, we want icons that illustrate what users are actually going to get when they choose a particular path. Nicely done, Filemaker.

7. Illustrations in use
Applications that rely on graphics not found in the standard user interfaces are increasing in popularity, as developers try to set their apps apart from the crowd. Sometimes it works, but often it doesn’t. The more unconventional a design is, the more likely it is to have usability problems. Please always conduct usability testing before releasing a product with a “creative” user interface.
Magnetic Personalities (iTunes link)
An excellent example of how buttons don’t have to look like standard buttons.

SugarSync [iTunes link]
This interface could have easily followed the traditional list-view route. Instead, the designers played with the concept of “connectivity” to create a visual treatment that communicates the purpose of the app. It is unusual and requires some time to get used to.

Mom Maps [iTunes link]
Another example of how illustrations do a great job of pulling together the whole concept of an application.

8. Using Gestures
Classic linear navigation may look boring: a button that links to other buttons, which leads you to a list of something, which leads you to such-and-such an interaction. Not really spectacular. The possibilities for creative interaction in utility apps are huge and largely untapped (no pun intended).
Mover (iTunes link)
Mover exemplifies how to use gestures for sharing contacts, photos and bookmarks. Open two devices, and flick the shared files from one handset to the other.

ABC Animals [iTunes link]
This application teaches while it entertains. Being able to trace a letter with your finger is another example of how the iPhone responds to touch and movement.

All Recipes [iTunes link]
This applications allows you to mix in various elements to create your next meal using gestures.

Something is missing?
We missed some common design approach or trend? Please let us know in the comments to this post!
About the Author
Jen Gordon is the owner of Atlanta-based iPhone app design studio Clever Twist, which will release its latest app Farm Friends in just a few days. She specializes in usable interfaces, beautiful design and straight talk. She loves her family and the iPhone and periodically dreams that she’s close friends with Dolly Parton. Follow her on Twitter or drop her a line to say “Hi!”.
(al)
© Jen Gordon for Smashing Magazine, 2009. |
Permalink |
39 comments |
Add to del.icio.us | Digg this | Stumble on StumbleUpon! | Tweet it! | Submit to Reddit | Forum Smashing Magazine
Startups 101: The Complete Mint Presentation
View original post found on TechCrunch authored by Michael ArringtonOctober 8th, 2009 — startup
Last night I posted the video of Mint CEO Aaron Patzer’s 45 minute presentation on building startups from the ground up. If you are an aspiring startup entrepreneur, you’ll want to watch that more than a few times. The candid disclosures and advice he gives is rarely seen in Silicon Valley.
Some readers requested to see the presentation deck as well, so here it is. Patzer shows how he raised and spent money, and generated revenue, throughout the lifecycle of Mint, from the very beginning to the $170 million acquisition. He also showed historical slides from early presentations to investors and compares those to the actual results.
I’m also re-embedding the full video below.
Crunch Network: CrunchBase the free database of technology companies, people, and investors
Code Consequences
View original post found on iPhone Development authored by jeff_lamarche@mac.com (Jeff LaMarche)October 7th, 2009 — consulting
I think we’re all aware that our actions have consequences for ourselves and, often, for others. I’m going to talk about such a situation that is relevant to iPhone developers.
I’ve had to turn down some development work while writing More iPhone 3 Development. This isn’t a big deal, as I expected that to happen when I agreed to do the book, and I like to see it, because it tells me that our platform is still doing well. However, a surprising number of the projects that I’ve turned down have been to fix iPhone applications written by other contract developers, something I don’t consider to be such a good sign.
Even if I were available to take the work, there’s something inherently uncomfortable about these situations. Some developer whose identity is unknown to me wrote this code. That developer has no chance to respond to my criticisms and I, in turn, have absolutely no idea of the situation under which the code was written. I feel like there’s no right way to point out flaws in code like this. Yet, to fix the problem or even give an accurate estimate, those problems have to be identified.
In one such recent instance, the potential (and very trusting) client actually sent me their code along with the description of the problem. I knew that I couldn’t take on a hefty project until the book is finished, but the description of the problem sounded like something that I might be able to be fix quickly and easily, so I looked at the code that evening.
The problem was exactly what I thought it was going to be based on the description, and I thought I’d be able to fix it with a few dozen lines of code over not more than a couple of hours, which would be a win for the prospective client and the client’s users who were experiencing significant performance problems with relatively low volumes of data. In a well-designed application, fixing this specific problem wouldn’t have impacted anything outside of a single class or, at worst, a handful of classes. It was a bottleneck in pure “Model” code in the MVC sense. In theory, as long as I didn’t change the way the object’s data was accessed and updated by other classes, I could change the implementation details, such as how the data was persisted, without impacting anything.
You know what they say about theories, right? They work great, in theory. But in practice…
So, yeah, that theory didn’t pan out. I started looking at the rest of the project looking for potential cross-depenencies and I found that my assumption was totally and completely wrong. The underlying data store wasn’t only vended through the data class, it was accessed directly by literally dozens of classes. In fact, all the actual persistence code – both loading and saving – (with the exception of encodeWithCoder: and decodeWithCoder:) was contained in controller classes. And there were dozens of these controller classes, many of which were nearly identical except for a handful of lines, which seemed to indicate a general lack of design or forethought. The core problem was thus made significantly harder to fix by a desperate and unrequited need for refactoring. There were, literally, several dozen classes that could have been written as a single-class or, at worst, a couple of subclasses with a common parent. The entire project looked like one thrown together by a tragically inexperienced developer, or one who didn’t have any use for “this new fangled OO shit”. Seriously, there should be a link to this project on the Wikipedia’s spaghetti code entry, in the section on “Spaghetti with meatballs”. Reading the project made me feel like I was in some weird programming equivalent of Poe’s Law; I don’t think I could intentionally create code this convoluted.
Now, I wish I could say that I’d never seen nor written bad code, but that wouldn’t be true. I’ve seen lots of bad code over the years and have written more than I’d care to admit. Despite that, though, this code was worse than most of what I’ve seen, and that’s saying something, given that my job for several years was fixing problems in other people’s code.
After a couple of hours, I came to the inescapable conclusion that this job was beyond my ability to take on right now. I’m almost positive that it would be more work to try and fix the multitude of problems in this code than it would be to just rewrite the application from scratch. Even if not, the end result would certainly be better. Out of fairness to the prospective client, I had to explain why I had to turn down the project, something that seems likely to cause problems for the previous developer. I couldn’t, in good conscious, not tell him, however. I did put it in far more diplomatic terms than I am doing here in my blog, at least, where I sometimes personify the fact that ‘tact’ is a four letter word.
The high demand for iPhone developers has made it a profitable livelihood and, I think, has caused many people to offer their services as iPhone developers without truly adequate experience. Hell, I’ve been working with the SDK as long as anybody outside of Apple, and I sometimes feel like I don’t have “truly adequate experience” with it – that’s the peril of a new technology I guess. Regardless, when you’re developing for a client or employer rather than yourself, you really need to be aware that there will be downstream developers affected by the decision you make or fail to realize are there in the first place. When you cut a corner to save time or fail to use good design because you don’t know any better or don’t care, that decision may very well have significant consequences for your client and for other developers who inherit your code.
Good application architecture and writing good code takes a little longer in the short run, but in the long run, it requires much less of a time investment to maintain. Yes, I know most of us bill by the hour and writing bad code is far more profitable than writing good code, but don’t do that. Seriously. That’s worse than just being ignorant of how to write good code. Despite the economy, there’s no shortage of iPhone development work right now, and even if that weren’t the case, you owe it to your clients to give them the best code you are capable of writing.
Addendum: Based on some of the comments, I fear that this post has come across as rather more judgmental than intended. Contract software development, especially for clients who are not familiar with the process, is extraordinarily hard. No contract developer has ever, ever created a perfectly designed, bug-free application. In the real world, you have to deal with deadlines, unreasonable demands, and tons of other factors that work against you delivering a perfect application. I am not unsympathetic to this at all, as I have experienced it myself on countless occasions.
I intended this only as a cautionary tale to give you something to think about when deciding whether to cut a corner or to skip doing that rewrite you know you need to do, not as an indictment of anybody. Believe me, looking at some of my early contract work, I’ve got some pretty harsh words for myself.
One of the most important traits in a developer is the willingness to accept that no matter how good you are, you do make mistakes. You will never stop making mistakes and you will never stop being able to learn from those mistakes. Sometimes, you can even learn from others’ mistakes and save yourself some pain.
http://iphonedevelopment.blogspot.com
How to Best a Master Lock [Infographic]
View original post found on Gizmodo authored by Mark WilsonOctober 6th, 2009 — amazing
There are 64,000 potential combinations in a Master Lock. With a few easy steps, you can figure out the last number of any combination. From there, you’ll crack the lock in 100 attempts or less. [MarkEdwardCampos via HackaDay]



