If you have:

intertubes ~~ (my so called life in the...) DMZ ~~~ some top secret lab

And you can go from the DMZ to the internet… and to the lab… but you can’t escape to the internet from the lab…

You need a jump server!

SSH added a -j option in version 7.3, along with a matching configuration option called ProxyJump.

You can set up a hostname configuration to jump directly from lab to internet (home of AWS btw):

  • configure a host shortcutAwsInstancefrom dmz to internet
  • configure a host shortcutDmzHostfrom lab to dmx
  • configure a host shortcutAwsInstanceJumpfrom lab to internet, with ProxyJump DmzHost

I had to set up an sshd server using Cygwin on my Windows lappie in the dmz – it was all shiny and modern and had ProxyJump capability.

I had to bump up all my crusty old Ubuntu 16.04 boxes (2016 is so yesterday) to get from ssh 7.2 to 7.4.  Good to go!

See the wiki for the latest instructions.

I don’t think anyone in good faith can discount the navigation benefits of a modern IDE.  Yes my favorite is still written in C++, as is my favorite editor (put that vim and emacs shit down, son, it’s time to code…I KID), nothing beats speed when you just want to type code.  But JetBrains has shown how they can provide amazing IDE features for all kinds of code: C++, Python, Scala, etc. with their Java library stack.  Yes you pay a performance price and yes we’ve been burned by slow Java IDEs before, haven’t we, Eclipse… but JetBrains has really hit a critical mass of solid IDE functionality,  and I’m going to give it another good try.  Here are some rolling notes, made in cronological order…

  • the soggy keylag is KILLING me… but I love the navigation power… hrmph…
  • it’s not THAT laggy considering all it is doing… and my other dev environment is through a VM anyway (does that make it better or worse, not sure yet…) continuing…
  • on a VM, all hope is lost.  Even sublime is uselessly unusable.  Back to emacs.  Sad world.
  • The speed is now pretty good, I don’t know if it got everything indexed and it’s faster, or if I got used to it.  I think it’s faster!  Just in time for my open source license to expire… and JetBrains renewed it!  Yay, thanks guys.
  • Some things just take some adjustment.  Keymaps, panes, etc.  Also, don’t expect to copy/paste huge chunks of code as fast as you can in a dumb editor – it causes a ton of analysis to occur.  In a non-VM fairly-decent environment, CLion is humming along now.
  • CLion is undeniably faster than Sublime on my VM.  It is downright snappy at editing code compared to Sublime.  Happily shocked!
  • Uhoh… lots of clion lockups on laptop… doh, whoops, out of disk space.  Don’t let it happen!  🙂

Fun tips:

  • You can open a file into an existing clion session by running the startup script with a full path to the file, or do this:
    clion `pwd`/myfile.cpp
    or use the little bash script to do it for you:
    !/bin/bash
    # if $1 does not start with [/], prefix it with `pwd`
    MYFILE=$1
    if ! [[ $MYFILE =~ ^/ ]]; then MYFILE=`pwd`/$1; fi
    cd /home/m/apps/jetbrains/clion/bin
    ./clion.sh $MYFILE $2 $3 $4 $5 &
  • For the huge hirez monitors I have gotten addicted to using with i3, make sure you enable this (which is oddly disabled by default):

    File > Settings > Editor > General > [x] Change font size (zoom) with Ctrl+Mouse Wheel

  • CLion will auto-create projects from CMakeLists.txt, really nice.  It seems to auto-create Debug config using ./cmake-build-debug.  To create Release config too, go to:

    File > Settings > Build… > CMake > click +, it will auto-create Release (a little weird but it was what I needed)

Decades later, my main gentoo server gets yet another dynamic update.  And no systemd.  I suppose I need to look into that soon… but in the meantime, THANK YOU GENTOO DEVS.

https://flowingdata.com/projects/2015/timeuse-simulation/

JWT is neat, in every meaning of the word. Sure, the base64-encoded data is basically plaintext. But a secure signature makes it All All Right. 🙂 Simple and elegant.

I used my OAuth code from twitter to do the encoding and encrypting. As per the usual, it’s in my Reusable project on github.

I used the most-readily-available encryption algorithm. Looking forward to setting up better faster harder ones soon.