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

If you want to see next year’s consumer electronics trends, go the current year’s CEATEC. The largest CE show in Japan, held in Makuhari for at least the past 7 years, plays host to products and their components from all over the Asia Pacific area, where most of the CE industry innovation resides.

In a nutshell, based on what was observed at this show, I can practically put money on the items below being the CE Trends for 18 months. You can see many of these reflected in the winners of the CEATEC Innovation Awards, a panel on which I’m a judge.

  • 4K Television Sets + 8K, 3D is dead again and hey, why not buy a 4K set?
  • AR Headsets, likely trending towards VR – I’m thinking AR leads to head-mounted Android Wear, and, heaven forbid, iGlasses
  • Better device user experiences, totally non-techie

Over the next 3 years, probably the following:

  • “Simple” Robots transforming healthcare and family interaction
  • Family, home, and building monitoring solutions, healthcare
  • 5G wireless

The Under-appreciated Heroes of our Industry

I feel it’s harder to innovate full products these days. Many CE technologies we see in the pipeline are simply better, smaller, faster, higher resolution, more efficient versions of what’s come before. The real shining star of this industry is the component manufacturers and what they’ve been capable of. The second rarely told story is the countless research hours creating amazing solutions most American consumers will never hear of.

I was recently having trouble telling Jira to connect to a named SQL Server instance. Using Jira’s configuration manager, I should be able to use the SERVERNAME\INSTANCENAME syntax like every other modern application. Well, not with Jira. I found the solution and here ya go:

In the database field in the configuration manager, which you can launch from bin\config.bat in the Atlassian Jira Program Files folder, type

SERVERNAME;instance=INSTANCENAME

Oh, did Atlassian forget to tell you to install Java Runtime Edition on your server? Of course they did… Go ahead and install it if you haven’t, but make sure you pay very close attention and don’t click I Agree to install Yahoo and junkware on your machine. Because, well, Oracle.

This information was lovingly sourced from the comments on: https://confluence.atlassian.com/jira/connecting-to-named-instances-in-sql-server-173435.html

Enjoy!

I recently ran into a need to use the LAME MP3 encoder in a customer’s website. Problem was, once I deployed to Azure, I received an error of “Unable to load DLL libmp3lame.32.dll”. Uh oh! “But it’s in the bin folder!” I screamed silently at Starbucks. So, I binged the issue and found a good answer on StackOverflow. I’m sharing here because it helped unstick me, and I imagine others may be running to this issue with libraries other than LAME.

I ended up adding the function to my Global.asax, in addition to importing namespaces System.IO and System.Linq:

/// <summary>
/// Updates PATH variable in hosting instance to allow referring to items in this project's /bin folder.
/// Very helpful with Azure.
/// </summary>
public static void CheckAddBinPath()
{
    // find path to 'bin' folder
    var binPath = Path.Combine(new string[] { AppDomain.CurrentDomain.BaseDirectory, "bin" });
    // get current search path from environment
    var path = Environment.GetEnvironmentVariable("PATH") ?? "";
 
    // add 'bin' folder to search path if not already present
    if (!path.Split(Path.PathSeparator).Contains(binPath, StringComparer.CurrentCultureIgnoreCase))
    {
        path = string.Join(Path.PathSeparator.ToString(), new string[] { path, binPath });
        Environment.SetEnvironmentVariable("PATH", path);
    }
}

Then in Application start I simply added:

// Sometimes files aren't loaded properly from bin. Hint to the app to load from /bin, too.
CheckAddBinPath();

I hope that helps!

I struggled with this for a few days while trying to convert a Silverlight video player to HTML5, and finally found an answer. Posting here in case anyone else is having trouble!

You need to specify the format as MPEG DASH to get it to smoothstream the MP4 file to the HTML5 video player. This is done by adding a format parameter to the manifest URL, as follows:
Note the (format=mpd-time-csf) at the end of the URL. There are a number of other formats you can stream, including the Silverlight SmoothStream, Adobe’s streaming format, Apple’s HTTP Live Streaming for iOS devices, and more. This is all done for you automatically by Azure’s Media Services. Pretty darn cool.
I struggled to find this, too, so quite happy I finally got things working. Here’s the source URL from Microsoft for more details:

I’m relatively new to Azure deployments, but the more I use them, the more I like the service. Unfortunately, it’s not WYSIWYG with deployments. What you see on IIS Express when development is not always what you’ll get after an Azure deployment. One issue I’ve come across is the MIME mappings aren’t the same, or don’t exist at all, and that’s preventing various file types, such as SVG images and WOFF2 fonts from being served. I also noticed that fixing Azure’s MIME mapping busted my AngularJS support in IIS Express – whoops!

Using the magic of web.config transforms, we can fix this for our release deployments. If you expand your web.config file, you’ll see web.Debug.config and web.Release.config. These files enable you to insert, replace, and remove settings based on your build configuration. Obviously, if you had multiple build configs, such as for different hosting environments, you’d insert those config names in addition web.*.config files.

To add SVG support, we need to insert our additional MIME types into the web.config. There’s no reason to do this in the master web.config, because it’s only necessary during release. This same tactic works very well for swapping the SMTP mail mailSettings section based on the hosting environment’s needs. For example, I swap localhost, where I use PaperCut to monitor sent email, to the actual settings upon deployment.

Below, you’ll see the fully modified web.Release.config from a recent deployment. This one worked perfectly for adding SVG and some missing font file extension support. You’ll notice I’m adding a new section under <system.webServer>. Note that I do not mark the webServer tag with an xdt:Transform. I don’t want to replace the entire section. I simply need to add the staticContent section to override some of the settings already configured in Azure. There are other options for xdt:Transform, such as Remove and Replace. This is a very powerful feature and I encourage you to learn more about it from Microsoft.

    <staticContent xdt:Transform="Insert">

I hope this helps!

Snippet

<?xml version="1.0"?>
 
<!-- For more information on using Web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=301874 -->
 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.webServer>
    <!-- Add support for video files and other non-standard file request types. This breaks AngularJS support in IISExpress, hence why it's here instead. -->
    <staticContent xdt:Transform="Insert">
      <!-- if you don't remove certain extensions first, the site won't load, whoops! -->
      <remove fileExtension=".svg" />
      <remove fileExtension=".svgz" />
      <remove fileExtension=".eot" />
      <remove fileExtension=".ttf" />
      <remove fileExtension=".woff" />
      <remove fileExtension=".woff2" />
      <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
      <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
      <mimeMap fileExtension=".webm" mimeType="video/webm" />
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml"/>
      <mimeMap fileExtension=".svgz" mimeType="image/svg+xml"/>
      <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
      <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
    </staticContent>
  </system.webServer>
 
</configuration>

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.

I ran into this issue a few weeks ago… The option for “Connect to a wireless display” was no longer available on my Surface Pro 3. It disappeared on my Acer S7 laptop, too. What the heck is going on?!?! Well, I figured it out with some sleuthing on the interwebs… Oracle’s VirtualBox, for whatever reason unbeknownst to me, disables support for WiDi and Miracast in Windows 8. Uninstalling VirtualBox solved the problem. I also read some VPN clients cause this issue to occur, but that didn’t appear to be my case.

I’ve logged a bug with Oracle – this is a usability bug and should be fixed. I’d love an explanation as to why it’s disabled.

Here’s the bug: https://www.virtualbox.org/ticket/13998

I hope that helps anyone having a similar issue!

Best,

-Auri

I’ve discussed at length how to fix SkyDrive sync issues. Check out Another possible solution for OneDrive / SkyDrive sync issues and Possible OneDrive / SkyDrive sync fix for Windows 8. I have found that sometimes even resetting SkyDrive doesn’t fix the problem. Microsoft will charge you for a brute force approach, but I figured out one more option if nothing you’ve tried has started syncing back up again. Before you follow these steps, try the other two – this is a last ditch resort!

1. Make sure all other desktop and “modern” applications are NOT running. Only File Explorer should be running. Word, Chrome, whatever – they should all be closed.

2. Press Windows Key + X, select Command Prompt (Admin), and the Windows command prompt should appear.

3. Make sure the OneDrive app isn’t running – right-click it and select Close if you see it in the taskbar.

4. Type skydrive /shutdown

