Finally Back to the Meetup

Last night I made back to one of my favorite Meetups – Triangle Cocoaheads. The format of the meetup is that there are a few speakers and then people can stand up a showcase an app they are working on. Josh Johnson and Jay Thrash gave two great presentations – Josh showed off how to build a AVFoundation playlist application and Jay showed off Square’s PonyDebugger.

Being a podcaster and video editor, I felt that Josh’s explanation of AVFoundation was great. I had the aha moment that most this framework is just like doing a multitrack editing experience. You build up a composition, which contains tracks, and within tracks you have the actual audio pieces. You can apply mixers to the track, which is an array of params which apply attributes which manipulate the sound. We focused strictly on volume controls, because the demo application was about creating a cross fade between songs. Josh then showed the application he is currently working on where utilized all he showed us. As soon as the video is posted I will link to it. Great job!

Jay then took the group thru PonyDebugger. This allows you to do realtime analysis of your app, either on the simulator or on device. Everything you want to know about it can be found at GitHub. I’ve been looking for a tool like this, as it provides three basic features: Network traffic debugger, Core Data Browser, and View Hierarchy Debugger. The way this is achieved is by adding about 7 lines of code. Amazing!

The session then turned into a discussion on CocoaPods. Now I’ve not used this before, so it was interesting to learn about this, but when the discussion went to CocoaPods vs. GitSubTrees, and GitSubModules it went over my head. Mainly because I am writing my code from scratch with no real third party libraries. Also, I’ve not been working with others, so needing to keep multiple people on the same level of code across machines and libraries is not relevant. But a pretty good discussion ensued and while the group didn’t come to any consensus of which is best, I think this was a great new add to the Meetup.

I am looking forward to getting back into this meetup.

Graphical Lessons at this week’s Cocoaheads Meetup

On thursday night, a group of 26 developers got together at the offices of TekSystems in Raleigh to talk about iOS development. This meetup group is sponsored by both TekSystems and Two Toasters (From Durham, NC). For those who are looking for work as an iOS or Android developer, TwoToasters indicated that they are currently hiring so drop them a note at Careers.

The 26 people in the room ranged from teens to people who could have been their grandparent. Was great to see this expanse of ages, and I was impressed at the discourse and questions across all ages and participants.

The Triangle Cocoaheads who run the meetup made sure we had a great set of presentations. You can watch video of all the presentations over at their website.

The first talk was from Kevin Conner, this was all about the collection classes. While most of us are familiar with NSArray, NSDictionary, NSRange, and NSNull, Kevin did a great job of explain various collections and new syntax in objective C. NSIndexSet, NSCountedSet, NSAutoreleasepool, NSOrderedSet, and NSSortDecriptor, and NSCache were all brought forward to the group. Kevin provided examples of when each could be used, as well as information on how they effective app performance. Definitely a video you want to check out for more information.

Up next was Eric Lanz. Last month Eric showed off a organizational tree app he was working on. The crowd last month was wowed by the performance of the graphics, so Eric’s presentation this month was on Multithreaded graphics. Eric has proven that you can do things on iOS that Apple claims can’t be done. I personally have been a bit concerned about how much space graphics take up in my own apps, so I was fully engaged when he gave a few tips for programs to help reduce your graphic files; however this was only a minor part of his talk. Eric provide tips for building your graphics pipeline in your app, so that you can spin off the drawing in separate threads. This allows your to optimize the number of times your draw things, and also kill drawing if the user quickly moves on to a new screen. The goal is to keep your app response, while providing the user informed with enough graphical content. Amazing!

A few of his tricks include building a Dispatch Serial Queue – this will allow you to have a task to run on a worker thread and/or using the Dispatch Global Queue – which on iOS you can’t create yet, but you can get the existing global queue. However, if you use these queues you need to remember to push your graphics context, or you will crash!

Finally, Jay Thrash went thru an architectural “Unburdended ViewControllers”. A key point that I got from his presentation was how the Model-View-Controller approach can cause problems of maintainability overtime, especially as it relates to accessing data. Jay referenced a book I am currently working my way thru from the Big Nerd Ranch called “iOS Programming – the Big Nerd Ranch Way”. This book calls out the idea of a Store – extending the MVC model to MVCS. This abstraction of data allows you to simplify the maintenance of you apps, and deals well with data stores that can be on the device, or via service calls to other systems. A good example to understand this approach comes from the article “Skinny Controller, Fat Model”, talking about Ruby over six years ago. Check it out and don’t forget to head over to Triangle Cocoa to watch this video.

After this we went to the App Showcase of the night, were local developers show off what they’ve been working on. I didn’t catch everyone’s name, probably because I was nervous – I was going to show off my original app – “Wasted Time” and a work in progress for a game I am developing “Traders vs. Trinars”, but we saw a great example on localization. This app demoed changing the orientation of your language for Arabic and Hebrew, i.e. languages that read Right to Left. And a demo from BA3 on their mapping API – Amazing!

