Thursday, November 20, 2014

Mobile 1 Summit 2014

I attended the Mobile 1 Summit in San Francisco as a speaker.  



 Some pictures from the summit are here including photos of some of the slides.  The videos are available on the conference web site : http://m1summitsf.splashthat.com/  This was quite the break from the usual types of technical conferences I attend. It contained a lot of high level information and discussion panels about future technologies. Here is some interesting press coverage.



Here are some notes I jotted down from the sessions.

iBeacon - Alex Bell, Jeremy Osen, Aurelie Guerrieri
  • Apple released iBecons 2 years ago.  Alex has been looking at them for 4 years.  But, why are they not everywhere?
  • There have been no marketing materials saying that beacons have changed anything.
  • Alex feels it's difficult for big companies to track how much the beacons are being used.
  • Jeremy - Has not yet seen a fully scaled program, but they are working
  • One of the guys (name not listed) said that he implemented iBeacon in Paris and was able to drive new subscriptions to a club.
  • Alex worked with a sports company that was able to increase ticket upgrades by using iBeacons.  They would send a message up in the "nosebleed" seats to let people know they could get a better seat.
  • Another customer was selling chicken. If folks stood by a display for more than 45 seconds, they sent them a message with a link to a coupon.  They used to do this with flyers "proximity marketing".
  • Apparently WiFi was put into trash cans in London and folks were upset about privacy.  There is some fear about iBeacon as well.
  • There was a buzzfeed article about Titan in New York that was written to scare consumers.
  • If there is no app to pick up the beacon, it doesn't pick it up.
  • Question : An iOS engineer who worked on core location asked about delay.  It can take up to 15 minutes to know the phone is in a region.  A: You can use core location to get a rough location and scan more when you get close.
  • Question : Do any beacons have WiFi in addition to Bluetooth.  A: This adds complexity and cost instead of making them cheaper and easier.  The beacon just sends a number, not information that you push to it over the internet. 7 ]


Oskar Serrander - The Next Era Of Search is Mobile






  • Quixey is a mobile search company.  The "other" search company based in Mountain View Ca.
  • He mentioned the problem where you get an invite from Linked In and you click on it but instead of taking you to the Linked In App, it takes you to a mobile web browser where you have to log in, and probably forgot your password.
  • Some folks have a folder on their phone just for travel apps. Some have downloaded it multiple times since they don't use it very often.
  • "The mobile experience is broken"
  • In the beginning, there was limited web usage and apps.  The original phone was about accessing the web.  Later, a whole host of apps came out such as snapchat, instagram, camera, maps,. etc.  The apps came to rule our phone and they were nothing like the web.
  • Within 2020, it is expected that mobile internet will reach half the world.
  • You can't talk about the internet without talking about apps.  We access the internet through apps.
  • The average user has 29 apps on their phone. 90% come from the top 25 list.
  • 58% of apps are zombies.  They have never been reviewed. No one has downloaded them.
  • 65% of users don't download anything.
  • 4 companies own apps that generate 70% of the unique visitors to the top 25 mobile apps.  Google, Facebook, Yahoo, Apple.
  • It's important to these companies to maintain their share of our attention.
  • Google is now a  travel agent, a car seller, etc. They are competing with others.
  • The cost for marketing apps is increasing all the time.  Installs are a value metric.  You are "buying installs".
  • Search was left behind as a solution for this new era.
  • Search is still matching keywords to static content.  It hasn't really changed.
  • Blue links were never really meant for our fingers.  The mobile world is about buttons.
  • By Mobile search, they mean device search, but also apps that are out there, and also mobile web.
  • Quixey started as an app search company.
  • They search through multiple apps and give you a summary from different applications.
  • They are the sole search provider for Alibaba in China.

Matt Bar - Group Head, Emerging Payments Mastercard
  • The US is both the Best and the worst of global payments.
  • Their goal is to create platforms that partners can develop on top of.
