Archive for the ‘Apps’ Category

“If you can read this, thank a teacher.” That was a poster in my 3rd grade classroom. They never said it would be “read this code.” Now that I’m teaching others to code, I can see why teachers continue to do their work, even if the career’s financial benefits aren’t in line with the value they add to society.
Take TEKY for instance. 50 people started to learn to code. 35 graduated after 9 weeks of instruction, and 7 more weeks of practicing what was preached. The teaching staff was paid a fixed amount. Those students? Off to careers paying $60K+ annually. Even for $100K of instruction – I don’t know what the total was – those students will have a huge impact on the economy many times that of the instructional investment. They’ve been launched from the nest, with incredible potential to live a better life than what the coal industry that abandoned them could offer. So the teachers hope for their “devlings,” and will teach another class to read and write code, and watch them grow and leave again.
It’s a bit heartbreaking. I still remember the jokes we told, the laughs and difficulties we shared as they learned, struggled, got up again and again, then got it. My fellow instructors I’m sure endured the same. You *want* them to succeed. And you’ve made dozens of friends along the way. They’re still your kids, though. They’re going to live their own lives, as careers, and once in a while you’ll reach out to each other to see how you’re doing. They’ll do great – you know that. Like a parent. They’re thankful – but they have a job to do, so they go do it. That pool of connections, of successes, grows. And I feel all teachers are greatly humbled by it. That’s real world change, simply by providing time, mind, and experience.
And maybe, someday, those students will become teachers, and receive the same joy and sense of pride we teachers do.
Dammit, “Cats in the Cradle” is in my head now.
Links to the graduation and open house videos:
Very proud!
-Auri

When we built the CrimeWatch app for the City of Fishers, we hoped for two things: 1) citizens will use it to protect our community, and 2) this is a good preparation for the future of how people communicate with Police for non-emergency issues. We’re starting to see that vision bear fruit with the first arrest via an in-app report. There have been over 250 incidents reported, and over 2,800 citizens have installed the app. This is awesome. We’ve been listening and adding new capabilities based on feedback, both from officers, and the community. Please keep the ideas coming – we’re happy to help you!

Watch the WishTV 8 coverage here: http://wishtv.com/2016/08/09/fishers-crime-watch-app-leads-to-first-arrest/

Watch the WRTV6 The Indy Channel coverage here: http://www.theindychannel.com/news/local-news/fishers-pd-touts-success-of-crimewatch-app

The built-in Facebook OWIN provider in ASP.NET MVC can open your website to the benefits of logging in via the social networking behemoth. Still, it’s limited when it comes to pulling in profile details such as photo, birthdate, gender, and so forth. I recently implemented retrieval of those profile properties, and will explain how you can do it, too! I feel the obvious benefit is your users don’t need to manually type in their profile details, should you have similar fields in your system.

I’m assuming you’ve created and configured a Facebook app via Facebook’s Dev center, and won’t be going into that process in this article.

Determine Which Profile Fields You Need

Before we write any code, you need to know to which profile details you desire access. Facebook used to be relatively open. Not anymore! Now you need to ask permission for a ton of items, and many are no longer available. Make sure you check permissions at least every 3 months, otherwise you may find your granted permissions are no longer, well, granted, or even accessible.

Here’s a link to everything you can get: https://developers.facebook.com/docs/facebook-login/permissions/

In my case, to access the Profile photo, name information, and some other basic items, I chose:

  • public_profile
  • email
  • user_photos
  • user_about_me

I probably don’t need all these right now, but I may in the future. I figured I’d ask ahead of time.

Once you have your list, continue to the fun coding part…

Enable the Facebook Provider in Startup.Auth.cs

If you haven’t already, you’ll need to enable the Facebook provider via Startup.Auth.cs. Make sure you do this *after* any cookie authentication, so “normal” username/password logins are serviced before Facebook takes over. This should already be the case, as the default ASP.NET MVC template includes the many optional providers afterwards by default.

