<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
    <title>John Haney</title>
    <link>https://johnhaney.com/</link>
    <atom:link href="https://johnhaney.com/blog/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Personal site of John Haney — apps, code, writing, and a few hobbies.</description>
    <language>en-us</language>
    <lastBuildDate>Sat, 09 May 2026 00:00:00 +0000</lastBuildDate>
        <item>
        <title>My first iPhone app was a web app</title>
        <link>https://johnhaney.com/blog/cintos-mobile-first-iphone-app/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/cintos-mobile-first-iphone-app/</guid>
        <pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate>
                <description>Cintos Mobile, the iPhone web app I built before the App Store existed, is restored and live again at /cintosmobile/.</description>
                <content:encoded><![CDATA[<p>I just put <strong><a href="/cintosmobile/">Cintos Mobile</a></strong> back online — pulled from the
Internet Archive, restored to the same URL it lived at almost twenty years ago,
and playable in your browser right now.</p>
<p>With the recent 50th anniversary for Apple, I've been reflecting back a lot,
and Cintos Mobile was my first ever iPhone app. I'm glad it's around again.</p>
<h2>Before the App Store, the iPhone shipped with no SDK</h2>
<p>The first iPhone came out in June 2007. There was no App Store. There was no
native SDK for third-party developers. If you wanted to build "an app" for the
iPhone, the official answer from Apple was: build a web app.</p>
<p>At WWDC 2007, Steve Jobs framed it pretty directly: developers should build
for the iPhone using Web 2.0 and AJAX. The pitch was that those web apps could
look and behave like the native ones, integrate with iPhone services like Mail
and Maps, and ship without an SDK at all — your existing browser-side skills
were everything you needed.</p>
<p>That was the official path. So that was the path I took.</p>
<p>The App Store wouldn't be announced until March 2008 (with iPhone OS 2.0 and a
real native SDK), and wouldn't open to the public until July 10, 2008. In that
roughly year-long window, "iPhone apps" meant Safari + viewport meta tag + a lot
of <code>-webkit-</code> CSS.</p>
<h2>Cintos Mobile</h2>
<p>Cintos was a "board game" I made first for the Mac, and I used it as a way to
practice as I explored other languages or platforms. I had made a Java version
and had toyed with a Windows version too. It scaled well to the iPhone screen
with the 8×8 board across the 320×480 screen. The whole thing is HTML,
JavaScript, and a few PNG files.</p>
<p>If you want to play right now: <strong><a href="/cintosmobile/">/cintosmobile/</a></strong>.</p>
<p>I tried out the web app at my nearest Apple Store once it was online, and made
a few trips back until it was working right.</p>
<p>A few details from the source that look very much of-their-time:</p>
<pre><code class="language-html">&lt;meta name="viewport" id="iphone-viewport"
      content="width=320, user-scalable=no" /&gt;</code></pre>
<p><code>width=320</code> because the iPhone's screen was 320 points wide.
<code>user-scalable=no</code> to prevent pinch to zoom from messing up the view.</p>
<pre><code class="language-html">&lt;style type="text/css" title="AppleStyle"&gt;
    @import "cintosmobile.css";
&lt;/style&gt;</code></pre>
<p><code>title="AppleStyle"</code> because I started from some Apple code.</p>
<h2>After the App Store</h2>
<p>When Apple announced the App Store and the native SDK, I applied as soon as I
could and was accepted into the iPhone Developer Program early. My first <em>App
Store</em> app was <a href="/blog/flashlight-20/">Flashlight</a>, which ended up being
downloaded over 100 million times.</p>
<h2>A note on the restoration</h2>
<p>The HTML, JS, and CSS are pulled directly from the Internet Archive's Wayback
Machine — specifically from a January 2009 snapshot, with a few small edits:
the "back to website" button now points at this site rather than the old one,
and three game piece PNGs (<code>piece0.png</code>, <code>piece1.png</code>, <code>piece2.png</code>) had been
lost from the archive entirely, so I drew new ones at the original 32×32
dimensions to make the board playable again.</p>
<p>Other than that — same code, same layout, same year-2007 web-app energy.
:-)</p>]]></content:encoded>
    </item>
        <item>
        <title>MacBook Neo and developing for Apple Vision Pro (visionOS)</title>
        <link>https://johnhaney.com/blog/macbook-neo-and-developing-for-apple/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/macbook-neo-and-developing-for-apple/</guid>
        <pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>I ordered a MacBook Neo for my kids and set up the latest Xcode beta to try out the developer experience for visionOS on this new machine.</p>
