Friday, September 9, 2011

Apple Seminar: In-House Application Development for iPhone and iPad

I attended an Apple seminar in Irvine titled : "In-House Application Development for iPhone and iPad". It was a good high level overview discussing all things iPad/iPod/iPhone for the Enterprise. 

Agenda  (Also See Attached):
  1. Exploring Possibilities in the Enterprise
    • How are enterprise customers using mobile applications?
  2. Design Best Practices
    • What makes a great app?
  3. Getting Started with the Platform
    • Developer programs and training materials
  4. Development Overview
    • Web App Development Overview
    • HTML5/Javascript/CSS3 - What is  possible with web technologies?
    • Demonstration - Building a web app 
    • Native App Development Overview
    • Frameworks and integration options  available for native apps
    • Demonstration - Building a native app      
  5. Distribution and Deployment
    • Channels and methods for application distribution
Notes:
  • The class was given by Allen Braham of Apple. He flew in from New Jersey. Attendees came from as far away as Las Vegas.
  • Case Studies:  Links are to pages explaining the apps, not company links.
  • Deployment
    • You can deploy up to 100 devices through a developer license. If you need more, you need a enterprise license.
    • Each enterprise license has an single "Agent" who names "Admins". Admins can invite developers.
    • The Agent is the only person who can do distribution. The Agent must have legal ability to bind the company in a contract with Apple.
    • Admins or the Agent must approve development certificates.
    • All three positions, Developer, Admin, and Agent can be the same person if necessary.
    • Universal Apps:  One binary for both the iPhone and the iPad.
  • Design:
    • Allen stressed making sure you focus on functionality first. Don't try to cram your desktop app into an iPad. Instead, think about the essentials and do the minimum first.  Worry about graphics after you have a working app.
    • A successful IOS project will have more design than coding. Think about what your users are doign that can be mobilzed to make their life easier.
    • Emphasis is on "Bite Sized Apps", not large ones. "Many Bite Sized Apps make an entire meal".
    • A lot of $$$ is spent doing training. You want small, easy apps so training becomes trivial.
    • Do paper mockups. Mockups should not look too real. There are apps like "App Layout" or "iMockups" you can also look at.
    • It's important that things not be polished because folks won't give feedback on a digital prototype like they will with a paper based one. (I agree!)
    • One major pitfall is to make a screen a certain way because of aparticular API they are using.
    • Every app that is developed internally starts with a User Mental Model: Objects, Task, and Concepts.
      • Object: What are we working with . (Clendars, Days, Weeks, Appointments, Reminders)
      • Tasks: What are the things we need to do. (Scheduling, Create, Edit,    Search)
      • Concepts: What are the high level conceptual things. (Searhching, Search, Filter)
  • Development
    • Web:
    • Web apps can be done in HTML5, CSS3, and Java Script.
    • WebKit is    the engine behind Safari.  Google Chrome uses WebKit. Blackberry and    Android use it as well.
    • There is a 5MB limit to SQL lite for saving offline data which is useful in "Airplane Mode".
    • You can use "Configuration Profiles"  They are generated using the    iPhone configuration utility.
    • Web Clips are a "Chicklet"  which links to a web page. You get a safari window with an optionally    hidden broswer bar.
    • Dashcode : Used for making web apps. Use for iPad/iPhone as well.  (Demo)
    • Native:
    • Done in XCode.  (Demo)
    • Hybrid apps:
    • UI Web view within an app.  You can take advantage of    native applications.
    • You can exceed 5 MB of data storage.
  • Multitasking:Added iwth ios4.  Only allows certain things:
    • Voice over IP (Skype)
    • Location
    • Notification
    • Task Finishing
    • Fast App Switching.
    • Playing audio in the background.
  • Push Notifications. Push notifications are available in the    enterprise as well.  
    • Don't send sensitive information over alerts.
    • You can ship a custom sound for notifications.
    • Your server has to maintain the id # of the devices you are pushing    towards. You push a JSON payload to the apple cloud notificaiton    service.
    • Only the last message is delievered. If you miss the message,. you    will only get the latest.
    • Push Notifications and Local notifications are only available    through native apps.
  • Accessories
    • To build an accessory, you have to join the Made For iPod program.
    • Bluetooth Glucose meter.
    • Infinite Periferels Sled. Uses 30 pin connector.  Infinite Periferals gives you an SDK.
  • Location Based Services:
    • GPS takes more power than cel tower.
    • Think about Precision, Power, and TIme
  • Local Storage:
    • SQL lite. (Core Data)
    • Property Lists : an Apple Standard. They can be serialized or    de-serialized to/from data strucutres very quickly.
    • Parsing Speed for the same data: 
      • JSON 416ms
      • XML 812 ms
      • Ascii Property List 140ms
      • Binary Property List 19ms
  • App Security
    • Hardware Encryption: There is hardware encryption on the iPhone, iPad. etc. 
      • AES 256 bit encryption
      • Always on for all data.
      • Instantaneious remote wip
    • Data Protection: All data at rest is encrypted using hardware encryption.
    • There is no shared memory between applications.
    • To brick the system, you just have to throw away the encryption keys.

Thursday, September 8, 2011

Have You Discovered Minecraft?

Something happened last summer. My kids discovered Minecraft.


At first glance, it looks like a throwback to the early 1990's.  It's a very simple looking  game where players manipulate  blocks to build stuff. It's a sort of digital version of Legos.  However, for all it's apparent simplicity,  Minecraft is a wonderfully entertaining game to play, and a great outlet to express your creativity.




Besides just building, there is complex ability to create mechanical devices through something called Red Stone circuitry which is similar to wiring and circuits. There is also a complex array of things that can be built from raw materials through "Crafting". You collect simple raw resources, put them together, and make more complex things like dynamite for blowing through rock.

Another amazing thing about Minecraft is how it came to be.  It wasn't created by some big gaming company or some large studio. No, it was started by a single person with a passion for games. The person is Sweedish programmer Markus Persson.  He uses the alias "Notch" in many of his on line posting. Notch speaks about creating Minecraft on the minecraft web site. Here is a quote from his explanation.

"I realized that a game that simple yet that dynamic had a lot of potential to turn into a really great game, and kept coming up with things I wanted to change and stuff I wanted to add. I had recently quit my job as a game developer to be able to focus more on indie game dev during my free time, and I was looking for a new game to develop"

Not only is it an great game and a great story. It has generated a ton of money. At the time of this blog posting 3,379,564 users have put down the €14.95 to become a paying player That means Notch's little idie game experiment has generated over 50,000,000 Euros!

The game has also inspired songs and movies. For instance, here are some music videos that give some insight on what is inside the game. These also do a pretty good job of showing the basic concepts of the game and screen shots of what you'll see.



Not only are my kids playing the game, but they are singing the songs as well. This one gets a lot of play in my house as well. It's a parody of a Tiao Cruz song. Instead of "Dynamite", it's "TNT". Ben says "TNT is fun when you hook it to red stone and make TNT cannons".



Of course, what game is complete without a Lady Gaga Parody.



Feel like you are missing out on a whole event that was happening without you knowing it? How about this, a Minecraft Movie. I actually find this one especially entertaining. The movie has quite a bit more blood and carnage than you'll see in the game though.