Category Archives: Posts

Current events, first impressions of new technology, and general thoughts

What’s New In iOS 8

Apple iOS8 LogoWWDC is upon us, and while hearing about the design of new Trash icon in OS X Yosemite is entertaining, the real substance of the talk for me is the new iOS 8 dev features. While this update isn’t as radical as last year’s iOS 7 update, there is a lot of great new tools coming out that will allow developers to make new and innovative applications. Below you’ll find the highlights from iOS 8 developers page and what they bring to the table. There are a lot of topics, but I’d like to highlight the two most interesting pieces first. Let’s run through the list!

The Top Two

The most dramatic updates to iOS 8 highlighted in today’s announcement are App Extensions and Swift. They are tools that change how developers will go about building applications.

App Extensions – “An app extension (or extension) lets you extend custom functionality and content beyond your app and make it available to users while they’re using other apps”

People will now have ways to make the iOS experience there own. By leveraging Extensions this opens up the platform for users to customize how they would like their operating system to function. While Android has had this to some extent, there users typically weren’t aware of the functionality. Apple is going to put it front and center, and provide a mix and match style that will resonate with consumers.

For App developers, this is going to make interacting with your everyday user much easier! Frequent users of your app don’t have to load up the full application to access the simple parts they interact with the most. We’re going to see an increase in clients wanting extensions built into all their applications in order to increase brand interaction.

Swift – “Swift is an innovative new programming language for Cocoa and Cocoa Touch. Writing code is interactive and fun, the syntax is concise yet expressive, and apps run lightning-fast.”

No one saw this coming. A completely new programing language that can create iOS and Mac applications! While I’m looking forward to reading Apple’s 500 page tutorial on how it works, I have to be a little sceptical as to what its future will be. Apple is making a lot of promises with this, but it could change iOS development from this point on.

For App developers, this tool is going cause a lot of heated discussions in the coming months. I don’t think that this is going to replace Objective-C anytime soon, but it does have real power behind it. In two years time, this has the potential to be the rule, not the exception. The syntax at a glance looks simple to understand, so I think we’re going to see an influx of developers in our community as a result. The lower the barrier for entry language creates the potential for more people to pick it up. Right now the barrier of entry language for Objective-C is high. I know a lot of Javascript developers that wouldn’t touch it, but Swift? They might be ok with the syntax since it will look very familiar. I have the feeling that the iOS world is about to get a huge influx of web developers in the next year because of Swift. We’ll have to give this some time to settle, but it will affect the iOS community for better or worse in the years to come.

Quick Thoughts On Other New Features

There are a bunch of other new features with iOS 8. While not as groundbreaking as the last two topics, they still warrant a quick chat. These features are either upgrades on existing frameworks or Apple implementations of mainstream third party libraries.

HomeKit – Control your home from your phone! This isn’t a new concept and a lot of developers have already implemented this functionality on their own. Nothing too innovative here, but it will bring that functionality into the spotlight. We’re about to see a lot more applications and devices in this space as a result.

CloudKit – The power of the CLOUD! While developers will be happy to see this new option available, I don’t think its going to lead to many innovative ideas.

Manual Camera Controls – This is a welcome update to the AVFoundation library. Having more controls for the camera will make building this functionality in Apps faster and give even more diverse options for the end user.

PhotoKit – Having better ways to access and modify photos on the user’s phone is a great! Working with the camera roll has been a pain in the past, and this hopefully will give an easier way to access that functionality.

Touch ID – While 99% of applications will not need fingerprint identification, it is a cool way to login into an app. It also has the added bonus of feeling like James Bond.

Handoff – Being able to start a process on one device and continue it on another is a nice feature. I can see a lot of application leveraging this, especially universal games. Users will love this and developers will build it. Pure convenience.

HealthKit – There are a lot of health applications out there, and having a central place to aggregate all the data will be a great tool moving forward. For now FitBit and Up, are going to be quite happy. However, I have the feeling that this will become a bigger topic of discussion once we hear more about the new iPhone 6 and possible iWatch.