<p>Here are my basic results compiling a template project for visionOS which includes an Immersive Scene:</p>
<p>All of these tests were using Xcode 26.4 beta 3<table border="2"></p>
<tbody>
    <tr><th>Device</th><th>Mac Virtual Display</th><th>Compile Time (seconds)</th></tr>
  <tr><td>MacBook M4 Air</td><td>No</td><td>22.5</td></tr>
  <tr><td>MacBook Pro M1 Max</td><td>No</td><td>26</td></tr>
  <tr><td>MacBook Neo</td><td>No</td><td>157.5</td></tr>
  <tr><td>MacBook Neo</td><td>Yes</td><td>372.5</td></tr>
</tbody></table>  
I would say the MacBook Neo does a fine job for everything, and if this is your first Mac. At $499 for education, I'm very pleased that this can handle running the visionOS simulator and everything else.  
Happy coding!]]></content:encoded>
    </item>
        <item>
        <title>Manipulation on visionOS</title>
        <link>https://johnhaney.com/blog/manipulation-on-visionos/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/manipulation-on-visionos/</guid>
        <pubDate>Fri, 13 Jun 2025 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>Of all the great things introduced at WWDC25 this year, ManipulationComponent and the manipulable() SwiftUI modifier are really great. These provide some rather natural interactions with objects with <strike>one line</strike> very little code.</p>
<p>I just published an open-source sample visionOS app, <a href="https://github.com/johnhaney/manipulatives/tree/main">Manipulatives</a>, which demonstrates the basics of this. My approach is to group everything I want to become manipulable as a child of one Entity with a specific name. Then I can search for that parent Entity, and loop thru all of its children adding ManipulationComponent. This would, of course, be even simpler if the ManipulationComponent were available directly form within Reality Composer Pro (Feel free to file a Feedback and reference my FB17979086).</p>
<p>With ManipulationComponent and Entity Observables, I see this as a great combination to tracking how users are moving entities around. I’m excited to put this into action and look at ways to turn user’s manipulations of Entities into dynamic behaviors and actions in my apps’ scenes.</p>]]></content:encoded>
    </item>
        <item>
        <title>WWDC25 Wish List</title>
        <link>https://johnhaney.com/blog/wwdc25-wish-list/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/wwdc25-wish-list/</guid>
        <pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>&nbsp;Since I make apps for Apple's platforms, WWDC is the main event of my whole year. The developer conference is a time where Apple announces plans for the next major versions of visionOS, iOS, macOS, tvOS, and watchOS.</p>
