Binge Watching Handmade Hero

Screenshot (1)

For the last several weeks I’ve been obsessed with one TV show. It’s changed my viewing habits, my buying habits, and my computing habits. Technically it’s not even a “TV show” (if your definition of that term doesn’t include content created by non-professionals that is only available for free over the Internet).

But for me, a more or less typical Gen-Xer, Handmade Hero by game tool developer Casey Muratori has me totally enthralled as only must see TV can enthrall. I’m hooked and I simply must watch all 256+ episodes of Handmade Hero before I die (in about 1,406 Saturdays according to the How Many Saturdays app).

So first off let me explain a few things. Unless you are an aspiring retro game programmer or aging C/C++ programmer Handmade Hero will seem tedious at best and irrelevant at worst. There are much better and more modern ways to make a video game (like SpriteKit on iOS or Unity on any OS) but Casey promises to demonstrate live on Twitch.TV how to write a complete video game from scratch, without modern frameworks, that will run on almost anything with a CPU. He’s starting with Windows but promises Mac OS X, Linux, and Raspberry Pi.

This is a bold promise! When I first heard of Handmade hero, almost 2 years ago I ignored it. I didn’t know who Casey Muratori was and the Internet is littered with hundreds of these solo projects that tend to fissile out like ignobly failed Kickstarter projects.

But a comment in Hacker News caught my eye about a month ago. Casey had delivered hundreds of hours of live coding with explanations of arcane C, Windows, and video programming techniques! It’s all archived on YouTube and he’s still steaming almost every night! Awesomesause!

So I had to check it out. I started with Casey’s first video, Intro to C on Windows, and ate it up. I had to pound through the rest of that week’s archive. Because I have a family and a very demand job and kids and cats I had to purchase a subscription to YouTube Red so that I could watch Casey’s videos on or offline. Google is getting $10 bucks a month off me of because of Casey!

My keyboarding fingers ached to follow along coding as Casey coded. I used to be a C/C++ programmer. I used to do pointer arithmetic and #DEFINEs and even Win32 development! Could I too write a video game from scratch with no frameworks? I had to buy a Windows laptop and find out! Thus Dell got me to buy a refurbished XPS 13 because of Casey!

Even Microsoft benefited. I subscribed to Office 365 for OneDrive so I could easily backup my files and use the Office apps since I’m keeping my MacBook Pro at the office these days. I have discovered that a Windows PC does almost everything a MacBook does because of Casey!

I usually have less than an hour a day to watch TV so I’ve had to optimize my entertainment and computing environment around Handmade hero because at this rate I will never catch up to the live stream! But I’m having a blast and learning deep insights from a journeyman coder.

What could an old school game coder teach an old battle-scared industry vet like me? More than I could have imagined.

First of call Casey is an opinionated software developer with a narrow focus and an idiosyncratic coding style. He is not wasting his time following the endless trends of modern coding. He is not worried about which new JavaScript dialect he is going master this month or which new isometric web framework he is going wrestle with. He codes in C with some C++ extensions, he uses Emacs as his editor, he builds with batch files, and debugs with VisualStudio. While these tools have changed over the years Casey has not. He is nothing if not focused.

Thus Casey is a master of extemporaneous coding while explaining–the kind that every software engineer fears during Google and Facebook interviews. This means Casey has his coding skills down cold. He is unflappable.

Casey doesn’t know everything and his technique for searching MSDN while writing code shows how fancy IDEs with auto-completion are actually bad for us developers. He uses the Internet (and Google search) not as a crutch to copy and paste code but as a tool to dig deep into how APIs and compilers actually work. There seems to be nothing Casey can’t code himself.

Casey makes mistakes and correct himself. He writes // Notes and // TODOs in his code to follow up with as if he is working with team. Casey interacts with his audience at the end of every stream and is not shy about either dismissing their questions or embracing them. Casey is becoming a better, more knowledgeable programming before our eyes and we’re helping him while he is helping us.

