Archive for the ‘Computers and Internet’ Category

Micro Adventure was a series books in the 1980s where you had to write computer programs to get from chapter to chapter. It was a great way to learn coding for a geeky kid looking for a good story related to computers. A few months ago, I was granted rights to use the books on a website, and now it’s in beta! Check out the site and let me know what you think!

https://microadventure.net

 

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

I recently bought a 3D Systems 3rd Generation Cubify 3D printer. I promised a friend we could print his mom a 3D box with her name embossed across a ribbon for Mother’s Day. That’s when this issue reared it’s ugly head: the software would simply say “File not found” or “Bad file” on various STL files – representing various parts of the box – and refusing to print. So what was causing this? I had a Mother’s Day present to print!

It turns out the Cubify software doesn’t like special characters in the STL filenames. So, quotes and dashes appear to be verboten. My guess is they’re running a command line tool in the background in an ill-advised way – ahem, directly instead of through .NET’s proper command calls – and the quotes and dashes end up being interpreted as paths or command line arguments, and failing.

The solution? Rename the file to something simpler and with no special characters.

If you’re running into this issue, please let me know in the comments. I’m fully convinced Cubify doesn’t test their software all that well. I wonder if they are the ilk following the “unit tests passed, therefore it works” mantra.

UPDATE (13-Dec-2013): Microsoft has a fix: http://answers.microsoft.com/en-us/windows/forum/windows8_1-networking/dell-venue-pro-loses-wireless-connection-after/bc8a1426-fdb8-466d-b074-c80a06e70d76 and direct link to update http://www.microsoft.com/en-us/download/details.aspx?id=40755

UPDATE (10-Dec-2013): Updated to include fix for WiFi problems caused by latest Patch Tuesday installs.

My WiFi stopped working on my Dell Venue Pro 8. Uninstalling Microsoft Updates KB2887595 and KB2903939 fixed the problem.

TIP: After uninstalling these updates, you can go back to Windows Update via the method below, scan for updates, then right-click the updates and select Hide this Update so Windows doesn’t repeatedly try to reinstall it.

To do this:

1. On the Start menu, swipe down to All Applications

2. Scroll all the way right and tap Control Panel

3. When Control Panel appears on the desktop, search for Windows Update by typing in the search box, and tap it

4. On the left pane there will be an option for View Installed Updates. Tap it.

5. Find Update for Microsoft Windows (KB2887595) and tap it, then tap Uninstall. If you also have update KB2903939, don’t restart yet. Otherwise, skip to step 7.

6. Find Update for Microsoft Windows (KB2903939) and tap it, then tap Uninstall.

7. Restart.

8. Your WiFi should be working again.

I picked up a Dell Venue 8 Pro for $99 as part of Microsoft’s 12 Days of Presents spree. Here are some tips & tricks for the more techy folks out there:

How to Access the BIOS

Press the power button once. Then hold down the Volume Down button until the Dell logo disappears. You don’t need a keyboard – it has an on-screen mouse mapped to the touch screen. Cool, eh?

To access the Advanced settings of the BIOS, follow the instructions through Step 7 below:

How to Speed Up SSD Disk Access by Modifying the EFI / BIOS

Thanks to Sasha for the following steps, which can increase speeds by over 50%!

1) From Windows, bring up the charms (swipe in from right)
2) Select Settings -> Change PC Settings, or Start, then All Apps, then PC Settings.
3) Choose Update and Recovery -> Recovery
4) Under Advanced Startup, select Restart Now
5) From this blue menu, select Troubleshoot, then select Advanced Options
6) Select UEFI Firmware Settings, then click Restart
7) Now, the BIOS shows up, hit the on-screen ESC button ONLY ONCE.
8) You’re now in the Main “tab”, with a vertical list of options, from here you must select Advanced, this lets you see all the BIOS settings and is different from hitting the Advanced tab across the top.
9) Select LPSS & SCC Configuration
10) Select SCC eMMC 4.5 HS200 Support and select Enabled (Mine was disabled by default)
12) Select DDR50 Support for SDCard and select Enabled (Mine was disabled by default)
13) Press F10 on the on-screen keyboard to save, then Save Settings and Exit and you’re all set.

Getting Back ~5 Gigabytes of Space by Removing Recovery Partition

The Dell Recovery Partition is essential for restoring your machine should something catastrophic happen. To add insult to injury, Dell often runs out of stock of recovery media, and won’t send you such after a year or two has passed. That’s hit me before, and it’s not fun. So, make sure you’ve backed it up!

Once you’ve backed up that recovery partition, there’s no point in keeping it. Get those gigs back!

Here’s how:

NOTE: Make sure you have at least 50% of your battery left for this process. I wouldn’t do this when hitting the lower ends of the battery spectrum.

  1. Go to All Applications and scroll all the way right to the Dell group. Tap the My Dell application.
  2. Click Backup, even if it says no backup software is installed.
  3. Click the Download Local Backup button. This will provide a link to download Dell Backup and Recovery, which you should download and install. Basically, once you click the Download button, select Run and wait for Setup to do its job. This process can take a long time. Even the download appears to be huge. It’s probably downloading the latest recovery data, but that’s just a guess.
  4. After the software has installed, it will request a restart. So, restart the tablet.
  5. Go to All Applications and back to the Dell group. Note the new Dell Backup and… option. Tap it.
  6. Wait a few moments for the cool clock animation to complete, then agree to whatever terms are presented, or not.
  7. Tap the Reinstall Disks option. This is the equivalent of a Factory Restore partition backup.
  8. Tap USB Flash Drive, which is probably the only real option you have with this unit. This includes use of the Micro SD card, which is what I used, since I didn’t have a USB adapter handy. If you decide to use an external burner, that’s cool, too. But… why?
  9. Select your USB drive, or the MicroSD card. I backed up to an 8 GB MicroSD. Dell estimates the backup at 4.03 GB, so 8 GB should suit you just fine.
  10. Tap Start, then tap Yes when asked if you’re sure about wiping out the USB or MicroSD drive. Of course you’re sure! (right?)
  11. Wait until it’s done.
  12. When it’s complete, click OK, and put the backup media in a safe place. I put it in my Venue Pro’s box.
  13. Go back to Start, then All Programs, then Desktop.
  14. Hold down on the Start button and select Command Prompt (Admin).
  15. Type diskpart to launch the Disk Partition manager.
  16. Type list partition to see the available partitions.
  17. Type select partition X, where X is the number of the approximately 4 gigabyte recovery partition. On my Venue, it was 6.
  18. Make sure you see “Partition X is now the selected partition”!!!
  19. Type delete partition override and hit enter.
  20. You should be greeting with “DiskPart successfully deleted the selected partition.”
  21. Type exit to quit DiskPart, then exit again to quit Command Prompt.
  22. Now that the partition is gone, we need to expand the size of the main partition.
  23. Open an Explorer window and long press This PC, then select Manage.
  24. When Computer Management appears, select Disk Management under Storage.
  25. You should see the 4.64 gigabytes or so we freed up showing as Unallocated.
  26. Long press your C: drive and select Extend Volume….
  27. The Extend Volume Wizard appears. Click Next.
  28. You’ll be asked where the space to extend the volume should come from. Everything should already be filled out to assign the maximum unallocated space. Simply tap Next or adjust as desired and click Next.
  29. The wizard will confirm the extension settings. Click Finish.
  30. There you go! Your C: drive is now almost five gigabytes larger!

UPDATE: You can also back up to a USB drive by acquiring a USB OTG, or “On-The-Go”, adapter. Pick one up from Fry’s, SKU number 7582626, here. This will also enable you to use thumb drives and such on your Dell Venue 8 Pro.

Disable the Annoying Backlight

Dell’s power management settings for the backlight are wretched, making the display dim almost all the time. Let’s get around that, shall we?

  1. Swipe out the charms menu, then select Settings, then Change PC Settings on the bottom.
  2. Select PC and devices.
  3. Select Power and sleep.
  4. Set Adjust my screen brightness automatically to Off.

Many developers have had that “labor of love” project – the kind that keeps them up nights trying to get everything right, figuring out how to pass that one last hurdle. Woz was no different, and the recently open-sourced code – for non-commercial use, of course – brought back memories of the days he worked on it so long ago, finishing in Vegas no less.

Some of you know I used to work for Steve, so I reached out to him with a link to the his code

Here’s his response:

On Nov 13, 2013, at 8:04 PM, ʞɐıuzoʍ ǝʌǝʇs wrote:

The MOST AMAZING code of my life…I could never do anything close to this much ‘out of any box’ stuff ever again…it was as amazing to come up with it as it seems to be reading my code. In some places I put numbers like (5) meaning that 5 cycles would be taken by that instruction – I had to count them all so the loops always sent a byte to the controller every 32 microseconds exactly. And there is no way to explain the 5-bit and 7-bit stuff but it extended the data from 13 sectors to 16 sectors. The 13-sector version was running in Las Vegas. The improvement to this 16-sector code is the part that I worked on every night for a month, nearly finishing each night around 2 AM (Denny’s milkshake) but repeating the whole process the next day because I had to keep getting the entire huge framework in my head each day. Finally I stayed one night until 6:30 AM and got it totally done. Jobs had been asking me every day when it would be done and that morning I told him that it was! This part of the low-level disk code was not Randy’s but I am so thankful for the parts he did so well too that made higher level sense out of this. I consider this code to be more like hardware than software.