Panel - The Wearable Revolution
  • Kurk Workman - Owlet : They monitor infants
  • DJ Jayalath - Athos - Clothing that monitors your heart
  • Ari Roismann - CEO Glide - "Dick Tracy Watch"
  • Aza Raskin - VP Of Innovation At Jawbone
  • Moderator - Farthan Tawar from Pivotal Labs
  • What do you do with the data? Can you make suggestions?
  • Owlet - You can let parents know that the oxygen levels are persistently low, but they can not diagnose a problem without FDA Clearance.
  • Athos - You can do things that a personal trainer does, but not something a Doctor does.  You can show BPM, but not full heart monitor waveform.
  • Gilde - Product development is data driven.
  • The goal for the Owlet guy is for every baby leaving the hospital to have a wearable.
  • Ari - Text based information isn't very human. Much of our communication requires intonation. 
  • The latest phones have 17 sensors.  Will all of this become software within the phone? 
  • Owlet - THey have a smart sock.  You can't put a phone on a baby's foot.
  • There will always be a premium for a vertically integrated experience.
  • 10 Years in the future there will be sensors in every shoe you buy.


Building The Mobile Workspace - Moderated by Raina Kumra. CEO Juggernaut

  • What are the trends you have seen in the mobile workspace.
  • Tom WIlliams, CEO BetterCompany - Folks have smartphones now.
  • Mohawk Shroff, Head of Engineering Linked In - We are seeing a shift in the way people work. Data at linked in shows an evening out of work. Folks work in morning while commuting, then do things at their desk, then i the evening folks doing things from Tablets.
  • The workplace is no longer 9-6, there is usage all day.
  • If someone is really good at what they do, you will be lucky to hold on to them for 3 years.
  • There is a war on talent where talent is winning.
  • Jobber is "Tinder For Jobs".  They enable real time chat for recruiters and candidates.
  • Values about work have changed.  There's no longer a source of sufferage saying that you have to stay there.
  • The moderator has held 7 jobs in the last 6 years.
  • Data Scientists are always getting pinged.
  • Mobile has allowed folks to bring their own solution into the workplace.  This means there is a ton of noise. You have to deploy to a large number of users and get a critical mass of users in an enterprise.
  • The enterprise has a kill switch on your app.  It's good to reach out to them so that if they get a storm of traffic they know that it's OK.
  • There is fear with bringing new things into the work space.
  • Recruiting is a social activity.  Ladders, Linked In, Jobr. will not replace the human element.  The #1 source of hires is referrals. 32% of hires come from employees suggesting their friends.  This is still an offline process.  Personal connections will not replace this. (Alexandre Douzet)
  • The reason slack worked, was because most apps that used that model, didn't work for the individual. You have to work for the single player first.
  • The viral loops makes Apps like Slack and Hipchat work really well.

Matt Schnittker's Talk -
My talk was about the mobile tools we have at the studio and how they evolved from the ideas of Feeds, Forums, and Chat.



Friday, September 5, 2014

Some Common Programming Languages

People will often ask me questions like like "How is C different from C++?",  "What makes folks use Python instead of Perl?", "Are Java and Javascript the same?", "What is an HTML programmer?"  Of course, these questions could have long, detailed, technical responses. Though, I find usually that's not what folks want. They simply want a one or two sentence simple explanation.   So, I put together this languages matrix to try and answer these simple questions with simple, one or two sentence answers. I hope it helps.



