A Workaround for Enabling Amazon Instant Video over LTE

I mostly use an LTE connection for internet access. This works out nicely for most things, but I have been struggling to deal with one aspect: streaming video from Amazon. Netflix and Hulu Plus work fine, but Amazon's app doesn't allow for streaming over anything but wifi.

After a lot of reading and some trial and error I stumbled on an approach that seems to work. This is rather a rough hack, but it does appear to work for the couple of instances I have tried it on.

Prerequisites: a wifi router (doesn't need an active internet connection)


  • create a wifi network
  • connect your iOS device to the network
  • in Settings->Wifi, hit the "i" button next to the network name
  • Configure it as STATIC with the following settings:
    • IP address:
    • Subnet mask:

  • Start the Amazon Video app and begin playback

Once playback starts you no longer need the wifi router. You can skip around, streaming over the cellular connection. But you can't start a new video without reconnecting to the router.

I'm hopeful that Amazon will eventually allow streaming over cellular. But this at least opens an option until then.

For those who may be curious, my home internet connectivity is currently provided by Clear. But this is in the process of being shut down by Sprint, and is significantly slower than the unlimited LTE I get from T-Mobile. So it makes more sense for me to use the faster, more reliable LTE connection, at least until I can work out something better for home.

Apologue 1.6

Apologue 1.6 has been released on the App Store. As before it's just $0.99, or a free update for existing users.

This release brings quite a few improvements. Here's a list of the more significant ones.


New Features

  • Trigonometry functions: sin, cos, tan, asin, acos, atan, atan2
  • Logarithm functions: log, log10, log<n>
  • Dictionary access: function-exists?, lookup-function, hide-function, rename-function
  • Additional constants for time and date calculations

Bug Fixes

  • Stop reporting errors on blank lines
  • ^ (power) now works with floating point values without serious rounding errors
  • Fixed parsing of special numeric values: #inf, #-inf, #nan
  • Fixed display corruption when using bold text
  • Fixed display corruption when changing the text size

Other Improvements

  • Projects list now uses less memory and is a little more responsive
  • Results are now shown after evaluation (unless errors are reported)
  • Keyboard now opens when switching to the Editor
  • Maximum runtime doubled (now 60 seconds)
  • Maximum memory per slice doubled (now 1024 cells)
  • Persistent editing mode is now permanently enabled


  • Fixed all reported typos
  • Fixed all reported spelling errors
  • Copying examples no longer results in evaluation errors
  • Added section on runtime limits
  • Added a lot of functions that were missed

Many thanks go to the beta testers, and especially Kiyoshi for excellent suggestions and feedback. This wouldn't be as good without your feedback.

I'm looking forward to starting on 1.7 next month. The recent changes in Parable should have some interesting impact on Apologue.

Dynamic Memory Spaces in Parable

The latest commits to Parable (not part of the Apologue update pending review) add dynamic memory spaces. The total number of slices is still (currently) fixed, but the individual slices can now grow (and soon shrink) as needed.

This change will allow for some useful evolutions in the language. Since slices are no longer of a fixed size, arrays and other data structures can be adapted to handle significantly larger data sets. Work on this has begun, though it'll be a while before this is ready to merge into the core language.

For Apologue users this is even more significant. Currently the results set is pretty large. Discarding the internals data (slice contents) saves most of the space, but at a significant usability cost. For 1.7 (late April or early May) this will no longer be an issue, as only the actually used space needs to be returned. I expect to be able to drop the discard internals and reduce memory usage options after the current release.

One other side effect: it's getting too time consuming to keep multiple implementations in sync. I've retired the C, CoffeeScript, PHP, and (incomplete) Swift implementations as of today. I will probably do a new implementation in either Objective C or Swift once the Python implementation stabilizes again, but there is no time frame for this.

Update on Retro for iOS

Turns out there were a lot of big bugs in Retro when run under iOS 7 (and a few on iOS 8). I have a couple of people helping me with the beta tests, and now (finally) have the iOS 7 simulators setup, so the next update should fix things.

Thus far there are fixes for:

  • incorrectly sized tab bar icons
  • documentation displayed beyond the edges of the display
  • dictionary wasn't being initialized until the editor was displayed
  • stack display was not updating
  • new lines in documentation strings were being rendered as \n
  • changes made in the editor are no longer lost when switching tabs

Some work has been done on the UI. Thus far:

  • buttons in editor moved to the top to avoid interfering with the keyboard
  • added a hide/show keyboard button to editor
  • added a clear stack button on the stack display

Also, iPad support has been added.

If anyone has anything they'd like to see addressed, please let me know. I have a few items on my todo list (lots more testing, adding dynamic type, start working on the UX), and would like to do what I can to make Retro more useful. Also, if you would like to help beta test Retro on iOS, please let me know.

Work on Retro for iOS Update

I have begun work on an update for Retro for iOS. I have a short list of things to work on, but am willing to consider others. If you have requests, please share them via email, IRC, or Twitter.

Here's what's on my current to-do list:

  • caching of file list in project manager
  • accessibility improvements: support for bold text and dynamic type
  • light color theme
  • internals: cleanup the source tree
  • internals: add color manager class (back port from Apologue)

Looking slightly further out, I want to release the sources for this. I need to generate some alternate assets for a few things (I use artwork from PixelLove for the tabs and other elements, but can't distribute these with the rest of the sources).

The first build is pending beta app review by Apple. This will be available for testing via TestFlight. If you're interested in helping to test and shape the release, please send me your email address so I can add you to the list.

Dictionary Access in Parable

Parable now provides some access to the dictionary.

The initial provided functions for this are:

  • function-exists?
  • lookup-function
  • hide-function
  • rename-function

In a bit more detail:

function-exists? takes a string and returns a flag of true if the function name is in the dictionary or false if not.

lookup-function takes a string and returns a pointer to the function. If the function is not found, it returns a pointer to a negative slice, which is always invalid in Parable.

hide-function removes a function from the dictionary. This may be done through smudging the name, or by actually deleting the header entry. It takes a string and returns nothing.

rename-function takes two strings, one for the old name and one for the new. It looks up the function, removes the old header, and constructs a new one with the new one.

It's possible that additional functionality will be added in the future. If there are additional things that would be useful, please let me know.