<p>Sometimes we get major new announcements, like visionOS and the Apple Vision Pro at WWDC23.</p>
<p>I have <a href="https://apps.apple.com/us/app/cone-of-shame/id6466742380">been</a> <a href="https://apps.apple.com/us/app/timecube-spatial-clock/id6475053578">making</a> <a href="https://apps.apple.com/us/app/graph-grid/id6478813106">apps</a> for visionOS ever since and I’m really excited about where this platform is heading.</p>
<h2>My wishlist for visionOS</h2>
<ul>
<li>Supercharge the Shared Space<ul class="ul1">- I want apps to be able to leverage knowledge of the users hands when they are inside a volume in the shared space. Think of making a drum set app where you can position each drum as a volume just where you want it, and then play in the shared space while you have your music up in another app, and maybe be recording in GarageBand in another window<ul class="ul1" style="list-style-type: circle;">- FB16447897 (visionOS Hand Anchoring Component in Shared Space (Volumetric Windows))<li class="li1" style="font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;">As a developer, I want to offer “pinning” hints to visionOS. I want to be able to suggest that this window could be pinned to a table of minimum width/depth or to a wall or next to a TV, …</li><li class="li1" style="font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;">I want to allow ARKit sessions to run within the overlap of my volumetric windows in the shared space. Let me “see” the mesh or table or wall that the volume overlaps with. Let me see the relative position of my open windows / volumes in the shared space. With this, I could make an app where you place a volume in opposite corners of a room and get the dimensions quickly.</li><li class="li1" style="font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;">As a user, I want to make a mapping of my home and name the rooms, ideally maybe even those are picked up and/or synced with HomeKit. Then allow me to share that with developers in a privacy preserving way so that I can configure apps to work differently in different rooms as I move around.</li><li class="li1" style="font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;">I’d like to be able to pin multiple instances of an app to different rooms and have the app available to me when I am in the room, and dismissed when I leave the room</li></ul><li class="li1" style="font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;">Native development tools on visionOS - Reality Composer Pro, Xcode, Swift Playgrounds</li><li class="li1" style="font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;">Shared in-person sessions where each visionOS device has a common anchored position for content. To interact in a mixed immersive space with others would unlock some great experiences</li><li class="li1" style="font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;">Shared in-person sessions between visionOS, iOS, macOS. With RealityView on all of these platforms, having a common coordinate space would again unlock some powerful interactions</li><li class="li1" style="font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;">Spatial Templates for any number of participants (visionOS or not). I want to be able to provide “seat” assignments to everyone whether they are sharing a Spatial Persona or not, and whether they are even on a visionOS device or not. This would allow me to place people at “tables” for a conference session, or give proper assignments for a game night</li><li class="li1" style="font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-width: normal; line-height: normal; margin: 0px;">TabletopKit for iOS and macOS also. Extending this framework to any platform that has RealityView support seems natural to me.</li>
</li>
<li>FB13873238 (TabletopKit support for iOS, iPadOS, macOS, tvOS)</ul>
</li>
</ul>
<h2>One more thing…</h2>
<p>I’d like to give my aspirations for where I hope Apple might be headed. I’m sure that I’m wrong, but I want to put out there what I would like to see and cast my own view of the future out there.</p>
<p>The next big evolution I see is around Spatial Computing. I want to see Apple combine the awareness of where I am in space (Center Stage) to turn the flat displays of iPhone, iPad, Mac, AppleTV into portals into immersive spaces. If I use my iPhone with an AppleTV I should be able to use Continuity Camera to enable this same tracking on a big TV.</p>
<p>With a full awareness of my position relative to the display, the display now becomes a view in space that I can move my head around to explore and watch it respond in real time.</p>
<p>Maybe I can use an Apple Pencil Pro to poke into the space for more precise selection.</p>
<p>Then I want a truly Spatial Home Screen and work environment. When I open my MacBook at my office desk, my work environment is ready for me, with slack tucked away to the side. I can “look around the corner” to pull out the music mini player and manage other glanceable tasks.</p>]]></content:encoded>
    </item>
        <item>
        <title>Happy Saint Patrick&#039;s Day</title>
        <link>https://johnhaney.com/blog/happy-saint-patricks-day/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/happy-saint-patricks-day/</guid>
        <pubDate>Thu, 17 Mar 2016 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>On this day of many things green, I'd like to offer this Xcode theme that I have been using for a few months, <a href="http://johnhaney.com/xcode/Mulder.dvtcolortheme.zip">Mulder</a>. It's quite green to celebrate Season 10 of The X-Files.</p>
<p>Here's what it looks like in action:</p>
<p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPjXWsB07U71HFSvMrMd_7yYZlgizvjJWQ-M5nG7kThKZleWkd9PynsCovh2vnalZxUo27ts1fCJ8vSswQj464Do4IoCwX-8KLFHIcHHgtm0kunaX79WwkIaX6iDqnE4fiWA89JQFp-vo/s1600/Screen+Shot+2016-03-17+at+6.49.30+AM.png"><img src="/assets/blog/happy-saint-patricks-day/5d488052.png" alt="" /></a>
Xcode keeps themes in a folder: ~/Library/Developer/Xcode/UserData/FontAndColorThemes so here are my recommended steps to add this theme to your Xcode:</p>
<ol>
<li>
<p>Open Xcode  </p>
</li>
<li>
<p>Choose Xcode &gt; Preferences  </p>
</li>
<li>
<p>Choose Fonts &amp; Colors  </p>
</li>
<li>
<p>Press the + button in the bottom left corner and make a new theme named "Mulder"  </p>
</li>
<li>
<p>Quit Xcode  </p>
</li>
<li>
<p>Copy the downloaded Mulder.dvtcolortheme file to ~/Library/Developer/Xcode/UserData/FontAndColorThemes/.  </p>
</li>
<li>
<p>Open Xcode and enjoy a greener coding experience. :-)</p>
</li>
</ol>]]></content:encoded>
    </item>
        <item>
        <title>Lucky 13</title>
        <link>https://johnhaney.com/blog/lucky-13/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/lucky-13/</guid>
        <pubDate>Tue, 13 Oct 2015 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>On Sunday October 13, 2002, my fiancée and I were long distance. She was finishing up her college degree and I was working in Chicagoland. We had attended a wedding this particular weekend, and had driven back to college on my way back to my apartment. I was driving on a two-lane Missouri highway, listening to music and driving without cruise control for some reason. I usually would set my cruise control for a bit over the speed limit where I might manage to avoid attention from police yet this particular day I was going without it, and as a result was traveling a bit slower that I would have normally.</p>