LanguageTypical UsageNotes
General Purpose Compiled Programming Languages
C Low level system programming. Older language used for Linux/Unix kernel.The foundation of UNIX and the the father of Java, C++, ObjectiveC and C#.  Developed in 1969. Used heavily in the 1970's-1990's.  "Procedurual" (Not Object Oriented)
C++Common language for performance centric tasks. Large API / Vendor support.Object oriented additions to C. Very widely used. High learning curve. Lots of features. First standardized in 1989.
Objective CPrimary development language for Mac OSX/iOS development.Another object oriented language based on C. Has a "dynamic runtime" while C++ is static.  Has notably different syntax than C, C++, and Java.
SwiftSupported by Apple for Mac OSX/iOS development.A newer option from Apple for native iPhone and Mac development.
General Purpose Interpreted or Semi-Compiled Languages
JavascriptAny dynamic web page. Not the same as Java! Built into web browsers.  Used for dynamic web pages in HTML5 as well as almost every web site on the internet.
JavaCross platform and enterprise development.  Minecraft!Well known.  Taught in colleges.  Considered "High Ceremony" since lots of code is required even to do small things. Somewhat similar syntax to C/C++.  Generally does not perform as well as "compiled' languages like C, C++, Objective C.
C# (C-Sharp)Java-Like language for Microsoft Windows development
Runs on a VM just like Java.
PythonA great general purpose scripting language.  Capable of a wide variety of tasks such as  web sites,  database communication, games, and image processing. Integrates with many entertainment industry software packages like Maya, Houdini, and Nuke. Scripting language with clean readable code. Easy to learn and maintain.  Surpassed Java as top learning language in schools.
PerlSystems administration.  Text parsing and data manipulation.Powerful scripting language. Can do a lot with small amounts of code. Often referred to as a "write only" language because loose formatting constraints makes it difficult to read others code.
PHP"Back End" web pagesGenerally used as a server-side language for websites. Code is executed on the server per page request and is usually written to output HTML or other browser interpreted data.
Data Description Languages
XMLData description and transfer language for data files and web sites.
HTMLWeb page description language interpreted by web browsers
JSONData description and transfer  language for data files and web sites.Considered by some to be easier to read than XML. Often used when returning data from web sites.
Application Specific Languages
SQLUsed for database queries to relational databasesRuns within many different brands and types of relational database.
Bash/Tcsh/CshQuick utilities.  Systems administration. Unix automation tasks.Scripting language that runs within the specific UNIX shell environment.
MELApplication specific language for Maya. Used for Maya plugins and automation.Scripting language that runs within Maya. Being displaced by Python.
HScriptApplication specific language for Houdini. Used for Houdini plugins and automation.Scripting language that runs within Houdini
CudaNVidia specific graphics processing language. Used to optimize applications to run on the graphics card. (GPU)
GLSLOpen GL Shading Language. Used in real time tools to offload graphics processing to the graphics card (GPU)Replacement for OpenGL

Thursday, August 21, 2014

Getting Started With Google Classroom

Google recently a new feature to Google Apps For Education - Google Classroom.  Google Classroom is a learning management system that advertises the following features --

  • Paperlessly Create, Collect, Grade, and Return assignments.
  • Real time activity stream for announcements, questions, and  feedback.
  • All assignments on a single page and materials in Google Drive
We took a quick look at creating a simple classroom and adding some content and students.

Creating A Classroom

Creating a classroom is easy.  Log in with your google ID and go to https://classroom.google.com. You will see a plus sign by your login name to create a new class.




You will be asked for the class name and the class name and the class section.  This can be something like "English" and "7th Grade." In our example, we are adding a programming class taught by the technology department.  The name you choose will be used to create Google Drive folders so you want to choose carefully.  You can change the name later, but you'll need to rename the google drive folders that were created.

This creates a simple class with an home page.




As you add more classes, you can get to them from the "hamburger" on the upper left.


Google classroom will automatically create a google drive item to store your content and to receive assignments from students. 

Adding Content To Your Class


Once your class is created, you need to start adding content.  You can add files, items from Google Drive, or YouTube videos.  You can also post links to external content. The front page of the classroom will have stream where you can put data.  In our example classroom, we borrowed content from external sources.  Here is a lesson added from YouTube.



Adding Students To Your Class

Now that you have some content,  you will want to start adding students. An important caveat to know here is that all students will need to have an e-mail address within your Google domain. You have two ways to add them.

1) Manually add them yourselves by inviting them through the Google Classroom web page. I found this method to be rather tedious.
2) Send them the invite code from google classroom and have them enroll themselves.

Once you have some students, you an start trying it out in your class and seeing if it works for you.

Monday, March 10, 2014

Mac Tech 2013


Star Trek Bridge!
Folks form http://newstarship.com/ were there to display their Star Trek Bridge.  You could sit in the chairs and get your photo taken.  They were looking for volunteers to help with their effort to make the touch screens interactive.








Notes From Talks

Dave Maclachlan - iOS Development at Google. How we make it work.
  • They use Sen Test, OC/Test, SC Test
  • He wrote Cover story for code coverage
  • Unit tests are the best documentation your code will ever had.
  • Things Apple has done with XCode 5 are really nice.
  • Having the number of tests without having coverage is not very useful.  XCode can use GCov.
  • There is a NSUserDefaults setting that configure observers for code coverage.
  • When working in real time at 60FPS, you have 16 msec per slice. Mac dispatching takes 4 of the 16 Ms so he uses C++.
  • Good speaker, but the material was pretty deep and specific to unit tests and coverage.

