I just read about a neat feature for Letterpress 1.4 where savvy users can test Spanish games by loading “letterpress:experimental” in Safari and I wanted to share an alternate example that I build for a client a while back.
In this particular case, the client wanted to distribute a single app binary via enterprise distribution or ad-hoc builds to various clients of his own. The catch was that all these clients wanted the app to look customized to their own brand with logos and colors.
Not only was I opposed to building a system where I would have to build multiple versions of the same app for multiple clients, I was pretty sure that anyone maintaining that sort of system down the road would put in the extra effort to seek me out and chop off each finger that contributed to writing that code.
Instead, I developed a configuration framework that responded to a specially crafted URL scheme. The app was totally functional upon first install but a URL could be sent along in the install email which prompted users to tap on it from their iOS device.
The url scheme was passed along to the app which inferred the location of a JSON configuration file somewhere on the internet, downloaded it, parsed the file for logo urls, offsets and RGBA color components and redrew the app with these visual changes. The JSON document was stored on the local disk for easy parsing sans-connectivity on the next startup.
It required a bit of conversion to drawing customizable elements with drawRect rather than patterning images but the flexibility was worth it many times over.
For this purpose, an unsolicited plug: recreating complex photoshop-made effects in Quartz2D is pretty easy with PaintCode. Don’t let the price throw you off if visual customizability or small app size is important to you, it’s an incredible tool.
Depending on your feeling towards these fairly insecure URL schemes, you could package a username and password within them and provide users an automated way of logging in to your app. The possibilities for configuration are nearly endless and mostly underutilized, it seems.
If you’ve got one of these GE Profile refrigerators from a few years ago (this one was installed 8 years ago, I think, model PSS26MSRD) and the ice maker isn’t making ice, there are a few simple steps you can go through to troubleshoot.
First, pull out the ice bin and eyeball the ice maker device behind it. See if the switch is turned on and the green light is lit. If it’s blinking, that indicates “ice stuck in tray” and you’ll have to take it out and thaw the whole contraption out. It’s not that hard: unplug the giant molex connector on the right side and use a small hex wrench to unscrew the obvious screw holding it to the left side of the freezer wall. Then you can firmly pull the device up and out until it pops free from the notches where it sits in the back.
If there’s ice stuck in the device, or if it’s just not filling properly, let it sit out for a few hours until it warms up. Depending on the humidity conditions in your freezer, something could have frosted over.
Check the swing arm on the bottom of the device. Despite the appearance as a bit of useless plastic, it has a magnet attached to an arm inside the main ice maker housing which allows the maker to tell if the arm is extended or pushed part ways in. Ice being make and pushed into the bucket depresses the swing arm when it falls and the arm returns to the extended position via a small spring mounted between it and the unit unless the ice maker is full. This spring has a habit of popping out of a tiny hole and not providing the force needed for the arm to return to “make more ice” position. Check that it pushes back at you if you depress it.
Hopefully one of these items you’ve checked wasn’t working because they’re all easy fixes. Reassemble and add it back to the freezer, making sure that the water dispenser in the back of the freezer leads INTO the ice maker, not BELOW it. This would cause a mess. Make sure the thing is plugged in again, and the green light is back on.
If you’re impatient about waiting for another ice cycle to start, depress the swing arm three times in a row. This should tell the ice maker to immediately dispense water and start a new cycle.
This information was only found in bits and pieces scattered around the corners of the internet so I join them together here for the betterment of refrigerator-using people everywhere. Go forth and make ice.
There’s a common theme in scifi where humans have some personalized technology which only they can hear and interact with, transparent to those around them. I think we’re near that point, I give it less than five years before something iPhone-like takes off in this space.
I’ve always liked these gadgets in scifi but I only reexamined their possibility the other day. I was driving with my partner (we’ve been together too long for me to say “girlfriend” but have no other incentives to get married so we live in a perpetual middle-ground with no word to describe it. Thanks culture) up above the bay on a trip that I wasn’t familiar with so I set up turn-by-turn on my phone.
I don’t have a phone mount in the car, nor do I think I need constant feedback that I am on the right route. I just want a handy aural reminder when I’m getting close to a turn. To accomplish this I used my headset in just one ear so I could continue listening to the radio and interacting with my passenger. I thought it was a nice solution; I don’t have to rely on anyone else for directions and I’m not distracted by an extra screen.
The robot direction lady said something I found funny from an engineering perspective, something like repeating the direction I was supposed to go three times in the span of five words.
And I laughed. I laughed at a joke told to me by a computer that was completely disconnected to whatever was currently on NPR or anything that anyone else in the car could hear. Maybe it’s difficult to imagine but it felt like scifi in that weird way that scifi does when you realize that it’s here.
No matter if you like it or not, this is where technology is going. People already create their personal technology bubble when they start fussing with phones in what would otherwise be a social environment. Having your personal assistant in your ear is just a bit less obvious to your companions.
I’m sure your first thought is that people interacting with their cell phones while other people are around is obnoxious - and it is - but we have a long way to go.
What’s the next step? I think we’re well on our way towards more unobtrusive personal interactions with our technology, be it with Google Glass or the new Apple wearable thing. I mean the next, next step.
Just as we already dislike loud-talking bluetooth set-wearers in public places (too easily confused with people who talk to themselves), we’ll quickly tire of people with funny glasses saying “Glass, take a picture” and “Glass, call my wife”. Even Siri, despite its novelty and usefulness, is rarely used in public because its embarrassing to talk to yourself.
So if you want to bet on technology that will be snatched up by the Apples and Googles, buy companies working on sublingual communication. That is, companies who use various technology to turn unspoken speech into parseable words.
In the close future this will probably be in the form of detecting muscle movements in your neck and mouth. Think about forming all your sentences but not making any sound, or talking without opening your mouth. That may take some practice.
Until then, I will continue to laugh at my turn-by-turn directions, somewhat awkwardly now, and want a Glass headset even though it’s not stylish and totally weird to talk to yourself.
And yes, I will probably want an Apple wearable thing - as long as it’s not a watch. Ugh, who wants to wear a watch again?
A thing: Andre has an interesting take on the other obvious sense, the very sight of wearable technology.
Here’s what I don’t understand about modern house construction; despite modern computation and robotics, we still rely on humans to measure and cut things piece-by-piece in order to build a house.
Prefab has negative connotations for being used to create cookie cutter houses that have no individuality but it’s a self-imposed limitation, especially considering that planning is already computerized. I think we can do better.
Given a few laser measurements of a land plot, we could easily use these as a baseline for architect plans which are already computerized in most cases. Even manual transfer of this plan into discrete wall and floor segments would be acceptable, but I think computers could do it automatically too.
Send it off to the robotic construction warehouse. Two-by-fours are tested and cut to perfect sizes with millimeter precision. Holes are drilled, electrical and plumbing equipment is placed and everything is sealed up with sheetrock, ready to be set in place at the construction site with LEGO-like instruction manuals.
Sure, human intervention is still required in the building process. There are benefits to pouring concrete on-site for foundations and all the fabricated parts still have to be secured together and painted over.
I suspect this would shorten the time spent on a new house significantly. What percent of the building process is spent framing a house? From the outside it looks to be a large chunk - once a building is framed it seems like a takes much less time to finish it. And much of the rest of the process (painting, carpeting) doesn’t benefit from a significant increase in precision fabrication.
Given the evidence of many house remodeling shows on HGTV (strong evidence if I’ve ever seen it), I suspect quality would improve as well. Any pipes or wire that was fabricated at a warehouse could be well-tested beforehand, reducing the chance of electrical fires in walls or leaky pipes due to improper soldering.
We’ve definitely taken small steps in this direction, you buy cabinets that are pre-made for the kitchen and windows are packaged for easy installation. But, as always, we fear the steps that remove humans from parts of the equation - particularly now that the term “job killer” is such a politically loaded term - even when they’re added in other locations.
Like most new things though, jobs wouldn’t disappear but rather transition. Humans are needed to program, maintain and inspect the work in the fabrication warehouse. Construction speed would benefit greatly from having these warehouses close by, so many small-to-medium warehouses all over the country would be more beneficial than large factories that then have to ship parts thousands of miles.
I give it 20 years until we see something like this take form. Not due to technical limitations, we could do all of this right now, but mostly human factors.
This is what I get for having so much construction in Noe Valley; everywhere I go I see humans cutting and nailing wood together and I have to think “can’t we improve this?” In my opinion, we can.
As promised in my last post, some books I’ve made my way through (or not) this year:
I started with World War Z, the quintessential worldwide zombie outbreak book. The book is told as a series of interviews with survivors around the world, discussing the war from an interesting combination of personal and professional points of view. I enjoyed the format but I doubt it’ll survive to the movie interpretation. Highly suggested to read before the movie comes out next year.
I’ve tried to get through later books in the Ender’s Game series a few times after I binge-read a bunch of them a few years ago and this year was no exception with an attempt to get through Ender in Exile. And again, I couldn’t push myself through the religious nonsense and sophomoric whining that the series has come to display in every iteration. At any rate, the Ender’s Game movie is finally being made and although I have no idea how much plot they’ll fit into the the movie, I do have some hope since an early photo looked pretty good.
I picked through a few technical books as well. Getting Started with Dwarf Fortress was a huge help getting started. I spent some time in Amsterdam with Steffen Itterheim’s Learn cocos2d Game Development though the project I was learning it for didn’t pan out.
One of the more fascinating technical books this year was The New Science of Strong Materials which isn’t exactly new but has a number of great atomic-level explainations for material properties.
I have not touched any of the books from the Humble ebook Bundle which is unfortunate. Maybe next year.
Richard Rhodes’ The Making of the Atomic Bomb is an incredible view into the life of scientists during the lead up to the second world war. In no way is it only about the literal manufacturing of atomic bombs but rather a look at how the chemistry and physics community discussed and developed new results in the first half of the 20th century. I’m barely through a third of the book since I picked it up in November because of frequent side trips to Wikipedia to look up technical details or just to remind myself which scientist did what (keeping track of them all would require a dedicated notepad).
I started Isaacson’s Einstein biography before that but I couldn’t get into it before my focus was stolen away by something else. I may go back and give it another chance given how much I’ve enjoyed The Making of the Atomic Bomb with the knowledge that I’ll have to slog through the early years before more interesting science comes up.
My last great ambition for reading this year was Nate Silver’s The Signal and the Noise which did not happen at all. Perhaps I should have started it earlier with respect to the election.
Lastly, my reading device switched from my kindle to an iPad mini late this year. I treat most of my reading as research in that I don’t restrict myself from wandering the internet in search of more detail on a particular topic that has come up during reading, so the iPad mini is an incredible tool for me. Previously I would read on the kindle but I would always keep an iPad or computer nearby. Now I can just carry one thing around. I won’t give a full review because I’m sure you’ve read others already but as a reading device it’s highly recommended.
Good day, blog friends!
Not counting Muniverse (and I don’t, it was waiting to be published for a while), it has been quite a time since I last wrote a thing. Here’s some stuff that doesn’t warrant its own post:
Brad and I finally finished a remote garage door opener based on an Arduino and WiFly. See the incredible frustration documented on G+ here and here. A few more tweaks and the whole thing will be on github.
I’m doing some more frequent science tweeting with @finestructure. I never realized I felt a little trapped in my regular twitter account, I’m not an oversharer and I don’t like to innundate my friends with dumb stuff. Strangers, on the other hand, love dumb stuff. Seriously though, it’s full of excellent science and snark.
I want to get back to blogging more on the proper Fine Structure blog but I’m frustrated with my publishing setup there. I want to adapt my dropbox static publisher for this purpose but it requires some thinking, generalizing and coding. Maybe during vacation, or after I write some content.
Work continues to be enjoyable. There are many ways to run a small contracting business and my current method involves doing enough directly billable work to be comfortable and then investing the rest of my time in learning new things - not always directly related to work. I don’t think I could ever swing a deal like that at a standard salaried job so I think I’ll be doing this for a while.
I’m spending a bit of time playing Dwarf Fortress (as little time as someone can spend and still improve in the Most Complex Game Ever). I tend to leave it alone for a few weeks then see something that inspires me to start a new fort, play that for a few days and get totally destroyed by a seige of undead. Such is life in the DF. I would very much like to try a Let’s Play video for DF so we’ll see where that idea goes in the next few weeks.
I started writing about my current reading list here but it ran far too long, that will have to come at a later date. Welcome back, blog!
Many years ago as I was learning Objective-C and Jamison was going through his public transit phase (yes, as far as I know he’s still in it), we joined forces to create an epic San Francisco Muni app for the iPhone.
It was my first ground-up project for the iPhone so I found myself wanting to rewrite large swaths of the code every 2-3 weeks. For obvious reasons, I tried to keep the stuff that was ugly but effective and that got us to the release. Unfortunately it was little help for keeping things updated as any Muni route changes were a big pain to incorporate. Eventually new versions of iOS deprecated bits and pieces of APIs we were using and new APIs replaced them. After a while the app started crashing on startup and I didn’t have the heart to debug (my) ancient newbie code.
The original Muniverse has since been removed from the app store for those reasons (interestingly, Apple doesn’t seem to care if a previously approved app starts crashing on new iOS versions). However, I still stand by our goals for the project; find when your bus or train or street car arrives in the least amount of taps. We literally want you to be in the app for as little time as possible (but every day, of course).
Looking at other Muni apps since then, it’s pretty sad to be a rider with an iPhone. Everyone has clunky methods for finding your stops (be they map-oriented or otherwise) and no one makes it as easy as Muniverse to get times for the stop you use every single day. Most of the apps are clearly built by people who don’t live in San Francisco or who don’t use Muni often enough to know the weird configuration for the KT or which stop names are wrong when they come out of the NextBus API.
That’s why Jamison and I have rethought Muniverse from the ground up and are happy to report that an all new Muniverse is currently on the app store. For free.
Why rerelease Muniverse? We both feel that having a showpiece for our separate skills on the App Store is a great example to show potential clients. Jamison’s UI/UX contributions are obvious when using the app, though the code is a bit more difficult to evaluate even if the app works as intended.
Rewriting everything gave me an opportunity to explore some of the modern Objective-C features that can make development easier and faster. Muniverse uses storyboards, core data, new literals and eventually will integrate with the new transit routing APIs. To better illustrate my side of the development process and provide a complete, modern reference for those who are learning Objective-C, the entire codebase is on github.
However, the open source license doesn’t cover everything since we don’t want anyone to re-release the very same code as their own. The graphics are included in the project but are not licensed for use. In addition, there’s some magic (written in Go) that generates a large file containing relevant information about all the stops and lines in Muniverse which isn’t included in the repository. I think this serves the interests of all parties, providing a great mass of code for those who want to learn Objective-C while keeping blatant plagiarism at bay.
Lest you think this project was entirely for the good will of SFers and Obj-C newbies, let me be clear: this is an obvious ploy to bring in more work. Jamison works on UI/UX stuff as Fat Trash Design and he’s highly recommended if you need this kind of work done. I run a small iOS development shop called Launch Apps (yay placeholder website!) doing contract work for big and small companies alike. Feel free to get in touch if you like Muniverse and want to see the same level of quality in your own mobile apps.
This youtube video from NASA shows a galactic simulation for approximately 13.5 Billion years. While watching galaxies tear each other apart is fun and all, the fascinating part is that it is, after all, a simulation.
Take some physical rules and enough processing power and you can simulate 13.5 Billion years of dust coming together which in turn attracts more dust and creates stars which attracts more dust which creates young stars which… you get the idea.
Wanna back something novel on Kickstarter? HyperV is attempting to raise funds to develop plasma jet thrusters that could be used in spacecraft outside of the atmosphere.
It’s not exactly citizen science (which I’d like to see on Kickstarter some day) but it’s a great start if you want to be involved with funding an awesome science and technology project and get interesting updates along the way.
Ignore their standard science company website and the slightly awkward funding video and back their awesome project today!
Update: They were successful! They’ve done a really great job of keeping backers up-to-date on the project so far, I think this is a great model for science on Kickstarter.
It’s one thing to know that there are actors inside some of the raptors in Jurassic Park. It’s quite another thing to see the process of creating the suits and characters themselves.
This video and post from Stan Winston school of character arts (who knew!) show the whole behind-the-scenes process for creating the raptor. It’s incredibly fascinating to watch the movements of the actor go from unfamiliar and jerky to something entirely convincing near the end. He can even play tug of war while being stuffed into the bottom of that suit!
One of the downsides to officially registering with the state as a business is that your address is added to yet another public list and various types of spam increase, regardless of your business’ purpose. Not a huge deal - this is what the recycling pile is for, right?
I recently received a letter that is actually a problem. It purports to be from an “Annual Business Registration” office and suggests that you need to pay some amount of money ($218, in my case) and then there’s some fear-inducing talk about suspension of your business if you don’t file your Statement of Information.
Part of this is true! A Statement of Information does have to be filed with the state in a timely manner and you can be fined for not filing. However, this form is not a statement of information, it’s a scam.
The letterhead looks vaguely state-like with a modified California seal (without the term “The Great Seal…” since it very clearly isn’t the actual seal). It includes your business name and LLC number, plus the amount of money you “need” to pay and a P.O. Box to send your payment to. For reference, here’s the address:
Annual Business Registration
P.O. Box 931597
Los Angeles, CA 90093
Whatever you do, do not send your money here. There is no state business registration office in Los Angeles and you will not be penalized for disregarding this piece of junk mail.
According to Yelp, this exact scam without any modification has been occurring since at least 2009. Is there nothing illegal about deceptively suggesting that the owner here is associated with the state?
Yes, we’ll be getting our own Shuttle flyover!
September 20th will see flyovers of Moffet Field, Sacramento and San Francisco on the way to Endeavour’s final resting place at the space center in LA. Expect some awesome shots of the Golden Gate Bridge!