Why two TVs?
Anyone who knows me well knows that I love football, both pro and college (#GoPokes!).
And anyone who has ever watched football knows that it has its slow moments. A great solution to those slow moments is to have a second TV available to watch a second game, TV show, or video game. Last year I spent new years at friends house watching College Football with a football game on TV 1, a second game on TV 2, and an Xbox on TV 3. I was sold, I had to have a similar setup in my house.
The wife was not as trilled with this idea. Who knew, right? After some discussion, she had a few requirements. First, the setup had to look good. Second, she preferred that the second TV could be hidden when it wasn’t in use.
|The first step was to get all of the ideas in my head out into the world. Therefore, I made a prototype from cardboard and tape.|
|Once I had the prototype, I knew how to make the lift. It would be two U shaped pieces, held together by drawer slides, and ‘lifted’ by an electric screw-drive motor. Finally the inner U piece would attached to a large wide base.|
|Almost complete! The base and motor are attached.
Handles on the back side. Don’t forget that this is a full 8×4 sheet of plywood, plus a motor…. so this thing is heavy!
TV Mount from Monoprice $12
One 8′ x 4′ x 3/4″ Plywood Sheet
Paint, Wood Glue, Wood Filler
Things I learned about sanding
The biggest time sink believe it or not was sanding. I really wanted the final result to look like it fit into the living room. To me, this meant the wood had to be a dark stain or or paint with a nice gloss. Pictures of sanding are about as boring as they get so I never took any. Just know that getting from the pictures above to the black finish below was at least 2 full days of work.
- Get a electric sander; don’t sand by hand.
- Wood glue and wood filler can be a PITA to sand. Get a good glue and a good filler that is known to be easily sand-able.
- Instead of using wood filler, use something else like drywall compound or similar. It will allow you to smooth out seems, hide plywood edges, and fill holes far faster than typical wood filler.
References I found useful
Everyone – devs, managers, quality assurance engineers, product owners – can hit a wall where they just don’t feel like doing anything. Here is what you do in that situation.
If you are working with Enterprise software, you will likely encounter legacy code. In face, most of the code you encounter may be legacy code.
What is legacy code? One acceptable answer is simply “Code with out tests”. Another answer is any code that is old, brittle, and riddled with difficult to manage dependencies. In general you’ll find that testable code fixes dependency problems and doesn’t feel old or brittle.
As a enterprise developer, you are bound to find a pile of legacy code that you need to change. When you hit this wall, you will need to define a strategy to fix this code over time. An article titled Technical debt 101 – “A primer about technical debt, legacy code, big rewrites and ancient wisdom for non technical managers”. This article pretty accurately describes the issues we face in estimating how long it will take to fix large chunks of bad code and running into problems so large the only answer is “the big re-write”.
The conclusion of the article is as such: The big re-write is incredibly expensive, is near impossible to estimate the amount of work to do, and loses functionality and therefore won’t work in many situations. The solution is slowly making things better over time.
One popular way of doing this Branch by Abstraction. What does this mean in this context? It means that you take a class A, create an interface A, and an “implementation” of that interface A call AImpl. Finally, you must connect all references of the original class A to AImpl via Dependency Injection such as Spring or Guice. All of that gets you exactly back to where you were ahead of time. So why do all of this work? Because the next step is to create a B “implementation” that doesn’t suck. Once BImpl is tested, flip the switch in Spring/Guice to use BImpl instead of AImpl.
This is not easy. But it is an actionable strategy for fighting legacy code without the big re-write. Once you’ve done the first class or service, moving on to the second class or service will be much easier.
We all love visuals, so here is a slide show describing the concept.
So there it is – don’t do the big re-write. Find something worth changing and do so one bite at a time.
This is how things are supposed to work.
Go to http://www.mixest.com/
Register yourself as a user on this site. Forget about the music selection or if you like the songs or not, that’s not what I’m getting at here.
You registered on this site, and the music never stopped playing. The pause button never even moved.
Intuitive, Concise, Effortless . This is how a UI should be made.