So I finally attended Microsoft Build for the first time.

It did feel like a lot of other conferences I’ve been at. It was great to be able to chat with developers that directly work on the products I leverage. It is clear that we are in a Machine Learning and AI battlefield. Both Microsoft and Google are fighting to be the king of this territory. One big difference is that Google is fighting two battles where is it appears Microsoft is really only facing one. In Google’s case they are chasing Machine Learning and AI as well as the dominant mobile platform in which the are battling Apple.

Both Google and Microsoft have cloud services that provide Machine Learning or AI capabilities. A lot of them are very similar. It really feels like they are all playing from the same playbook. Even when it comes to specialized hardware. Google has it’s TPUs while Microsoft is running FPGAs.

Another area that Microsoft and Google share is digital assistants. Amazon owns this space today but now Microsoft is partnered to get Cortona on their Assistant. The two companies see the play that all digital assistances can play in the same world. Each will have their specialties making one better for something than another. Google is not in that mix of sharing at this point. They are making major leaps forward by leverage their AI/ML capabilities. Their demo of Google Assistant calling to make an appointment via Natural Language Processing shows an interesting world were digital assistance can really carry out many tasks. I think it is just a matter of time before these digital assistants turn into robotic assistants. I for one am ready for my R2D2 unit. Bring it.

Google of course has the one market of mobile that Microsoft does not directly have. Google announced their Android P Beta which will be the next wave of Android. I actually thought it was interesting seeing them take a lot of Apple’s gestures and take them a step further. Microsoft though does have a mobile play through Timeline and their Android Launcher. They also have integration with Android which allows them to bring SMS messages into Windows similar to iMessage for Apple fans.

This competition over AI as well as other areas will only benefit us all as we move forward. If we didn’t have these kind of innovations going head to head there wouldn’t be any incentive to do more. I am very excited to see where this goes. I wish there was more to be honest but I’m alright with the way things are being released frequently as well.

So today I am heading to Seattle for my first Microsoft Build Conference visit. I’ve been to a couple of larger conferences in the past like WWDC and AWS RE:Invent, but I’ve never made it to Build. I figured I would post my first thoughts before the conference on what I expect to hear from Microsoft and see how it turns out.

I have high expectations that a lot of the discussions and announcements will center around Data and AI. This will range from tools and services to make it easier to ingest data from your sources where ever they are. This will be followed with more tools around Machine Learning and the like. Microsoft’s past endeavors in this space have been about democratizing AI and Machine Learning.

I would like to see information about HoloLens 2 personally and where the direction of that platform is going along with more mixed reality stuff but that is more of a personal interest than work related for me.

I expect to see more cross platform tooling to follow the moniker of “Any Developer, Any App, Any Platform.” The fact that I jump platforms on a regular basis this is very beneficial. Visual Studio Code has became my default visual editor (with vim bindings of course). I’d like to see more tooling around building Progressive Web Applications. Based on the session list there will be some content on this topic. I feel that this platform has some potential as long as the vendors can all get along and make it happen correctly and not diverge.

I’m going to be trying to travel light this year. I’m only bringing my iPad Pro and my iPhone. The goal for me is to see if I can do any development through virtual machines in Azure if I want to play with anything. I want to see how light I can travel. I tend to bring a laptop with me all the time and barely use it. We shall see how well I can do this on this trip.

If you are at Microsoft Build this year and want to catch up ping me.

As promised I’ve created a little video tonight on me learning to use blender. Tonight’s model is a Low Poly Tree. I show some techniques I would have normally used but I’ve learned some things from another YouTube person Grant Abbitt that I share as well. Grant definitely deserves a lot of credit as he does a great job on his channel. Please check out his work too as he is a true professional versus me who is just dabbling and learning currently.

And with here you are my first Blender video in my series of learning Blender.

 

Have an idea of something I should try to create? Leave me a comment and maybe you will see that in my video later this week or next week.

When I was in High School I happened to take a course in drafting and eventually Computer Aided Design. I even landed a job for a while learning and doing 3D CAD. Over the years I’ve dabbled in 3D from time to time whether it was creating something for a video intro for my kids theater performances I burned to DVD or for building a simple game. I’ve decided it was time to dust off my skills again. Especially with the project I’m working on my boys to create a digital game.

Wow the world has and hasn’t changed much.

The tools I’m using at this time range from Blender (Free) to ZBrush Core (Paid). I’m trying to focus on Blender which is a crazy tool that can do more than one trick. It can be a 3D Modeling tool or a Sculpting tool or even a game engine.

Blender

Blender 2.79b

Blender can scare people off really quickly. You need to come to it understanding it is in “Expert Mode” out of the gate. The tool is full of keyboard shortcuts you really need to memorize to improve your speed. The mouse will feel backwards off the bat but if you get used to it you will understand the thoughts behind it.

I’m going to start to make screencasts over the next few weeks covering everything from the basics to stuff I’m just playing around with. My goal is to force myself to learn the tool to share with others what you can do with it and how. Just like doing a presentation if I don’t have a deadline it won’t happen. So starting today I’m going to be posting a video 2-3 times a week. My first video will land by Wednesday this week.

See you again soon.

The Beginning

I have decided to start a project with my two younger boys Camron and Curtis. The journey we are going to go on is to create a digital game from ideation to completion. We will be doing this all while live streaming the experience. I am currently working on a schedule in which we will stream the different parts of the process.

