Category Archives: Development

From my Notes

This set of questions is from November 13, 2015 regarding Xcode for iPad. They still hold true today.

  • Who is it for?
  • What would the experience be like?
  • How would debugging work?
  • Would you have a mouse?
  • How would you debug for other OS versions?
  • Would it be iOS only?
  • What about Mac?
  • Would it be Swift only?
  • Would it introduce a new framework?
  • Split screen debugging?
  • What about iPhone?
  • iPad Pro only?

Evergreen ODB

Brent Simmons: “And: different syncing systems might need different properties, and I don’t really want to create an uber-schema which is the union of all of these. (And I don’t want to create a Feed protocol, because Set is then impossible.)”

I too am working on an RSS reader for Mac and iOS but I’ve chosen to make what Brent refers to as an uber-schema. We’ll see how it works. I think it’s going to be fine but I’m really curious to watch what Brent’s ODB turns into.

His idea of a more document centric storage mechanism is probably going to be really nice for an RSS reader. It doesn’t need to keep data around forever and requires a very small amount of data to work well.

There are, of course, document — NoSQL — databases readily available. The first one that comes to mind is CouchBase Lite.

Old Devices

I don’t like to install beta versions of iOS on my daily driver device so I tend to use old devices I have left around from years past. This year, however, I didn’t have a device capable of running iOS 12, so I bought a used one on Letgo.

For $60US I was able to purchase an iPhone 5s with a cracked screen that works just fine. I decided to pickup a new screen from iFixit for another $40US. All in, $100US and I have a great new test device. It actually runs iOS 12 really well.

So, if you’re short on cash, try a used device for testing.

iPod Touch

Why doesn’t Apple improve on the iPod Touch every couple years? Why not take older chip sets — maybe a model from last years iPhone — and leave the form factor alone? Just keep stuffing updated tech into the existing design.

There are folks that can’t afford to buy their kids an iPhone but the iPod Touch may fit nicely into their budget.

Yep, it's a rooster.As a developer this is also a nice machine for testing. The only issue I see is it hasn’t been revved in a long time. It’s still using an A8 processor but it is still slightly ahead of the iPhone 5s which uses an A7. that’s important because the iPhone 5s is the lowest end iPhone that supports iOS 12. That means we could get another couple years use out of the current generation iPod Touch.

The iPod Touch with 128GB of storage sells for $299US.

Fingers crossed Apple updates it soon.

Just Code

Becky Hansmeyer: “For instance, I can take just about any Objective-C code and do a word-by-word translation to Swift that will compile and run, but it won’t be very “Swifty.””

The notion of being Swifty kind of bugs me. If you work in a language long enough you’ll naturally gravitate to language conventions or you won’t. If you’re an Indie, like Becky, I don’t think it really matters how Swifty your code really is. What matters is you’re willing to learn and adapt with the times and you can ship. If you don’t ship you don’t get paid.

I’m probably not very Swifty either, but I don’t really care. I can write code in Swift and it works just fine. During code review with my peers they’ll let me know of a more Swifty way of doing things so I can either make a change or get it the next time. I’m willing to do the new thing and I think that’s what we need to be willing to do if we’re going to survive as developers.

Be ready for change and adapt. That doesn’t mean you have to do it all on day one. Just be willing to make the change.

Higher

Quora: “Total cost for creating Tinder-like app for one platform would be about $5k – $10K.”

Charging $5-10$K for a Tinder-like application is how you go out of business. I’m speaking from experience here.

Watch out for the blowfly.Back in 2014 I made my second run at freelancing. This time around I failed. I learned a lot about who I am and how not to  run a business. Two of the primary reasons were charging too little for my work and not being a blazing fast coder.

I’m going to step out on a limb here and park a Tinder-like app — a service really — at around $100,000.00, not 10.  Call me crazy, it’s fine. Let’s take a look at some estimates given by folks that have actually built some great software.