SceneKit – Game Developers rejoice! You will now have a basic platform to build 3D games. While SpriteKit was a great addition in iOS 7. It didn’t bring much to the table for 3D specific games, this could change that.

SpriteKit – Originally introduced in iOS 7, SpriteKit is getting some quality of life upgrades. I have the feeling this completes the original feature set that Apple wanted to get in last year, but they didn’t have the time to do so. This will make 2D game development even easier and maintainable.

Metal – Games on iOS 8 now have a way to directly access the hardware with Metal. Previously everything was done through OpenGL, but not anymore. Metal is going to allow developers to build amazing looking graphics that are more inline with traditional portable consoles. Expect the Infinity Blade of the next generation device to look amazing.

So That’s iOS 8

Overall, I think Apple is giving some great new tools for developers. From new frameworks to programing languages, there will be a lot of change coming in the next year. While the official iOS release won’t be available until the fall, we can expect some ground breaking new apps on the horizon in 2014.

Specialize?

As a developer, there will be a point in your career when the questions arises… Should I specialize in one area or start to branch out into a new technology? Its an interesting question that leads down the rabbit hole into even more questions. There is no right answer and most of the “correct” answers are situational. So lets take a look at why the question is even being proposed in the first place.

One Job, One Device, One Language

When entering the field as a new developer, more often than not you’ll find a job working with one technology. Most, if not all, the developers I know started out this way. It might be iOS for iPhone, Java for Android, or Web Standards for browsers. The reason you’ll start this way is two fold.

1.) You don’t have enough exposure to programing… yet

2.) Jobs that realistically require more than one technology are rare.

As a new developer, the more you code the more you learn. Every new pattern or method gives you deeper insight into what it means to be a programmer. From here you can slowly begin to understand the craft. Building knowledge in a single language is a much simpler and an easier path than trying to learn two in parallel. Its simply too daunting by comparison. Eventually you’ll come to understand that syntax isn’t as important as the ideas behind them, but this takes time and experience.

As an employer looking for a new developer to add to my team, I want someone well versed in the language my software is in. I want each member of my team to be focused on that technology to ensure that highest quality of code and keep the project under budget. This doesn’t leave much time for cross technology coding.

Personally, I would encourage any starting developer to pick a current technology and learn it through and through. Speaking from my own experience, focusing on one technology will only build the base for learning others faster. As with anything, the more you learn the more experience you’ll have to pull from when investigating something new.

Building Blocks

Technology more than any other industry is constantly evolving. Regardless of how popular a language is today, it won’t be around forever. Talk to someone who has been in the industry more than 10 years, the chances of them saying that all the languages they knew when they first started are still common are slim to none. I’ve been apart of the professional community for 6 years and my first job was building Flash applications. If you asked me today I couldn’t tell you the last time I opened Flash. However I could tell you how to extend a class, write a case statement, or talk about design patterns. That knowledge carries over, and ends up making the building blocks for future technology. The more concepts you understand in a given language, the more you’ll understanding programing.

Keep Learning

Its easy to stick with something you know. Lots of people stick with one technology and go deep. Learning a new methodologies, libraries, and design pattern for that given language. This is great but things that are specific to a given language might not be the best investment of time. Take a second, and look up the Papervision library. If you were a flash developer in 2009, I’m sure you will recall it. If not, this was a popular 3D library at the time for Flash. If you google it now, you’ll find that http://www.papervision3d.org/ is for sale and the community is a ghost town. A lot changes in 5 years, but other times technologies stick around for awhile, just take a look at Java. This is the nature of our industry, but what never changes is hearing about new ideas and the concepts we learn. At the end of the day that is what every programer takes away from their project.

 

The best advice I’ve found is this, regardless of what programming path you choose, keep learning! There isn’t a home in our industry for developers who don’t adapt and grow.  The more exposure to unique programing ideas you have, the faster you’ll understand new ones.

 

Specialize in learning.

Android Studio, First Impressions

