A Call For Better Jenkins Plug-In Pipeline Documentation

The Jenkins team has done a good job documenting basic pipeline structure and functionality.  Kudos to them for that, it’s improved massively over the past year.  I think it’s pretty easy to get started now.

Let’s talk about the plug-ins.  To do most anything useful in Jenkins requires plug-ins, lots and lots of plug-ins.  Before the Jenkinsfile you could look through the plug-in documentation and see screenshots or just discover the functionality by browsing the UI.  Now that plug-ins are exposing steps to be used in a Jenkinsfile, the poor state of plug-in documentation is not good enough.

It seems that the authors of Jenkins understood this would be a problem and they exposed a snippet generator.  All the registered steps can generate a snippet with arguments.  Unfortunately, these are also poorly documented.  Due to Groovy’s flexibility a single step may be able to be used in multiple ways.  My experience has been that plug-in authors don’t document all the variations.  I spend 90% of the time digging through mailing lists and bug trackers to figure out the correct syntax.

I’ve spent some time thinking about how I could possibly help improve the situation.  It seems like such a daunting task.  I think the best I can do is submit PRs to improve plug-in documentation as I find issues.  It’d be impossible to start from top to bottom to improve them.  Examples may be the key.  Something structured like a cookbook with common use cases.  The recipes should list specific plug-in versions.  Plug-ins could link to recipes from their information page.  Maybe that’s a third party project.

A Call For Better Jenkins Plug-In Pipeline Documentation

2017 MacBook Pro

Background

I’m coming from a 2012 MacBook Pro with a nearly dead battery.  I was holding out for a 32GB laptop, but couldn’t wait any longer due to the dead battery in the 2012.  Honestly the 2012 has been the best laptop I’ve ever used.  I got 5 years out of it and will likely repair it to see if I can get more life out of it.

Quick Observations

  • The speakers are amazing, much more clarity and volume than the 2012
  • Typing on the keyboard isn’t that bad and it’s not that loud
  • I wish I could control the touch bar brightness
  • Based on my track pad smudges, I’m not using the full surface area yet
  • Palm rejection is good
  • Modern graphics card is nice to have
  • I miss MagSafe, when moving between rooms I’d just grab the laptop with MagSafe and let it disconnect on its own
  • Restoring from time machine was painless, albeit slow over wifi (no ethernet dongle!)

Issues

The keyboard had a busted key.  When I pulled it out of the box the C key wouldn’t work.  I pressed the key really hard a few times and it came to life.  Using the computer for a few days I noticed that the C key would repeat my presses ~50% of the time.  My first thought was maybe the key repeat settings were to blame, but playing with those settings didn’t have a significant effect on the problem.

Experimenting a little further I noticed that the key didn’t register the press on key down like the other keys unless I pressed really hard.  People suggested “massaging the key” or removing it and reinstalling it.  Massaging the key seems to have worked for me.  No more accidental Cs.

Tips

Install BetterTouchTool.  Until Apple adds more customization support for the TouchBar or more apps add support, BetterTouchTool is a necessity.  Here’s a TouchBar menu I put together for IntelliJ

Screenshot 2017-07-15 08.27.15

It’s pretty nice.  There’s sub menus for refactoring with things like rename, extract, etc.  I’m still working on figuring out exactly what I’d like in the menu.

2017 MacBook Pro

These Are Just Tools

Early on in my career I complained to another developer about a particular tool.  I don’t remember what the tool was, probably CVS.  The response I received left me dumbfounded.

“These are just tools.”

JUST TOOLS?  Doubts and questions flooded my brain.  Was I needlessly obsessing over something unimportant?  Licensing costs aside, the business owners clearly do not care what tools I use.  If the business owners don’t care, does that mean it’s automatically unimportant?  I understand the sentiment.  After all, tools are not the end goal.  Shipping beautiful software that provides value is the collective end goal.

I’ve reflected on my coworker’s statement hundreds of times now.  With more experience, I’ve come to the conclusion that the right tools have the ability to increase productivity and sanity.

Proficiency with the right tools will pay dividends in the long term.  Understanding every nuance is not the point.  Get the most ROI by seeking better ways to do common tasks, especially when you have a gut feeling that there must be a better way.  Aim for total automation but settle for reliable rapidity.  Occasionally re-evaluate and try alternatives, but don’t obsess.

Onward to my stack of tools!  In my day job, I mainly write Java and JavaScript.  My development setup consists of:

  • vim
  • IntelliJ
  • Beyond Compare
  • Git
  • Sequel Pro
  • CyberDuck
  • oh-my-zsh
  • iTerm
  • XCode Network Link Conditioner
  • Chrome
  • Redux Dev Tools
  • Postman
  • 1Password
  • Docker

In subsequent pots, I’ll detail how I landed on these tools and maybe share war stories.

These Are Just Tools

ASP.NET MVC

Teaching myself a little ASP.NET over the weekend.  Surprisingly vanilla ASP.NET seems to lack a lot of modern features found in other web frameworks.  I ended up running into the ASP.NET MVC preview and installed that.  So far I’m liking it.  There are a few rough edges I need to sort out.  I think I’m missing something because there has to be easier way to link up LINQ and web forms for CRUD operations.  I really like the LINQ syntax, it’s so damn intuitive.  Funny because it vaguely reminds me a lot of a quick Python framework I built around DBSlayer for my senior project.  Of course I still had to write SQL to get that working.

