cjibo’s Blog

cjibo Do Something.

Microservice Architecture

| Comments

Microservices are a very hot topic in the industry right now. The goal of this blog post is to help define what a Microservice is, and why you would want to use them.

What is a Microservice?

You can think of a microservice as a mini-application that can be composed into a full application. The goal of microservices is to avoid creating monolithic applications that is hard to maintain and update. Microservice architecture is not a specification but rather a design pattern or philosophy. There has been an attempt recently to better define exactly what a microservice is. Someone I personally like to follow, Martin Fowler, has recently covered the topic of microservice architecture and I rather like his take on them. I’m going to borrow his definition and briefly cover my thoughts as well on some of these. If you like you can read Martin Folwer’s post here as well. ThoughtWorks has also posted a video (on bottom of page) of Martin Fowler speaking on this topic. I hope you check both of these out as there are some details in them I may leave out.

Characteristics of a Microservice Architecture

Componentization via Services

In a traditional application we typically break our code up into libraries and such. Even in most Service-Oriented Architecture we still have tons of shared libraries between services. This can lead to still having major dependencies that can cause us to update everything together.

Organized around Business Capabilities

This concept to me is keeping your business capabilities together as a small domain. You do have to think differently though as one may say “well everything is part of my domain”. This is the wrong approach. You need to identify what really is the same domain. A good example is if you are creating an e-commerce website the account management could be a domain while the shopping aspects are separate. One could even break the cart operations separately from the actual checkout process. Smart endpoints and dumb pipes

The concept here to me is that the endpoints are the brains not the pipes. As an example Enterprise Service Buses have been implemented across the industry and solve lots of problems, but in doing so they have the smarts. Microservice architecture today seems to leverage message brokers more as a transport and not as a logic. This is beneficial as the only responsibility of the message broker then is to ensure the messages are delivered. If you rely on the “bus” to do smart things and you need to make a change you have now directly created a dependency to potentially multiple services which causes ripple effects. The goal of microservices is to ensure that any one microservice can be updated without requiring changes to others.

Decentralized Governance

Monolithic approaches have a tendency to force standardization to a single technology platform. If each Microservice truly owns the full stack, meaning they control all business logic and storage of date, then as long as you have good guidelines on how you handle some of the foundational items such as security and protocols then it should not matter what technology stack you use. Now with that said it doesn’t mean that an organization can just go crazy and add one hundred new languages to their plate. My philosophy on this is you should not have more technology stacks than half the number of scrum teams you have.

Decentralized Data Management

I sort of mentioned this above but each service should fully own their data. That means no one updates or accesses the microservices data except for the microservice. There are a lot of ways to handle this even if you feel you need some form of a central repository. Honestly I believe there are better ways to deal with needs such as reporting and analytics where you store the data properly in multiple stores but that is a topic for another day.

Design for Failure

To be honest this is just good practice in general. In microservice architecture or even cloud architecture you have to be prepared for any piece to fail. Your services need to be resilient and deal with failure gracefully. This can be having sort of a circuit breaker approach. Let’s give an example. Imagine having a system where you write information directly to storage. For some reason storage is not available. The application needs to be able store the information somewhere else so that it can later resend the information to its final resting place. To me this is just common sense in a cloud world.

Evolutionary Design

This by no means is the easiest of the principles to achieve in real life. The goal here is that all services should be able to be changed without direct effect on others. This means you have to follow some good decision making processes. Instead of breaking a service contract you should make it backward compatible or if necessary create a new service all together. You actually can start seeing a design flaw if every time you update microservice “A” you update microservice “B” that you are coupled. It may be the fact that you actually split the same domain and microservice “B” actually should be part of microservice “A”.


Simply put we live in a world where we have to move faster and faster to keep up with market demands. Monolithic architecture typically makes it very difficult to ship products quickly. If you have to continually do full regressions across millions and millions of lines of code you fall into a trap that slows you down. If you can make small changes quickly they add up to tons of business value rather quickly. The other benefit is your customers see the small changes and feel that you are progressing instead of stagnant. This does mean that you need to still work on automated testing to ensure you do not break things. Microservices actually make for larger complications in deployment as well as make a more complicated design which may be hard for some to follow. Really in the end it is about speed and resilience though. Microservice architecture is not for everyone or even every solution. It is yet another tool in your tool-belt to use appropriately.

