Helping friends on the Linux command-line

I noticed that when I was helping a friend on the Linux command-line I was struggling. Spelling the commands over the phone or trying to read their screen over a bad Skype or Hangout screen sharing connection is not really fun. That’s why I spent the time to create something that works (for me at least). It allows your friend to connect to your Linux server on which you can open a shell on your friend’s computer. ...

August 15, 2017 · Maurits van der Schee

How to get an A+ rating from SSL Labs

After postponing setting up SSL for this site for about one and a half year I finally did it. Like anything I do with this blog I wanted to make it fast and secure. In order to find out whether or not I configured SSL correctly I used SSL Labs. They have a form where you can enter your domain. After a minute or two and you will receive an extensive report on your SSL setup (for free). The report is also summarized in a rating and the highest rating is an “A+”. I configured this site to receive such an A+ rating and in this post I will explain how you can do the same. ...

July 29, 2017 · Maurits van der Schee

GopherCon 2017: videos online

15th of July was the last day of GopherCon 2017, the “Largest event in the world dedicated to the Go programming language.” It was held in the Colorado Convention Center in Denver. Today (only 9 days later) the videos from the conference are online! There are 26 videos online now and 32 lightning talks, so most of the conference is available here (also from last year). GopherCon 2017 Peter Bourgon - Evolutionary Optimization with Go [39:18] Tammy Butow - Go Reliability and Durability at Dropbox [27:21] Joe Tsai - Forward Compatible Go Code [26:29] Russ Cox - The Future of Go [24:37] Fatih Arslan - Writing a Go Tool to Parse and Modify Struct Tags [35:36] Kavya Joshi - Understanding Channels [21:45] Filippo Valsorda - Encrypting the Internet with Go [41:43] David Crawshaw - Go Build Modes [44:19] Keith Randall - Generating Better Machine Code with SSA [34:44] Kris Nova - Valuable Lessons in Over-Engineering the Core of Kubernetes kops [25:02] Aaron Schlesinger - Functional Programming in Go [35:28] Scott Mansfield - Creating a Custom Serialization Format [37:32] Mitchell Hashimoto - Advanced Testing with Go [44:59] Ashley McNamara - My Journey to Go [12:25] Michael Hausenblas - The Fallacies Of Distributed Gomputing [34:15] Edward Muller - Go Anti-Patterns [38:14] Jon Bodner - Runtime Generated, Typesafe, and Declarative: Pick Any Three [39:55] Sam Boyer - The New Era of Go Package Management [32:00] Marty Schoch - Building a High-Performance Key/Value Store in Go [34:00] Liz Rice - A Go Programmer's Guide to Syscalls [34:45] Alan Shreve - grpc: From Tutorial to Production [43:51] Rhys Hiltner - An Introduction to “go tool trace” [37:21] Ian Schenck - Operability in Go [19:56] Kelsey Hightower - Self Deploying Kubernetes Applications [22:03] Waldemar Quevedo - Writing Networking Clients in Go [40:33] Will Hawkins - Go at the DARPA Cyber Grand Challenge [35:42] GopherCon 2017 - Lightning talks Areg Melik Adamyan - Let NFV Go: Experimental Framework for Network Functions [9:37] Harvey Laue - Interface Driven HTTP Response Writers [8:12] Joey Geiger - Regular expressions, do you need them? [3:12] Landon Jones - AI and Go II: Time For Action [9:54] Michael Stapelberg - RobustIRC [9:46] Aarti Parikh - A tale of two chat servers [7:23] Nyah Check - Becoming a better hacker, lessons learned from Poetry [7:02] Sukrit Handa - Introduction to Hyperledger Fabric [7:35] Daniel Selans - Distributed Remote Monitoring in Go [8:51] Pete Garcin - Building an ML-Powered Game AI Using TensorFlow in Go [7:45] George Tankersley - I wanna Go fast [8:22] Darren McCleary - Beating GCP's MapReduce with Go at The New York Times [9:45] Matt Layher - Ethernet and Go [5:34] Aditya Mukerjee - Translating Go to Other (Human) Languages, and Back Again [9:42] Chris Short - Golang to the rescue: Saving DevOps from TLS turmoil [5:55] Carolyn VanSlyck - go dep in 10 minutes [9:30] Emile Vauge - Effective ingress traffic management with Traefik [6:45] Tim Burks - A Go Platform for Polyglot REST API Code Generation [9:03] Owen Ou - Godzilla: a ES2015 to Go source code transpiler [6:04] Sergey Ignatov - Gogland Tips and Tricks [9:28] Bryan C Mills - An overview of sync.Map [8:10] Vladimir Vivien - Calling Go Functions from Other Languages [9:11] Vitor De Mario - Abracadabra - Finding genetic mutations in Go [8:22] Ramya Rao - Go with Visual Studio Code [10:07] Brian Scott - Go at Disney [8:04] Tom Elliott - Introducing Edward for Simplified Microservices [9:23] Marc Antoine Ruel - periph.io: a lean performant hardware library [9:43] Marcin Spoczyski - Anomaly Detection in Go [7:03] Blain Smith - Generating Hundreds of Video Catalog Feeds in Seconds [8:51] Bob Argenbright - Simple Plugin Architectures in Go [9:53] Sharon Allsup - Ultimate Coffee: It tastes as good as it smells [9:09] Jonathan Amsterdam - Errors as Side Notes [4:55] That should keep you busy for a while. Enjoy! ...