I’m well on my way with a Hello World 2.0 (Blog).  I feel lame writing a blog to learn the language, but it’s a well defined application and lets me focus on the code. 🙂  While I’m finding the MVC framework to be a major bonus, there’s still a lot of auto-generated .NET boiler plate all over the place.  Definitely not as lean as some other modern frameworks, but hey it’s ASP.

I think MVC Preview 2 was just released so there’s not a ton of information out there.  Scott Hanselman has some really helpful screencasts.  There’s also a helpful tutorial that got me started at ASPAlliance.

ASP.NET MVC

ECHO!

First post in a long time and it’s an echo.  How useless!  Still, I absolutely love this quote.  An article posted on Reddit about how to hire managers, it’s an interesting article and definitely worth a read.  Of course, the part I love is about programmer psychology.

Psychologists have studied how people have a higher opinion of their own abilities than others do. When they do something well, they tend to attribute it to an inherent trait. “I figured out how to write this tricky bit of code; I’m smart”. When they do something wrong, they tend to think it’s a fleeting condition “I forgot to check in that file. Silly me, I’ll remember next time.” Bringing their perception in line with reality will deal them an emotional blow. This is especially true of those whose self-worth is wrapped up in their programming ability, something that’s pretty common among those driven to become the best programmers. Don’t be surprised if they spend the rest of the afternoon staring at their screen in shock, feeling as if all their hard work and cleverness is unappreciated — even if you spent most of the review pointing it out and praising it.

This hit home hard, and I’m sure it hits close to home for others.  I often think about the mistakes that I make, I try and take some time to reflect on them in order to learn from them.  However, I am guilty of touting my triumphs and downplaying my failings.  We’re only human right?  Now thanks to this article, and it is the articles fault… ;-)  Any time I make a mistake I’m going to feel compelled to analyze whether I should knock myself down a peg for it, or attribute it to human nature.  I’d much rather accept that we all make mistakes and attempt to learn from it.

I do worry a lot about how others perceive my work.  I’m sure that each and every defect I produce has at least some bearing on their opinion of me, even if I’m only loosely connected to said defect.  I have yet to decide whether all of this stems from a lack of confidence or just a healthy sense of reality.  I’ll go with the latter. 🙂

ECHO!

Nearly A Month… Really? (Random Update Post)

So it’s been pretty close to a month since I updated.  Pretty poor effort on my part I suppose.  I haven’t been playing much Gears of War… which as my wife will tell you, is a pretty clear indicator as to how much free time I have.  There’s a lot of random stuff I want to say so I’ll just bullet point it all.

    • Went to NY
      • The Central Park Zoo is pretty cool
      • Polar bears are awesome, this one was doing laps and scratching his back on the wall
      • The Waldorf=Astoria is nice, but not nice enough to justify the price.. there was a big model competition while I was there.  I’ve never seen so much luggage in all my life.  I now wish I had taken a picture, it was unreal.
      • A lot of walking around town, which was fun
    • Finished semester last week
    • Got a 3.9! Whee!
    • Thoughts on the semester….
      • Operating Systems course was weak.  The professor had a distributed systems background, but was pretty light on OS knowledge.  However, the book was great.. reminder to self.. read the book in free time
      • Interactive Graphics was a lot of fun and a great learning experience..  The projects were very time consuming, it can be difficult to debug 3D programs.  Teacher provided most of the notes, which I like.. lets me focus on the lecture.
      • Comparative Programming Languages .. everyone was lost!  We got hung up on the implementation details of ML for a few weeks.  The course isn’t in depth enough that I could write my own compiler.. it’s also too in depth to be useful day to day.  The university should probably just ditch this and offer a course that provides a simple overview of language features along with an optional course in compilers.
      • Functional Programming was a really enlightening course.  It felt great to think about programs in a different way.  Everything recursive ends up being so elegant in a functional language.  Definitely going to keep my feet in the functional pool.
      • Statistics 2 .. it was statistics.. 🙂
    • Taking the summer off of school
    • Landed an internship
      • Only been there a week, but definitely having fun
      • So far, writing some simple JavaScript

Speaking of JavaScript, there’s a fantastic series of videos on Yahoo Video with Douglas Crockford.  It takes a lot of time to watch them, but you will definitely learn something.

This ended up being really long, I should probably avoid bullet points from now on.

Nearly A Month… Really? (Random Update Post)

Learning JavaScript

I spent most of Sunday picking up the basics of JavaScript.  Overall it went pretty well, I even started writing a little Ajax application.  Syntax is very C-like, but the overall philosophy of the language reminds me a lot of Perl (a million ways to do one thing).  I found the following sites extremely helpful.

Starting JavaScript

The information is a little old on the site, but for picking up the basics it’s fine.  A quick read through and you’ll be well versed enough to start writing some simple things.

JavaScript Toolbox

This one was recommended to me.  I really liked the site, particularly the best practices portion.  As I said, JavaScript seems to have a million ways to do everything, so what’s the best way?  The site goes into detail on common JavaScript gotchas and programming for compatibility and maintainability.  The code samples are also very helpful.

As for ajax, there are some really good tutorials you can find at the bottom of wikipedia’s ajax page.  I’ll have to do some brainstorming in my free time and come up with an app to post.

Learning JavaScript