So what is next?

I am planning to post a more detailed architectural post which will include diagrams around a fictitious application. This will probably come in a few weeks as I am working on a talk around this as well as Docker. Please keep your eyes open as I will be posting more content in the coming weeks.

Microsoft Goes Open Source for Realz

| Comments

So this week Microsoft announced that they are open sourcing .Net Core. What does this mean? Well technically Microsoft has been open sourcing parts of .Net for quite a while. ASP.Net MVC for instance as well as Entity Framework have been open source for a while. So what is revolutionary about this? My opinion is the most important item is the fact that Microsoft is in a major shift in their approach.

Visual Studio Community

Microsoft announced and released Visual Studio Community Edition today. This edition unlike Visual Studio Express actually is extensible. This will allow startups to have professional grade editing, code analysis, and debugging. Individual developers can use community edition to create their own free and paid applications. The main restriction is that enterprise organizations (greater than 5 users) cannot use community edition except for open source contributors, academic research, and classroom settings.

Mobile first, Cloud first

Satya Nadella made the statement that Microsoft is a “Mobile first, Cloud first” company. On the mobile front Microsoft showed that they are committed to mobile and not just Windows Phone by partnering with Xamarin. Microsoft has been making major improvements to their cloud offering as well. This has included adding support for operating systems other than Windows. The fact that Microsoft has also partnered with Docker shows a new stance in how Microsoft will be working with Open Source as well.

Xamarin Partnership

Over a year ago Microsoft and Xamarin started a partnership. For those not familiar Xamarin took over ownership for mono which is the open source implementation of the .Net CLR. Mono allowed you to run .Net on Linux and OSX. Xamarin expanded into mobile rather quickly years ago. Xamarin mobile platform allows you to create native Android and iOS applications today using C#. This allows for you to share resources between an iOS and Android application, but still allows you full access to the native features.

The announcement this week strengthens the partnership. Xamarin templates will be available in Visual Studio 2015. Visual Studio Community addition will allow for users to use extensions including Xamarin Starter Edition. This should allow startups to get something off the ground with minimal costs.

With Microsoft open sourcing core it will allow Xamarin and others to expand the platform. Mono was created from the ECMA spec since the source for .Net was not available in the past. Today things are about to change. Give it a year and we should see major moves around this.

My Personal thoughts on Microsoft

I am actually beginning to get more bullish on Microsoft. They fell far behind in my eyes for a while but are now making some bold moves which may and should attract more developers. By open sourcing the core framework we should see advancements from the community that take .Net to new levels. It will be interesting to see what the open source community does going forward.

Microsoft’s goal in my eyes is to expand their cloud platform. To do this they had no choice but to embrace the other platforms. This is by far not the proprietary Microsoft of the past. I really can’t wait to see how this pushes other companies like Apple, Google, and Amazon.

Where Did Computer Science Go?

| Comments

I have always loved science. I was intrigued early in my life by the possibilities that science brought to reality. From flight to space travel. I am still at awe every day with the technology I get to use that all came out of a science field at some point. Literally the clothes we wear and the cell phones we carry all came from some field of science.

I personally work in the world of computer science. I hold a bachelor degree in computer science for that matter. Somewhere along the way though it seems we have forgotten the science portion in our discipline. The word science comes from the Latin word “scientia” meaning “knowledge”. The goal of a scientist is to gain knowledge. In other scientific fields that most people associate science with from their grade school days is based around use of the scientific method or scientific theory. In this process the goal is to start with a theory which in the end could be proven or even falsified. Quite honestly most people who have a computer science background end up being computer programmers or possibly network engineers. Once these titles take over it seems that the “science” portion vanishes.

What happened to good old failures?

Quite often in a software engineer/computer programmer position your goal is to solve some business problem through the use of computer technology. It easily becomes mostly routine work. Read data from a database, expose it through a service possibly, consume it by a user interface, and display it to the user. This is followed by CRUD (Create, Read, Update, Delete) operations over the data. In some cases it may actually require some computation of some kind. (NOTE this is where the science comes back possibly).

