Learn to Code in Swift – a Book Review

I had the opportunity to read the book “Learn to Code in Swift – The new language of iOS Apps” by Kevin J. McNeish, over year end holidays. I’ve been looking for a good book on Swift, as I spent last summer translating my own app from Objective-C to Swift. While I really didn’t know what I was doing, I had done a literal translation as a means of trying to learn the syntax of the language. Since then, I have been trying to get a better understanding of some of the differences between Objective-C and Swift, so that I may be able to clean up my app a bit.

I had met Kevin at MacWorld some years ago, and had picked up his first iBook on Obective-C. I found it to be a good beginner’s book. With that as a background I was looking forward to reading this book.

Let’s begin with the structure of an individual chapter. Each chapter has a specific theme, and within that theme Kevin spends considerable time explaining the specifics and concepts behind that that theme. Unlike many books, he doesn’t assume that you are an expert in computer theory or computer science. While he doesn’t go too deep on the theory, he does explain enough of it to help solidify the concepts of the specific theme. Each theme is broken apart into specific concepts or, if appropriate, API calls. He provides simple to understand code examples so that the concepts stick with you. He also spends enough time explaining the Xcode environment, which is a great boon for someone just getting started learning iOS programming. I have yet to find a book that does this, so it was refreshing to learn a few tricks I had not yet discovered.

Quick aside: Years ago when I first started programming professionally, I had to share a development environment with the production system on an IBM midrange computer called the System 38. The customer I was working forward got upset with me, as I used to treat it like a PC, i.e. Write some code, compile, look at the syntax errors, fix them, write some more code, rinse and repeat until the program was done. My boss came to me one day, after getting many complaints that I was impacting the customers business with all my compiles, and said – “Michael, you only get three compiles to get a program finished. One for syntax, one for debugging, and one for production use.” I was floored… How would I ever do this, well the answer was, learn how the computer thinks. Desk check your code, and program flow – making sure to fully understand all the inputs, behaviors, and outputs. This advice changed the way I programmed. I feel that I need to understand, not only the big picture, but the details and how the operating system works.

In Learn to Code in Swift, Kevin helped me get a much deeper understanding of the actual behavior and reasoning around many of the concepts I had tried to pick up by converting my code last summer.

Continuing with the structure of the chapters, Kevin then provides a handy summary of all the points he just presented. I can imagine a companion book that just consists of those summaries. Perhaps this is how he structured his outline for the book. But I find myself going back to those pages to reinforce the lessons. He then provides an exercise to allow the reader to practice what they just learned. And finally, and I love this part, he provides a video online to walk you thru the steps making sure you got the exercise right. And as with most programming books, all the source code is available for downloading.

Overall, I found this book to be an excellent starting point for people wanting to learn Swift within the context of iOS programming. Now that Apple has released Swift into Open Source, I am sure that the language will grow and mature quickly. Having a good understanding of the fundementals of the language is critical to take advantage of it overtime. Kevin’s book certainly provides you with that foundation. Highly recommended.

An Enterprise iPad case/keyboard Review

I recently was approached to write a review of the PI DOCK iT Air iPad case with bluetooth keyboard. Given that I have had a keyboard case for every iPad I’ve owned (except my current one) I was willing to give it a try. I find that using a case can certainly increase my productivity when traveling, and as a touch typist I’ve always found that the iPad’s touch screen keyboard is a bit lacking. I also don’t feel comfortable talking out my emails or documents, so no matter how good a speech to text translator is, I tend not to use them.

Damaged Box

When the box arrived it had a gash in it, but it didn’t impact the case at all. Like all cases, it has a little bit of a delay in the typing especially when it first pairs with the Bluetooth, but that is normal. I can certainly type faster with the keyboard then the onscreen keyboard. I am sure that the tactile feedback makes a big difference for a touch typist. Similar to the other cases, the keyboard is slightly smaller than a normal Mac keyboard, which can cause a few typos.

Box Case and ManualCase in Wrapper

I found that it has an interesting design for changing angle of the screen. They call it a slideway, and it allows you to extend the hinge so that the screen can go either vertical or horizontal, and at a comfortable angle for your eyes. As someone who reads a lot of magazines and books on the iPad, the ability for a case to support vertical orientation is a nice touch.

Unboxed Case and Cable Unboxed Case Flat Side view reclining Side view no recline

