It is no secret that I am a fan of checklists. Tools like Trello are awesome. I also use NirvanaHq for my GTD type lists (Thanks David Allen). One of the few books that I am reading right now, The Checklist Manifesto is about how important checklists can be.
However, sometimes I know I have things on those lists, but they are still swimming around in my head. I have the mind like water that David refers to, but it is not the calm still water. Instead, it feels like the rapids.
When I reach that point, I find it helpful to grab a pile of notepads and just start dumping things out of my head. I don’t like using just one notepad and flipping pages, since things seem to get hidden that way. Instead, I dedicate a notebook for each “area” that I am “dumping”. I can easily lay them out and see everything.
Here is a picture from this morning. I am trying to get into the habit of keeping an index card with the 2 or 3 things that I hope to get done in a day. For this day, it was so overwhelming, I just picked one. BTW, the breakfast was great and the boys (these boys) had a good time.
While a pet peeve is described as a “minor annoyance”, this issue has always been a little more than that for me. I don’t know how many times I see a textbox on a form somewhere and when I click in the textbox, the label disappears. I get distracted for a moment, and when I look back at the screen, I can’t remember what I was expected to be entering. It happens a lot with Logins. Once I start to log in, I wonder, did they want a username or an email?
So, when I was signing up with Grammarly (I know, from my posts, you wouldn’t guess I would need their service π ), I was pleased to find out they are doing inputs “right”.
When I clicked into the input, the caption animated down to a smaller version so I could still see which input field I was in.
It is odd to create a blog post for such a minor thing, but I was just so happy to see somebody doing it right that I had to post it somewhere.
I have been a fan of cards on a wall for years. I buy the 1/2″ 4’x8′ sheets of insulation. In the past, they were about $8, but the latest at Home Depot is more like 14.
In my current setup, I added a few curtain rails along the top of my whiteboard. Then, I cut the insulation boards down to a smaller size and use them for “cork boards”.
Here is a recent example of one of my boards.
Luke – What is this board for?
He came in this morning and asked why I had all the cards on the board. I figured it would be easier to show him than to explain it. I grabbed a clean board and we started “brainstorming” the treehouse he wants to build. He likes things a little more visual, so I printed some pics and attached them to the cards.
When I first put the clean board up and told him it was for the treehouse, he was pretty skeptical. I believe he was thinking were going to actually start building the treehouse right now. However, once we got a few cards on the board, I think he got the idea. He is a fan now (although, I am sure he rather just have the treehouse)
Here is an example of the top of the board where you can see the curtain rods. And, I know you are wondering… Yes, I did wrap the edge in a little Duct tape just to give it that professional look. π
I have wanted (needed) this for years, so I figured I would finally create a post. In many situations, a movie quote or a scene from a Seinfeld episode will go through my head. I figured I may as well link some of them somewhere, so here it is. These are not in any order and I have made no effort to prevent spoilers.
Somebody was going on and on the other day about how one thing affected another thing, and yet another thing. All I could think of was this old commercial where they are standing on the Sears tower and they say, “off the expressway … over the river … off the billboard … through the window … off the wall … nothing but net
This movie has so many lines, I should probably create a separate page for it. It is some early Michael Keaton at his best. It wasn’t easy to see Henry Winkler in this role, since he was the Fonz in my mind. However, he delivers some pretty good lines too.
Prostitution scene
By 1982 standards, I would guess this should have a viewer warning but if you have watched TV in the past 10 years, I am pretty sure you have seen much worse.
This clip is full of great lines. Jessep: You want answers? Kaffee (Tom Cruise): I think I’m entitled to them. Jessep: You want answers? Kaffee: I want the truth! Jessep:You can’t handle the truth! Son, we live in a world that has walls. And those walls have to be guarded by men with guns. Who’s gonna do it? You? You, Lt. Weinberg? I have a greater responsibility than you can possibly fathom. You weep for Santiago and you curse the Marines. You have that luxury. You have the luxury of not knowing what I know: that Santiago’s death, while tragic, probably saved lives. And my existence, while grotesque and incomprehensible to you, saves lives…You don’t want the truth. Because deep down, in places you don’t talk about at parties, you want me on that wall. You need me on that wall.
We use words like honor, code, loyalty…we use these words as the backbone to a life spent defending something. You use ’em as a punchline. I have neither the time nor the inclination to explain myself to a man who rises and sleeps under the blanket of the very freedom I provide, then questions the manner in which I provide it! I’d rather you just said thank you and went on your way. Otherwise, I suggest you pick up a weapon and stand a post. Either way, I don’t give a damn what you think you’re entitled to!
Kaffee: Excuse me, sorry I’m late. Capt. Whitaker: That’s alright, Danny, I know you don’t have a good excuse, so I won’t force you to come up with a bad one. Kaffee: Thank you, sir. top
In a recent Yammer discussion, a supervisor type person asked for feedback on an idea. While the easy (and possibly wise) thing to do would have been to keep my opinion to myself, I went a different route. I prefer open and honest communication. It doesn’t have to be brutal truth, but things just seem to function so much better when we can freely share ideas. Afterwards, I sort of felt like Jack in this scene.
This reminds me of the saying, “Salute and Execute”. There are times where this is the only right answer. I guess I had never really thought about this until I heard this line. The brave men and women that defend our country follow orders. Life in the military is far from democratic, but that is exactly what they fight to defend.
Bravo Hunter…You new to shut up and enjoy the view
I am often reminded of this scene when I in a room and somebody else walks in. Most people feel some form of “small talk” is required. It isn’t by me. If I had something I wanted to say, I would say it. But, I don’t feel the need to talk about the weather just because we happen to be in the same room, elevator, or whatever.
It is strange that this is how I felt after I got my internet working again at home. I was getting 4-5 Mbit and living with it. Once I found and replaced the bad switch, I was back to 60-70 Mbits! It reminds me of the time I was able to get nearly all the 640K of RAM in my computer and I was so excited I want to share the good news with my wife. She just shrugged. π
Anyways, after being on a crawling network for a few days, it is awesome to be back to “normal”.
I have been watching videos and reading for the past couple months about Microservices. It is very timely, since I have been doing maintenance work on a monolith project, parts of which are more than 10 years old.
I wanted to create this page to have a place to reference some of the material I have found along the way.
Mastering Chaos – A Netflix Guide to Microservices
It is always good to gain more insight into how things work at Netflix. In this video, Josh Evans covers this history of the early Netflix to today, and some of where it is headed.
Little Boy Dominoes Topple Out of the Tent
Ok, this one is not so much about Microservices as it is just 24 seconds of funny. I saw this video as part of a talk where the lady was making the point that we don’t realize the impact of design decisions unless we measure (or in this case watch) our product (API) being used. The mom laughing as she films it and the final boy make me laugh every time.
This video is from Fred George. I have it set to begin where he starts talking about rivers, streams, and ponds. From there, he blends into the car rental application which is a great example of an incremental application.
Here is an expanded and more recent version of that same talk.
Microsoft Azure Service Bus Brokered Messaging Deep Dive
Alan Smith – the same guy that does the PluralSight course on the same subject. With the speed of Azure, this may be a little dated, but I think the majority of it still applies.
https://youtu.be/9tyZKkJD0tQ top
by Stephen Asbury. I liked this video where he is trying to shed some light on the issues of distributed computing. He is not saying, “Don’t do it”. Instead, I think he is just helping to remind us of the things to be aware of and code for.
This is a very smart guy talking about Microservices and how to think of them. The volumne is a little low, but it is definately worth watching.
https://channel9.msdn.com/Blogs/raw-tech/Juval-Lowy-On-Microservices top
Prior to Octopus, we had a proprietary way of deploying database changes. Moving to Octopus Deploy forced us to find an alternative approach. I had used Fluent Migrations on an earlier project and I was excited about using it again.
Benefits
Database source is treated as first class citizen and remains in the project.
Full text search can easily be done to find each time a field or sproc was changed.
Stored Procedures can be easily compared between migrations.
Version History maintained in database (see screen capture below) showing exactly when each migration was applied (and Version, ITMS, PBI, or other info).
Multi-user Two people can be working on their own db changes at the same time, each in their own migration. (The normal rules that both of them should not be changing the exact same objects still apply).
Ability to apply multiple “iterations” during a sprint (instead of waiting until the end)
All Database changes are tracked together.
This approach eliminates the need to push a db change using email or some other method. In our current environment, we are forced to do that. For a simple change, it just doesn’t make sense to create a new branch of managed code, jump through the Fortify hoops and everything else that is involved in rolling a simple change, force all users out of the system, etc… With this approach, adding a simple migration should take less than 30 minutes and it is done.
Gives visibility to all changes, which can greatly assist troubleshooting down the road.
Fortify Tango not required. The current Implementation folder is not part of the Fortify process and this shouldn’t need to be either. There is no User component to this. This is not an application that is being installed for the user.
Database changes are not tightly coupled to managed code changes. Some people would list this as a Con, but having them “separate” has some benefits.
Best Practices (and possibly worst) are more easily followed for future devs on how to script an extended property or foreign key. The prior scripts are part of the project and can be searched and copied.
Developer is not forced to use migrations. The can still wait until right before the deploy, let a tool do the compares, generate the scripts, and then just copy them into the folder.
Deploy and rollback can easily be ran multiple times during development, EXACTLY as they will be ran during deployment.
I needed an easy way to share information with other members of our team. Some people were using OneNote, which is a great product, but sharing things can be a little clunky. Our organization was working towards an enterprise solution for this problem, but I needed something right now for what I was working on.
I chose Markdown since I figured it would be easy to convert it to whatever solution the company decided. This ended up being a very useful tool and provided a quick easy way to collaborate with other teammates.
Screens
Home Page
Home Page – Markdown
Example markdown
Checklists
Added ability to easily create lists.
Tools used
Help pages
To make it easy for others to edit pages, I created a simple help page with examples.
Read Database Settings
Since this is custom code, it was easy to add the ability to execute Sql statements when the user clicked a link. In this example, I display the AppSettings by environment on the page.
The idea for this project was to create a “Health” dashboard similar to Amazon or Azure. In our environment, we don’t seem to have a problem getting emails when things fail.
Our problem was that were not getting notified about events that should have happened but did not. For example, if the process to import a file normally runs every morning, but it does not run one morning, we didn’t know about it. Since it didn’t run, it did not send an email about any problem.
Another benefit of a health dashboard is for a quick “sanity check” when a problem is reported. As a first step, we can check the dashboard to see the overall health of the system.
Screens
Home Page
The main page allows the user to quickly filter the checks by the environment (Prod, Test, Dev).
Home Page – Dark
I am not a designer (I can barely match a pair of socks). However, I do like options. Bootstrap/BootSwatch made it easy to do that. I allow the user to pick the theme they like, simply by clicking the links in the lower right of the screen.
Dashboard filtered by tag
The system supports tags to make it easy to group related checks. For example, all tasks running on a specific server may be tagged with that server name.
Edit Task & Tags
Example of screen to edit task description and tags along with any notes for the specific check.
Show Triggers
Each check can have multiple triggers. This allows some pretty flexible scheduling as shown in this example.
Edit Trigger
Clicking a trigger in the list brings up the modal edit dialog. I tried to use buttons to make it easy and visual for the user to “see” the schedule.
View Actions
Edit SQL Action
Example dialog to edit the Sql used for the check.
History Tab
The helps determine how often a check is failing. It also includes any notes that were added about a failure.
Edit Event Note
Clicking the pencil in the far right column allows the user to enter a note about a specific event. This can be helpful to explain why some event failed.
Export to Excel
This serves two purposes.
Backup of existing configuration.
I didn’t complete this piece, but the idea was to be able to add checks to the spreadsheet and import it back into the system.
WebAPI Generated Doc
Here is an example of the API Doc we get for free with WebAPI.
Trello Punch List
Trello screenshot showing a portion of the project punch list.
Created a File Validation site using Azure, SignalR, & Redis. Project included unit tests and I was able to obtain 97% code coverage.
Developed a Go/NoGo Dashboard to provide a “quick glance” of system health. The site includes an AngularJS website, WebAPI service layer, and a Windows Service to perform the system checks.
Created a simple Wiki site to display and edit Markdown to help document projects and share information.
Installed Discourse in Azure in attempt to foster group discussions. (Jury is still out on people using the tool)
In addition to the fun projects listed above, I have also helped maintain existing legacy applications. (Some of the apps have 12+ year old stored procedures that still run hundreds of times per day)