It seems that most software engineers at some point fall into a fear of failure. We have created many mechanisms to even protect us. Concepts from agile development like TDD (Test Driven Development) work to provide a safety net and increase the quality of our software. There is nothing wrong with this in principle. The challenge I have is if all work is done with a guaranteed outcome we lose the exploratory side of our profession. We end up just writing the same code over and over and over and over. If this then that, while this do that, goto 10. (Yes I through in a goto 10).

In other fields of science it is very common that a failure in one case becomes a success in another. If we do not practice the science portion more often in our day to day and actually allow ourselves to fail and then document them, how many other opportunities are going to be lost. Majority of the devices and technologies we use day in and day out actually came out of scientific failures that were repurposed. Sometimes the result of an experience quite honestly is more exciting when they fail and give us unexpected results.

I personally think we need to start experimenting more. Yes we have to still meet our business needs but we need to have some time to fail often and fail fast. We should actually document our failures and share those experiences so that others can use or adapt them to their use. Reality is that when we were very little we learned how to walk by falling. We learned how to talk by making mistakes and seeing the outcomes on the faces of others. We learned what was right and wrong more often from doing wrong. I personally want the science back in my computer science. I want to play and explore more. This can be in the form of playing with different technologies to see if they fit a problem better or even sometimes worse, or just seeing how far you can push some computation till you see negative returns.

Be an explorer, a scientist, and even a child again. I can only imagine what will all create and improve if we again accept failure like we did as a child, but with the intellect of a scientist.

FIRST Robotics 2014

| Comments

So another year another FIRST Robotics Competition (FRC). Last year was my first year mentoring at FRC High School Team. I mentor the Port Washington High School Team #4804 also known as Port Piratech. So let me explain what FRC is if you do not know. FRC is a varsity “Sport of the Mind™”. This is a competion where 25 or more students have to design a team “brand”, work as a team, build and program a robot to perform prescribed tasks where they will compete as well as collaborate with other teams in an arena style robotic sport.

The team is responsible for raising money from sponsors, keeping a budget, designing, building, programming, as well as providing media coverage. Our team is made up of five sub-teams: Programming, Design, Manufacturing, Business, and Media. Each team has their own tasks and goals but have to work together to achieve the goal. This years game is called Aerial Assist. The goal of the game is to score balls (25 inches in diameter). There are four goals. Two high goals worth 10 points. Two lower goals worth 1 point. Each Alliance (three teams) have to work together to get bonus points. There are six robots that will be in the arena at a time. Each will be part of either red or blue alliance. This is a crazy event. The challenge was put out on Saturday January 4th. The team only has six weeks to design, build, and program the robot.

Here is the animation of our game for this year.

The team has to know the rules as there are many. This year’s Rule Book is 94 pages. Everything from cost of parts to robot construction materials are covered. The students get a great since of what is like to build a product and ship it in a very short amount of time. At the end of six weeks we have bag our robot and we are no longer allowed to modify it. We typically can bring an additional 30 pounds of parts with us for the day of the event. Last year we rebuilt our robot multiple times to try to make it effective.

Here is an example of what competition looks like during the actual event.

How can you help?

FRC needs mentors. Mentors are completely voluntary. Trust me you get as much as you give. Talk to your local high school and see if they have a team. Not an Engineer? So what, you can still contribute. Our team has mentors from all walks of life. We have a social media expert working with our media team. I am the only programming mentor for the team this year, but we also have experts in mechanical engineering as well as electrical engineering.

Another area where teams usually need help is on the sponsorship side. Our team’s registration fee is $5000 just to enter the event. That does not include the cost of parts we may have to buy to make us more competitive. Last year we got a $7500 grant from Rockwell Automation. They also received more than $5000 in donations. Getting your business to sponsor a team would be very beneficial and help produce more engineers for our ever growing demands in the industry.

Show up and support the kids.

The Milwaukee Regional event will take place March 20th through March 24th, 2014. This is a free open to public event. Bring your kids because it is a blast. Check the FIRST site if there is a competition near you.

I Don’t Have ADD I Have the Internet

| Comments

Oh that statement I used to always use. I’d be working away and some social or news item would pull me away from my work. I was lucky if I could stay on task for more that ten or fifteen minutes. The thing was it wasn’t only when I was on technology. I would find myself drifting off to what I may call “random neuron misfires”, but apparently really what I was dealing with was ADD if not ADHD.