Casey is not cool or suave on camera. He swigs almond milk and walks away off screen to get stuff during the stream. But nothing about Handmade Hero would be substantially improved if Casey hired a professional video production team. In point of fact, any move away from his amateur production values would be met with suspicion from his audience. Any inorganic product placement would fail. Dell, Microsoft, and Google should support him but stay the heck away least they burst the bubble of pure peer-to-peer show-and-tell that surrounds Casey.

I have 249 videos go to (and Casey has not stopped making videos)! I still don’t know if he delivers on his promise and creates an actual video game from scratch. (Please! No spoilers!) But I already know far more than I did about real-world game development where the gritty reality of incompatible file systems and operating platform nuances make Object Oriented Programming and interpreted bytecode luxuries a working developer can’t afford.

 

Most Improved Award for Windows 10

If there was an award for most improved in the world of tech I would award it to Windows 10. While I am a daily Mac user, I am no stranger to Windows. Actually, let me correct myself. I live inside iOS, work in Mac OS, play around on Windows, and occationally find need of an Android device. I think that makes me a good judge of where Windows 10 sits in comparison to all the major operating systems offered today. (Linux, yes I used to be into you, but Mac OS is more than enough UNIX for me.)

I’m old enough to remember when Macs were relegated to the less serious passions, graphics and science labs, while Windows machines were the sturdy beasts that bore our burdens during work. Ironically the situation seems to be reversed. If I have a job to do, that can’t be done on a phone, I need a Mac. If I want to fool around in virtual reality or inside an MMO at 60 FPS, I need a Windows PC. Windows 10 is Microsoft’s near miss at reclaiming the dull and boring world of the workhorse personal computer.

I had reason to buy a non-gaming PC laptop last week. I’m following along with Handmade Hero and since Casey Muratori is using a Windows machine to demo how to write a game from scratch I wanted to do the same. Via Amazon I bought a decent Dell XPS 13, refurbished, at a 50% discount. It’s a lot like a MacBook Air: Light, beautiful no-touch screen, and well constructed feel. The keyboard is a little loose as compared to a MacBook. And like a MacBook Air the graphic card and CPU are under powered but it’s totally usable for software development and the processing of words, numbers, emails, and webpages. This blog post is being written on it.

Windows 10 is Microsoft’s response to Mac OS and iOS. And it’s pretty easy to see that Apple is watching closely what Microsoft is doing with Windows 10 and discovering new ways to improve Mac OS and iOS. However, Redmond has to do a better job of learning from Cupertino.

Windows 10 is innovative and interesting but has many odd holes, rough patches, and weird leftover bits from Windows of the past. It feels rushed and as if there is only a small band of engineers behind it. It’s a tad ugly as if the UX designers called out sick a few days before polishing the new look and feel. If I wasn’t a 30 year veteran of Windows and PCs I’d be lost and confused when it comes to navigating around and installing software. As it is, I’m “Binging” basic operations where on the Mac I’d just be able to wing it.

Let me give you a concrete example…

Windows 10 has a system wide spell checking feature. While I was typing this blog post, in the sleek Edge web browser using the web-based WordPress text editor, I had to turn off Windows 10 spell checking. It was underlying entire paragraphs with red wavy lines! And yet I still have spell checking. So who is doing the spell checking if I turned it off? A mystery!

Another mystery is that at first I could not find the place to turn off spell checking in the Windows 10 Setting panel. I had to ask Cortana. She’s a nice lady and all but I pride myself on being able to find things in computer operating system. I now know that spell checking is found under Settings->Devices->Typing. What threw me was “devices” (that makes me think of something like a printer, a separate device) and the lack of the term “keyboard” anywhere in the UX.

It’s as if the person who designed the Windows 10 Settings panel is a young AI just figuring out object from subject and parts from wholes. I keep running into little stumbles like this along the way as use Windows. I’m sure there is a punch list at Microsoft with a thousand tiny little fixes that are not mission critical but would make a big difference in how the end-user’s experience of Windows 10 flows.