Given that it is a case and keyboard, it doesn’t need much of a manual, and the simple manual (1 page back and front) does a good job of explaining all the features. I guess you don’t really need much more than that.

I wrote the rough draft of this review in Word for iPad so that I could test out the keyboard in a meaningful way. (Given that I took pictures with my SLR the final part of the review was done on my Macbook Pro.) The targeted user of the Dock iT is an enterprise iPad user, I feel this made the most sense. A little secret that the team at DOCK iT doesn’t mention is that the slideway’s ability to swivel the screen direction around, also makes it ideal for some games. I use Real Racing 3 on my iPad, and it works great for that game! Providing me with a stable enough base and a solid steering wheel feel. Very cool!

The keyboard is a bit small, but no smaller than other iPad keyboards I’ve used in the past. The plastic keys tactile enough, to allow for most touch typing, providing a nice little raised area on the F and J keys so that you can easily home your hands. There are a set of rubber feet and rubber nubs around the keyboard (I’ve lost one of the rubber feet, not sure where but after a week of traveling it got lost some point during my travels). The rubber feet keep the keyboard in place nicely on a desk (even after loosing one of them it feels stable and doesn’t wobble). While the nubs around the screen are designed to protect your screen from touching the plastic. This is good, but as a touch typist they do get in the way at times.

Like most cases, they include special keys for cut, copy, paste, volume controls, brightness, home button, and screen lock. These keys really increase the productivity on the iPad once you get used to them. One minor thing, the Home button seemed a bit finicky (not sure if this was a Bluetooth syncing issue or an iOS8 Beta issue). The reason I believe it may be beta related is that it appears to be app dependent.   They also a Caps Lock Indicator light, I’ve not seen this on the other keyboard cases I’ve used in the past – nice touch.

On day three of playing with the DOCK iT I discovered how to lay it flat. You can slide the screen on top of the keyboard. (Don’t forget to turn off the Bluetooth before doing this.) This is great for drawing programs and some games. It does, however, make the iPad much thicker than the Apple case, which I use at times, allowing me to hold the iPad like a book.

There’s one feature that is both a plus and a minus, and that is how well the DOCK iT holds the iPad is the shell.   I wanted to take the iPad out of the case to put it in a dock I have for charging. After prying the iPad out of the case with a letter opener, I ended up scratching my iPad’s back a bit. I’ve always prided myself in selling my old iPad while it still looks like new. I guess I won’t be able to do that with this one.

Another point on build quality. I was putting the case in my back pack and my employee badge got itself between the screen and keyboard, popping off a key. On a normal keyboard that would be the end of it, but on the DOCK iT Air I was able to just pop the key back in to place and it works. Nice.

Overall I am pleased with the build quality of the DOCK iT, it held up in my few weeks of testing.  Battery life appears good, I’ve only charged it once and so far have used it for two weeks with no required recharging.  The lip where the iPad sits is great for horizontal positioning, but in vertical positioning it can be a bit unstable, based on the screen angle. This is a basic physics problem due to the weight of the iPad Air and the rounded corners of the slot where the iPad sits. It works fine for a sturdy desk, but for not so much when reading a magazine in bed.

The team at PI also provided me with a cool sticker for the case – check it out.

Back of Case with Skin Screen with Skin

FaceFilter Pro 3.0 – Review

While at MacWorld/iWorld in April, I had the opportunity to catch up with the team at Reallusion.  They were showing their new FaceFilter 3.0 for Mac.  The program allows us average humans to do a lot of the same touchups on portraits that a PhotoShop expert would spend hours doing.   To say it is simple is to understate how easy and powerful it is.

Let’s walk thru a simple example of it… Using a picture I just took with the Mac’s PhotoBooth application.  Here’s the basic picture… I used a light behind my MacBook Pro in order to off set the very bad lighting in my office.

FF Pic 1

After you pic the file to import you are presented with two views of the picture, a before and after:

Screenshot 2014-05-10 12.09.32

The first step that you need to do, just like Reallusion’s Crazy Talk application, is to map certain facial features – this is called “Fitting”.  This includes the tilt of the head,

Screenshot 2014-05-10 12.12.59

each eye and eyebrow,

Screenshot 2014-05-10 12.13.59  Screenshot 2014-05-10 12.14.54

the shape of the nose,

Screenshot 2014-05-10 12.15.37

