31 Great Days of iOS

It’s been a while since I had the time to post anything but I wanted to share this great summary post by Chris Risner of the Microsoft Azure team where he is focused on mobile.

Chris blogs each day in January about a specific topic iOS developers may face in their applications.  The post is titled 31 Days of iOS and each post is a detailed tutorial on a specific topic that day.  

Day 1: Getting set up for developing for iOS
Day 2: An inro to Objective-C
Day 3: Creating your first iOS App
Day 4: Working with Multiple View Controllers and Storyboards
Day 5: Programmatically showing View Controllers
Day 6: The Delegate Pattern
Day 7: Making Network Requests
Day 8: Performing Posts and Setting Request Type
Day 9: Handling Text Input
Day 10: Singletons and the AppDelegate
Day 11: Saving Data using NSUserDefaults
Day 12: CoreData
Day 13: The TableView
Day 14: The UIWebView
Day 15: Connecting to Built-In Apps
Day 16: Handling Device Orientation
Day 17: Using the Debug Console
Day 18: Opening your App from a Link
Day 19: Showing the User’s Location with Maps
Day 20: Displaying Info with Maps
Day 21: Using the Camera
Day 22: Using the Gallery
Day 23: Using Background Threads
Day 24: The View Life Cycle
Day 25: The Application Life Cycle
Day 26: Setting up Push Notifications
Day 27: Sending and Receiving Push Notifications
Day 28: Activity Indicators
Day 29: Advertising with iAd
Day 30: Adding Analytics to your Apps
Day 31: Submitting your App to Apple

Chris is speaking at CocoaConf DC in March, in case readers are planning on attending.  I will be there.

Microsoft Bets There Will Be Touching Everywhere

Surface

I think Jeff Atwood over at Coding Horror is right on with his recent take on the Microsoft Surface RT:

Surface is just like the first iPad in that it has all the flaws and rough edges you’d expect in a version one device. But it is also like the first iPad in that there is undeniably the core of something revelatory and transformative here – a vision of the future of computing that doesn’t sacrifice either keyboard or touch.

Reviewers think Surface is intended to be a tablet killer, but it isn’t. It’s a laptop killer. After living with the Surface RT for a few days now, I’m convinced that this form factor is the replacement and way forward for the stagnant laptop. I can’t even remember the last time I was this excited about a computer. The more I use it, the more I think that touch plus keyboard is the future of all laptops.

How wonderful it is to flip open the Surface and quickly type a 4 paragraph email response when I need to. How wonderful it is to browse the web and touch whatever I want to. And switching between the two modes of interaction – sometimes typing, sometimes touching – is completely natural. Remember when I talked about two-fisted computing, referring to the mouse and keyboard working in harmony? With Surface, I found that also applies to touch. In spades.

Microsoft is betting big here, probably the biggest since Windows 3.0.  The company has been trying to have a successful phone business for years now but adoption has been less than stellar.

This goes beyond using touch on the Surface devices, it extends to laptops as well. The release of Microsoft Surface RT and Windows 8 mark not simply a me-too tablet, but the marriage of old school Windows with a new touch interface and possibly marking the next step in the evolutionary scale of computing.

It’s been rumored for a while that Apple would combine Mac OSX and iOS to a single operating system that would give Apple the opportunity to create MacBooks and iMacs with touch interfaces.

Microsoft is the first to market with an operating system with the ability to combine the traditional laptop with a touch interface.  Intel is getting behind this and supporting PC manufacturers such as Acer, Toshiba, Lenovo, Asus and others to produce super light devices with hybrid tablet and laptop capabilities.  Scott Hanselman has a great post discussing his use of an Intel Ultrabook prototype with some follow-up in a second post and how it compares to the norm.

There is real innovation going on here but will users want to combine touch and typing in a laptop format?  I think so if the hardware is good and the UI responsive.

I see the Surface, unlike the iPad which is mainly a device for consuming content, an equally good creator of content.  I have tried many times to write a blog post or even a fairly length email on my iPad, but the process is difficult.  The keyboard under glass doesn’t do it for me as a touch typist so my speed and accuracy pay the price.

If Microsoft can continually drive innovation in the Surface and keep the PC hardware manufacturers producing really good hardware (read like Apple) they’ll have a nice 1-2 punch with their offering.  Software developers should feel compelled to take advantage of this and create great productive applications.  Everybody wins, but…Microsoft has to keep focused and listen to customers.