So, good job Microsoft. Better than I expected. Keep it up. I suggest hiring a really mean, obsessive, and uncompromising UX designer and putting her or him in charge of Windows 11.

Endangered Random Numbers

Like infinity, randomness is as easy to misunderstand as it is useful. As an added bonus infinity and randomness are interconnected. I don’t think you can have one without the other.

I’m not a mathematician but I like to think about numbers. Take a look at this series of integers: 31415926535

It might look pretty random if your not a number geek. It’s starts with “31”— the country code for the Netherlands. And the format for international phone numbers contains 11 digits. So it could be a phone number. But actually it’s one of the most famous numbers of all: Pi (3.1415926535…)

(Maybe it’s also a phone number for mathematician in Europe. I have not tested that theory.)

Pi only looks like a random bunch of digits because we’re expressing the ratio of a circle’s circumference to its diameter in integers and integers are bad at representing ratios. Some rations are easily represented by integers (like 1/2 which evaluates to 0.5) but many important numbers (like Pi, e, and the square root of 2) are simply unworkable with integers.

Actually there is one number base where Pi can be easily represented by integers! Base-Pi! In base-Pi (where we are counting place values by powers of Pi) Pi is expressed as 10. But then the other numbers, like 4, become irrational. Yikes!

Because of Pi and how hard it is to express (outside of a formula or the greek symbol π) I have begun to doubt than any string of numbers are usefully random. If you run into 31415926535 you might say “Aha! That is the number Pi! I know what the next number is! It’s 9!”

If you can predict the next number in a series of numbers then the numbers are not random, they are well ordered and governed by some principle or function.

So what about 3958391848594819348593?

I just made up that number by typing as randomly as possible on my keyboard. Is it random?

To me 3958391848594819348593 is pretty random. But maybe it’s ratio of an aardvark to a zebra? Or it’s a prime? (nope—it can be factored to 3 x 3 x 86441 x 508811). Or maybe I can guess the probability of the next digit by looking at the frequency of the digits that I typed.

To make my number I only used 1,3,4,5,8, and 9. And most of the time after a “3” I typed a “9.” Given this small sample size I’d say there is a 2:3 chance that if I had typed another digit it would have been “9” and a 1:3 chance it would have been a “4.” It’s good thing I don’t create my passwords by playing “kitty on the keyboard”.

If you use a computer algorithm as a random number generator you get “pseudo random numbers.” That is you get numbers that look random, and are nearly random, but are produced by a non-random process, and if you know the details of that process you can generate the same numbers again. Generally the way pseudo random numbers are generated is by using a “seed” value. If you know the seed value and the formula you have the number. So it’s not great for passwords or for sampling or for simulations.

To get real random number from a computer you have to some kind of noisy system like random.org does (they use atmospheric noise). But that real random number could turn out to look non-random and be useless. For example a true random number from random.org between “1960” and “2016” is “1990.” That is definitely a year and millions of people have it as the birth year of someone in their family. It’s probably overed-used as an ATM or smart phone PIN and easily guessed.

You can’t use any number as a secure PIN that looks like a date–even if you generated it from atmospheric noise! Four digit PINs are terrible. There only 10,000 of them (0000 to 9999) and hundreds of them look like non-random dates. 1492? 2001? 1066? All famous years to just about everyone.

In the end, to be really useful, a random number has to be generated in a as random a manner as available, it has to look and feel random, it has to be statistically random, it has to be unrelated to your person, and it can’t be so long that it’s hard to remember or work with.

I have an intuition that the actual amount of useful random numbers that fit the above criteria over time is approaching zero.

 

In Defense of Bubble Sort

Bubble sort is an algorithm with a very bad reputation. Robert Sedgwick, in Algorithms in C, notes that bubble sort is “an elementary sorting method” and “it does much more work” than it needs to. Donald Knuth is much more harsh when he states “the bubble sort seems to have nothing to recommend it, except a catchy name…” in the Art of Computer Programming.

