Tuesday, November 1, 2016

Not My Problem!

Ok, that title might be a little misleading, after having beers with a buddy and discussing the software development process, we talked about a client we both had a couple years ago. He asked me..

If they did XYZ the would see a 2X if not order of magnitude improvement in their process?

This was absolutely true and the decision makers may have or may not have have realized it. The underlying fact is, what they were doing was working...maybe running on 3 out of the the 8 cylinders but to the organization, that was acceptable compared to the disruption of the change. They were making progress in this area, and other areas not so much.

I've been in this industry for over 25 years, and have touched most technologies and parts of the development processes. I may not know everything but it's safe to say I paid my dues and learned from both successes and well things that didn't turn out as I'd like. With this comes experience and 9 times out of 10 if I suggest something strongly...it's almost certainly something that would make a big impact, along time ago I gave up on sweating every little detail I knew would bring the optimum solution...sometimes it just easier to say...yeah...that will work too and get back to my IDE..after all it does what I tell it to!

Although in many cases my "advice" gets followed sometime it doesn't. That's ok...the process or technology I'm suggesting just might fix something that is "not my bosses problem" maybe it should be? Maybe I don't know all the facts? Either way this can be extremely frustrating...there is a bug in the technology/process and I want to fix it!

I don't have a definitive answer on how to solve this "conflict of problem priority" however over time I've came up with some coping mechanism, if we think about it there are in reality a few possible reasons for this.

I could be wrong...yes I said it, I could be wrong, anyone who claims to always know the right answer rarely does, without exception, I look here first.

You could be right but the priority of your interpretation of the problem is not your bosses (right or wrong)

The change is important and impactful however the change would be too disruptive, at least at this moment in time

If you are a developer and your boss "doesn't like your algorithm" see number one above first. If you still truly know your algorithm is right, look at number one again after a good night sleep. If still know your algorithm is right and this happens once a year...shrug it off, it will give the boss some points and move on. If this happens weekly...give it just a little more time with number one, but also realize you may have a "drive-by" manager, someone that likes to swoop in try to understand what you took weeks formulating in 3.5 minutes and tell you how to solve the problem...again look to number one, maybe they are that good :) but likely what I can say here is...well..er...ah...might be time to vote with your feet.

So again I'm not offering up any solutions here, but this is one the toughest parts of being a "hired-gun" to come in and write software, It's not my show, I'm not writing the checks, I'm doing what I'm told. But also as a hired gun, I can also vote with my feet (which I very rarely end up doing)

Tuesday, October 25, 2016

The Wolf Bytes is Back

Been a crazy couple of years to include some phenomenal projects I've delivered, leading a team to the Best Overall App at AT&T Dev summit and my wife being on the door step of death to making a full recovery from Multiple Myeloma.

All that aside now that my life is getting back to normal and came back up for air...I realized it's time to "re-invent" myself. Are your in a groove, or a rut as well? For the past 10 years my business focused on mobile development, developing for Windows Mobile, iPhone Native, Android Native and now most of my work is in Xamarin. I've had many successes shipping software on all these mobile platforms and likely could continue doing so indefinitely.

My early background and true-love is really embedded systems programming and this new thing called IoT. I have what I think is a vision for an IoT based product and as part of this I needed a web app and services. Prior to my mobile development, I did a good amount of web dev to include Classic ASP, ASP.NET, MVC, WCF, ETC.... I started building a simple ASP.NET MVC 5 app, and decided hey...if I'm gonna learn this stuff, I might as well target ASP.NET core and MVC 6.0.

All I can say is....

The game has completely changed!

