Inching Closer to Multiple Projects in Retro and Apologue

Retro and Apologue have both suffered from being limited to handling one project. Since I had some time off work today, I decided to spend a few hours working to rectify this. I'm not done yet, but did accomplish several important things:

  • a DataStore class for managing the source files
  • a ProjectManager view
    • displays all files in the Documents directory
    • allows deletion on swipe
    • tapping a file brings it up in the Editor view
  • the Editor now saves and loads from the currently selected file

At present this working in Apologue. Once I finish cleaning up and testing it I'll add this to Retro for iOS and submit updates for both.


Updating Kaputi

The first incarnation of my tea timer was a simplistic tool that provided six or so varieties of tea. I expanded this a little for the released version, but at this point it's still a hard coded set of types, temperatures, and times.

I will be releasing an update in the next couple of weeks that will expand the set of options significantly. To avoid needing the adjust things in several places each time I want to add a tea, the next update will use a simple JSON file that provides the teas and relevant data, organized into general categories.

Since it'll be easiser to add types in the future, I'll look into adding an editor so users can customize the types and add new varieties. (This probably won't be in the first update though)

In the meantime, if there are any varieties you'd like to see added (tweaks to the times/temperatures), please let me know. 

Six Months on the App Store

This summer marked the start of my attempts to diversify my programming efforts. I chose to go into iOS development, primarily since my daily computing device of choice has been an iPad (and more recently an iPhone 6 Plus). So here's a little summary of the last six months of work.

I started by writing a little clock application for my wife. This presents a simple analog clock, with the digital time displayed below. I've rewritten this a couple of times, adding support for the current iPhones and iPads, and making improvements as I went.

I also wrote a tip calculator, prompted by my desire to quickly select a tip amount that would round the bill to a whole dollar amount.

Apologue has been my biggest effort in terms of time, though it's the least successful. It taught me a lot about some of the common UI elements, networking, JSON, and similar. It's also the only one with a server side backend. So even though it's only had a couple of sales, I've learned a lot from it that'll be useful going forward. And I use it nearly every day, so it's worth keeping around.

I also ported Retro to iOS. I consider this to be successful, with a fair number of downloads and purchases. It's made substantially more than Apologue, and I've had some good feedback from this.

The last app I released was a little tea timer. This has seen a small, but steady number of downloads. I'll be updating this soon to add more tea varieties early in 2015.

My total earnings (after Apple's cut) for 2014 are $9.21. There have been 824 units "shipped".  So nothing earth shattering, but I think it was a reasonable six months considering that I didn't do any significant promotion of the apps (links on this blog, and occasional tweets of release announcements.)

For 2015 I'll be continuing to update these apps, and releasing several new ones. It'd be nice to break even on the annual $99, but I don't know if I'll hit that in the next year. In any case, I'm having fun, so all is well. 

Review: Plantronics M70


It's been a while since I posted a review of anything. Mostly I've been busy with work and projects, but part of this is the fact that I don't like reviewing things until I've been using them for a while. 

Since my old LG Tone headset died, I've been using a Sony unit with the Apple EarPods and a Plantronics BackBeat Go 2.  Neither was quite satisfactory though, so I've continued to look for an option that would work well. And I think I finally found one. 

For about a month now I have been using a Plantronics M70. This is a single ear piece, with a soft gel hook and an optional over the ear loop. I've found that the over ear loop makes it slightly more secure, but uncomfortable with my glasses. Fortunately the ear hook actually holds it in much better than I'd expect. 

As far as comfort, it's not bad. It has a little weight, but nothing actually annoying. (I frequently forget that I'm wearing it until I wander too far from my phone.) This model sits outside the ear canal, with the gel hook tucked under one of the folds of the ear. I actually like the feel and fit a lot. 

Audio quality is passable. It's fine for voice and podcasts, but does get considerable distortion at high volume. The biggest annoyance I have here is that "s" sounds are a bit too high and tend to be grating. Lowering the volume helps though.

Outgoing quality seems to be ok. I don't talk on the phone much, but no one has complained to me yet. 

The M70 does support A2DP, but music controls are limited. You can control volume, and go to the next or previous track by holding down the volume up or down controls. To play or pause, you need to press and hold both volume buttons for a short time. (I wish there was better control on this, but at least it works).

My favorite aspect is the battery life. It easily gets 8-9 hours of podcast playback, and I seldom need to recharge it before my phones battery dies. This is much better than the BackBeat Go 2, which seldom gets more than four hours, and also beats the Sony unit at around 6-8 hours.  It's on par with my old LG Tone, and I'm quite happy with it. 

Would I recommend this? Yes. It's not too expensive (under $40), feels pretty comfortable, has great battery life, and sound is acceptable. I've actually purchased two so I'll always have at least one ready to go.

The next few weeks...

It's nearly Christmas. I only have one day off work for the holiday, so don't expect to get much done on my projects. But after this we hit New Year's, and I have a four day weekend, so a few things should get done...

I've had a couple of bug reports on the latest update to Retro for iOS; I'm working on fixing these and expect to submit a new build for review shortly after the holiday shutdown of iTunes Connect.

Apologue will be receiving an update in early 2015 as well. This will primarily be a language expansion, adding in a much richer standard library (including some facilities for simulating textual output at last).

Both Retro and Apologue will gain some sort of file management next year to allow for handling multiple projects. (I'm not speculating on the time frame for these yet, but given that I want this functionality myself, I don't expect it to be too far off)

I've also got some work building off Paipera, which will likely be released in the first quarter of next year.


Retro for iOS 1.1 Released

The first update of Retro for iOS is rolling out to the App Store currently.

The initial release was lacking in several areas, which I have taken some steps to fix. (There's still quite a bit that I want to do, but my time is still pretty limited.) So here's the highlights from this release:

  • updated, darker user interface
  • save, load, and restore default image
  • persistent code editor
  • dictionary browser (with support for viewing docstrings)
  • iOS 7 support
  • autopsy debugger included

The user interface has been overhauled. It's now darker, with red highlights. This doesn't make any functional changes, but I find the darker colors are easier on the eyes. (If anyone has suggestions on how to improve this further, I'm quite open to doing more work on this)

A dictionary browser has been added. This pulls in the current global dictionary, and provides quick access to the short documentation strings attached to most functions. (After the release was approved I noticed that it isn't properly handling embedded line breaks; this will be addressed in the next update)

The code editor is now persistent. Every ten seconds it'll save your work, so you can quickly resume where you left off.

Retro now provides the ability to save and reload your current image (compiled functions and data), and also the ability to quickly reload a standard session.

As requested, Retro now supports iOS 7. (As a side note; I don't have any devices running iOS 7, so have only been able to test on the simulator. Bug reports are welcome.)

Finally, this version of Retro now comes with a debugger called Autopsy. This provides facilities for examining the dictionary by function type, looking at the compiled byte code, and stepping though code execution.