Like a an actor valued only for his good looks bubble sort is an algorithm an enterprising coder should probably not admire.

Why is bubble sort so bad? Why does decent computer society advise young and impressionable software engineers avoid it? Why am I devoting a whole blog post to the ugliest sorting algorithms?

TIL: You can learn more from the flawed than you can from the flawless.

I’m not going to tell you why bubble sort is so bad. But before you google it why not try to figure out on your own?

The truth is that modern programmers don’t usually implement any standard sorting routines on the job—even the good ones! Generally there exists a collection class or library that is well written and well tested. If you have a mentor she will tell you not to bother with your own interpretations of the standard body of algorithms. That problem as been solved.

However, I think you’re missing out. Knowing now to implement well known algorithms can help you understand when to use them, what their strengths and weaknesses are, and how to talk about them. Like in a job interview.

Bubble sort is a great place to start. In order to understand why it’s so bad you have to understand big O notation, how algorithms are classified, and how the ordering of input data impacts the performance of an algorithm.

It’s my opinion that bubble sort is only the most terribad sorting method in the platonic world of absolute randomly unordered data. Bubble sort is actually very appropriate for error detection or for data that is already mostly sorted. You know, the kind of data that you are likely to run into in real life.

First Day of the Year

Welcome to 2016 day one. Imagine if on today we could accurately predict what will happen in 2016? We could write a blog post with predictions and then gloat when they all come true!

Here are some of the outcomes I would like to be able to predict:

  • Which movie will win best picture?
  • Which candidates will win the democratic and republican nominations and from there win the Whitehouse?
  • Which football team will win the Super Bowl and which baseball team will win the World Series?
  • Which stocks should be bought and which should be sold?

But it’s hard to predict questions like these for several reasons. We don’t have all the facts and we don’t know how to rank the facts we do have. The facts can and most likely will change. And even if we have everything we need to make an accurate prediction, it would still only be a probability and even if an outcome is 99.999% likely to happen there is still a slim chance, 0.0001%, that it won’t happen.

One approach to predictions is to use the wisdom of the commons and just ask people what they think. This how opinion polls work. The problem here is that much of the time people don’t know their own opinions and how a question is asked creates bias towards an answer. Not to mention that people just change their minds over time which makes for stale predictions.

Another approach is to use the wisdom of the market and create a marketplace where people can bet on outcomes. This is really what the stock market is. The prices of Apple, Microsoft, or Alphabet shares aren’t a valuation of what those companies are worth today but what they will be worth at some point in the future. Sadly, the stock market has a spotty record at predicting the future health and success of a company.

And you can always ask an expert, usually the least accurate way to make a prediction, what she thinks is going to happen. There are enough experts out there that one or two, out of hundreds or thousands, ends up getting lucky and predicting accurate outcomes. There’s a movie out now about how 3-4 people predicted the mortgage crisis of 2008. Sometimes even if you know the future other people are not going to listen. They can’t! They are too invested in the present to make the changes needed to avoid catastrophe. And a thousand years from now we might lean that the financial meltdown in 2008 prevented a worse outcome!

Alan Kay and Abraham Lincoln both said “The best way to predict the future is to create/invent it.”

Given the difficulties involved in making accurate and reliable predictions and the nature of probability it best not to focus on guessing the future. IT is a more productive activity to help bring about the future that you want happen. Both Kay and Lincoln were pretty smart guys!

So here are some of the things I’d like to make happen in 2016…

  • I’d like the Internet to go faster so I’m going to do my best to speed up the performance of websites, mobile apps, and services I’m responsible for. Waiting for resources to load is killing all of us. We don’t need new tools and frameworks to speed up the Internet. We just need to do our jobs better!
  • I’d like there to be less misinformation and more accurate information available on the Internet so I’m going to encourage thoughtful, civil, responsible people to blog and post more. Maybe that will crowd out some of the noise.
  • I’d like more people to enjoy Math and Science and coding so I’m going to be more an advocate of learning Calculus in middle age, keeping up with Science at any age, and learning to code from non-Computer Science backgrounds. (I love music, novels, and movies but Geometry and Algorithms deserve appreciation too!)