Gwynne Raskind - Intro To Internals
  • Talking about the internal hardware design of the Mac from a high level.
Peter Hosey  - Building Great User Interfaces
  • Users are broken in that they are afraid of the computer.
    • They have been trained by bad interfaces.
  • Respect The User
    • A person is not a machine and should not be forced to think like one.  The machine should conform to the user, not the other way around.
  • Help The User
    • It is never the user's fault. The app should guide the user. If the user does the wrong thing, it's your fault.
    • Everything you tell the user should be actionable - even if the action is "wait".
    • Gestures are verbs, akin to keyboard shortcuts.
  • Problems in your app are your fault, not the users.
    • Kill Gestures: The problem with Gestures is that you need to know that they are there which means you need a tutorial.  This means it's best not to use them.
    • Kill Dialog Boxes : Dialog boxes will yank the user from the think they are trying to do.  Dialog boxes can be a problem.
    • Kill Documentation : If you have to explain your application, there is a problem.  Fix the app instead of explaining the problem.
    • Care about the little things - they all add to become the difference between good and great.
    • An example of little thing - setting the keyboard type to use the "@" symbol on the login screen.
    • Another Example : Dialog box on empty trash.  For one, it's a dialog box. Secondly,  you have to cancel to know what you will do.
    • Test your app on regular, non technical users.
    • Kill Verbs that can be replaced with nouns.
  • Not a bad talk. Peter always does well. Would be good to see this from an actual IXD person though.

Jim Rea; Constructing Lexers With Ragel and Objective C
  • Gave a talk in 2010 about maintaining a code base. This year he's rewriting Panorama in Objective C.
  • He writes tool used by Spreadsheets, Databases, Programming Languages.
  • Allow the user to create formulas that will operate on values. Take a string and convert it to tokens.
  • Parsing -> Tokenizing : Tokenizing can be done by char, NSScanner, NSRegularExpression.
  • Also can use lex, yacc, bison, etc.  He's using Ragel which targets Objective C and supports Unicode.
  • Ragel recommends that you install Mac Ports and use that to install their application.
  • Showed examples of writing grammars and then handshaking with Objective C methods to parse formulas and numbers.

Vendor Forum : Adobe
  • With creative cloud being in the cloud, how is it deployed?
  • Creative Cloud Packager
  • They have tools AAMEE, AUSST. They come together.  Home base update server.
  • RUM - Remote data manager. Remotely invokes the Adobe updater.
  • XDA - Exceptions deployer.
  • Adobe CS4 would have taken 400 floppy disks.
  • AAMEE 3.0 caused some problems for educational users.
  • With creative cloud, the apps still live on the user's system. They are still installed locally. Users are not required to sign in to each machine. You do not need to be on line to use the software.
  • Services such as shared storage and sync settings are in the cloud.
  • Creative cloud licensing for the enterprise is serial number based.  The serial number based solution does not count your launches. Adobe does not monitor what is launched when.
  • Talk of using serial numbers for installs. - They are "serialized". You can be serialized with a small number of users. They are going to trust you to manage your users on your own and not exceed concurrent users.
  • This was a good talk if you are someone who has to deploy Adobe products to a large enterprise. I had no idea they had so many tools to help manage deployments.
  • There was some mention of using Sassafras to manage license usage.
  • Currently they expect that you need at least 100 users to be an Enterprise account. Though, they know there are people that are smaller and want to work off line.

Consuming Web API's the TDD Way : Luis Solano @luisobo
  • Going to talk about good practices for networking code and real life testing scenarios
  • Also going to talk about underlaying principals of TDD
  • It's unfortunate that TDD has test in the name since it's really a design tool.
  • He is using a testing framework called "QE" which has an "it" block. Uses Objective C.
  • Tests must be isolated form undeterministic and slow dependencies such as the network, changing data, or databases.
  • Tests should not be coupled with implementation details.
  • You don't want to have failing tests while modifing both the tests and the implementation.  If you do, "git reset --hard"
  • He released an open source tool called Nocilla that allows you to "stub the internet".
  • Mentioned "Charles Proxy"