<p>Suddenly, a fox appeared in front of my car on the left-hand side. I swerved the car to the right off the edge of the pavement with right-side tires onto the gravel shoulder, and turned back to return to the road. The car started skidding with the rear moving to the right. I recalled some old driving test television shows I watched in my early teenage years and knew I was supposed to take my foot off the gas and turn into the skid, and to be careful not to overcorrect. I took my foot off the gas, I turned into the skid -- too much. The car continued skidding, this time off to the right-side of the road. I saw an overpass ahead around the corner. I saw a car coming from the other direction. Then I saw grass as the car turned toward the rising hill off the side of the highway and my car skidded further off the edge of the road. I didn't really have time to even process it, but I was glad to be moving away from that car.</p>
<p>The next thing I knew the car was upside down. I was suspended by my seatbelt and didn't want to be like that. I put a hand on the roof of the car to brace myself as I unbuckled and rolled myself out of the car. My door opened perfectly, the window still whole in fact. The windshield had shattered. Every other window was shattered. The car was upside down, over the guardrail it had just smashed thru. It wasn't until I got the police report and saw the officer's sketch that I realized how exactly the car got to that position.  The driver's side door behind me was demolished. I can't imagine any person sitting in that seat surviving the crash. I was a foot away from that. Had I been driving a bit faster, it's just as likely that I would've hit the guardrail at my door instead of the empty one behind me.</p>
<p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRYPOU-FiogbjgX3Ztw9L7mP4VsiUXBKThCZaMKOMWoCHdq0xyM9S1RZH-Wci0TFqDIWr0SAiyZFxfFuNl6jr2h4Z-nMme8vNn8h_MR-J8ZSUV0XjxMAMEtNYNr7lvQ0WtO1Nu2iD4AL4/s1600/2002-10-13-PoliceReport.png"><img src="/assets/blog/lucky-13/14cb90d4.png" alt="" /></a></p>
<p>I was impressed and grateful for all of the people who stopped and helped to call 911. I'm especially thankful for the police officer who found my phone and glasses among the belongings that had flown around in the wreck.</p>
<p>A colleague of mine told me about a belief in China that surviving an experience like this one meant I was marked for something great. I've keep considering this. I want my life to be worthy of this gift. This borrowed time that I'm living on since that day. My family is the legacy I care most about, and I cannot be prouder of what Katie and I have grown. All of our children are so smart, kind, playful, and empathetic.</p>
<p>I was fortunate enough to be one of the first developers to make apps on the App Store, and my Flashlight app has been used by millions of people. That's still so surreal for me to think about, and I'm so thankful for the opportunity to share my work with so many people.</p>
<p>I've had 13 years since this crash, and I've thankfully been able to do longer road trips without thinking about this. Some things certainly fade with time. My wife's birthday is November 13th. My daughter's ultrasound was on Friday the 13th.</p>
<p>13 is my lucky number.</p>]]></content:encoded>
    </item>
        <item>
        <title>PixelPop Festival 2015</title>
        <link>https://johnhaney.com/blog/pixelpop-festival-2015/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/pixelpop-festival-2015/</guid>
        <pubDate>Sun, 13 Sep 2015 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>I want to thank everyone involved with PixelPop Festival this year. I was delighted to have an opportunity to show my games and show an preview of my new game, Stacker. It's truly heartwarming to get to see people experiencing my creations for the first time and I got so much great feedback and so many great ideas to add.  I'm putting <a href="https://itunes.apple.com/us/developer/apps-from-outer-space-llc/id673290835">my iOS games</a> on sale for $0.99 this week until September 20th.  </p>
<p>Thanks again!  Now it's time to get a little rest…  :-)</p>]]></content:encoded>
    </item>
        <item>
        <title>A Talk about ViewControllers</title>
        <link>https://johnhaney.com/blog/a-talk-about-viewcontrollers/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/a-talk-about-viewcontrollers/</guid>
        <pubDate>Wed, 12 Sep 2012 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>This July, I gave a short talk about some best practices with ViewControllers on iOS for the <a href="http://briancoyner.github.com/">West St. Louis CocoaHeads</a> group.</p>
