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.
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.
WWDC 2014 Keynote Thoughts
Over at the Hsoi Enterprises blog, I’ve posted my initial reaction to Apple’s WWDC 2014 keynote.
Yes, I’m excited by the prospects.
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.
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 userexperiencerocks.com. 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.
Property List 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.
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 iTunes.app, 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 com.apple.IconServicesAgent 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/com.apple.finder.plist 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 com.apple.IconServicesAgent | 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 com.apple.IconSe.4295
15:32:08.066899 open F=4 (R_____) /Applications/Xcode.app 0.000008 com.apple.IconSe.4295
15:32:08.066933 open F=4 (R_____) /Applications/Xcode.app/Contents 0.000009 com.apple.IconSe.4295
15:32:08.066965 open F=4 (R_____) /Applications/Xcode.app/Contents/Info.plist 0.000010 com.apple.IconSe.4295
15:32:08.067690 open F=4 (R_____) /Applications/Xcode.app/Contents/Info.plist 0.000008 com.apple.IconSe.4295
15:32:08.068356 open F=4 (R_____) /Applications/Xcode.app/Contents/Resources 0.000004 com.apple.IconSe.4295
15:32:08.068469 open F=4 (R_____) /Applications/Xcode.app/Contents/Resources 0.000003 com.apple.IconSe.4295
15:32:08.068509 open F=4 (R_____) /Applications/Xcode.app/Contents/Resources/English.lproj 0.000003 com.apple.IconSe.4295
15:32:08.068535 open [ 2] (R_____) /Applications/Xcode.app/Contents/Resources/Base.lproj 0.000003 com.apple.IconSe.4295
15:32:08.068952 open F=4 (R_____) /Applications/Xcode.app/Contents/PkgInfo 0.000012 com.apple.IconSe.4295
15:32:08.069000 open F=4 (R_____) /Applications/Xcode.app/Contents/MacOS/Xcode 0.000007 com.apple.IconSe.4295
15:32:08.069050 open F=4 (R_____) /Applications/Xcode.app/Contents/Library/Spotlight 0.000003 com.apple.IconSe.4295
15:32:08.069089 open F=5 (R_____) /Applications/Xcode.app/Contents/Library/Spotlight/uuid.mdimporter/Contents/Info.plist 0.000012 com.apple.IconSe.4295
15:32:08.069174 open F=4 (R_____) /Applications/Xcode.app/Contents/PlugIns 0.000003 com.apple.IconSe.4295
15:32:08.089715 open F=4 (R_____) . 0.000006 com.apple.IconSe.4295
15:32:08.090820 open F=4 (R_____) /Applications/Xcode.app 0.000008 com.apple.IconSe.4295
15:32:08.090853 open F=4 (R_____) /Applications/Xcode.app/Contents 0.000009 com.apple.IconSe.4295
15:32:08.090885 open F=4 (R_____) /Applications/Xcode.app/Contents/Info.plist 0.000010 com.apple.IconSe.4295
15:32:08.091578 open F=4 (R_____) /Applications/Xcode.app/Contents/Info.plist 0.000007 com.apple.IconSe.4295
15:32:08.092242 open F=4 (R_____) /Applications/Xcode.app/Contents/Resources 0.000004 com.apple.IconSe.4295
15:32:08.092354 open F=4 (R_____) /Applications/Xcode.app/Contents/Resources 0.000003 com.apple.IconSe.4295
15:32:08.092394 open F=4 (R_____) /Applications/Xcode.app/Contents/Resources/English.lproj 0.000003 com.apple.IconSe.4295
15:32:08.092420 open [ 2] (R_____) /Applications/Xcode.app/Contents/Resources/Base.lproj 0.000003 com.apple.IconSe.4295
15:32:08.092838 open F=4 (R_____) /Applications/Xcode.app/Contents/PkgInfo 0.000011 com.apple.IconSe.4295
15:32:08.092886 open F=4 (R_____) /Applications/Xcode.app/Contents/MacOS/Xcode 0.000007 com.apple.IconSe.4295
15:32:08.092935 open F=4 (R_____) /Applications/Xcode.app/Contents/Library/Spotlight 0.000003 com.apple.IconSe.4295
15:32:08.092972 open F=5 (R_____) /Applications/Xcode.app/Contents/Library/Spotlight/uuid.mdimporter/Contents/Info.plist 0.000011 com.apple.IconSe.4295
Just spamming that over and over, stuff in my Xcode install.
I moved Xcode.app 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.