Get Your Apps Ready for iPhone X

Yesterday Apple announced the iPhone X. Over at the Big Nerd Ranch blog, I wrote about what we iOS developers need to do to get our apps ready for iPhone X.

Swiftly geeky

Been very busy so I’ve been unable to write. Many topics in my head, just need time.

That said, for the geeks here I did just publish an article on “The Joys of Swift – Enums” over at my Hsoi Enterprises LLC blog. Tap/click on over and give it a read.


Lights and sleep

I didn’t set out to read about light colors and sleep cycles, but as of late it seems my news feeds and newsletters are full of articles on the topic.

A big one going around is how light color – blue light – affects our sleep cycles in a negative way, due to our addiction to our mobile devices and doing things like Facebooking on our iPhone in bed before going to sleep.  Basically, light isn’t “white”, it does have color, or more specifically, a color temperature. Ever notice how some lights are more yellow-ish and some are more blue-ish? Choosing the right color temperature for your lighting matters. You’d probably want more blue-ish in places like an office or a kitchen, and more yellow-ish in your bedroom. Blue-ish corresponds more to natural daylight, and yellow-ish less-so (think sunset colors). So given that, can you see how blue-ish light is more associated with mid-day, being awake, doing things? And yellow-ish more associated with end of the day, going to sleep, and not doing things?

And so, with our mobile devices emitting more of a blue-ish light, that signals our brains to “be awake”, which isn’t the best thing to do right before bed. So more and more studies are coming out on this topic, and there’s a growing “best practice” that you should stop using the computer and your mobile devices at least an hour before bed. While color temperature is nothing new to me, I hadn’t thought about the effects from my mobile devices. For the past few weeks I’ve been working to keep my mobile device use to a minimum after supper, and if I really want to do something in bed, read a book (not an eBook).

I also found a really neat free app called f.lux. Basically, it knows your location, when sunrise and sunset will be, and automatically adjusts the color temperature of your monitor accordingly. As I write this article, it’s before sunrise and f.lux is giving my monitor a slightly yellow/orange/pink hue. As the day progresses, it will slowly change. I’m still getting used to it, still tweaking the settings, but so far I’m digging it.

Another thing you should consider? Monitor calibration. Two things here.

First, mind your brightness setting. Open any sort of window on your computer that allows you to have the full screen filled with a white window. You want to strike a brightness setting between the window still looking white (not a dull gray color) but not so bright that it winds up being a light source in your room.  I also use my Mac’s auto-adjustment of the brightness setting, but only after I’ve configured the base brightness setting.

Second, after setting the brightness, set the color calibration. If you have a Mac go to Apple Menu -> System Preferences -> Displays -> Color. Even tho Apple ships a default Display Profile, you should still click the “Calibrate” button to calibrate your monitor in your room lighting to your eyes. After calibrating, flip back and forth between the default calibration and your calibration. Chances are good things will look better with your custom calibration.

Don’t be afraid to readjust settings. Your eyes will need some time to adjust and get used to the new setup, and you may find after a few days of less eye strain that you can fine-tune your settings for even better effect.

Bottom line? Less eye strain, less wear and mental exhaustion by the end of the work day, and better sleep. Something we can all use, and it only takes a few minutes of adjusting that thing you stare at for hours on end every day. Little changes add up.

PanemQuotidianum 1.0.3 released

Hsoi Enterprises LLC (my day job, now) has released an update to one of our apps, PanemQuotidianum.

Full details of the update here.

If you’re so inclined, please check it out and share it with others.

Thank you.


towards perfection

These days a lot of people see me as a finicky and nit-picking type of person. It’s because when I look at software, I look at it through this ambitious, striving for perfection type of lens that I picked up from Apple. And I hasten to add that I don’t think my products are by any means perfect. It’s the thing about perfection. It’s really hard, probably impossible. But what Apple does is strive for it anyway, even if it’s impossible. I came to respect that attitude very much, to the point that I can no longer relate to people who don’t share that view.

– Daniel Jalkut (emphasis added)