I just wonder how easy it will be to accept touching my laptop screen.  I always ask my daughter to keep her fingers off my MacBook Air screen when she’s pointing something out to me.  Hopefully the glass on these devices will mask fingerprints well during use like the way the iPad does.  Time will tell.

The Story Begins and Ends the Same for Microsoft and Windows 8 Success

Steve ballmer microsoft surface

I’ll be the first to admit to being critical of Microsoft over the years.  I used to be heavily invested in their technology stack but became disenchanted when they consistently seemed to keep changing direction, dragging developers along for what was often an unpleasant ride.   

I think Microsoft has a real chance here with Windows 8 and their Surface devices to be a competitive presence in this growing tablet and ultra book market..but only if they can play it well and I’m not convinced they can.

Seriously?  Windows RT

 
I am a pretty experienced developer with 20+ years of professional experience and have been using Windows since the original Windows 1.0 and before that with MS-DOS.  So, yeah..I know my way around the Windows world, but the marketing department needs to get their act together and unify the message.  I mean the name Windows RT, seriously, who was the clueless marketer who came up with this name?

One of the biggest challenges I faced when starting to look at the new Microsoft Windows OS and Surface devices was what all these seemingly interchangeable names meant.  Let see, we have:

  • Windows 8
  • Windows RT
  • WinRT
  • Surface
  • Surface Pro
These are confusion to an experienced technologist.  How is your grandmother going to know the difference?  Actually, she shouldn’t have to care.  The marketing message here is off to me, it should be devices running Windows.
 
Windows RT is a terrible name.  What does RT stand for?  I bet most people have no clue what it stand for, let alone that it is the operating system that runs on the new Surface tablets.  Did you know Windows 8 will run on the upcoming Surface Pro?  Did you know that your Windows 8 applications will run on the pro version of Surface but won’t run on the newly released Surface tablet running Windows RT?  Confusing eh? 
 
This leaves the mystery of WinRT which is the Windows Runtime that runs on both Windows 8 and Windows RT.  Clear isn’t it? Please clean up your marketing message, it means you can’t tell a good story.

Developers! Developers! Developers! 

I think most people familiar with this neanderthal-like rant by Microsoft CEO Steve Ballmer back a few years ago:

This video was pretty popular from the time where a sweaty Ballmer chanted about developers and how important they were to the company.  

I think this is as important today if not more so, but I’m not convinced the company is in line with this thinking today.  If I were running Microsoft I would make sure there was an easy and affordable way for developers to get their hand on a Surface tablet long before general consumers hand them in their hands.  Wny?  Well, one disadvantage Microsoft has over virtually all other tablet platforms is the lack of applications.  I know that Apple didn’t have to do this when the original iPad came out, they didn’t have to since there was no competition.  

Today is a different story though, with Apple and over 500,000 applications and there are more on Android.  Not all the apps for Apple and Android run on tablets but a large amount do.  Microsoft is the underdog gorilla in the fight here, they need to be more creative.

Microsoft should embrace developers and get the tools into our hands.  As someone who has iOS apps in the App Store, I know first-hand that its fine to test applications in a simulator but the real test comes on the hardware.  Microsoft should be getting hardware to interested developers for at least a nicely discounted price, let me know I’m important to you.  I would buy one for sure.

It’s the chicken and the egg problem; people won’t buy new hardware unless there’s apps, there won’t be apps until the hardware is in user’s hands.  Developers are taking a risk spending time to create apps that may never get used.  It would show great intentions and support if Microsoft help developers out with hardware, on a loaner basis, steeply discount or outright free.  I doubt the last one would happen but maybe for people who have an app they are bringing to market now.

Early Feedback

I’ve seen lots of feedback about Windows 8 and Windows RT on Surface.  I am not going to rehash anything that is written elsewhere other than to point out a few things worth checking out.

As someone who has seen the Surface tablet and work with it, David Pogue says the platform needs apps.

Mary Jo Foley has a great roundup of Surface reviews on her ZDNet blog.

Finally

Bottom line, this platform needs applications if anyone will purchase a Surface tablet.  Applications will not come without developers and Microsoft needs to open up their arms and coffers a bit and welcome developers loudly as they once did.

Windows 8 is the next iteration of Windows, the upgraded Windows 7.  The user interface is new and a bit confusing, developers need to be writing more apps to fill the Windows Store with the applications users expect on any platform today; Twitter and Facebook clients, Instapaper and all the great apps on Mac and Android.  This will level the playing field and where there is competition there is innovation.

The story still begins and ends with developers, developers, developers.  