This will be quite an experience. I just recently starting streaming on Twitch under my handle CorvusNite. I’ve already learned a lot and will continue to evolve my Twitch content between gaming myself and building the game my sons come up with.

The Game – Episode 0

What do I expect my boys to want to build? Well based on the fact that they love to play Minecraft I have a gut feeling that is where their ideas are going to start. I’m going to push them though to create something completely unique instead. My first session will be myself, and my boys sitting around a table and literally drawing up ideas on paper. We will have open discussion of our ideas and between the three of us we will land on the game concept. From there is where the creative process will really get going. We will have to do everything from game mechanics to design aesthetics. If the game has characters we will have to work through character design principles. Next we will have to discuss our strategy of how we attack building our first MVP.

Development Begins – Episode 1

The next step for us will probably be starting the rough game development. I’m not sure at this point where we will start. It will either be jumping right into a game development platform and starting basic game concepts in code, or it could be starting on the development of graphics for the game either way this will be more of a screencast. I’ll do commentary as I go. I will discuss the decisions I’m making and why. Occasionally I will have to consult with the game designers (My sons).

Crowd Participation

I am hoping to get a community around this project and they will have input as we move forward through the design of the game. This will come in the way of polls as well as just people contributing through chat in Twitch or commenting on the archived YouTube videos I post. If people would like to directly contribute we would find a way for them to join us. The goal though is that majority of the development of this project is streamed to show the process and the work that goes into building software.

Conclusion

I hope this project will be a success and that others will enjoy watching the process. Please feel free to give some suggestions if you have them as well as feedback.

Consistently throughout my career I’ve ran into situations where problems happen within engineering teams. I’ve heard war stories from others at conferences regarding team issues. It continues to baffle me why engineers can solve technical problems but not human issues. The primary reasons I decided that a software engineering career for me was that I love to solve problems. I’m hoping that others joined a career of engineering for the same reason. Why then do we not treat non-technical problems the same was as any engineering problem.

Think of it this way. Let’s say you have a performance problem with your web application. The first thing we probably do is think through the potential areas the problem could exist.

Potential Causes

  1. Resource Sizes
  2. Database locking
  3. File sizes
  4. Missing caching
  5. Etc.

Then we determine a way to prove them. After that we replicate the issue and work toward a solution. Why can’t we do the same thing with team problems?

Let’s take a scenario of performance to the people side. Let’s say that our scrum team that continues to not deliver on our commitments. Wouldn’t we think through the problem the same way? Let’s look at potential causes.

Potential Causes

  1. Underestimation
  2. To much external noise
  3. Client issues
  4. Inter-team conflicts
  5. Etc.

The next step would be to determine how to prove which one of the causes it really is. Let’s think through this a little further.

1. Underestimation

For number one we could just pull back our estimates for a few sprints or automatically add buffer to our sizing strategy to create buffer till we actually meet our commitment.

2. To much external noise

For number two we could start to track the external disrupters. This could be logging how many non engineering related meetings we have.

3. Client Issues

For number three we could probably just look at our ticket system to determine how often we are getting said number of tickets which could lead to number two being the problem again.

4. Inter-team conflict

As for number 4 that one is tougher. This could be done by getting HR or outside counsel to talk to team members to find out if there seems to be issues. This is sort of the elephant in the room problem though and it depends how easy your team is willing to have open conversation in the end.

Either way the same practices we do to solve engineering problems can be applied to any other issue we run against. I still find it very hard to believe how many times I run into teams or hear stories about how someone continues to come to management or others with problems without ever applying basic troubleshooting steps to their problem. Maybe if we took ever problem on similar to our engineering tool belt we would get to resolution much faster.

To me engineering is all about solving problems and we should use the skills to solve any problem we have. It’s a game to me. I really enjoy it, which is why I got into this career.

Have you ran into engineers being unwilling to solve problems that are not technology related? How did you get past the problems?

Have you ever debated the amount of architecture needed? If you have began your career progression as an architect or a software engineer with the role of architect, you probably have questioned the appropriate level of architecture. Terms will be thrown around like explicit architecture versus intrinsic architecture. Maybe intentional architecture versus organic or emergent architecture. Either way you begin to question what is the right level of architecture for your solution.

If you have experienced things like I have in my career you go through waves where you think you have all the answers to find out they were all the wrong answer. The truth of the matter will become clear at some point that there is not a perfect architecture, there is only the architecture that meets the needs today. Eventually it will get broken. If not by use by time.

I feel the job of the architect whether it is role or whether it is a position is to minimize the risk of change. This means usually putting just enough architecture in place to make it easy to change later. This is more art than science. This is where the engineering brain you may have will beat you up. At some point you have to be able to work in the grey or you will not make it in your career.

I feel like I’ve reached the point in my career where I know how far to go without killing a business or killing the engineers that work on the project but I’m sure others may have different opinions. Either way I’ve learned to get out of the way more and not feel like I need to architect every aspect of the software. At the end of the day no one cares about the architecture except the architects and the engineers that have to change the system, unless you have a very technical product team that understands the trade offs. Your customers whether internal or external do not care as long as the software meets their needs. They will care if they are paying regular though whether you can add additional value and that is where the customer unintentionally will care about the architecture whether they know they do or not.

What are your thoughts? Is there a perfect architecture? Is there ever enough architecture? Does your organization care about architecture? Do they understand the need?

I’d love to have some conversations on this topic with others. Catch me around other meet ups and conferences if you get a chance.