I suggest keeping the App ID and Secret in your config file – or at least out of code – so you can swap for differing environments as necessary. The code snippet below enables Facebook authentication, and specifies the profile fields for which we’ll be asking read permission:

You don’t have to use what I chose – it’s just what I needed for my particular case. Facebook *does* change allowed permissions and profile item visibility somewhat often. Stay on top of their developer changes – otherwise your site login may unexpectedly break.

// Enable Facebook authentication with permission grant request.
// Otherwise, you just get the user's name.
var options = new FacebookAuthenticationOptions();
options.AppId = ConfigurationManager.AppSettings["Facebook.AppId"];
options.AppSecret = ConfigurationManager.AppSettings["Facebook.AppSecret"];
options.Scope.Add("public_profile");
options.Scope.Add("email");
options.Scope.Add("user_photos");
options.Scope.Add("user_about_me");
app.UseFacebookAuthentication(options);

Install the Facebook NuGet Package

In order to easily get access to the Facebook data, I used the Facebook.NET library. It’s easy enough to install:

Install-Package Facebook

Note: I used version 7.0.6 in this example. You should be able to find the latest version and changelog at https://www.nuget.org/packages/Facebook/7.0.10-beta

Handle the Facebook External Login Callback in AccountController.cs

Once Facebook has been configured, all requests from your website will direct to Facebook, where it will ask permission, and, if granted, will redirect back to the ExternalLoginCallback action in the Account controller. It is here that I suggest you retrieve the data you’ve requested from Facebook. You’ll then modify the associated ExternalLoginConfirmation View with fields to correct or remove any information from Facebook, then continue with the account creation process on your website. That’s the part where you’ll populate the ApplicationUser entity, or whatever you decided to call it.

It’s relatively simple, as shown in the code below. The steps are as follows:

  1. Get the Facebook OAuth token with a simple HttpClient call
  2. Make the request for Profile details using the Facebook.NET library
  3. Optionally, download the Profile photo and save it somewhere

Yes, I could split this out – refactor as you see fit, and feel free to share any optimizations.

Below is the change to ExternalLoginCallback to grab the data from Facebook after the redirect:

ExternalLoginCallback Code

If you’d like to get the profile image, below is an example:

GetProfileImage Code

 

Moving Forward

I hope this article has helped answer your Facebook integration questions. If you would like additional details, please post in the comments, or message me on Twitter: @Auri

Thank you!

I was recently included on a thread with a high school student considering programming as a career. Fellow developers at Eleven Fifty were sharing their insight. I liked my pre-caffeinated contribution. I hope you enjoy as well.