I predict these tasks will be tough but I’ll make some progress—especially since a whole lot of other people are working toward the same goals.

 

Last Day of the Year

It’s December 31st 2015 and the so-called last day of the year. It sounds so final. 2015 is over and done with. If I had anything that had to be done in 2015 and didn’t get done, well, It’s game over.

But really it’s not the last day of anything important. Sure, it’s the last day of the 2015 tax year. And I’m sure there are some other legal entities that officially expire at midnight today. But these are just temporary rules we set up to police ourselves and not laws of Nature.

Nature has cycles and repetition and patterns but not calendars or tax schedules. And Nature’s cycles are much more sophisticated than our rules and regulations can model. None of our human calendar systems really fit the orbit of the Earth around the Sun or the revolutions of the Earth around its axis or even the orbit of the Moon around the earth. The tradition of ending and starting the year in the middle of Winter is an cultural one. It pre-dates the Romans but for our culture the Romans were the core influence. In celebrating New Year’s Eve we’re celebrating a Roman tradition that includes a tribute to Julius Ceaser and the two-faced god Janus. The Romans felt remorse about killing Ceaser so they kept his calendar and voted him into a god on January 1st.

So what does the last day of the year really mean for you and I? Is it something we should take seriously? Is it just an excuse to have a party at midnight? Probably.

Personally I believe the last day of anything (years, sprints, baseball seasons) is good for two important functions: First, for better or worse, it forces us to pause. Take a break. Spend time with friends and family and ourselves. Taking a breather is a great idea in a 24/7 society. When I was a kid TV networks shut down overnight. Even if you wanted to watch TV all night you could not. You have to take a break. We don’t have that tradition any more. Cable TV and the Internet never go offline (on purpose).

Second, for very good reasons, the last day of anything forces us to reflect. Did we get done everything we wanted to accomplish? I hoped to lose 100 pounds in 2015. That didn’t happen. Maybe I need to change my strategy? Maybe I need to change the goal? These are all good questions.

If I could share some advice for a happy and healthy 2016, this is what I would advise: Take frequent breaks. Spend more time alone. Reflect on the impact of your actions and your enthusiasms on others. Don’t take things too seriously. Before you hit submit on that blog post, tweet or facebook message pause and reflect.

Happy New Year!

Identity used to sign executable no longer valid

The last thing I wanted to do on a Sunday morning is write a blog post about an an Xcode executable problem. What I had planned to do is test my most recent Swift 2.0 SpriteKit game on my iPad and iPhone. Last night I got a “Identity used to sign the executable is no longer valid” error when attempting to run my code on a real device. Since it was around midnight I took the message a notification that bedtime had arrived. Besides, a quick search on StackOverflow would surely solve the problem and if I got on SO now I would be up all night nosing around.

This morning I got the same message and found a post on SO that started  four years ago with two pages of answers: The identity used to sign the executable is no longer valid. It’s been viewed 66K times and covers many ancient versions of Xcode. The top answer simply said to restart Xcode. Indeed, restarting, rebooting, or re-installing is always a great answer! So I tried the first two (restarting Xcode and rebooting all my devices) but no joy. And it’s a cheap answer. 99% of computer problems are temporarily solved by powering down and up the server or device but the root cause sits like a malignant elf in the machine, biding it’s time, ready to strike again.

So I figured it out. My problem, in any case.

Last week I was giving a talk at SUNY Buffalo (shout out to Prof. Hartloff). It’s just far enough away from NYC that I had to stay overnight. I took a MacBook Pro that I don’t ordinarily use for development. When I was working on my new game and testing it my iPad and iPhone (to get actual frame rates and the feel of touching the screen) Xcode discovered that I didn’t have an iOS development certificate on that MacBook and asked me if I wanted to revoke my current cert or copy it over from another machine. Since I didn’t have it I said revoke. Xcode did what ever it does and created me a new iOS dev cert associated with that particular MacBook Pro.