I accept the trade-offs that come in life, and especially in software development. I mean, sometimes you gotta ship if you want to keep the lights on so you can keep working towards that perfection. Besides, rarely do we achieve perfection right out of the box; usually it requires a lot of time, trials, iterations, failures, and effort.

I just don’t like it when people take satisfaction in shoddy, or accept “half-assed” as “good enough”.


UX != NULL && UI != UX && UX > UI

I stumbled upon a great explanation of UX (user experience) vs UI (user interface)

It was Tweeted by Jennifer Aldrich of I retweeted, she thanked me, and I responded by saying:

@jma245 You’re welcome. Great explanation that UX != NULL && UI != UX && UX > UI.

For those not fluent in geek, I’ll translate.

People tend to understand the notion of UI (user interface), probably more specifically GUI (graphical user interface). They understand that buttons and menus and things you can click on and tap on, all that pretty stuff on screen — that’s GUI. Or well, that’s UI. But you see, there are more user interfaces than just a graphical one. For instance, some apps have a scripting user interface, that allows a user to interface (!) with the app and drive it with scripts to help make the app do custom things unique to your personal needed workflow. Not to get too geeky, but the point is the user interface are the parts that the user interfaces/interacts with. So, the bike handlebars, the seat, the pedals.

Yes, user interface is important.

But what most people aren’t aware of is that there’s a greater concept: user experience (UX). The UI (or UIs) are part of the user experience, but what’s more important is the experience the user has when using the product. Ever use something that was so awesome you thought it was magical? You kept playing with it merely because there was a sense of awe, of “wow”, of “cool”, of whimsy or whatever. It was just so damn awesome you fell in love and had to show it off to all your friends. Or ever have something that as you used it you found yourself getting slowly frustrated, and next thing you know you’re bashing the thing, screaming, and wanting to throw it across the room?

This is user experience.

Many people do not consider user experience, but the user experience really is the key. It doesn’t matter if your UI is pretty if it sucks to use. Conversely, the UI may be nothing special, but if the experience is awesome, people go forward with it. While we love promoting reason and rationality, in the end we’re human — we are creatures of emotion. Our emotions will drive us, and it is the experience that plays to emotion.

We must acknowledge that UX exists (UX != NULL).

We must be aware that UI and UX are two different things. (UI != UX).

We must strive to make the experience better than the interface, for the interface is merely part of the experience (UX > UI).

Strive to make the UX awesome.

(original posted at the Hsoi Enterprises LLC blog)

Property List vs. JSON vs. YAML

In my other life as a programmer, I spend a little too much time thinking about property lists vs. JSON vs. YAML.

Why is my Apple TV so slow?

We have an Apple TV. Love it. We dumped cable TV, have no broadcast antenna, the Apple TV is it. We get the shows we like, that we’re curious to see, and watching as we want, when we want, to pause when we need to, no commercials, I’m all for it.

But there’s one problem.

It’s slow.

Sometimes we go to start a show and the load time takes… well, it never loads. It’s mighty frustrating and unsatisfying when you sit down ready to relax with a favorite show, and you can’t get the show. Instead, you spend 10 minutes trying to troubleshoot and fiddle around to get things working. Reboot this, check configurations, etc..

Only some things have this problem. It seems to be high-def movies/shows. Music is rarely a problem, older shows encoded at lower quality no problem. So that tells you something.

But what gets further odd is streaming direct from the Internet (instead of the internal media server) is usually fine.

The signal strength is good. I even ensured to force it onto the 5Gz WiFi. I’ve checked the strength of other wireless devices in the same general area and they all get good, fast, transfer times.


This is not an uncommon complaint. A little Google searching turns up many people with similar problems.

At this point, I can only assume the Apple TV’s WiFi antenna sucks or has some other sort of throughput problems. Some network software I looked at seemed to show the Apple TV was only getting like 6 Mb/s data rate, which would explain the problems.

The solution? Ethernet. But there’s just no way I can run a wire through my house like that.