Aaron,
I echo Tiffany’s sentiment. I’d be delighted to be more interactive with you on questions. Funny – I think I went to school with a Rickleff.
Anyway… I *loved* computers growing up. Still, until I was in high school, I didn’t want to be a programmer, which I later learned was really a “software engineer.” I thought they were just unhealthy, unsocial slobs that worked long, grueling hours, with pizza their only food group. Well, that was television and movies, at least. I found programming and problem solving came easily, and I liked making the computer do whatever it was I wanted, if I only spent the time. I didn’t start out with programming as a career – I started with technology, being an analyst and writer at a consumer electronics research firm. It wasn’t until my friend [and employer] challenged me to write a program for the company, and I accomplished it by putting my hobby to good use, that I started thinking programming could be a career. I learned I could make a living with my favorite hobby. That’s fun, and freeing. It’s like not working, even when it feels like work.
So what will your career look like? Software engineering makes you somewhat of a white collar worker – the pay is higher, and you’re always working with intelligent people – not that you’ll always admit that. It’s more of a “white collar t-shirt” job, because you’re required to be both a thinker and a creator at once, which can be messy. Ask yourself if you like to make things better, and if you think about how to actually do it. Even if you don’t have the skill yet – that will grow over time, and you’ll have to fail… a lot – that two-punch thinking combination is what will get things done, and make you enjoy your job. Did I mention failing? It happens all the time. You’re always building things that don’t exist, based on ideas written in a few sentences by people who don’t know how to do what you’ll be able to do. Like the beautiful buildings you see when walking, to paintings at shows, to jokes you hear for the first time – all those are the final result after all the failures to make them reality before. Building designs start with an idea out of thin air, go through a billion revisions, and finally get built. Jokes usually start from trying variations that don’t get a blink, to the final one that makes an audience laugh. But the comic started the line of thought, from thin air, from inspiration, and from thinking about how people think. The same goes with programming.
The lesson: Fail quickly, then move on to the next approach.
That being said, I’ve found the best parts of programming are the community, and what it leads to.
First, Community. Software engineering is like medicine. You’re not going to know all the practices. You’ll be good at one, or a few, but can never be good at all. Yet, you’ll meet brilliant people that can fill in the gaps in your knowledge, and you feel even better when you do the same. As engineers, we inspire other engineers. Look at Steve Wozniak, Steve Jobs, Nicholai Tesla, Sergei Brin, Larry Page – all their bios mention influencers. Nobody did it on their own. They all had help.
Second, What it Leads To. Coming up with ideas all the time has its side effects. The most prevalent? A constant stream of ideas on how to make those cool computers, whether they have a keyboard or not – phones for example – do more stuff. You’ll have ideas. Lots of them. And you have the power to make your ideas real. You’ll fail in bringing them to reality, often. Like medicine, or any career really, you’ll get better over time, tuning your craft. You’ll release your ideas, maybe as apps, maybe as web sites, maybe just making your own projects millions of people use – like Apple, Google, Microsoft, and countless others you think of having the best and brightest. Those companies are full of people who aspired, as you do, to become software engineers at some point in their lives. Those companies were also started by software and hardware engineers. Heck, Apple practically invented the personal computer, and the software engineer that wanted to program it.
Gosh, that’s a lot, and I need another refill of coffee. I hope to discuss further, if you’d like.
Thanks and Best,
-Auri
Appending what a fellow developer and instructor answered to the same student:
What your career looks like in 5 or 10 years is a very personal choice.  If you are a guy looking for a desk job with great benefits in a big company, that’s going to look very different than if you have an entrepreneurial spark that leads you to develop your own products or freelance.  I can tell you that you need to talk to all types of software professionals to get this knowledge and find out what excites you most.  The best way to do so is to attend networking events.  Verge is a fun one for entrepreneurs.  I believe Auri can refer you to a few great .NET networking groups.
After 5 years of MY career, I found myself climbing a technical corporate ladder inside of Motorola and being very content with that.  But after 10 years (still at the same company), I grew restless and started my own freelance firm on the side while also transitioning from test to architecture within the big company.  And after 15 years, I found myself appreciating the big picture of software (sales / pm / business dev) more than I did the nitty gritty code and new technologies.
As far as highs and lows in a coding career… that’s a bit more finite.  There’s a huge high when you can point at something and say, “I did that! And it’s AWESOME!”  And an ever bigger high when your peers and mentors do the same.  And for every coder, there’s a dark dark low when you run into a problem that you just CAN’T figure out.  You feel alone, you feel stupid, and you feel like a failure.  As a coder, you’re going to need to expect those situations, not fear them, just grow and learn from them.
Hope this helps.  Feel free to find me & Auri at Eleven Fifty and chat about this stuff during the time you’re here.
Thanks,
Tiffany Trusty

Quick thought for the day: Microsoft’s OneDrive doesn’t appear to act “smart” when it’s installed on a tablet, or what I prefer to call a Limited Storage Space Device. The premise of OneDrive is clear: store your stuff in the cloud and keep your device clean of clutter, holding local only what you need. Google made the same business case with their Chromebooks and Google Drive, but “cloud-first” is in its teenage years.