Note to Apple: There has to be a better way for Apple certified developers to manage their certificates in this age of clouds and connectivity. Can’t these certs reside on Infinite Loop server?

Enough backstory!

If you get the dreaded “Identity used to sign executable no longer valid” error and restarting your Xcode doesn’t work here are the steps that should fix it for good.

Go to your Apple developer account certificate overview and read carefully and completely about how to manually manage certs and provision devices. Once you understand what you need to do it’s relatively simple.

  1. Revoke and delete all the could certs and profiles of devices you no longer own that have build up over the years. Clean it all up.
  2. Then, following the instructions from Apple recreate your iOS development and distribution certificates.
  3. Re-provision your iOS devices.
  4. Download your certs and provisioning files and reinstall them into your Mac’s keychain.
  5. Clean and build your app.
  6. Now it should run on the iOS devices you’ve provisioned nicely.

Note to You: Xcode is no longer managing your certs and profiles. But that’s OK. It was doing a bad job anyway.

Post Script

Why didn’t I post this info to Stack Overflow? Because this is a pretty radical solution, not without risk. SO, for better or worse, has been come the place for copy and paste solutions that have not aged gracefully over time. Don’t get me wrong–I love Stack Overflow, recommend it, and use it all the time. But sometimes it’s not safe to post an answer to a problem that requires reading comprehension.

Lucky for you and me, my unpopular blog post will probably be the last item in your search for solutions to apple certification problems.

Quick Thoughts Apple Watch Sport, AppleTV, Magic Trackpad 2, iPad Pro

This year I had a lot of Apple product to buy. Other than buying a new iPhone every couple of years the rest of my Apple gear didn’t need updating. iMac, MacBooks, and iPads got a little faster, a little thinner, and a little more expensive but not so much that I really needed break down and acquire new ones. Being an Apple fan is an expensive hobby so it was kind of nice to have nothing new to buy. But then came 2015 and all these new toys!

Apple Watch Sport

Positives: I wear it and use it every day! I like the calendar, messaging, and fitness notifications. The iPhone and Apple Watch are very well integrated. It’s great to respond to messages and phone calls without taking out my phone. (I feel a little silly talking like Dick Tracy to my wrist.) I did like the game LifeLine (which is well integrated as a text adventure game) for a little while. I have a nice collection of wrist bands.

Negatives: I’ve turned off 90% of app notifications. None of the 3rd party apps, expect HipChat, have been useful. There is a lag when accessing some apps that makes me impatient. Charging the watch with the disk is a little weird. The sport wristbands bothered my skin so I’ve switched to an inexpensive leather band. I’d like to see more games like LifeLine.

AppleTV

Positives: The whole family loves it. Crossy Road was a big hit and the first time we’ve gathered in front of the TV to play a game since before the kids graduated from High School. The user experience is excellent. Apple Music and Photo on the big screen are awesome. AppleTV is our go to Netflix, Hulu, and HBO Go tool. I want to write an a game for it!

Negatives: I don’t have a 4K TV but I’m worried that AppleTV doesn’t support 4K. (Is that irrational FOMO?) Most of the AppleTV apps are not exciting us. The remote is hard to deal with except when playing a game.

Magic Trackpad 2

Positives: No more environment killing batteries required. The force touch feature is cool for previewing web pages from links. It bigger and more comfortable for gestures.

Negatives: I keep forgetting to use force touch.

iPad Pro