In my latest bout of frustration, I came across Powerline adapters. Basically, it’s a way of using your home electrical wiring as network cable. You buy at least 2 adapters: one plugs into the wall with a cable to your Ethernet hub/switch/router; the other plugs into the wall with a cable to the Ethernet port on the device (Apple TV in this case). If all goes well, you’ve now expanded your network through your electrical wiring! Ta da!

Now there seem to be caveats.

  • There are a lot of standards, and you want hardware that conforms to the latest, fastest. What that is will vary as standards evolve. But again, Google will be your friend here. (e.g. “Powerline AV+ 500” or “HomePlug AV2”)
  • Your home wiring quality will affect speeds.
  • Be aware of how circuits affect connections. It does seem that if the adapters are all on the same wiring circuit, things should work. If they are on different circuits, it may or may not work — it just all depends how the wiring is all set up.
    • In my case, the model I bought required the adapters to be on the same circuit to reset the encryption keys, but are working in normal function on two different circuits.
    • So in short, ensure there’s a good return policy if things don’t work out for you.
  • It’s never going to be as good as proper wiring, so you have to see if the trade-offs are worth it.

I bought a Actiontec 500 AV Powerline Network Adapter Kit (Retail SKU: PWR511K01). I stumbled upon a CNET review of a bunch of different Powerline adapters, and bought based upon their review of the Actiontec. Why this model? Because it was touted as the cheapest solution that basically worked, good for someone who wants to dabble but doesn’t want to spend a lot of money to do so. Yes, I wanted to go right for their recommended top pick of the Linksys PLEK500 because I like getting good stuff, and brands I know and can somewhat trust (who the heck is Actiontec??!?!). But for a first time? Fine, and if it didn’t work I could return it. The trade-offs for the lower price were things like the lack of a pass-through power socket (not a problem for me), using a regular Ethernet jack (not a problem as 100-Base-T should be sufficient for my need, and I expected line quality would be low anyways).

So how did it go?

Unboxing was nice. I didn’t expect to get 2 Ethernet cables with it, but I did. That was nice (I’ve got a box of cables, so I didn’t bother purchasing). They are small, and crafted to easily work on the wall jacks without taking up too much space and/or blocking the other jack from being used.

But then, the suck.

They make it sound easy, like plugging it in and away you go.


No signal, no nothing.

Their website troubleshooting doesn’t tell you much to really troubleshoot, but it does talk about resetting the encryption keys. Could that be the problem? Tried it, but the lights didn’t blink right. Used their online chat tech support. The first guy was not helpful — just wasn’t clear enough in his instructions. Then the session was abruptly ended; I was left with the impression he didn’t want to deal with me any more and killed the session. I tried following the instructions and still no dice. I contacted support again and this time got a much more helpful support person. He pointed out a key thing — both devices have to be on the same circuit for resetting the keys (tho they don’t for normal operation). So I tried that and managed to get everything reset, matched, and then went I plugged it all back in, it worked!

According to das blinkenlights, I’m getting less than 50 Mbps. Far from ideal, but testing so far is working well. Shows and movies that may not have loaded or took forever are loading fine now. So it may not be blazing, but it seems “good enough”.

For all the move to wireless (it felt weird to have no Ethernet port on my new MacBook Pro), it’s still tough to beat a good wired connection.

Updated (Aug 2014): Since I wrote this, I have dumped the Powerline approach. I think it might work out ok, but it would have sporadic issues that were a major pain to resolve, such as things seemed “out of sync” between the devices and it would be a major undertaking to try to get them to sync up and communicate with each other again. This possibly could be worked out with a better with a set like the Linksys, but I can’t say for sure (didn’t buy, no plans to buy). I also don’t know how much my house’s wiring was at play, with an older house and certainly having to “jump” circuits. But whatever the reason, this wound up being more trouble than worth.

So I went back to Wi-Fi.

Oddly, it seems to be working OK now.

What changed? I really can’t say. Maybe updates to the AppleTV software, maybe updates to, maybe both. Maybe the stars aligned better.

Sometimes things still get stupid, and usually restarting iTunes on the home media server and restarting the AppleTV clears things up.