the mouth (don’t forget to toggle the close mouth check box or you won’t be able to whiten the teeth)
Screenshot 2014-05-10 12.16.59

and the contour of the face.

Screenshot 2014-05-10 12.20.40

The application will try to auto identify these items (as you can see in the before images above), but you can tweak it as much as you’d like (the second image is my mapping).  I realized how powerful this was overtime, when I saw that it allowed you to deal with profiles and other angles.

Screenshot 2014-05-10 12.20.48

Once we have all of this mapped the real fun beings, we can now do the makeover.  FaceFilter by default will offer a quick makeover template.. And as we can see here… It’s not too bad.  Already you can see it has gotten rid of some of the blemishes on my forehead. My skin is not as oily/shiny as it was in the original picture. My eyes are highlighted, with a nice twinkle in my eyes, and I have eyelashes.

Screenshot 2014-05-10 12.20.58

Screenshot 2014-05-10 12.21.44

We can tweak each aspect of the foundation, facial makeup and eye makeup.  Let’s have some fun by trying that now.  You can see some of the settings on the right hand side of this picture, but let’s talk about the clean:  I whitened my teeth, changed my eye color, changed my lips, and worked on overall skin tone.

Screenshot 2014-05-10 12.35.42

After working makeup, we can work on the shape of the face with the reshape options. The quickest weight loss program I have ever taken.  As you can see in the image, the rest of the image looks fine.. Even though we have reduced both the width of my head and the proportion.

Screenshot 2014-05-10 12.37.43

Finally you can add effects to the picture to really make it pop. Overall not a bad job with just a few minutes of playing around (total time 5 minutes).  You can spend much more time and really enhance the picture, and Reallusion offers additional brushes and filters to have an even more professional quality of the pictures.  I  highly recommend you try out the trial version from the appstore.  If you like it, I think the Pro version offers a lot of extra capabilities, and is really worth the extra few dollars.  Check it out and let me know what you think.   And thank you to John and Bill from Reallusion for providing me with a copy to play with.

review image

Review – Milk 2 (Desktop Tumblr)

A few weeks back at MacWorld/iWorld I had the pleasure of meeting Diego, the developer for the Desktop Tumblr app called Milk 2.  He was showcasing his app in App developer space, and was having pretty good traffic.  We talked for a bit, and he indicated the app should be released in the App Store on April 24th, and would I be interesting in beta testing it. I was not a big tumblr user, but I do have two accounts one for this blog: TriangleAppShow and on for my other podcast GamesAtWork.Biz.  Given that one of the features that Diego talked about was the ability to manage multiple tumblrs like you would your email accounts, I jumped at the chance to help beta test. To be fair, not being a big tumblr probably helped, because I could ask the naive questions during the beta.

