Tales from the jar side: Blogging and Managing Managers and the Future
Welcome to Tales from the jar side, the Kousen IT newsletter, for the week of Dec 29, 2019 - Jan 5, 2020. This week I published a blog post, finished a chapter in my Managing Your Manager book, and wrote a proposal for a new online training course. That sounds like a lot, but it all came together over the last couple of days, probably in response to the chaos currently consuming the world.
I've been debating how much to talk about current events in this newsletter. Normally I wouldn't even consider it. I expect most people who subscribe aren't interested in how I view the world outside of my own specialities, and I get that. Some people probably also see newsletters like this as a welcome respite from all that conflict and chaos, and while I know you have to be at least somewhat privileged to be able to do that, I get that too. At some point, however, I start to feel like not saying anything is making a political statement by itself.
So here's my compromise. I'm going to make a quick statement about how I manage to keep going despite the daily chaos. It's a rather sad philosophy, but it is one answer to the great question of our time -- how do you keep from being constantly outraged when outrageous things happen constantly?
I'll separate it from the rest of the content, so you can comfortably skip it if you like, and I'll try not to bring it up again.
Ready? Here we go:
Whatever the crisis (Australian fires, political assassination, antisemitic knife attacks, and so on), the same lying liars will lie about it, and their supporters -- who care more about being in power than the truth -- will back them up. Everyone else does not believe them (after all, they're lying liars who are lying again) and will try to shame them by pointing out the lies. That's pointless, because the liars and their supporters don't care about shame or hypocrisy if they think that will keep them in power, and besides they enjoy the suffering of their enemies anyway. So (almost) nobody is persuaded about anything, and nothing anyone says matters. The lying liars will continue to do whatever they want until they're driven out of power, and everyone else just has to find a way to survive until then.
For my part, I try to help relieve suffering wherever I can, but that's all I can do. I refuse to get involved in any of the arguments, because as Shakespeare said, it's all sound and fury, signifying nothing.
So much for that. Now on to the actual updates.
This week I put together a blog post entitled Antarctica Time Zones in Kotlin on GraalVM. It uses the Java date-time library classes to examine the timezones in Antarctica, which look like this figure from Wikipedia:
The different colors represent different timezones. The fun part is that the South Pole follows the rules of New Zealand, which means despite the fact it experiences six months of daylight and six months of darkness, it actually adjusts for daylight savings time. In fact, it's on daylight savings time right now. Go figure.
The blog post uses a Kotlin script to show that, and to report on all the timezones in Antarctica.
The GraalVM part is based on a virtual machine provided by Oracle. It's pretty cool, actually, because it allows you to write code in multiple languages and integrate them all together. That's not what I cared about, however. What I like is that on Macs and Unix machines, you can take code written in a JVM-based language, like Kotlin, and build a native executable out of it. The real benefit is that the resulting script is much, much faster and uses much less memory than the original.
The blog post demonstrates how to use a Gradle plugin to generate the executable, but also shows how to install and use the necessary tools locally. The demo is based on a similar example I included in the Kotlin Cookbook, so all the code examples are in the GitHub repository for the book.
I published the blog post late on Saturday and hoped that the issue of Kotlin Weekly that came out the next day would include it, but no such luck. Maybe I missed the deadline and it'll be included next week. We'll see. Either way, it's an interesting demo and I'm glad it's now documented.
Managing Your Manager
Moving on to my current big project, I finished a rewrite of the Iterated Prisoner's Dilemma chapter of my Managing Your Manager book. The goal of the chapter is to adapt a successful strategy for the mathematical game to the challenges of the employee/manager relationship. I think my approach is solid, but it's still challenging and is only effective over time.
When your manager does something you don't like, most employees feel they only have two choices: live with it, or leave. My argument is that if you employ the strategy I recommend, you may be able to train your boss to take your priorities into account, at least over time. Or they won't, and eventually you'll have to leave anyway, but at least you'll know you tried your best to fix the situation without threatening the loyalty relationship.
I know that's being a bit vague, but I talked about it in a previous newsletter and it would take a fair number of words to explain it again here. Eventually I'll add a blog post about it, but I still have a few Kotlin-based posts in mind before that time.
New Courses And The Future
Finally, I began the process of proposing another online course for the O'Reilly Learning Platform (otherwise known as Safari). This one is about using Kotlin with the Spring Framework, and should be really interesting. I've done some work with Kotlin and Spring, and I know I have more to do there. I also expect there will be a decent demand, since all my Spring framework courses are pretty full. We'll see.
As readers of this newsletter will know, my real job is teaching training courses. Since technology changes so quickly, that means I have to keep digging into the newest developments in order to help students learn what's current. Unfortunately, my chosen areas of expertise are not the hottest topics at the moment. Sure, Kotlin is a big deal in the Android space, and Spring is still the most used open source framework in Java, but the real action these days is in JavaScript frameworks, the odd hybrid known as DevOps, and the statistics/artificial-intelligence mashup known as machine learning.
Ten years ago, I used to teach a JavaScript course a month, but that space moves very, very quickly and I simply couldn't keep up with everything. Now it's JavaScript MVC frameworks like React, VueJS, and AngularJS, and build tools like Grunt or Yarn, and even modernized languages like TypeScript. If I was an expert in those I'd never be idle, but again, I had to prioritize and, to put it bluntly, JavaScript wasn't fun.
On the DevOps front, many years ago I used to teach a few courses for system administrators rather than developers. I taught a handful of WebSphere (!) administration courses and a couple of Tomcat admin courses as well. None of them went well. I much prefer development, so sticking with the server-side Java world suited me better.
Finally, back in the 80s and again in the late 90s I did spend some time with artificial intelligence. I played with neural networks and even did a project based on them during my MS program at Rensselaer. It turned out that neural networks had a few high-profile successes surrounded by lots of mediocre results that provided approximations but little insight. If I'd cared more about speech or image recognition I might have gotten into them more, but again it wasn't really fun. I did play with genetic algorithms for a bit, which I thought was really cool, but that subject apparently hasn't resurfaced and become hot yet. We'll see if they come back. They're really just a nonlinear optimization approach, but the ideas are neat. While I keep thinking I'll look into them again, I know there's no demand for training in that area. The A.I. people really like the Python language, too, which I find okay, but I don't really want to spend the hundreds of hours it would require to become an expert in it.
So the bottom line is that I still enjoy the Java-based world, from Java itself to Groovy to Kotlin, along with frameworks like Spring and Grails and Android, build tools like Gradle, and testing tools like JUnit, Spock, and Mockito. I expect those will still keep me busy for the next couple of years, which is as far as I ever project into the future in the I.T. world, but we'll see. The move to Kotlin was challenging enough; I'm not looking to start over yet again.
I say all this, and yet I feel like I'm in a transitional period yet again. I just don't know what the next steps will be. I've always taken the attitude that one of my biggest strengths is adaptability, but my experience means I know exactly how hard it is to dive into a new area. I really don't want to stagnate, however. In the end, I expect it will be my usual struggle between the extremes of boredom and fear that drives me to the next steps in my career.
At a minimum, however, I'll document it all here. This issue begins the second year of this newsletter, much to my surprise. To those of you who've stuck with me all this time, thank you very much. It's great to know someone is listening as I muddle along on this journey.
Last week:
Blog post: Antarctica Time Zones in Kotlin on GraalVM
Completed a chapter in Managing Your Manager
Drafted a proposal for a new training course
This week:
Mockito and the Hamcrest Matchers online at Safari
Reactive Spring online at Safari
Travel to Cancun with my wife for an actual vacation :)