Why Open Source is Better for Your Business than Microsoft

I think everyone in the technology field knows Microsoft, you either love them or you hate them.  It seems there are more haters these days than those that love them and it is often times their own fault.

Commerce Server

My problems with Microsoft have been rooted around a project I had done for a client many years ago based on Commerce Server.  For those of you that don’t know, Commerce Server is a product which allows users to setup a complete commerce system based on the Microsoft platform.  It also allows developers to heavily customize it to meet the client’s needs.  Oh, and it is expensive.

This version of Commerce Server relied heavily on XML and XSLT for rendering pages.  Microsoft was high on XML at the time as it was the technology to solve all of our problems.

Along came .NET and the next version of Commerce Server was all based on .NET and XML was not the hotness any longer so they re-wrote from scratch with all the bells and whistles of .NET.  What did this mean for the client wanting to upgrade to the new version of Commerece Server?  It meant, there was no upgrade.  It meant their entire code base was garbage and had to be rewritten from scratch.

This was certainly a dilemma.  Do they reinvest in Commerce Server and build their site from scratch, hoping a future version of Commerce Server would not require the same rewrite?  My recommendation to them was to toss out what they had and rewrite their system in plain old ASP.NET and C# at the time.

I think this worked out well for them as they don’t have to rely on something that Microsoft could drastically change down the road and leave them in a bind.  Sure, Microsoft could change ASP.NET but at this point it is a safer bet it won’t change that drastically.  It is at this point I really became suspect of Microsoft and buying into what they tell developers is the next great invention that we should use.

Enter Silverlight

Microsoft has been all about Silverlight for the last couple years as their solution for cross-browser, cross-platform rich Internet application development platform.  The idea is we write it once, we run it everywhere.  I think we’ve heard this one before (Java, I am looking at you).

The Microsoft Professional Developer’s Conference is happening now (or just ended) and news coming out of Redmond is they are pulling back on Silverlight and HTML5 is the way to go.  An interview by MaryJo Foley with Bob Muglia from Microsoft tells the tale:

Silverlight is our development platform for Windows Phone,” he said. Silverlight also has some “sweet spots” in media and line-of-business applications, he said.

But when it comes to touting Silverlight as Microsoft’s vehicle for delivering a cross-platform runtime, “our strategy has shifted,” Muglia told me.

So what happens to all of those Line of Business applications these companies have been working on?  I don’t think I would bet my business on any continued development of this platform in the way it was originally sold to developers.

It leaves some folks wondering:

silverlighttweet

This appears to be another dead-end for developers.  Even if it’s not, the waffling about its future would be enough for me not to use it.

Open Source to the Rescue

I was a Microsoft developer for more years than I care to admit and I have been bitten by their change in direction more times than I can count.

The real solution is to control your own destiny and build solutions with open source components.  Speaking as a developer who leverages Ruby and Ruby on Rails, I feel much better about supporting a client and knowing the technology decisions I make for them are safe.   Since it is all open source, I am free to make changes to the framework as I need now or down the road.  The open source community is vibrant and even the smallest projects are active, but even if they die out..you still have the source to do with as you see fit.

Microsoft rolled off projects involving IronRuby and IronPython to the Mono folks and now these projects will live to see another day.

I really don’t care if Microsoft dumps products (or changes strategic direction, same thing) but don’t leave users in a bind.  These projects should be given to the community to move forward and to support.  Silverlight could easily be moved down this path, given to a community to evolve and keep those developers who put so much time and effort into.  Developers would have a way to leverage their codebase and not be left to explain to product owners how they have invested in a dead-end product.

This might start to build trust again in Microsoft by those that lost confidence.  But, open source puts the power and the future of the frameworks and tools we use in our own hands.

Where Are We Without Community?

communityI came across a really interesting blog post yesterday with a recurring theme.  It was by developer Dave Newman titled, Leaving .net.  Does it sound familiar?  It does to me and after reading Dave’s post, the reasons are a familiar sound.

So many .NET shops have their heads buried in the sand, developing mounds of software with antiquated principles:

A company I worked at once had been operating for years under the assumption that it was OK for software to take months to integrate and deploy; they had never heard of continuous integration. They thought it was normal to rewrite your application from scratch every 2 years; they had never heard of Test Driven Development or iterative development. These techniques have been proven to significantly raise the bar on quality, cost of development, cost of maintenance and general morale. Turns out you can still find, in this day and age, software practitioners who haven’t even heard the terms.