I have wondered if a RAM upgrade on my server Mac Mini would help. It’s only got 8 GB and tends to run on the edge of that; maybe that’s a factor. But a 16GB RAM upgrade is a little expensive for me to justify right now.

Anyways, hopefully this helps y’all solve your problems.

Updated (January 2016): A few things have changed (improved) since I posted this.

First and foremost, the 3rd generation Apple TV that I originally wrote this about is no more. I have upgraded to the 4th generation Apple TV. Been using it for a few months (had one since before they were commercially available – I’m a developer and I was lucky enough to get one early) and I have to say it performs much better. For example, there’s a MUCH faster CPU in the 4th generation. But more relevant here is better networking. The 3rd generation only did 802.11 a/b/g/n, and the 4th generation adds ‘ac’. So if speed continues to be an issue for you, it may be worth considering getting a 4th generation Apple TV, and also looking at updating your wireless routers – that ‘ac’ may be helpful. As well, the 4th generation Apple TV brings in a host of other features and advances that I’ve found well-worth the upgrade.

Second, I finally did something about our Wi-Fi network. I always knew that I was losing signal towards that area of the house, and in the past I tried to boost it through various mechanisms, but nothing really worked out for one reason or another. Well, I opted to give it another go. I picked up a Mac app called WiFi Explorer and was able to see how the reception was in various parts of my house. I was also able to see how there were lots of other WiFi networks from my neighbors, which I knew about, but being able to see the channel overlap helped me find the least-populated channel and force my WiFi network to use that channel. That seemed to help a bit.

As well, I picked up an Apple AirPort Express and set it up as an extender. Is this the best way to extend a WiFi network? Nope. But given I already use an AirPort Time Capsule as our base network, I figured the setup and running of this would be easy and while there are trade-offs, I figured it was a cheap-enough investment to see if it would help things.

Sure enough, it’s proven to be quite a help. Yes there’s been some tradeoffs (as with any wireless extenders), but overall performance has been boosted and now the only problem we have is when Apple burps with Home Sharing every so often. Our “buffering” and waiting problems are generally a thing of the past.


My slow Mac – Mavericks, coreservicesd, IconServicesAgent, and how fs_usage saved me

My new MacBook Pro (11,3 – retina model) running Mac OS X 10.9.1 (Mavericks) has been running slow — at times. Being a geek, I like to keep the Activity Monitor running in my Dock. I watch the CPU, and have noticed sooner or later the CPU starts to hum at a low but constant rate, despite “doing nothing” on the machine. When I look for more detail, I see coreservicesd taking some 75% of the CPU and taking about 25%. And they hum along like this.

Going along with this, I often had problems navigating the Finder. I like using column view, and I’d navigate to a folder and contents would not display. I have the status bar showing on my Finder windows, and the progress spinner would spin and spin and spin, so it was trying to display, but either never would or eventually would (like 30 seconds later). If I relaunched the Finder, that often resolved things, but only temporarily.

Restarting didn’t help either. Maybe it would break that deadlock, but it’d be back quickly.

Google turns up I’m not the only one experiencing the problem.

I tried some of the suggestions:

Trash the ~/Library/Preferences/ and restart the Finder. Didn’t seem to help, but didn’t hurt either.

Trash /Library/Caches and ~/Library/Caches. Again, didn’t help, but no harm (and it cleaned out a lot of cruft — they are caches after all, so no harm).

Finally, I found something:

sudo fs_usage -f pathname -w | grep open

Very geeky, I know. I’ve used fs_usage in the past for numerous things, but hadn’t thought to use it for this problem. I’m glad I did. I saw many entries like this:

15:32:08.065782 open F=4 (R_____) . 0.000005
15:32:08.066899 open F=4 (R_____) /Applications/ 0.000008
15:32:08.066933 open F=4 (R_____) /Applications/ 0.000009
15:32:08.066965 open F=4 (R_____) /Applications/ 0.000010
15:32:08.067690 open F=4 (R_____) /Applications/ 0.000008
15:32:08.068356 open F=4 (R_____) /Applications/ 0.000004
15:32:08.068469 open F=4 (R_____) /Applications/ 0.000003
15:32:08.068509 open F=4 (R_____) /Applications/ 0.000003
15:32:08.068535 open [ 2] (R_____) /Applications/ 0.000003
15:32:08.068952 open F=4 (R_____) /Applications/ 0.000012
15:32:08.069000 open F=4 (R_____) /Applications/ 0.000007
15:32:08.069050 open F=4 (R_____) /Applications/ 0.000003
15:32:08.069089 open F=5 (R_____) /Applications/ 0.000012
15:32:08.069174 open F=4 (R_____) /Applications/ 0.000003
15:32:08.089715 open F=4 (R_____) . 0.000006
15:32:08.090820 open F=4 (R_____) /Applications/ 0.000008
15:32:08.090853 open F=4 (R_____) /Applications/ 0.000009
15:32:08.090885 open F=4 (R_____) /Applications/ 0.000010
15:32:08.091578 open F=4 (R_____) /Applications/ 0.000007
15:32:08.092242 open F=4 (R_____) /Applications/ 0.000004
15:32:08.092354 open F=4 (R_____) /Applications/ 0.000003
15:32:08.092394 open F=4 (R_____) /Applications/ 0.000003
15:32:08.092420 open [ 2] (R_____) /Applications/ 0.000003
15:32:08.092838 open F=4 (R_____) /Applications/ 0.000011
15:32:08.092886 open F=4 (R_____) /Applications/ 0.000007
15:32:08.092935 open F=4 (R_____) /Applications/ 0.000003
15:32:08.092972 open F=5 (R_____) /Applications/ 0.000011

Just spamming that over and over, stuff in my Xcode install.

I moved to the Trash. The problems stopped.

So I trashed my Xcode and reinstalled it from the App Store (this is Xcode 5.0.2). And… no more problems. My Finder is actually snappier. All this time I must have had some sort of problem or corruption with my Xcode, because this is about as nicely responsive as my new MacBookPro11,3 has been since I got it.

I am not sure what happened, if somehow my Xcode got corrupted or was always from the start. But there we are.

If you’re having similar problems, don’t jump right to Xcode, but the fs_usage may turn up a lot of churn on some file(s), that trashing could resolve.

I don’t know the whole if the issue, and am very curious. But at least I’m running again. Hopefully sharing this will help add to some knowledge out there about troubleshooting this problem.

Retina MacBook Pro impressions

So, what do I think of the new MacBook Pro?

First, my old reference point is my prior MacBook Pro, which was a “MacBookPro8,3“. I believe I had the 2.3 GHz model, 750 MB hard drive, 16 GB RAM. Note that officially this machine only supported 8 GB of RAM, but OWC said it could do 16 so I upgraded to 16 shortly after buying the machine and was quite happy with the added RAM. I also ran Mac OS X 10.8.5 (Mountain Lion) on it; I couldn’t upgrade to Mavericks (Mac OS X 10.9) due to some work requirements.  Also, this was a 17″ screen, and the last 17” MacBook Pro Apple made.

The new machine is a retina MacBook Pro, which is technically a “MacBookPro11,3“. It’sthe 2.6 GHz model. 1 TB flash drive, 16 GB RAM, 15” retina screen. I didn’t relish spending that kind of money, but because you can’t upgrade the thing after the fact well… given I need as much RAM as possible, here we are.

How do things compare?

Overall… meh.

OK, no question it’s faster, and I know I’m going to be happier with it. But my “meh” is because I don’t like upgrading like this. My old machine did NOT feel long in the tooth at all. It was still quite a capable and functional machine, hardly obsolete. I only bought because I was essentially forced to. When these machines came out I didn’t feel there was anything compelling about them that I could gain from an upgrade, and I still don’t think they are a significant enough upgrade from the prior machine.

But that said, there’s some good and some bad.