A couple months ago I began my journey of getting medical help which happened to be Ritalin. I’ve been successful career wise but I had to have a lot of systems to keep things straight. It eventually came down to my wife calling it out more and more. I literally was to the point of always yelling at home. I couldn’t think with any noise at all. With four kids there is no such thing as a quiet house. Within a few weeks on my first medicine I found that I could finally focus more. It seems that I had a better demeanor as well.

One downfall with the first medicine is that I began to have side effects I personally could not live with. I’ve had to deviate to a different medication, but will continue the fight until I can find a balance.

One additional benefit on the first medication was that I actually started to sleep more regularly. My normal sleep pattern for the last decade has been about four hours of solid sleep max. On Ritalin I ended up sleeping about seven hours on a regular basis. I’ve just started my second medicine which is Vyvanse. I will ride it out as it does take a little bit for these type of drugs to take affect and stabilize.

If you are like me and hate the thought of being on medication the rest of your life, throw that a side. The benefits out way any fear you have. When I went off Ritalin for a week to verify my issues were with that medication I immediately realized how bad things where. Quite honestly I don’t know how I really functioned before.

Getting Control of My Digital Existance.

| Comments

Over the last year I have been trying to get a grip on my digital life. I am a heavy technology user but I have not always thought that it has been helping me as much as it should. I figure it is about time that I share how I am trying (key word is trying) to get a grip of my digital clutter.

Physical Tools

Alt My Digital Tools and Paper versions

I use multiple technologies and even some not so high tech tools today. Below is a list of my current tools.

  • Multiple Moleskine Notebooks
  • Galaxy Note II (Soon to be replaced with iPhone 5s)
  • Nexus 7 (2013 Edition)
  • iPad 2 (with Logitech Slim Keyboard a must)
  • Macbook Pro Retina

I probably should talk about the software tools I use to keep my digital desk organized as well. Some I have been using for quite a long time while others I just picked up as of yesterday.


I just recently started using Mailbox App on iPad for my personal email. I haven’t really decided what to use for my work email yet. I’m currently using OWA app on iPad2. I use the web gmail client and Outlook 2013 on my Windows VM for work email. My system for work email is to flag anything that needs followup if my reply is either going to be lengthy or if the email is to much for me to read at the time. I hate seeing my notification light flash.


For tasks I’m using Trello. It is my personal Kanban. You can layout columns anyway you wish. In my case I have the following columns: To-Do, This Week, Today, Waiting, Doing, and Done. I like to start my week by pulling tasks from To-Do to either “This Week” or “Today”. If I deligate a task I move it to “Waiting” and add a comment about what I did. One feature I am starting to use a lot more is forwarding email to Trello. It automatically creates a task and attaches the content of the email. I change the Subject to something that makes better sense before I send though.


Tried and true I continue to use Evernote for my digital notes. I even take my notes I write on my Moleskine notebooks and take a picture of them and upload them to Evernote. I have a premium account and by doing this the server side of evernote will scan the images for words. This allows me to search my handwritten notes. This is very important to me as I like to doodle. I don’t want to lose that as I may diagram something out and need it later. This also works for Whiteboarding. If I take a picture of a whiteboard anything handwritten will get scanned and made searchable. Thank you Evernote.

The nicest feature of Evernote is that it works on so many platforms. I used to use OneNote extensively and still believe it is a great tool. I just have not been satisfied with there not being a fully cross-platform version. I’m a Mac user and it has to work there as well as Windows. I don’t want to have to fire up a Windows Virtual Machine just to run it.

Back to iOS

| Comments

Well it has been a long time since I have wrote a blog post. I am in the process of migrating my workflow back to iOS. I will be getting a iPhone 5s as soon as it gets shipped and will probably order a new iPad when they get announced. I have been back and forth a few times from iOS to Android and back. My problem with Android seriously is the lack of good apps. Yes all of the apps are there but they just don’t feel as published. Below are a few of my recent issues that have pushed me over the edge again.


It seems that no matter what device I get Galaxy Nexus, Samsung Note II, they just seem to get slower and slower over time. I was pretty happy with the Note II it allowed me to write on it which I liked but I kept running into problems by accidentally hitting the menu buttons. As of late my phone has been acting really weird and that is even after I rest the phone to start fresh.