<p>This includes my tips on where/when to do certain actions to balance resource usage and keep your UI snappy.</p>
<p>Here is the PDF of the presentation: <a href="http://johnhaney.com/talks/2012-07-26%20CocoaHeads%20ViewControllers.pdf">CocoaHeads ViewController Talk</a></p>]]></content:encoded>
    </item>
        <item>
        <title>CryptoQuote Daily Challenge Update</title>
        <link>https://johnhaney.com/blog/cryptoquote-daily-challenge-update/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/cryptoquote-daily-challenge-update/</guid>
        <pubDate>Thu, 12 Apr 2012 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>Greetings,  </p>
<p>I'm happy to report that the new Daily Challenge Server is up and running, and my initial testing is going very well.  Soon (within the next week or two), CryptoQuote for iPhone, iPod touch, and iPad will be updated to version 2.4.  This version is designed to use the new server.  </p>
<p>Once I'm happy with the iOS update running "in the wild," Android apps will be next.  </p>
<p>So, in a few weeks, CryptoQuote for Android will be updated to version 2.0, adding the Daily Challenge feature for Android users, including Kindle Fire, NOOKcolor, and NOOKtablet.</p>]]></content:encoded>
    </item>
        <item>
        <title>CryptoQuote for Android 1.0</title>
        <link>https://johnhaney.com/blog/cryptoquote-for-android-10/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/cryptoquote-for-android-10/</guid>
        <pubDate>Mon, 02 Apr 2012 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>UPDATED: Reflects that the Amazon App Store page has been updated.  </p>
<p>Greetings,  </p>
<p>I'm very excited to share with you that CryptoQuote is now available for some Android devices (tablets with access to the Amazon App Store, including Kindle Fire).  You can <a href="http://www.amazon.com/gp/product/B007QE8Z1E/ref=mas_pm_cryptoquote">download CryptoQuote for Android 1.0 here</a>.  </p>
<p>This version is launching with many of the great features of CryptoQuote you see on OS X and iOS as well, with a few to be added in the not-so-distant future.  </p>
<p>At this moment, CryptoQuote is available solely via the Amazon App Store.  My hope is to have the app available for NOOK devices within the next few weeks (depending upon the pace of Barnes &amp; Noble approval processes).  </p>
<p>An Apology<br />
The initial description on the Amazon App Store product page for CryptoQuote 1.0 includes the following line:  </p>
<blockquote>Features:  
* 3199 carefully selected quotes, plus a new Daily Challenge Puzzle each day</blockquote>  
This should NOT contain the second part about the daily challenge puzzle.  I am very sorry for this error, and the descriptions have been corrected on the store.  
<p>About the Daily Challenge<br />
The Daily Challenge feature is currently only available for iOS devices. Please do know that I am committed to bringing the daily challenge to Android devices and Mac OS X.  Please also know that this is not without some significant steps before this can happen.  I'd like to elaborate a bit on this…  </p>
<p>The current daily challenge server needs some improvements:  </p>
<ol>
<li>It is currently on an older host system, which shares resources and power with other websites.  </li>
<li>It does not respond quickly enough to requests.  </li>
<li>It does not handle lots (and lots) of iPhone users well.  </li>
<li>It gets slower as more people play the daily challenge each day.  </li>
</ol>
<p>My plan is to address these problems first for iPhone users, by doing the following:  </p>
<ol>
<li>Rewrite the server-side code to handle requests quickly and efficiently.  </li>
<li>Restructure the database to handle requests quickly even for lots (and lots) of users.  </li>
<li>Setup this new server code on my new host machine, and migrate the daily challenge users over to the new server.  </li>
<li>Update CryptoQuote for iOS to add the Daily Challenge.  </li>
<li>Update CryptoQuote for Android to add the Daily Challenge.  </li>
</ol>
<p>Questions or comments?  </p>
<p>Contact me via:  <a href="http://appsfromouterspace.com/contact/">http://appsfromouterspace.com/contact/</a><br />
or on Twitter:  <a href="http://twitter.com/johnhaney">http://twitter.com/johnhaney</a></p>]]></content:encoded>
    </item>
        <item>
        <title>The Next Chapter</title>
        <link>https://johnhaney.com/blog/next-chapter/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/next-chapter/</guid>
        <pubDate>Tue, 10 Jan 2012 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>Today, I'm launching Apps from Outer Space, LLC.  My new company is taking over all of the apps my old company (John Haney Software).  </p>