Joe Workman : Automating Business
  • He started as developer working at companies, and doing projects on the side.
  • He started charging and folks bought things. He then wrote a book.
  • If doing something more than one time, figure out how to automate.
  • Suggests using a Ticketing system instead of keeping things in E-mail.  He uses ZenDesk.
  • Suggests against using PDF for documentation. Use live web pages.
  • He suggests using Video Tutorials as much as possible.
  • The video should talk you through the work flow.
  • When hiring support staff, it's good to recruit customers. They are already your advocates.
  • There is a package maker for Terminal commands (similar to mac ports).  http://brew.sh
  • XCode ships with xcode-select, xcrun, xcodebuild
  • He went through and automated everything in his life with Ruby.  Before Ruby, he used Perl.
  • There were some automation talks at WWDC this year.  Changes in Apple script eleminated need for the TELL statements.
  • XCode Bots are a new thing in XCode5. They are new.  Allows some build automation like Jenkins.
  • Test Flight and Hockey App can be used to deploy tests.
  • He's never met the support folks that meets for him. One in Vegas one in Minnesota.  He pays his guys $15 per hour. 1099 contractors.
  • Cocoapods.org - Cocoapods allows you to use other folks open source tools in your project. "Ruby Gems for Cocoa".
  • It's worthwhile to hire contractors to build more stuff. What about hiring junior people cheaply, like High School folks.
  • Fresh Books is a good program for running your business.
  • They use BitBucket for tracking bugs.
  • Some talk of Tcsh, "Fish Shell", Csh, "Oh My CSh", Zsh.
  • joeworkman.net

Jeanette Lee : WiFi Design 
  • #rukusgirl  jlee@ruckuswireless.com
  • Channels 1, 6, and 11 suck
  • Lots of AP's are on these channels and they collide.
  • Power drops as an inverse square of distance.
  • With the 802.11 protocol, if someone else is on their channel, they have to stop transmitting.
  • Each channel is 20 Mhz.  There is now a 5Ghz Spectrum.  There is a lot more spectrum and more capacity.
  • The individual channels are 20Mhz wide and do not overlap.
  • These frequencies are also used for RADAR. If you hear something on that channel that sounds like RADAR, you are required to vacate for 30 minutes. These are called DFS events.
  • You can have more access points not using the same channel.
  • They use multiple antennas - called beam flex or beam forming. They try to make it directional.  Another trick is to try and transmit slightly out of phase and get a node where the person is sitting.  You can get 3db gain this way.
  • The client has to support beam forming and give feedback to tailor the signal.  Though, there are no clients that do this so they have to do implicit beam forming where the AP Guesses.
  • 802.11 MCS Rates - Your throughput will change depending on spacial streams.
  • MIMO Technology - You need multiple antennas. Inputs/Outputs/Spacial Streams i.e. 2x2x1
  • Option Key + WiFi on the Mac shows you what your Mac is doing. RSSI is not very usful.  MCS Index is important.!  SNR and MCS will tell the real story.  Data rate will always be changing.
  • Example Slide RSSI: -31, Transmit Rate: 27, MCS Index: 1
  • Mine Currently: -50, Transmit Rate: 216 , MCS Index: 15
  • "inSSIDer" is a good tool.
  • 802.11ac : 5Ghz only. GIgabit Wifi. Must be done in hardware.
  • 802.11n was supposed to support 4x4, but stopped at 3x3.  Best to wait till Wave 2 of 802.11ac.
  • 5Ghz goes about half the distance with the same data rate. 2.4Ghz
  • Indoor AP's can run up to 1W, outdoor can run 4W.
  • "Sticky Client Problem" - A client that connects to an AP, then moves.  The client has to decide to let go of the AP and use a new one.
  • With Apple, around and RSSI of 80 is where the client goes to a new AP.
  • With sparse AP's, lowering the power may help to make sure only clients that can actually talk to the AP's are connecting. Though, if you have sticky clients, it does not help.
  • A Wireless controller will not help with the "Sticky Client" problem becuase the AP can not force them to go somewhere else.  They end up writing a lot of code to deal with bad clients.  They then kick the client off the AP when the signal gets too low.
  • For the conference, they have 16 2x2x2 access points. They are all using 2.4 and 5Ghz.  Their pipe is 90 Megabits Per Sec.
  • In this hotel, they had bad jacks.
  • Hotel turned off their AP's where the conference is happening. Though, there is a ton of 2.4ghz traffic which made it un-usable.
  • On channel1, there are 30 overlapping AP's.
  • She had a client in Portland that had interference problem. They were in the middle of the woods. She went there with a spectrum analyzer. 2.4ghz went red for 10-15 minutes. Turns out they had 11 microwaves all going off at 3PM every day.