On a Limited Storage Device, such as a tablet or a phone, OneDrive should be smart enough to take offline, locally cached files, and make them “online only” again, freeing up the space. It doesn’t do this, and thus silently, and sometimes quickly, eats up storage on the device. Case in point: I recently drove Tail of the Dragon and took hundreds of photos. About one gigabyte of these I copied from my camera to OneDrive. One day later, my Dell Venue Pro 8 tablet started complaining of low drive space. OneDrive had copied the files from the cloud to the device, automatically, even though there was no reason to do so. The device wasn’t requesting those files. Yet, even if for whatever reason there was a valid request, shouldn’t OneDrive have “put them back” in the Cloud?

Microsoft – if you ever listen about device categories you’ve had a tough time understanding – you can’t treat these limited storage devices like mainstream PCs. You have to, pardon the pun, “think differently” and make your software do the same. The above scenario, where your Cloud solution makes a non-mainstream device relatively unusable due to a mainstream PC approach, is very common amongst your current product offerings. My gosh, just look at Office on a tablet.

Thanks for listening Smile

-Auri

I’ve posted this in Microsoft’s forums, but in case anyone else is running into this issue, I’d like to know…

Situation:

– I have a home security camera. All motion detected photos are saved to a folder on a home machine, located in my local SkyDrive folder. I forgot to clean up this folder, so there were hundreds of thousands (~90 gigs) of files in the individual daily folders in this folder.

– On SkyDrive.com, to speed up the delete process, I deleted all folders I no longer wanted. Remember, this is 90 gigs or so. I figured this would delete those files from my home machine.

– Upon deletion, SkyDrive started copying all those deleted files to *every connected device’s Recycle Bin*, including my Windows tablet with its scant 32 gig drive!!!

– Now all my machines’ primary drives are filling up due to the Recycle Bin being filled by SkyDrive. This is especially troubling on the tablet, which is crashing often due to being out of space as it fills up every 30 mins or so, syncing over WiFi. No, I don’t have SkyDrive set to sync any folders to that device.

– All machines are running Windows 8.1. The tablet came with 8.1, and the desktops and laptop were upgraded to 8.1 from 8.0.

Bug:

– If a file is deleted on SkyDrive, it should not immediately be transferred to all connected devices. This is especially true for tablets.

Solutions / Workarounds:

– None known.

– Feature request possibility: This should be a feature that can be enabled or disabled, and disabled by default.

– Fix: Microsoft should disable the copying of deleted files to all connected devices, and come up with a better solution for handling this scenario.

I’m looking forward to feedback, as this has caused tremendous amounts of trouble in my ability to use Windows devices. It’s almost pointless to have a Windows tablet, since my online SkyDrive activity is not cognisent (sp?) of what device types to which its connected.

Thanks,

-Auri

Below are my notes from Day 1 of the CEATEC show in Makuhari, Japan.

SAM_8159

Sony Info-Eye + Sony Social Live

Sony showcased two unique social apps, Info Eye and Social Live, part of their Smart Social Camera initiative.

SAM_8244

Info Eye takes an image and analyzes it for different types of information, surfacing that information in different views. For example, take a photo of the Eiffel Tower and you are presented with different "views" of the data. The first view may be related photos of the French attraction, such as a view from the top, or the Eiffel Tower Restaurant. Change views and you’re presented with a map of Paris. Continue to the next view and see your friends’ comments on social networks about the attraction. It certainly is an innovative approach to automatically get benefits from simple photo taking – photos you normally wouldn’t look at again anyway.

A video is worth thousands of pictures, and you already know what those are worth:

And in case you simply want a picture:

SAM_8249

Social Live is like a live video feed, streamed from your phone to various social services. While the example of a live marriage proposal wasn’t so realistic, Social Live still has great consumer applications. For example, set a social live link on Facebook and your friends could view your video feed while you tour the Champs Elise in Paris, without your needing to initiate a Skype call. It’s similar to having a live broadcast stream ready to go at any time.

3D 4K Everywhere!