<p>I'm calling this my online moving day.  Here's what's happening:<br />
Twitter:<br />
@JohnHaneySW -&gt; <a href="http://twitter.com/Apps_OuterSpace">@Apps_OuterSpace</a>  </p>
<p>Facebook:<br />
facebook.com/JohnHaneySW -&gt; <a href="http://facebook.com/AppsFromOuterSpace">facebook.com/AppsFromOuterSpace</a>  </p>
<p>Website:<br />
johnhaney.com -&gt; <a href="http://appsfromouterspace.com/">appsfromouterspace.com</a>  </p>
<p>App Store:<br />
Coming Soon.  I'm awaiting a few finalizing details.  For the moment, apps will be listed under the "John Haney Software" name.  </p>
<p>So please update your contacts, likes, follows.  2012 is going to be a great year, starting with my next app, Puppet Stage.  But I'll talk more about that very soon…</p>]]></content:encoded>
    </item>
        <item>
        <title>Thanks 100 million!</title>
        <link>https://johnhaney.com/blog/thanks-100-million/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/thanks-100-million/</guid>
        <pubDate>Mon, 24 Oct 2011 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>Flashlight has now been downloaded more than 100 million times. I'm very excited and humbled to share this with you, and many thanks to you millions of users.  </p>
<p>Has Flashlight helped you? We'd like to hear about it at FlashlightStory@johnhaney.com</p>]]></content:encoded>
    </item>
        <item>
        <title>Daily CryptoQuote problem [UPDATE: Fixed]</title>
        <link>https://johnhaney.com/blog/daily-cryptoquote-problem/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/daily-cryptoquote-problem/</guid>
        <pubDate>Wed, 03 Aug 2011 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>The Daily CryptoQuote is not working today (August 3, 2011) due to an issue on the server. Support ticket has been submitted. Hoping server gurus will fix ASAP.</p>
<p>In the meantime, you will see a message that you have already completed the puzzle, and then see results with a date of November 30, 2 (yes, the year is 2).  This particular side effect is one I will be fixing in the next update of CryptoQuote.  Sorry for any confusion this has caused.</p>
<p>UPDATE (Friday, August 5, 2011)</p>
<p>My ticket was assigned within a few hours of being submitted.  Since then (now 2 days), I have not seen any other activity.  I continue to update the ticket, but am working on making changes to CryptoQuote to work around this problem entirely.  I am very disappointed with my web hosting provider and am expecting that my workaround will have to be the solution.</p>
<p>Bottom line, this means the daily challenge will likely be down until you update to a new version of CryptoQuote.  A new version of CryptoQuote will take me at least 1 week to get onto the App Store.  I thank you for your patience.</p>
<p>UPDATE (Tuesday, August 9, 2011)</p>
<p>My website provider is not willing to fix this issue.  Fortunately, I have submitted CryptoQuote 2.1 to the App Store.  Hopefully this update will be reviewed and approved within a week.</p>
<p>Thank you all for your patience and kind emails during this time.  I am sorry that you are missing out on this regular part of your day and hope to have this back working great for you ASAP.  Please know that this new app version will give me the ability to workaround the issue seen this time, as well as provide for a smooth transition to a new web hosting provider should that become necessary in the future.</p>
<p>Thanks again and happy puzzling!</p>
<p>UPDATE (Wednesday, August 10, 2011)</p>
<p>FIXED!!!   Apple accepted my request for an expedited review and CryptoQuote 2.1 was reviewed and approved today.  You should see the new update in the App Store on your iPhone, iPod touch, or iPad now or within the next few hours.  My great appreciation again for your patience and happy puzzling!  :-)</p>]]></content:encoded>
    </item>
        <item>
        <title>Another great Flashlight email</title>
        <link>https://johnhaney.com/blog/another-great-flashlight-email/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/another-great-flashlight-email/</guid>
        <pubDate>Mon, 23 May 2011 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>It always makes my day to hear how <a href="http://johnhaney.com/flashlight/">Flashlight</a> is working great for people.  Here's the latest example:  </p>