First up, Craig Hockenberry: “With such a short schedule, we worked some pretty long hours. Let’s be conservative and say it’s 10 hours per day for 6 days a week. That 60 hours for 9 weeks gives us 540 hours. With two developers, that’s pretty close to 1,100 hours. Our rate for clients is $150 per hour giving $165,000 just for new code. Remember also that we were reusing a bunch existing code: I’m going to lowball the value of that code at $35,000 giving a total development cost of $200,000.

Emphasis is mine.

In the same Stack Overflow post we find Jonathan Wight weighing in on the cost for the Barack Obama App: “The Barack Obama app took 22 days to develop from first code to release. Three developers (although not all of them were full time). 10 people total. Figure 500-1000 man hours. Contracting rates are $100-150/hr. Figure $50,000-$150,000. Compare your app to Obama.app and scale accordingly.”

Both of these guys are world class software engineers. I have no reason to doubt their estimates because they have the experience needed to build any application.

Here’s Kyle Richter of the excellent Martian Craft: “In February 2013, the average cost of a house in the US was $152,000. By our estimates inside of MartianCraft, the average cost of an app is approximately $120,000.

If you want a high quality application be prepared to pay for it. Sure, you might be able to get your Tinder-like experience for $5-10K, but it may behave and scale like a $5-10K application and service.

Know what you want and what you’re getting into before you talk to developers about building your dream application or service.

Far from perfect

Free Code Camp: “VS Code’s success story is interesting because it’s far from perfect: its UI has that Microsoft-y clunkiness that seems to infect all their products, it’s a big resource hog, and it can be kinda slow to initialize.”

If you go read the article and don’t see the irony in the above statement I’ll point it out for you. Visual Studio Code uses Electron which allows developers to write desktop-like applications in JavaScript. Is the author saying Electron is slow, JavaScript is slow, a combination of the two, or that maybe Microsoft developers made it a fat — slow — pig?

Making your iOS App embrace the iPhone X notch

After yesterdays announcement I decided I’d rebuild RxCalc with the iOS 11 SDK. I figured things would rebuild and my app would fully embrace the new iPhone X without change, but it didn’t work. When I built the app it ran in what I’d call letter boxed mode. The top and bottom were cropped. It was like running an older app on iOS 7, if you’ve ever seen that.

UGH! Why you letterboxed bro?
UGH! Why you letterboxed bro?

I was puzzled. I tried all kinds of jiggery-pokery and nothing worked. So I finally did what any self respecting lazy developer would do. I asked Twitter for help, and Jeff Johnson saved the day.

I was — quite honestly — surprised something so little could make it work, but darn it, you gotta trust the experts. I added a new launch screen at the recommended 1125×2436 size and it worked! Yippee!

Hey, that worked!
Hey, that worked!

So, thanks Jeff! Also, if you’re looking for a bonafide Mac and iOS Developer you should consider reaching out to Jeff — he’s available for work — and has a history of shipping great Mac and iOS Software.

And remember — EMBRACE THE NOTCH!

Work Note: Loading View Controllers from a Storyboard

When I need to load a view controller from a Storyboard I like to create an extension to the view controller’s class and add a class function to it that does the work. It keeps things looking clean in the code where you use it.

I’m not sure if this is smart or dumb. I’m sure very smart people will let me know. Here’s an example.

Here’s how you’d use it in your code.

Old Apps

A cute little monkey.I got an email from Apple a week or so back letting me know I needed to upgrade one of my apps to 64-bit. I knew right away it was Arrgly but wasn’t really sure if I wanted to update it.

On Sunday morning I received an email from an Arrgly user asking if I was going to update it because he likes the app. It felt good to know someone else found my goofy app useful. I decided at a minimum I’d publish a little framework someone else could use to write their own version of the app if I couldn’t get to it, or couldn’t finish it on time.

It took less than an hour to create the project and get it published. If you’re doing Mac or iOS development and you need to shorten or expand URL’s for a YOURLS based service you’re welcome to use YOURLSKit. It’s all Swift 3 but should be fine with Swift 4 projects and iOS 11 or macOS High Sierra. It’s a tiny bit of code, but it does the job.