3D didn’t entice the world – again – so, why not re-use all that marketing material, swapping 4K for 3D? No, it’s not that bad, and 4K is beautiful, but it’s just too early, too expensive, as is almost every evolutionary technology like this. Just for fun I  made a collage of the various offerings. Component innovation is once again creating products at a pace greater than the consumers’ willingness to adopt.

4K_AutoCollage_12_Images

Tizen IVI Solutions at Intel

Intel had a sizeable display of Tizen OS based In-Vehicle Infotainment solutions at its booth. Apparently Intel had 800 developers working on Tizen while partnered with Nokia on the OS-formerly-known-as-MeeGo. The most interesting Tizen demonstration was Obigo’s HTML5-based IVI solution. On a related note, Samsung is apparently folding their Bada OS into Tizen. It will be interesting to see whether it makes any difference in the global mobile OS movement, still dominated by Android, then iOS, then Windows Phone.

SAM_8250

Obigo’s HTML5-based In-Vehicle-Infotainment Solution

Obigo’s solution is to automotive application development what PhoneGap is to standard mobile application development. Developers build widgets using HTML5 + JavaScript, accessing vehicle data and services via an abstraction layer provided by the Obigo engine. Apps in Obigo’s system are called widgets. Nothing appears to prevent Obigo from bringing this solution to Android, so look for that possibility on the various Android vehicle head units coming to market. Hyundai and Toyota will be the first integrators of the system.

SAM_8213

Apparently Japanese Car Insurance is Very Expensive

Another solution shown at the Intel Tizen display was a driving habits monitor capable of sending an email to your insurance company with said information. The goal would be to lower insurance rates. The solution was a hokey implementation at best, but at least I’ve learned insurance is expensive here as well.

Fujitsu Elderly Care Cloud

In an effort to keep Japan’s increasingly elderly population in touch with their families, Fujitsu has created a "Senior Cloud." The benefit to seniors will apparently be video and photo communication and sharing services with their family, alongside healthcare detail sharing services. I couldn’t get a demo, but it sounds like a good idea. For the next 10-20 years, anyway – by then, the "elderly" will have become the people who know how to do these things.

SAM_8221

ModCrew iPhone Waterproofing Coat

ModCrew displayed a nano-coating solution for iPhones (only), rendering your fruit phone washable.

clip_image001

clip_image002

Omron Basil Thermometer with DoCoMo Health Smartphone App

Omron has a unique line of basil thermometers, with pleasant shapes and colors, targeted (obviously) towards women. The devices, among other Omron health device solutions, can all transmit their data via NFC to phones and tablets. Using an app from NTT DoCoMo, health data can be consolidated and analyzed, and health advice can be provided.

clip_image003

All health components gather data to recommend healthy choices.

clip_image004

Huawei Phone with Panic Alarm

Chinese consumer and mobile electronics provider Huawei showcased their HW-01D feature phone with a built-in panic alarm. Targeted towards women, children, and the elderly, the device has a pull tab that sets off a loud, yet oddly pleasant, siren to scare away would-be perpetrators.

SAM_8252

Fujitsu Finger Link

Fujitsu’s Finger Link solution uses a top-mounted camera to convert physical objects to virtual objects, enabling you to organize and relate such items for later manipulation. For example, put 3 Post It notes down and they are converted to digital representations, automatically recognized as separate objects. Tap each related item and drag a line between others similar to the first. Tap a button on the projected interface and now they’re related, moveable, sharable, and more.

clip_image006

Fujitsu Sleepiness Detection Sensor

A hot item in vehicles displayed at CEATEC this year was detection of distracted driving. Fujitsu’s component detects eyes moving away from the road, a downward or upward motion possibly signifying the driver is drowsy. The component is for use by automotive integrators.

clip_image007

Fujitsu big data + open data quiet service, LOD utilization Platform

Fujitsu showcased an open LOD utilization platform for quickly and easily mining and analyzing the data from many Open Data sources all at once, visually. The back-end is using the SPARQL query language.

clip_image008