So what did I think?  Overall the app does exactly what you want.  It takes the tumblr management experience and puts it into a desktop app.  It also allows you to look at the people you follow and easily scroll thru all the content (just like I do with my RSS feeds).  I found the interface clean and intuitive.  There are lots of additional little hints to help you understand if a post is link post, a picture post, or a video post.  If you are a follower of a lot of different tumblr blogs / feeds, this app is for you.  If you are comfortable with the web interface than it is probably not compelling enough to make you switch (except for the key feature in my mind, the ease of which you can swap back and forth between multiple accounts.

Switching between accountsAs you can see it is as simple as selecting the account you want to work with from the menu.  Adding a new account prompts you with a Tumblr log in and attaches it to this menu.

Since I only have two accounts the list is pretty short, but if you are managing many accounts, this is a great way of swapping back and forth.


The overall interface is very much like Apple Mail:

Milk 2 Overall InterfaceThe left most column is the various aspects of our account. The dashboard, the likes you may have selected, your own blog, with it’s appropriate VIPs and mutes, any followers you may have (so you can easily look at what they are posting), tags you have safe (remember Tumblr’s power is all the great tags so you can search for appropriate content, etc.) and Search History.  If you find yourself searching for content across Tumblr a lot, going back to these search histories to find things to include on your Tumblr is a great time saving feature.

And since Tumblr is about sharing and cross-sharing others content search history is a must have function.

The second (center) column equates to your messages related to the selected item (folder in mail terms) in the left column.  In the above picture we are look at all items so you see the Tumlbr staff picks, my posts, and any group I may be following.  The small icons on the left side of the center column matches the folder from where it came and the type of post it is.

The third (right most) column is the detailed message you are viewing.

Posting a new messageWhen you post a new message you can chose the type of post (just like you can on tumblr and you will be prompted with a content window:

Post Content Window

This window is allows you to compose your entry and add the various tags, etc. that tumblr expects.

Overall the app behaves as you would expect.  If you are a frequent tumblr and want a desktop app, this app is for you.

TapsBook App Review

This past Thursday, at the local Triangle Cocoaheads meeting, the creator of the app TapsBook showed his app and asked for feedback.  Sherwood (the developer) expressed that his love of photography and desire to tell stories with all the pictures he came up with necessitated a better way of build photo books.  The app is iPad only (sorry iPhone people), and allows you to tap and swipe your way thru building photo books that can be shared either on the web, on social media, or thru printing at your local Walgreens drug store.

I too take way too many pictures, and having just spent a few days at Kennedy Space Center watching the launch of the MAVEN mission, I thought this would be a great test.  I had recently used Google+’s AutoAwesome features to create some really exciting pictures of the launch, so TapsBook sounded like a perfect way to print a book of the picture.

As I mentioned above, it was iPad only, so I had to wait until I got home to test it. I hope they resolve this soon, as I don’t always carry my iPad with me, but the iPhone is my constant companion.  I was a bit surprised that the app was sluggish on my iPad Air, I had a full photo stream (1,000 pictures) and the UI stuttered a lot when working with the pictures.  I was able to grab a share I had created of the MAVEN launch and start working on the swiping up and down to say which pictures were the best.  So after getting over the sluggishness, I felt the design was pretty cool.

Modifying the pictures within an auto created storybook, did not work as I expected.  I had hoped I could just grab a picture and move it to a new location.  Also, the algorithm ignored the large group of pictures I had taken of the launch sequence itself.   It scattered the pictures over the last groups of pages, interspersed with other pictures.  I am sure I need to do a bit more study and hopefully I can correct this.  But given the ease of auto creation, I would expect an option to say respect sequence of the pictures.

When I wanted to share the book, it required that I create an account.  The app itself is free, but you are limited to 500 pictures uploaded and shared.  I get this, storage is not free and I respect that Sherwood and team need to get paid.  I also tried to print the TapsBook to Walgreens and was surprised by the 20 page limit.  I have never used their service, so I am sure that is a limitation of Walgreen and not of the app.

Overall, I think the app does well in making creation of picture books (or  stories) easy for most people.  It is free to start with, and if you find that you like it, I would certainly buy a subscription to support the developers and cover the disk space costs.  As for printing, my test book was 65 pages long, and I couldn’t choose which pages to cut, so I didn’t get that done.  Maybe I will find a good 20 page book to print soon.

I hope Sherwood and team come out with more apps, since the interface design is certainly intuitive.

Book review – “learn iPhone and iPad cocos2d Game Development”

Learn-cocos2d.com is the online home of the book “Learn iPhone and iPad cocos2d Game Programming” by Steffen Itterheim. This book is designed to help the beginning game programmer understand the cocos2d game library, which is a cross platform library that is targeted at 2d games.

Steffen does a great job of introducing you to the basics of game development while also showcasing various game types. The includes not only development concepts, but also includes information on other libraries and resources to help you get started with graphics, audio, and marketing.

Steffen includes not just code snippets, but working games that he uses to explain various concepts. Each of these are well commented and structured so that you can get started with your game.

While Steffen focuses exclusively on iPhone and iPad programming, the cocos2d library has been made available for android also. So if you are looking at developing games, you should check out the book, and get gaming!!

Review of new iPad

I hadn’t planned on doing reviews of hardware on this site, but here we go,

I’ve been using a new iPad for almost a week now, and the screen in incredible, but that is not the thing that I am enjoying the most. LTE support is amazing! My old iPad was a 3G device and that really did change my habits for using a mobile device. I tend to use my iPhone much less as a consumption device and almost never as a creation device. With the 3G on my old iPad I started using my iPad everywhere. Being able to grab a podcast or book right before boarding a flight means I carried less books and magazines on board.

But with LTE I am now consuming much more, the speed is faster than my home network, and I am starting to use the device for more content creation. Having full access to my home machines, and data, means I don’t need everything with me, but I can get to it and use it. I am writing this blog almost exclusively on the iPad now.

Yes, the retina display is nice… Really nice… But having true high speed access is going to change the game.