Jamie Newberry : Designing Engagement
  • I really liked this talk.  I asked Jaimee to come give it for our team.
  • @jaimeejaimee  bests.com jaimeejaimee.com
  • Worked for Black Pixel after using them when she worked at Zappos.
  • She's been doing all mobile stuff since 2010.  She has a UX background.
  • You have to find out both who you are, and who your customers are.
  • Been doing design work for the last 17 years.
  • Ask the question, "If my product were a celebrity".
  • When looking at a web form, think about the personality with the colors and symbols. For example, the login on Oprah's site vs a more playful one on Carbonmade.
  • Personality informs everything!
  • The OnBoarding process is really important.  Introduce the concept.
  • Empathy Rules.  It's way more important than disruption.
  • Simplicity is very hard. Editing, taking things away, is difficult.
  • Define Your Objectives
  • Games define their objectives. They don't cram everything up front.
  • The personality of the product should be everywhere. i.e. Release notes, button text, etc.
  • Bug reports should be fun as well.
  • Example of Photomojo making a connection emotionally.
  • Honesty is Important.
  • Talked about Twitter moving from "What are you doing" to "What's happening"  A simply change in copy changed the possibilities with the product.
  • Flickr has a downtime message that is a coloring contest.
  • Review Your Product - Do a sweep. Think about.  There are Cheap, Delightful, and Engaging things you can do you to your product.
Angel M. Stone (TSE At Walt Disney Studios) - Documentation Can be a beautiful thing.
  • Documentation is important, but it can also be fun and interesting.
  • She likes doing documentation because it allows her to come to conferences, lowers the bus quotient, and helps her remember things.
  • Documentation is changing.  No more simple text documents or even word documents.
  • She's a fan of video documentation.
  • She worked at a Catholic university and made videos for the Nuns.
  • Think about the audience of the documentation.  What is the scope of their expected knowledge?  How often will it be updated. ?
  • Know your clients - Know what your clients can and can't do.
  • Know your team
  • Pretend you are doing this task for the first time. (She didn't say it, but this is akin to putting yourself in the users shoes)
  • Don't be boring. - No one wants to see your documentation if it is boring.
  • She does not like Wiki's.
  • Their help desk system comes back with "Have you tried doing this"... As they add more knowledge, they have more people clicking on the "have you tried" links.
  • Separate documentation from what the product is, and how you use it.
  • Folks went around and talked about documentation that was problematic.  i.e. Stick notes on the client's monitor, text translated from Russian, Old documentation for an old operating system.
  • Error messages often need translation.
  • She started talking a tiny bit about cognitive research.
  • She still uses pages for documentation and builds her templates in pages.
  • Zen Desk - Useful for integrating help. A lot of effort can go into making the site useful.
  • One of the teams is publishing all their documentation as Google Docs in Read Only mode.
  • Someone mentioned folks printing documentation and putting it on the wall and then it goes out of date.  To me, it seems this is done because 1) Docs are hard to find. 2) Fear they go away.  Angel said she fixes this by visiting users.
  • She's been using Camtasia because it has editing built in such as Title cards.
  • She walked through using Camtasia to record some documentation.
  • She has "Stems" and the stems need to be named accordingly.
  • Someone mentioned iFixIt and that they have a tech writing handbook.

Some Random Notes From Talks:
  • There is a desire from folks to "Learn Terminal" - A new talk for next year?
  • Listening to some folks, I wondered if a talk on Learning Spaces would be useful.

Python For The Sysadmin By Matt Schnittker And Greg Neagle
Greg and and I gave a presentation about python programming for the Mac sysadm.  The talk was well received.  Here is some Twitter feedback.





Some folks suggested that it would be good for us to give our python talk at UofPenn. Greg and I applied and will be presenting as a pre-conference workshop!!


Evening Events.
Mac Tech keeps you busy all day.  They feed you breakfast, lunch, and dinner, and plan evening activities well into the evening.  They want to make sure that everyone has a chance to talk with peers and share ideas well beyond the formal learning presented in sessions. One of the trips was to the Endevour Shuttle at the California Science Center.