Mitsubishi 4K LaserVue

Mitsubishi showcased a prototype 4K Red Laser + LED backlit display, enabling a beautiful, beyond photorealistic video display. Standing in front of the reference unit, I actually felt like I was looking through a window – the colors were amazingly vivid and lifelike.

SAM_8267

clip_image010

Mitsubishi elevator skyscraper swap detection system

Mitsubishi also showcased a solution for preventing elevator stalls in swaying skyscrapers. Their sensor moves the elevator cart to a non-swaying or less-swaying floor to prevent service outages, keeping the elevators running as efficiently as possible, and giving you one less excuse to miss that meeting.

clip_image011

Mitsubishi 100Gbps optical transmission technology

Mitsubishi showcased a 100 gigabit/second inter-city optical interconnect solution, with a range up to 9000 kilometers.

clip_image012

Mitsubishi Vector Graphics Accelerating GPU

Who says you need multi-core ARM processors running over 1 GHz + powerful GPUs for beautiful embedded device interfaces? Mitsubishi sure doesn’t. They showcased a GPU running at a scant 96 MHz, accelerating vector graphics display at up to 60 frames per second. Incredibly responsive interfaces for elevators and boat tachometers were displayed. The target is rich user interfaces with incredibly low power consumption.

Related notes:

SAM_8265

Mitsubishi Rear Projection Display for Automotive

It’s no surprise Mitsubishi is proposing rear projection solutions for automotive – RP is one of the company’s strengths. What they propose is curved surfaces to provide an interface that matches the interior of the vehicle. Also possible is 3D-like interfaces, as shown below.

clip_image013

Sharp Frameless TV Concept

A display with no bezel? Sharp’s frameless concept showcases how beautiful such a solution would be. That it in the center.

clip_image014

Sharp Mirror Type Display

Also on display (ahem) was the Mirror Type Display, with a display built into a mirror. Have I said display enough times?

Pioneer Wireless Blu-ray Drive

That shiny new ultrabook is pretty svelte, isn’t it? What’s that? You want to watch a Blu-ray? That’s fine – just use Pioneer’s BDR-WFS05J solution to wirelessly connect to the Blu-ray drive across the room and stream the data over 802.11N, as long as it’s in its dock. The unit also supports USB 2 and 3. Ships at the end of September.

clip_image015

Toyota Smart Home HEMS Using Kinect

Toyota showcased a smart home energy management system (HEMS) using Kinect to interact with various residents.

Toyota Concept Vehicles

I don’t know much about the following one-person electric riders, but they looked cool, so enjoy the photos.

clip_image016

clip_image017

Clarion Smart Access + EcoAccel

Determining whether you’re driving Green, or "Eco" as they say in Japan, can be difficult. Clarion’s EcoAccel app, which runs on their Android-powered head unit, reads ODB2 sensor data to rate your Eco driving habits. It’s an entertaining way to enhance the eco-friendliness of your driving routine. The representative said there are no current plans to bring this product Stateside, but I’m hoping they change their mind. After all, ODB2 data is pretty easy to read, even if it’s not entirely standardized.

clip_image018

clip_image019

clip_image020

Mazda Heads Up Cockpit

While the HUD component is nothing to write home about, Mazda’s approach of keeping everything at eye level, while re-organizing the shift knob to also be easily manipulated was a welcome safe-driving-meets-ergonomics approach. Better yet, they will be shipping this in their Axela vehicles, meaning less expensive vehicles may be readily receiving technology to deter distracted driving. They call this the Heads Up Cockpit with a Concentration Center Display.

clip_image021

clip_image022

clip_image023

Mazda Connect System

Mazda also showcased the Mazda Connect system, enabling car communication and software components to be "easily" upgraded as new features are available. Whether this will be an insanely expensive solution, akin to Samsung’s upgradeable TV approach, remains to be seen.

It’s fascinating to see how some of the most innovative products are coming from what used to be one of the least innovative industries: automotive.