July 24, 2017 · Maurits van der Schee

Ubuntu ttf-mscorefonts-installer fails

You may download Microsoft’s TrueType core fonts for free, even on Ubuntu. They are available in a packaged named ttf-mscorefonts-installer. But it is really annoying that when you try to install ttf-mscorefonts-installer it keeps failing with strange error messages like: W: Can't drop privileges for downloading as file '/var/lib/update-notifier/package-data-downloads/partial/andale32.exe' couldn't be accessed by user '_apt'. or: E: Failed to fetch https ://heanet.dl.sourceforge.net/project/corefonts/the fonts/final/andale32.exe Protocol "http" not supported or disabled in libcurl ...

July 10, 2017 · Maurits van der Schee

Client side rendering is a lie

We currently see that MVVM frameworks like Angular and React are booming in popularity. Not taking anything for granted, I was wondering last week: does “Client side rendering for scalability” even make sense? Is it a beneficial to send JSON over the wire and render it on the client? Does that lower the load on the server, compared to rendering the HTML? How expensive is the HTML templating? Is it more expensive to generate HTML than to generate the JSON it is based on? My feeling says it does, but is it true and how much does it matter? ...

June 27, 2017 · Maurits van der Schee

Xubuntu with Gedit, Nautilus and Plank

I’m using Xubuntu (Ubuntu with XFCE) as my primary operating system, because it is ridiculously fast on my NVMe SSD powered Intel NUC i7. By default Xubuntu comes with “Thunar” installed as it’s file manager and “Mousepad” as the default text editor. Mousepad is very limited in features and Thunar has some stability issues. Reasons to replace them with the older (Gnome 2 era) tools “Gedit” and “Nautilus”. Unfortunately in Xubuntu 16.04 these application have been changed beyond recognition with added buttons to the title bars and a removed main menu. Luckily some people forked the old Gedit and Nautilus and made them available under the new names “Nemo” and “Pluma”. ...

June 7, 2017 · Maurits van der Schee

Optimistic and pessimistic locking

One of the most misunderstood topics in software development is most likely concurrency. There are three kinds of operations on data rows: reads, blind (full) writes and dependent (or partial) writes. In a high concurrency web application you typically do not need to lock for the first kind. Only need to lock the write operation itself in the second case and you need to lock the row for the entire duration between read and write in the third case. ...

May 29, 2017 · Maurits van der Schee

Dash to Panel for Ubuntu Gnome

We have heard months ago that Ubuntu is stopping with Unity and switching to Gnome 3. I’m happy about this as I could never get used to Unity. For a long time I used Xubuntu, which offered a Gnome 2 like experience with the light-weight XFCE window manager. In order to get used what life will be with Gnome 3 I downloaded Ubuntu Gnome. It has a 16.04 and a 17.04 release and I conservatively chose the 16.04 release. ...

May 28, 2017 · Maurits van der Schee

ASP.net FormsAuthentication in Go

If you are currently developing a monolithic ASP.net legacy system you are probably dreaming about migrating all functionality step-by-step to a modern micro-service design with cheap Linux servers running Go. If you aren’t, then you should! But in order to do this super-stealth (without your boss finding out) you need to do this one API call at a time. Sounds easy.. if only… you were able to read ASP.net’s proprietary encrypted (secure) cookies. Well, I’ve got good news for you: Now you can! ...

April 27, 2017 · Maurits van der Schee

Implementing cache invalidation is wrong

There, I’ve said it! Again! It is my firm belief that it is. Instead of arguing why this is true I will try to negate the argument I hear most often from people arguing otherwise. In this post I am talking about a primary (data) store and a cache. It may help to think about a cache as a Redis or Memcache instance used by a web server and about the primary data store as a relational database server (MariaDB for instance). ...

April 18, 2017 · Maurits van der Schee