This was really an eye opening experience for me, in my opinion the change between ASP.NET and ASP.NET core is as big as the change from Classic ASP to ASP.NET. Let me clarify...the coding/dev part is not that terribly different, you still have .NET classes, Razor templates (although I'm really falling in love with Tag Helpers instead of Html Helpers) and most of the knowledge you have from ASP.NET libraries still applies.

Side Note - I really wish the name spaces changed a bit more from Microsoft.AspNet.Something to Microsoft.AspNetCore.Something. A considerable number of classes are identical between the two classes and I've lost more than a couple hours where I added the name space Microsoft.AspNet.Something where I should have added the AspNetCore namespace.

The major change is how the apps are built, in the past, you added "stuff" to your project and based on the extension type (in most cases) the build action was defined and the project targets turned all your source code and assets into "stuff" that ran your app. In the brave new world...not so much, you are responsible for configuring all the tools with a real favor for tools and utilities written in Node. You have tools named things like Gulp, Bower, Grunt and a few others. Whether this is right or wrong is pretty much immaterial, the ship has sailed and it's time to jump on board...or get left behind.

I think the biggest thing that hit me was how much of change this was. There are templates to get you started that setup your project frameworks, I've also spent many, many hours at the ASP.NET Core site, they really did a good job of discussing the new tooling and frameworks. If you haven't started down this road yet, it's time.

On one hand I think way too many developers just relied on the "crutch" that VS.NET provided, not in a bad way, but it let you focus on your code or in the app domain. So the requirement to understand what's going on is not that bad of a thing. On the other hand...to be productive you need to not only know your dev skills but also need to at least have a good grasp of the build tools and process, we'll see how dynamic these tools are. It's not all that beneficial, even if it's the greatest tooling, to have it change every six months...or just as you become proficient.

Wake Up Call!

This little detour into Web App Dev from my IoT product development hit me like a two-by-four to the head and made me ask "am I really in a groove? or is it a rut?". It made me realize that yes, I had become a specialist, but as an architect I also need to have more than high-level understanding of pretty much most of the common dev technology. This change made moving to the .NET Core and how much of a change it really was made me realize it's time to "re-invent" and "re-focus".

I think at this point, my mobile app delivery skills are really at the "Sharpening the Saw" level of 7 Habits, and it's time to start back over at step on a much bigger stage.

I'm getting really excited about this and look forward to making a number of announcements in the coming months.

Monday, September 1, 2014

Creating a network client on the Windows Version of Galileo is what I would call trivial!

There is however a catch, in the initial SDK that was released the only port you can use is hardcoded at 27015. If you look towards the top of the GitHub file you’ll see the DEFAULT_PORT. Maybe I missed it but I couldn’t see anywhere to override this. Once you understand that, reading and writing from sockets is as simple as this:

Simply create this program, then on your PC open up telnet and connect to port 27015.

Hopefully in a future version of IoT you’ll be able to use different ports.

As of yesterday 8/19/2014, you can take a standard Galileo and run Windows on it. This is a $50 piece of off the shelf hardware you can purchase off of Amazon and get started with the Internet of Your Things.

What you will need:

Galileo – From Amazon for $50 as of the time of this writing, of course available with Prime

You’ll also need something to write the files to your MicroSD card, you probably have something like this. Also the MicroSD card comes wiht a full size SD Card Adapter.

Most of the steps you need to get up and running can be found on the MS IoT update page.

Here are some things I ran into while setting up my environment.

Upgrading your Galileo to 1.02 Firmware

When you get your device, it will more likely be a 0.7X version to run with the new Windows Environment, you’ll need to upgraded it to 1.02

First off you’ll need to update your Galileo, you’ll need to install the Arduino 1.5.3 environment from the Intel site, so copy this to your hard drive, there isn’t an install, but you’ll just need to copy your files over to somewhere on your hard drive.

To update your Galileo you’ll need to apply power to it and plug the USB cable into the port labeled USB Client, this is the one next to the jack that looks like it’s for headphones (it’s not, but that’s a different story). Start Device Manager and keep it open. Then you need to wait, it could take 2-3 minutes, so be patient. Look for a device named similar to Gadget Serial V2.4, or an additional Serial Port, again, don’t get worried if this take a little while. If you have a new serial port, you are good-to-go. If you don’t then you’ll need to install the drivers for the new device. To install the drivers for your new device to let it work as a serial port. Right mouse click on that device, select Update Driver Software

Then navigate to the folder that is installed in and install the driver.

Once you do so, you should see a new port, it should be the one with Abstract Control Model:

Once you have that, then you can start the arduino IDE:

Make sure the port that is identified above is selected under Serial Port

Then click on Help ->Update Firmware, this takes 5 minutes. Make sure you Galileo is plugged in to the wall and you do not disturb the device while it’s updating or your could Brick your device.

Burning the SD Card

This is relatively straight forward, and you just need to let the process run on my machine it took about 1 hour to burn the file onto the SD Card

Getting your PC Ready

There is a really good guide here that gets you going, however you’ll need to install the standard Telnet client on your machine from Add/Remote Windows Components. Then you need to install the MSFT IoT SDK from here (for VS.NET 2013 Ultimate, for other editions please see the prior link).

Getting your Galileo Online

Compiling Your Apps

Before you go off and create your next big thing with the Galileo it’s probably a good idea to make sure that you can compile a simple example. After you installed the SDK, you’ll see a new option with File->New->Project

Once you do that you’ll see a very simple program that will toggle one of the I/O pins and write something that will be sent to the Debug Output window.

An important note here – To Deploy applications from VS.NET to your Galileo you may need to Open Outgoing Port 4018 on your PC’s Firewall.

That’s it! Now you should be able to run the samples and build some awesome stuff!