Positives: For me the iPad Pro is the break out hit of Apple’s current product line. The Smart Keyboard is not terrible and the Apple Pencil is amazing. I like to draw and it’s the best drawing experience I have experienced (and I have tried just about every tablet and stylus, including the Cintiq). For work the iPad Pro is 75% of a laptop replacement. It turns out for email, word process, presentations, spread sheets, messaging, and web browsing, I don’t need a complete desktop operating system in my lap–Spit View is enough. The screen is as book as my MacBook Air with higher resolution. Reading ebooks and PDFs is a pleasure. And watching movies and TV is like having a personal cinematic experience with surround sound at my hand. It’s simpler and feels faster than the Surface Pro or Chromebook. The Apple and Microsoft App for the iPad Pro work well. Byword, Coda, Procreate, Graphic, and Assembly are creative iPad Pro apps I recommend. I’ve never wanted to develop an iPad app before (iPhone was all that mattered to me as a dev).

Negatives: It’s big (but not heavy). I wish I could fold it in half. I want the keyboard to light up. I want a place to put the pen when I’ve not using it. Old iPad apps look ridiculous on the iPad Pro. Not all app support the split view feature. The Smart Keyboard doesn’t work well with developer websites like Cloud9 and CodePen. The Facebook iPad is stale. I’m afraid that charging the pencil in the iPad Pro’s power port will break it’s lightning connector off!

It’s a great time to be an Apple fan and an Apple developer. There are still plenty of problems with the Apple ecosystem. Apple News is slow and poorly designed. The App store has discovery, spam, and monetization problems. The Safari browser needs to catch up to Chrome. But Swift is the best programming language since SmallTalk and now opened source. So there’s that. It all evens out.

Four Tips for Xcode Storyboard Users


Apple’s Xcode Storyboard is both your best friend and your worst enemy when it comes to developing state-of-the-art iOS, Mac OS X, tvOS, and watchOS apps. Sometimes, what would be really hard, like associating a function with a gesture is quick and easy. Sometimes, what should be easy, like toggling a property, requires hunting down a checkbox in an inspector that only shows up with the proper object selected.

Below are three common problems with Xcode Storyboards and what works for me to resolve them. Xcode Storyboard evolves with every release: these tips work for Xcode 7.1.1.

1. Is your Storyboard rendering as XML source code and not graphics?

Screen Shot 2015-11-23 at 9.56.10 AM

Somehow, someway Xcode magically switches the view of a storyboard from Interface Builder – Storyboard to Source Code. No matter, just secondary-click on the name of the storyboard in the Project Navigator and select Open As -> Interface Builder – Storyboard.

What is an Interface Builder? Back when the Mac OS X was the NextStep OS Interface Builder was a developer tool for creating views. This ancient app lives on the deep sub-basement of Xcode and sometimes unexpectedly appears.

2. Is your app blank in the simulator?

Screen Shot 2015-11-23 at 8.57.25 PM

It might be that you need to select your main view controller in Main.storyboard and set the “Is Initial View Controller” checkbox in the Attributes Inspector.

This usually happens when you have deleted the default view controller on a storyboard. You know, when you want to start over.

If the default storyboard is still around you can drag the Storyboard Entry Point arrow from the original view controller to point to your main view controller.

3. Having a hard time control-dragging between UI objects and the Document Outline?

Screen Shot 2015-11-23 at 9.13.06 PM

You’re not alone! You can use the Connections Inspector to drag-create connections without holding down the control key.

In the inspector just drag from the circle to the controller that you want to your UI object connected with.

Make sure you have the correct UI object on the storyboard and/or in the Document Outline selected so you connect the right things together.

4. Auto layout constraint values driving you batty?

Screen Shot 2015-11-23 at 9.14.46 PM

Setting up constraints is one of the most unintuitive parts of Xcode’s storyboards. Part of the problem is there a several ways to do it and Xcode doesn’t always seem to do what you ask it to do. Don’t worry! You can use the Document Outline to selection each individual constraint and adjust it’s values in the Size Inspector.

Generally I use the Align or Pin menus to initially set the auto layout constrains for an UI object.

Then I use the Resolve Auto Layout Issues menu to make the UI object conform to the initial constraint values with Update Frames.

Finally, since the UI object always looks weird I select each constraint in the Document Outline, adjust it in the Size Inspect, or delete it and start over.

There you go Xcoders! If I thinking of anything else I’ll update this post!