<blockquote>I arrived at our holiday house last night in pitch black.  The house power was out and I needed to bash through the garden to the electrical meter and back into a pitch black house a couple of times.  I discovered to my delight that I had downloaded your flashlight app onto my phone.  It saved my life, without it on my iPhone 4 I wouldn't have been able to fix the fuse trip switch or avoid falling in the pond.    
<p>Thanks. It's a great app.    </p>
</blockquote>]]></content:encoded>
    </item>
        <item>
        <title>CryptoQuote 2.0</title>
        <link>https://johnhaney.com/blog/cryptoquote-20/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/cryptoquote-20/</guid>
        <pubDate>Thu, 21 Apr 2011 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>After several months of work, I've completed a major update to CryptoQuote.  With CryptoQuote 2.0, this app has a lot more to offer and I hope to hear from my users what they like the most about it.  </p>
<p>Here is the official list of "what's new"…  </p>
<LI>Hundreds more quotes, now 3199 in total  
<LI>Undo/Redo: Shake to undo/redo the last move on a puzzle.   
<LI>Custom Puzzles/Quotes: Paste a puzzle from elsewhere, or scramble your own phrase to make a puzzle.   
<LI>Printing: With an AirPrint capable printer, you can print out a puzzle.   
<LI>NEW TOOL: Word Search - choose a word and see dictionary matches for that letter pattern   
<LI>NEW TOOL: Letter Frequency - compare the frequency of the scrambled letters to the frequency of letters in English.   
<LI>Share quotes you solve (copy/email/SMS/Facebook/Twitter)   
<LI>Improved Daily Challenge with no "sign-up" required, and improved download performance.   
<LI>Physical keyboard support - works with a bluetooth or USB keyboard for solving puzzles more quickly.  
<p>Now to catch up on email and continue on my next project…  :-)</p>]]></content:encoded>
    </item>
        <item>
        <title>My Big News</title>
        <link>https://johnhaney.com/blog/my-big-news/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/my-big-news/</guid>
        <pubDate>Mon, 29 Nov 2010 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>I teased about this over the weekend and it seems most of my friends think that my wife and I are pregnant.  </p>
<p>The big news IS about a life-changing event, but not about bringing a new life into this world.  Today marks my first full-time day working on my own.  I'm phasing out of my day-job and into my own business as an Independent App Developer.  </p>
<p>I've been incredibly fortunate to be in this situation and want to thank my wife who has endured the late-night coding sessions and my steering our conversations back to apps and app ideas.  </p>
<p>I'm humbled and delighted to know that there are literally millions of people using Flashlight, and I intend to continue to improve <a href="http://itunes.apple.com/us/app/flashlight/id285281827?mt=8&amp;uo=4">Flashlight</a> and release new apps VERY SOON.  My plan is to release two new apps this year, with many more apps and updates coming soon too.  </p>
<p>I will work from my cloffice (closet office) in my house.  My daughter plans to come greet me whenever she wakes up in the morning, and I'll have lunch with my family.  I'm thrilled about this new flexibility and freedom and very excited about being able to actually create more of my list of 60+ app ideas!  </p>
<p>I'll be <a href="http://johnhaney.blogspot.com/">blogging</a> a bit more, <a href="http://twitter.com/johnhaney">tweeting</a> a bit more, and <a href="http://itunes.apple.com/us/artist/john-haney-software/id282761815?uo=4">coding</a> a LOT more.  :-)</p>]]></content:encoded>
    </item>
        <item>
        <title>Halloween and Flashlight</title>
        <link>https://johnhaney.com/blog/halloween-and-flashlight/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/halloween-and-flashlight/</guid>
        <pubDate>Fri, 05 Nov 2010 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>I have not mentioned yet, but I really really love Apple's iAd web portal.  It's really great to be able to see hourly charts and it's fun to be able to see when people begin using Flashlight more during the evenings:  </p>
<p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHRIiIEdmif4st9HFA9yBkhcSBoevz2rEHeBZQBE27XvNSc8ExQPCGr_ynCD0vQZDdMCWMUsUenj3kvFzlfmBf7Hge-3Ld2hrSgBFnpQ_s8vg7m6Op1H5NR6V6TdLlcvTGgyyEEtQCji8/s1600/Screen+shot+2010-11-05+at+6.36.20+AM.png"><img src="/assets/blog/halloween-and-flashlight/4cbec4dd.png" alt="" /></a></p>]]></content:encoded>
    </item>
        <item>
        <title>Top iAd countries so far</title>
        <link>https://johnhaney.com/blog/top-iad-countries-so-far/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/top-iad-countries-so-far/</guid>
        <pubDate>Fri, 05 Nov 2010 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>With the recent addition of iAds internationally, I took a look at my stats and thought it might be interesting to share with you what countries are getting the most impressions right now. All of my iAd impressions right now are from <a href="http://johnhaney.com/flashlight/trynow">Flashlight</a>  </p>