Unlike iOS there are not that many great accessories. Great examples are the music integrations. I have a guitar peddle you program with the iPhone, as well as a plug that allows my iPad to be an amp. There just doesn’t seem to be that great of integrations with any of the devices. It does appear that Samsung is going down that path with there watch but it is still to early to tell if they will pull it off long term.

What am I going to Miss?

I probably will miss some of the deep integrations with google, although it appears they have been working hard on their iOS apps. Google Now has been great for me. Yes it does exist in iOS through the Google Search application but it is not a first class citizen. I am glad Android is around and I hope it has success. I will keep my Nexus 7 as I do enjoy that tablet although I do have a few app quirks on it also. I don’t believe I will get an iPad Mini but who knows.


This will be another interesting journey as I am just getting used to iOS7 on my old iPad 2 before I get my iPhone 5s.

Why So Much Speech? Don’t You Guys Have Kids?

| Comments

Today Microsoft revealed the Xbox One. One of the “features” is the fact that it is always listening. You can walk into the room where your Xbox One is and say “Xbox on” and it will wake up. I am beginning to believe that most engineers that work for these large companies do not have families. We have been on this trend of “Natural User Interface”. Which has been a combination of touch and speech. I can totally agree with touch but speech brings some major complications when you have four kids. As my kids get older they catch on more and more. Since we have not went down the path of having the speech component actually recognize specific voices yet this causes a problem.

Let me give you a scenario. I voice activate one of my dozen technology devices and a kid screams in the background “delete delete delete yes yes yes”. Well there went that family album we had. Voice only works if you are in very quiet locations. Apparently no one has been at my house for a while.

I think we need to think of what natural really is. Natural to me is not speaking to my computer. Sure it looks awesome in Star Trek but in real life we all look like we have some mental disorder. “Hello Siri how you been?”.

Now on the other hand speech is very important to my wife who does not like to type. She uses it on her Android phone all the time. Last week her phone got in a state where she couldn’t talk to it anymore nor talk on the phone. It became useless not because of making phone calls but because it is the primary way she interacts with her device.

Speech has it’s place we just have to think about those times and places where it doesn’t work so well, at least in its current state.

Moving Back to Android

| Comments

I’ve made my way back to Android. I’ve been back and forth a few times. My first android phone was the Motorola Droid. I’ve owned ever version of iPhone as well. In between iPhones I tend to get some new version of an Android phone. My latest is the Samsung Galaxy Note 2. This is the perfect blend of Android as what I call a Phablet (Phone + Tablet).

Samsung Note 2

A Stylus?

Stylus I’ve been using tablet computing even as far back as Windows XP. I also formally carried a Palm Treo. There is something to be said for having a stylus. I like to take hand written notes occassionally. There is something I still like about drawing. Some of my thoughts just don’t fit into words. There is something to be said about being able to draw something on a screen. I do end up exporting my S Notes to Evernote still. Since Evernote does OCR on the handwritten text I can search my hand drawn notes still even. It gives me the best of both worlds like paper but yet digital.


The battery on this guy is amazing. I have yet to be able to run the sucker dead in a day. I spent an entire day taking notes from 8 a.m. to 5 p.m. and only got down to 65%. I even was on 4G all day.


Yes this phone is huge. It is a 5.5 inch screen. I don’t find it to big. Samsung has done some nice things to make it easy to type on it one handed still by allowing you to put it in one handed mode and the keyboard will shift from one side to the other. Some things are still a reach occassionally but I don’t mind.

Tablet Time.

I think I’ve made up my mind. I want to get the Galaxy Note 8.0. It also comes with the stylus which personally I love. I like the smaller form factor tablets personally as since I got my Nexus 7 I never actually pull out my iPad anymore. I may even spend some time and work on more Android apps again.

Starting Over

| Comments

Well I’ve decided to start over. New blog engine new content. I’ve been back and forth on whether I need to move my content. Normally I would say yes. Why not then. Well I want a clean fresh start. I have not done a good job of blogging or getting content up. I’m now going to try to do a better job. We shall see though. I’m stripping it all down this time and keeping it simple.