P.P.S. You know you can forward this to your friends, right?
Sponsor: Big thanks to Telerik Icenium for sponsoring the blog's feed last week! Telerik Icenium now includes Visual Studio integration. Code once using HTML5 & JavaScript - build, test, and publish native-running iOS & Android apps. Start your 30 day trial with support!
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
I like gadgets, but my tolerance for price is low. But a friend of mine showed me his Nokia Purity Pro headphones (made by Monster) and I tried them...and bought a pair.
I've been using the same Beats by Dre Tour In-Ear Headphones for over a year. I've taken them all over the world and they've worked great. However, on planes they hurt the insides of my ear, and once I got them stuck in my ear real good so I started re-thinking my aversion to over-the-ear headphones.
I used to have a pair of the original Bose noise-cancelling from years ago. Noise-cancelling technology has apparently improved a lot since then. When my friend showed me his Purity Pro's we were standing in a parking lot after lunch. I put them on and the street noise just stopped. Any low-level or repeated noise just disappeared. They work at least as well as my Bose did and are a joy to use on a plane.
I consider myself a power user and I don't put up with a lot of trouble from my devices. If it sucks or doesn't work in some way, it's going back.
The "oh gee" feature of the Purity Pro's is that it has NFC (Near Field Communication) to aid the initial paring process. The resulting pair is still Bluetooth. If your phone has NFC, more power to you, but after it's paired you'll never use this again.
The Bluetooth feature that I really appreciate is the ability to pair with multiple devices - up to 8. You can also be simultaneously connected to two devices which is REALLY convenient.
Note:Read the manual (PDF) and turn on "Bluetooth Multipoint" to use this feature.
For example, right now as I type this I'm connected to my laptop's audio (for Skype and Lync) and to my phone for music (Spotify and phone calls). I could certainly go along with connecting to just one, but when you're sitting in a café working, it's really nice to have "all electronic audio" from your devices routed into your headphones. I can listen to music, take Skype calls AND answer phone calls using the headphones.
I also have them paired with my tablet (so phone, laptop, tablet) and I must say, having no wires to worry about really IS a nice touch. I feel like just NOW, today, in 2013 the promise of Bluetooth is happening.
It's also a microphone (the mic is near the left ear) so I can take calls OR use it as a mic for Skype/Lync.
Of course, if I have a better mic or a laptop with an Array Mic I can tell the computer to NOT use the headphone's mic and use another. (You'd be surprised how often folks forget that they have full control over what mics are used for regular apps or communications apps.)
The headphones turn off when you close them up and reconnect when you open them. They have an internal battery and recharge using a mini-USB connector. They say they last for almost 24 hours of use, and if the battery runs out you can just switch to a standard 1/8" headphone plug. I have used them for a few months and have never needed to move to wired but it's nice to know they will keep working even with a dead battery. That said, they top off fast using mini-USB cables I have in my bag already. I did a 6 hour flight from New York watching movies last week and didn't give headphone battery life a thought.
One other cool feature is that the headphones talk to you. When you're pairing with Bluetooth or the battery is doing something it talks in your ear and says stuff like "Connected."
There's switches behind each ear for answering calls, changing volume, and going previous and next track. There's also some more subtle gestures, so RTFM. For example, double-press the Call button to decline a call, or hold the Call button to switch to phone from the headphones. Press and hold the call button when not in a call to use Siri or Voice Dial. You can even pair with more than one phone and use the < button to manage calls from both phones while on one call.
They were somewhat expensive but I'm using them every day and I'm happy with the purchase. They are comfortable, light, fold up into my backpack easily and don't beg to be charged all day. Recommended if you're looking for a great pair of tech-savvy wireless Bluetooth headphones with noise-cancellation.
Sponsor: Big thanks to Telerik Icenium for sponsoring the blog's feed this week! Telerik Icenium now includes Visual Studio integration. Code once using HTML5 & JavaScript - build, test, and publish native-running iOS & Android apps. Start your 30 day trial with support!
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
This last weekend I was in New York presenting at FOCUS100. I also was a mentor for the 24 hour mobile hackathon along with Tara Walker. The attendees were trying to create a mobile app (responsive site, or a native app, it didn't matter) in a single day (we were up all night.) A few of the teams didn't have any back-end experience, but had deep HTML and JavaScript experience. Rather than having them hardcode data a few ended up using Azure Mobile Services (which isn't the best name, but it's something.)
I call it a backend in a box. Rather than creating your own RESTful service with CRUD (Create, Read, Update, Delete) to return JSON stored in a database, you show Mobile Services what your data should be shaped like and lets you query it dynamically. So it's an abstraction over the boring stuff. You can add custom APIs and fully edit all operations later, but it gets you 80% of what you want for 20% of the time. Later you spend 80% of your time doing all your custom stuff; it's a great accelerator. It also abstracts away social identity logins (Facebook, Twitter, Google, Microsoft ID) as well as mobile push notifications.
Even though it's called Azure Mobile Services, it could also be called "Backend in a Box" or "Azure Backend Accelerator" but somehow those aren't really good names either. ;)
Here's how we iterated very quickly with one project. There's some tricks that we discovered to make things easier and more obvious. I'm pushing all the things we/I learned back into the Mobile Services team as they iterate quickly and are always improving the service.
Initial Iterations with Azure Mobile Services
First, let's assume you've signed for a free trial at Azure.com. You get $200 in credits (which is enough to run two VMs full time or dozens of standard sites on a single VM for a month, as well as 10 free websites, and 10 free mobile services).
You might also install the Azure CLI (Command Line Interface) via NPM as in "npm install azure-cli --g" then run "azure account download" then "azure account import" to associate your subscription's certs with the command line.
NOTE: If you are a command line person you can do most everything with the CLI. You can "azure mobile create 'servicename'" or "azure mobile table create" as well as "azure mobile data read" and on and on. We used the HTML5 Portal at the hackathon because it was easier for newbies to visualize.
From the Portal, make a Mobile Service:
Make a mobile service:
As an FYI, here's doing the same thing at the command line:
c:\>azure mobile create info: Executing command mobile create Mobile service name: hanselmanmobile SQL administrator user name: focus100 SQL administrator password: ******** Confirm password: ******** + Creating mobile service info: Overall application state: Healthy info: Mobile service (hanselmanmobile) state: ProvisionConfigured info: SQL database (hanselmanmobile_db) state: Provisioned info: SQL server (aq8l9z9gcb) state: ProvisionConfigured info: mobile create command OK
Then I can create a Table in my new database. There's several levels of permissions can set, like auth'ed users, or accessible only with the app key. To speed up initial development, I'm setting it to Everyone. Then I'll ratchet up security as the schema starts to gel.
Here's the same thing at the command line:
c:\>azure mobile table create hanselmanmobile widgets info: Executing command mobile table create + Creating table info: mobile table create command OK
I could set the permissions at create time with the command line as well, or update permissions after the fact:
c:\>azure mobile table update hanselmanmobile widgets -p read=public,insert=public,delete=public,update=public info: Executing command mobile table update + Updating permissions info: Updated permissions info: mobile table update command OK
How do I get data in there and how do I tell the system what the data looks like? Since JSON is the format Mobile Services uses on the wire, you POST JSON at the service endpoint and it'll store that document.
Posting Data to Mobile Services in Multiple Ways
Some examples for Mobile Services have you/me/developers write an HTML page with JavaScript and run that to POST initial data. I, and the folks at the hackathon, preferred to get the data shape close while the UI folks did their mockups in parallel. Most attendees were familiar with cURL and wanted to use that.
Here's three ways to POST data to the new service.
You must include a Content-Type: application/json header or you'll get an HTTP 400 that says "invalid JSON," even though it may be the missing header.
A successful record creation will return an HTTP 201 CREATED.
Posting JSON to a Mobile Service via Command line with cURL
I like cURL for GETs, but for POSTing JSON it's complex and a hassle to encode the quotes and double-quotes in JSON correctly. Instead, I POST from a file. Put your JSON exactly as you want it in a text file, then:
c:\>curl -v -X POST -H "Content-Type: application/json" -d @topost.txt http://hanselmanmobile.azure-mobile.net/tables/widgets
Doing the HTTP POST from a file removes a whole pile of issues. Also, use -v for verbose for ease of debugging.
Posting JSON to a Mobile Service with Fiddler
From my PC using Fiddler I can compose new JSON to POST like this:
And note the HTTP 201 CREATED result:
Posting JSON to a Mobile Service with Postman
If you're using Google Chrome, you can get the Postman App (it's a REST debugger/Tivo for Chrome) or the REST Console and also POST and GET to your heart's content. Again, make sure to get the Content-Type set.
Once the data is in the table, I can access it with a simple HTTP GET (in a browser or whatever) as well as via the Azure Command Line Tool or via cURL:
c:\>azure mobile data read hanselmanmobile widgets info: Executing command mobile data read data: id name price date_available data: -- -------------- ----- ------------------------- data: 1 Ethernet Cable 5.99 2013-04-12T20:44:55+00:00 info: mobile data read command OK
If I don't like the shape of this table, I can drop the table and recreate. I can also call "azure mobile data truncate" from the command line. I can delete an individual column and re-POST, or, if I'm just adding a column, I can post differently shaped data. This is the "dynamic schema" setting. When I get everything the way I want and I'm done iterating, I turn dynamic schema off and freeze the schema.
Later I'm going to learn about adding custom APIs, social logins, and push notifications as they'll be useful for future hackathons.
Sponsor: Big thanks to Telerik Icenium for sponsoring the blog's feed this week! Telerik Icenium now includes Visual Studio integration. Code once using HTML5 & JavaScript - build, test, and publish native-running iOS & Android apps. Start your 30 day trial with support!
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
Later this month we're doing AngleBrackets again, you may have heard. Last spring we had a blast with folks like Lea Verou, Denise Jacobs, John Papa, and myself.
I miss the MIX conference. It was a fun web-focused conference with developers, designers, and web heads of all types. AngleBrackets, I think, is trying to bring MIX back.
We've got a great schedule lined up with Ward Bell, Elijah Manor, Miguel Castro, Michelle Bustamante, and lots more!
There's also pre- and post-conference workshops on User Experience, PhoneGap, Essential HTML5, Single Page apps, as well as "Fun with Functions with Douglas Crockford" himself!
Here's some sessions you'll see at AngleBrackets:
AngularJS SPA Jumpstart - Dan Wahlin
Apps & Opportunities - Steve Guggenheimer
Build a Business Application using ASP.NET MVC and Web Forms - John Kuhn
Building an End-to-End AngularJS App - Dan Wahlin
Building Rich Data HTML Client Apps with BreezeJS - Brian Noyes
Cloud-Powered Apps in Minutes with Windows Azure Mobile Services - Josh Twist
Code First Development with Entity Framework - Glenn Condron
Comparing AngularJS and Durandal for SPA Development - John Papa
Data Binding with Knockout.js - John Papa
Design or Die: The Challenge for Line-of-Business Developers - Billy Hollis
Designing RESTful Services with Web API - Brian Noyes
Doing More with LESS for CSS - Todd Anglin
End-to-End Security for Your Web API and MVC Applications - Michele Leroux Bustamante
Fixing Common JavaScript Bugs - Elijah Manor
Gamify Your Work - Denise R. Jacobs
Herding JavaScript File Cats with Dependency Management - Ward Bell
How to Build ASP.NET Web Applications Using Async - Glenn Condron
Implementing the HTML5 History API - Miguel Castro
Introduction to MVC - Scott Allen
JavaScript Patterns to Clean Up your Client-Side Code - Dan Wahlin
JavaScripts, Virtual Machines, the Cloud and The Metal - Scott Hanselman
jQuery-free JavaScript - Elijah Manor
Making Design Simpler for Developers - Shawn Wildermuth
Making HTML5 Work Everywhere - Todd Anglin
Mobile ASP.NET Web Forms - Making the Impossible Possible - Jeff Fritz
Mobile First Responsive Design with Bootstrap 3 - Shawn Wildermuth
Scalable and Modular CSS FTW! - Denise R. Jacobs
SignalR: The Real-time Web Made Simple - Damian Edwards
Syntaxation - Douglas Crockford
Understanding Dependency Injection & Writing Testable Software - Miguel Castro
Unit Testing 101 in JavaScript - Ward Bell
Web API 2: Web Services for Websites, Modern Apps, and Mobile Apps - Scott Hunter
What's New in Visual Studio 2013 ASP.NET Web and Cloud Tools - Scott Hanselman
What's your job, anyway? An indictment of current programming practices - Billy Hollis
Windows Azure Today and Tomorrow - Scott Guthrie
When you register for AngleBrackets you also get to go to all the conference sessions for our "sister conference" DevIntersection. Check out the DevIntersection promotional video and note that you can get $50 off with Registration Code SCOTTHA.
See you there!
Also mark your calendars for April 13 - 16, 2014 at the JW Marriott in Orlando. We'll have AngleBrackets on the east code and busses to Disney World for folks bringing family.
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
The diabetic internet and lots of mainstream news agencies are abuzz about the new insulin pump from Medtronic. Poorly written news articles that are effectively regurgitations of the Medtronic Press Release have exciting headlines like this:
But then ruin it with vague subtitles that are missing important context:
FDA approved the company’s automated insulin delivery system.
This is Step 1, possibly Step 0.
TO BE CLEAR. This new Medtronic 530G pump is NOT an artificial pancreas. It is an insulin pump, similar to the very model I'm wearing right now. It is paired with a revision of Medtronic's CGM (Continuous Glucose Meter) system and it does one new thing.
This new pump will turn off if you ignore its alarm that you may be having a low blood sugar.
Read it again, I'll wait.
Note the JDRF chart above describing the steps we need to towards a true artificial pancreas. This new 530G from Medtronic is arguably Step 1 in this 6 step process. It's the first step of the first generation.
But wait, doesn't your pump just handle things for you? You don't have to stick your fingers anymore, right? Wrong.
Let's stop and level set for a moment. Here's a generalization of your day if you're not diabetic.
Here's what a Type 1 diabetic (like me) does:
If I get this new pump that news outlets are incorrectly calling an artificial pancreas will anything in this cycle change? No.
There's NOTHING automatic here. I want to make that clear. Today's insulin pumps are NOT automatic. I set them manually, I tell them what to do manually. Yes, they "automatically deliver insulin as I sleep" but only because I told it to. If I eat and do nothing, I WILL get high blood sugar and today's insulin pumps will do exactly NOTHING about it.
If I only make decisions about insulin dosage based on my CGM then I WILL eventually get in trouble because today's CGMs are demonstrably less accurate than finger sticks. And, here's the kicker, finger sticks aren't even that accurate either.
The Medtronic Press Release says that this new Enlite Sensor is 31% more accurate. I hope so. I personally continue to use a Medtronic 522 pump (this new one is the 530G) but I have given up on Medtronic's CGM in favor of a Dexcom G4. I am thrilled with it. The G4 has about a 5 minute lag time and is astonishingly accurate.
NOTE: I have no personal or investment relationship with either Dexcom or Medtronic. I am not a doctor or a scientist. I write this blog post with the expertise of someone who has been a Type 1 Diabetic for 20 years, a user of a Medtronic Pump for 15 years, a user of a Medtronic CGM for 4 years, and more recently a user of a Dexcom G4 for a year. My most recent A1C test was 5.5 putting my blood sugars at near non-diabetic levels on average. TL;DR - I'm a very good diabetic who uses the best available technology to keep me alive as long as possible.
I am extremely disappointed in the lack of research, due diligence and basic medical common sense in these articles. If you are a Type 1 Diabetic or have someone in your life who is, do the research and the reading and please spread the word so people can make informed decisions.
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.