<p>United States<br />
UK/GB<br />
Unknown<br />
Korea, Republic of<br />
France<br />
Saudi Arabia<br />
(Empty)<br />
Israel<br />
China<br />
Mexico<br />
Australia<br />
Japan<br />
Norway<br />
Canada<br />
Malaysia  </p>
<p>The UK/GB was about 3% of the US in terms of numbers of impressions, with the other countries trailing off quickly after…  Still, this list of the top 15 adds up to around 5.4% of the US impressions  </p>
<p>Here are the next 15 countries:  </p>
<p>Brazil<br />
Malaysia<br />
Reunion<br />
South Africa<br />
Singapore<br />
Taiwan<br />
Argentina<br />
Finland<br />
Greece<br />
Kuwait<br />
Netherlands<br />
Hong Kong<br />
India<br />
Brunei Darussalam<br />
Serbia</p>]]></content:encoded>
    </item>
        <item>
        <title>Flashlight top countries</title>
        <link>https://johnhaney.com/blog/flashlight-top-countries/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/flashlight-top-countries/</guid>
        <pubDate>Mon, 19 Jul 2010 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>Now that Flashlight is using iAds, I have access to a lot more interesting data, including overall countries of where users are using Flashlight.  Flashlight appears to be used far more in the evenings (obviously), and also far more on the weekends.  </p>
<p>Top Flashlight countries from last weekend (July 17 and July 18) are:  </p>
<p>United States<br />
UK/GB<br />
Australia<br />
Canada<br />
France<br />
Unknown<br />
Germany<br />
Sweden<br />
Korea, Republic of<br />
Brazil<br />
Spain<br />
Denmark<br />
Switzerland<br />
New Zealand<br />
Italy<br />
Chile<br />
Russian Federation<br />
Japan  </p>
<p>By the way, I have to say that I continue to be humbled that my app is used by so many people around the world.</p>]]></content:encoded>
    </item>
        <item>
        <title>Flashlight 3.0 (and the pending 3.0.1)</title>
        <link>https://johnhaney.com/blog/flashlight-30-and-pending-301/</link>
        <guid isPermaLink="true">https://johnhaney.com/blog/flashlight-30-and-pending-301/</guid>
        <pubDate>Fri, 16 Jul 2010 00:00:00 +0000</pubDate>
                <content:encoded><![CDATA[<p>UPDATE (July 20, 1:55PM CST): Flashlight 3.0.1 is approved and you should see it on the App Store within a few hours.  My thanks to everyone for your support and patience during this time.  </p>
<p>UPDATE (July 19, 8:30AM CST): Flashlight 3.0.1 is in review by Apple.  I'm thrilled that they have responded to my urgent plea and expect to see Flashlight 3.0.1 on the App Store a bit later today!  </p>
<p>Greetings,  </p>
<p>Friday, July 16, Flashlight 3.0 went live on the App Store.  I'm very excited about this update because I added the biggest requested feature, using the iPhone 4's LED light.  The iPhone 4 LED is incredibly bright (don't look directly at it!) and it's great to be able to use this for navigating around when you need the brightest light possible.  </p>
<p>Unfortunately, this update is causing problems.  I have reports from iPad and iPod touch users that the app won't open.  I'm very sorry.  This is of course the last thing I wanted to have happen and I'm working on fixing this problem.  As part of this, I am now the new owner of an iPod touch so I can do proper testing on iPhones, iPads, and iPod touches.  </p>
<p>I will update this blog as I learn more.  Thank you for your support and patience.  </p>
<p>UPDATE (July 16, 11PM CST): I have submitted Flashlight 3.0.1 and requested that Apple give this update an expedited review.  In the typical case, this update would appear in about a week (around July 23rd).  </p>
<p>The issue is that any device running a version of iOS (aka iPhone OS) before 4.0 will have this crash bug.  This means all iPads, some iPod touches and some iPhones.  </p>
<p>For the programmers who might be reading this, the specific issue was that I linked to a framework which was new in iOS 4.0 (AVFoundation.framework) to add the LED functionality, but I did not set that framework to be "weak linked".  Thus, when the user attempts to launch the app on an iPad with iOS 3.2, the app crashes immediately because it thinks that it MUST have AVFoundation and cannot find it on that device.</p>]]></content:encoded>
    </item>
    </channel>
</rss>