First the flash drive. Holy crap it’s fast. Long long ago the disks were faster than everything else, so things like CPU were bottleneck. Now the disk i/o is by far the slowest subsystem and everything waits on the disk. I have no idea if the disk is still the slowest subsystem now, but holy gee whiz, Batman! This is unreal fast. Everything is so responsive. It’s awesome. Compiling is very disk intensive, and it seems to be better, but I can tell when I’m still up against CPU now (e.g. when the deep static analyzer is running). Still, if I could have benchmarked before and after, I’m sure I’d see improvement. If nothing else, the fact so many apps now launch almost instantly is awesome. No more waiting and waiting to start rolling on your ideas and work. That’s welcome.

Second, because of the drive… gee, are there any moving parts any more? Ok, the fans, but otherwise wow, she’s quiet.

I haven’t tried putting her on battery alone yet to see how battery life is, but supposedly it will be a lot better.

I am impressed with how light/thin it is. Almost feels too much so tho.

The screen? That’s a mixed bag.

First, retina. I wasn’t explicitly caring about retina, but as I started using the machine and just reading text on screen, it started to sink in how crisp and vibrant everything was. It just slowly crept up on me, but wow, it’s a significant difference. I am mighty impressed. It’s just… wow. My initial feeling was that my aging crappy eyes would really love this towards the end of the day as my eyes get tired of staring at the screen all day.

But, I did not like the loss of resolution. Yeah, the pixel density is huge, but then since retina is just a double-density trick, I lost massive amounts of resolution compared to what I had before. That sucked. I always got the largest screen because I like screen space, I like being able to see as much as possible when I work. Back in the day, I always used 2-monitor setups. When I went laptop-only a couple years ago, I wanted that 17″ precisely because of the screen real estate. So now it’s a step back — a big step back. Retina isn’t worth the trade-off here, for me.

Now, you can scale the display. In fact, I can scale it to the same resolution I used to have on the 8,3 model. However, it crams that same resolution into a smaller screen. So if I want the real estate, it’s now smaller. So far my eyes are ok with it and don’t really seem to notice. And the quality of the screen still seems ok and better — maybe strong LCD backlighting? maybe the glossy screen vs. the matte? Either way, quality of picture does seem better, but I’m annoyed by the loss of resolution (or the trade-off of making everything smaller to regain the resolution). Who knows tho, as I work over the coming weeks I might try the smaller resolutions for a while to see if I can work with the smaller resolution in favor of the retina fun.

One nice thing about the 15″ screen tho?

I can now get one of the ITS Tactical Discrete Messenger Bags to use as my briefcase. 🙂 Win!

On paper, the 11,3 machine looks to have some slower specs than the 8,3, but I think it makes up for it with the flash drive. I really don’t notice. Again, the 8,3 was really a fine machine. But remember, what I mostly do in a day is do email, do lots of stuff on the web (running Safari, Firefox, and Chrome, depending what I have to do), intensive work in Xcode, TextWrangler, communication work (Adium, Skype, Messages), and then other things here and there like Calendar, Yojimbo, Terminal, Textmate, etc..  So, my needs and workflow are different from yours. But there we are. So that’s how things work out for me.

One side effect of the new machine was being forced to adopt Mac OS X 10.9 “Mavericks”. So far I haven’t noticed any problems or issues. It’s been fine. The main reason I couldn’t upgrade was the possible day-job need to still run Xcode 4.x.x. However, the need for that is rapidly fading and essentially a non-issue now that Apple’s forcing Xcode 5 and iOS7 compatibility for any App Store submissions. So, I think it’s fine to take the upgrade at this point. However, it did break my ruby install, so I have to spend a bunch of time in ruby gem hell now. One fun thing about the Mavericks upgrade? I use the Messages app, of course on my iPhone, but I’ve used it on my machine while I work because it’s easier to use for Messages interaction (texting Wife and Kiddos and other Apple-based folks, much nicer when I have a real keyboard). Well, finally in Mavericks there’s support for real emjoi! Yeah I know, totally silly reason, but that was probably the main reason I wanted to upgrade to Mavericks. 😉

Anyways, I’m not happy about why I had to go here, nor having to unexpectedly drop that much money. But so far the machine is alright and I’m sure as I use it more I’ll come to appreciate it more.