Android StudioIts been a few weeks since itscome out, but I wanted to take some time and talk about Android Studio. Android developers have wanted this for a long time. Honestly this IDE has been long overdue . Most Android developers, or at least from what I’ve experienced, use Eclipse. While it gets the job done, something has to be said for having an IDE that is truly focused and refined to what you’re developing.

The most direct comparison of the path Google wants to go down is how Apple positioned xCode. An IDE created by Apple for developing Mac and iOS applications. Sounds like a solid plan to me, and it must make sense to Google as well since they are doing the same thing with Android Studio. With tons of new hardware coming in all shapes and sizes, Android needs a better IDE to manage the demands of the market.

Android Studio seems to be the answer we’ve been waiting for, but does it solve the primary issues plaguing the growth of Android development? Lets see…

How Easy is it to Get Started as a New Developer?

Regardless of the platform starting to develop for a new platform can be intimidating, Android is no exception. Currently setting up Eclipse with the SDK is the prefered method among the development community. While Google’s SDK download now includes Eclipse, with the SDK already installed, it still requires a working knowledge of Eclipse get everything setup properly for development and maintaining that environment. Android Studio rolls everything into one install, including the SDK. Also it will prompt when updates are available and automatically setup your environment. Overall I think its much easier to get started with Android Studio.

Practicality of Testing Multiple Devices?

android-studio-device previewOne of the biggest issues with Android is viewing your work across multipledevices. Android Studio attempts to address this issue by showing multiple previews of your layouts. While this is a nice step forward, its still far from being optimal. Currently you can view the devices in preview mode when building the XML layout file, but thats the extent of the functionality. Unfortunately there still is not a solid way to test your application across multiple devices optimally without 3rd party software. This leads to something we aren’t getting, a better simulator. Its true that the Android Simulators have gotten better, but the physical device is still significantly faster. I wasn’t expecting this with Android Studio, but would have been a great nice to have.

Easy to use with version control? (Git/SVN)

Probably oneof the strongest features of Android Studio is their integration with Git and SVN. Personally all my projects are managed through Git, and having it built into the IDE has been great. I’ve been using the EGit plugin for Eclipse for some time now, but having Git built into the core of the IDE makes for a better experience.

Interface problems?

This is one of the biggest disappointments of Android Studio. Google had the opportunity to create an brand new IDE with a simple and elegant interface, instead we got a reskinned Eclipse. Most of the functionality and buttons do what you would think, but once in awhile it can become hard to find where you need to go. For example, I have a thread on Stack Overflow with, as of now, 9 upvotes based on where you go to change what the default device for a project. Its kept in a odd place and it defaults to simulator instead of the online device, something that should be opposite. I think they’llhave to put in some quality of life changes to the UI before they hit 1.0 so it can be more user friendly and intuitive.

Is it Stable?

I’ll start this section off with a quote from Google.

“Caution: Android Studio is currently available as an early access preview. Several features are either incomplete or not yet implemented and you may encounter bugs.”

In my opinion its fairly stable. I’ve had the application crash a few times, but nothing more or less than the frequency of Eclipse. Also keep in mind this is still in preview, so there are bound to be issues. As new features get added and bugs get fixed the quality of the application can only get better.

Quick Summary

Android Studio has a lot of positives and in a few years time will be the default IDE for most Android developers. Its feature set is vast and more things are being added every month that make it better and better. That said, I foresee adoption being slow. Right now Android Studio is still in its early beta stages, and will need a 1.0 before it starts being accepted in the mainstream. For new developers, It might be worth starting to use this build now before learning eclipse. Both have caveats, and if this is the future, its worth learning now if you’re fresh. For current developers, I’d stick with Eclipse for now but be aware of this IDE and know that down the line you’ll more than likely need to make the switch.

 

Starting Up

Hey all, after a recent hiatus I’ve decided to restart the site from the ground up. I still plan on posting about new technology and projects, but I’ve also decided to add some coding tutorials and code snippets that I’ve found to be helpful. Hopefully you enjoy reading and learning from my posts!