Well, I am looking forward to next month’s meeting. Until then, keep on coding!

Triangle DevOps meetup

I’ve been going to more and more meetup’s lately. Seemingly at least one a week. The latest one was the Triangle DevOps Meetup. What an interesting session. We were at the offices of Teradata, and Felix, the presenter, works at Teradata. He took the time to walk us thru setting up our own OpenStack cloud.

Probably the best advice that Felix gave was the first time you get the installation you should work, is to delete the entire setup and redo it, because it was probably a fluke.

Felix decided to do a live demo of this complex setup. Of course it didn’t work out, but it was great to see that no matter how much experience you have in setting up these environments, it is hard. And mistakes are made, which in my mind is exactly why DevOps is so important for people. Get it right, version it, test it, measure it, and automate it.

I am not sure that the demo wanted to show that, but to me, the message was received. DevOps and continuous delivery would have solved this problem, but it wouldn’t make a good demo.

Triangle CocoaHeads Meetup

Last Night I had the chance to catch my first meetup of the Triangle Cocoaheads. What a great meetup, and I certainly plan on attending this more often. Our hosts over at Two Toasters, a local App development company, had a nice downtown office fully supplied with Pizza and drinks. The room held probably 25 or so local iOS / Mac developers and started with a quick set of presentations. The first one from Dirk was all about UIResponder. If you are not familiar with this class on iOS, take a quick peak when they post the videos over on the Triangle Cocoa website. UIResponder is used to handle touch events, as an example, and understanding the chain so that the right code processes the right event is key for developing under iOS.

Next we had a great presentation by Dim Sung Thinking on something that was added to Mac OSX with Lion, that is rumored to be coming to iOS6, called Auto Layout. This allows you to have your interface to appropriately adjust itself based on screen resolutions and rotation. While Interface Builder in the past has allowed you some control on how this works, the new Auto Layout features allows for thing like relative positioning.

Then our host – Josh gave a great talk about how to do automated testing (as a follow up to the Continuous Integration session that was presented last month). Josh has been learning about using Calabash for Cucumber as a way of automating UI testing and the company Less Painful‘s device cloud for testing rotation. If you aren’t doing some level of automated testing, you are probably either letting your users test for you in the AppStore, or you aren’t doing enough testing. I believe automated testing of mobile apps is going to get much better over the next few years. A couple of things that I liked about calabash, was the very natural scripting language for writing your tests, however it does seem that device format would require new scripts because if you want to touch the screen you have to provided the x/y coordinates.

We then had four demos of Apps people have been developing.

Up first was Roy (sorry didn’t catch the last name and can’t find him on the meetup site to give a formal shout out to). He’s only been programming for 6 months, and like many of us is starting out by writing apps that he needs himself. The first was very cool, it is called Static Fix (btw, both are mac apps). Static Fix actually runs in the background and keeps your sound card engaged so you don’t get that little pop when you first plug in your headphones. The second app is called Time Tracker, a multiple stop watch tool for tracking your work. I can’t wait to see this one evolve.

Next Sam how has developed a Tea brewing / tracking app. Version 1 has over 60,000 downloads world wide and allows your track how you brew your tea, rate it, and track it. Version 2.0 is adding some great UI enhancements and a much better way of defining blends. If you are a tea drinker, this app is for you. I am hoping to get Sam on a quick video for Triangle App Show in the future.

Vishal came up next and showed his app which is called YouSeek. It is a youtube channel viewer that organizes videos and makes it much easier to find and track the videos you want to watch and share. While it does not yet allow you to remember all those channels or users, the idea should catch on quickly, and I cant’ wait to see the updates as this one matures.

Eric from OrgBook then demoed a conceptual app that will eventually allow you to do org charts and visualizations. Written in custom build OpenGL classes, that allows for fantastic ways of organizing corporate hierarchies.

And finally Bruce founder of BA3 showed their 3D mapping app for the iPad. This was the first ever 3D aerial mapping platform for the iPad. Amazing graphics with stream data and layers. I hope to get a link to their video and share it here. They are actively looking for developers who want to use their platform for a show case app on the iPad.  You can find out more about their work at http://ba3.us .

Overall this was a blast.. and I plan on being there each month.

Tonight’s TechCrunch Mini-Meetup

When is a mini-meetup a blow out!  When there are over 600 people signed up.  I am really looking forward to heading over in a few hours  to the TechCrunch Mini Meetup, the this number they have just announced that it has moved to Bay 7 (and to address the potential for rain.  As I’ve been saying on this reason for this blog, the RTP area is a vibrant location for start ups and for mobile development.  If you see me tonight introduce yourself, especially if you are a local mobile developer.  Let’s see how we can show off your work!