It has been shown that Test Driven Development (TDD) improves code but it seems the .NET community fails fully embrace the concept.  I have been part of many .NET projects where stakeholders simply refused to spend the time doing TDD, not when deadlines need to be met.  They were simply too naive to know that deadlines would still have been met but with better code.

My last .NET project was led by a developer who was the master of “not invented here” syndrome.  The project was a unique eCommerce application originally architected 5 years earlier and consisted of some complicated code.  The developer, who didn’t want to spend the time to learn the system, wanted to rewrite the code his-way so he could understand it.  His way was easily worse and did not take into account all the side effects his way may have introduced.  I am glad I am not the only one to witness this:

I have also seen on numerous occasions developers build their own libraries and frameworks to solve well understood problems in curiously terrible ways. The endless rebuilding of data mappers, logging code, object resolution mechanisms, messaging systems and web frameworks adds up to a massive waste of time, effort and potential. I’m not talking about public collaborative efforts, I’m talking about in house “Not invented here” syndrome. This is what happens when you have a community cut off from the world. A community that doesn’t talk to each other and work together. This is what the .net community is.

Communities exist everywhere but none stronger than those in the open source world.  I can’t think of a more diverse and deep group of developers than those using Ruby.   Developers in this community rally around each other, support each other and the projects they create.  If there is no support, no community development the project simply dies off.  One can use Ruby on Rails as a great example, go ready it 1600 contributors.  This is project done for the community by the community, not reinventing the while but improving it.

Has Microsoft ever done anything like this?  No. The closest I can think of is IronRuby and they have since turned their back on that project.   Microsoft tends to treat developers as something to be fed, who pushes out updates as fast as possible to get the pack on to the next thing.  If you look at Silverlight going from v1.0 to 4.0 in a blaze or WCF moving fast to its current state, developers can keep up.  Most of the time we can’t keep up because we are fed and are not allowed to also cook, like in the Ruby community.

This is the same with ASP.NET MVC:

Last year Microsoft released a new web framework called MVC. It’s not new by web standards, it’s not even new by .net standards as the Monorail project had been alive for years before. Yet people were waiting for it. People were waiting for Microsoft to deliver it to them. There were already open source MVC web frameworks and an army of .net developers who could have collaborated to make them great but nothing much happened. It took a handful of developers at Microsoft to make their own framework and now MVC is the hot new thing.

But they did not:

This new web framework is better than the previous one and is quickly becoming the de-facto. Microsoft released the source. Someone created a github repository. This repository is being watched by 30 people and 5commits have been made to it. 5 commits! Why is this number so horrendously low? Because Microsoft don’t take patches. They’ll release a new version of MVC without anyone’s commits. Worse than that, everyone will start using their new version and the github repo will just start again.

The little community that exists for Microsoft wants to see success but Microsoft won’t let them.  Microsoft doesn’t believe in community, they may say they do but actions speak louder than words.  In the end, they are only hurting themselves.

Microsoft has been touting open source for a while now, not because they want to but because they think it will improve their bottom line.  Isn’t that what they’re all about?

Imagine if Microsoft would have opened up ASP.NET MVC completely and let the community create it?  Yes, I know they released the source, but that does not make the project open source.  Open source means they take contributions from the community and the code is created and owned by the community.  Big difference.

Why Leave .NET?

Well, for one, to make a statement.  If all .NET developers accept the status quo, nothing will change.  Secondly, to see what it looks like from outside the .NET world, how other developers live and breath.

You don’t have to actually leave the technology, maybe explore others and gain some experience.  The experience could make you a better developer and bring back something to .NET, possibly to help Microsoft become aware of a better way.

Where to go?

Well, almost anywhere else.  I like the Ruby community but I have heard Python has a great community.  I would bet almost any open source community will welcome you.

What’s the answer?

I developed C# code since it’s inception and wrote many lines of C++ using Microsoft Visual C++ before that.  These are really good technologies and we can’t just write them off.

I hear developer’s stories all the time, how they dropped .NET and moved to technology X.  The Ruby community itself contains many ex-.NET developers who have seen the light.  How can we make Microsoft see the light?  I don’t know we can, they need to be looking.

It comes down to this, Microsoft is losing without a community.  I am referring to the passionate community, like the 1600 who created Ruby on Rails.  I think as more and more developers gain experience and see how other communities function, they will leave and move on.  It won’t be overnight but it will happen unless Microsoft is willing to change.

So to answer the question, where are we without a community?  The answer is no where.