5. Wait a minute.

6. Right-click the task bar and select Task Manager.

7. Keep trying to end the OneDrive Sync Engine process until it disappears, as shown in the figure below. This may take a few tries.

image

8. Open the following folder:
C:\Users\your user account name\AppData\Local\Microsoft\Windows\SkyDrive\settings
and you’ll see something like the figure below:

image

9. Delete all the files except for ClientPolicy.ini and global.ini.

10. Once they have been deleted, type the following: shutdown -r -t 0

11. Your computer should restart.

12. Log back in and your files should start resyncing. You’ll probably see results within a few hours. This will depend on the total number of files you have on OneDrive. You’ll also see downloads.txt and another funky-looking file start growing in size. If you see that, you know things are working, and OneDrive has started rebuilding everything.

I’ve been underwhelmed by Microsoft’s response for documentation regarding SkyDrive and its inner workings. So, I’m on a mission to break things down. I’ll update this blog post as I find more information. As always, any info provided here is used at your own risk. I take no responsibility if you hose a system.

In case you want to see all the SkyDrive process settings:

C:\Users\<your account name>\AppData\Local\Microsoft\Windows\SkyDrive\settings

There are two files of interest:

global.ini and ClientPolicy.ini

There were some settings that surprised me in ClientPolicy.ini:

  • MaxFileSizeBytes = 2147483647 Is the 2 GB max file size mentioned on MSFT’s site? They should probably mention that, since all shipping systems are 64-bit and video files and ISOs can be pretty big.
    • Update 7-Jan-2015: It appears Microsoft has upped this to 10 terabytes.
  • Tier1MaxFileSizeBytes = 2147483647 These would be Microsoft’s Office file types
  • Tier1FileInclusionList = |doc|docm|docx|dot|dotm|dotx|odc|odp|ods|odt|pot|potm|potx|pps|ppsm|ppsx|ppt|pptm|pptx|rtf|vdw|vdx|vsd|vsdm|vsdx|vssm|vssx|vst|vstm|vstx|vsw|vsx|vtx|xla|xlam|xlm|xls|xlsb|xlsm|xlsx|xlt|xltm|xltx|xlw|
  • MaxItemsInOneFolder = 150000 I wonder if this caused my earlier sync problems, since I had more than 150K files in a folder, and then I deleted the folder. Maybe that messed up Microsoft’s storage system in the cloud? When I finally had a Microsoft technician look at my account, things magically started working a day later. I didn’t change anything, but what happened on their end?
  • MaxClientMBTransferredPerDay = 131072
    • Update 7-Jan-2015: It appears Microsoft has upped this to over 250000. Makes sense, given average home broadband speeds.
  • MaxClientRequestsPerDay = 500000 So what happens if you reach your limit?
  • NumberOfConcurrentUploads = 3 I’d rather have more, but it appears the next setting helps here, even though it’s not accessible via the SkyDrive app.
  • AllowUserOverrideOfConcurrentUploads = true
  • SyncTelemetryURL = http://wlepsi3.redmond.corp.microsoft.com/SyncDiag.ashx This one bothers me a bit. What is this URL tracking? And why isn’t it over SSL?
  • LowDiskSpaceLimitMB = 3072 If you want to override the low disk space limit… I’m going to try this on my Dell Venue Pro 8. Update: It worked! Yay!
    • Update 7-Jan-2015: It appears Microsoft has lowered this to 200MB. Much better for tablets! Of course, in the future, tablets will probably have 64GB, 128GB or more by default due to lowered storage costs.
  • AutomaticVerboseLoggingEnabled = true I wonder where the log file is. There’s one in this folder, but it’s used by the SkyDrive process. I’ll play with that in a VM so I don’t mess anything up Smile

I’m also curious as to why SkyDrive.exe can’t be opened in a decompiler. If I request it, the file system says the file doesn’t exist. Is c:\windows\system32\SkyDrive.exe simply a shim? Very interesting.

Breaking down the SkyDrive process, I found what appears to be additional command line parameters. I have not tested these as of yet.

/shutdown
/register
/unregister
/installperfcounters
/uninstallperfcounters
/background
/watson

Until next time… enjoy!

Best,

-Auri