December 16, 2019
Skylla recently set up Ubuntu 18.04 on the new Thinkpad P1 Gen 2 and had some issues with no WiFi drivers after install. Looking for a fix I found this Stack Overflow answer which pointed to the wireless driver issues. They suggested upgrading to Ubuntu 19.04 but this is not an option for work, we need the Long Term Support version.
Instead to get this working on Ubuntu 18.04 you can install a newer kernel with:
sudo apt install linux-generic-hwe-18.04-edge
After this installs reboot and WiFi should be up!
December 14, 2019
My hot take on elementary OS Hera. This is my first install of elementary OS. I have watched elementary from afar for a few years now and appreciated what it was doing but never committed to setting it up. I finally did and here is what I got out of it.
After install I couldn’t get 2 finger scrolling working well. Not sure where I went wrong. I felt like the touchpad was much jumpier and lost the mouse a few times before I finally got comfortable using it.
This might be just because I’m coming from Ubuntu but a lot of the keyboard bindings are slightly off. I know they are trying to be Mac like but they have taken me a bit to get used to.
The store is slick but a bit buggy and not fully featured.
The main issues I ran into:
- Installed applications is an empty list.
- Screenshot previews struggle to load.
- Searching from meta launcher if App Store is already open and filtered to a category means your global search might return no results, when it should.
Not a huge surprise but because it’s not a main stream Linux distro installation for some packages and apt repos fail without minor tweaks.
I have not installed a ton of software but two I hit already are Erlang/Elixir and Nodejs. Erlang repos tried using hera instead of bionic for releases and couldn’t find any packages.
Nodejs seems to handle elementary OS but had not been updated to include Hera. I ended up making a pull request for this on the nodesource/distributions repo.
Being Ubuntu based all the software I’ve needed to run so far has been pretty easy to get going with little hiccups and a familiar environment.
elementary OS feels cohesive and well thought out. Theming is consistent, appealing and practical. The mail application is smooth, the files application is pretty and over all I dig the attention to cohesive styling.
Notifications feel much more native and smooth. It might get annoying but during setup it was really nice to have the command finished notifications for terminal commands.
I also appreciate the notifcations being smaller and in the corner. Gnome center screen default notifications are annoying to me. The grouping of the notifications is slick and helpful too.
elementary OS is coming along nicely. I am not sure I will put it on my primary work machine yet but I am comfortable dropping it on my home computer and being productive there. This is a great introduction to well designed open source operating systems. elementary OS is not on par with Windows or Mac yet on the just works but it’s a great looking Ubuntu alternative that comes close to being ready for the masses.
November 06, 2019
Wired released an article covering what happened with with Uber killing a pedestrian and it is a sobering read. This case study should be required reading for software engineers and CS majors.
Working in the technology field there are exciting technologies and things that can be built but as engineers we are responsible for what we create. Reading through the article it’s hard to understand everything that went into the systems faulting but it’s clear it was a systemic engineering failure.
As engineers building large and safety critical systems there are numerous complexities and real guarantees are hard, that does not let you skip out. Safety is a requirement that does not get put second. Never forget that there are people on the other end of our algorithms.
Is zero pedestrian deaths by driverless cars possible, no? But there are preventable deaths and other algorithmic decisions going awry across our industry, yes. What are you doing to make sure the systems you build do not let this happen on your projects?
November 04, 2019
Working on a small team with lots to do, one thing I have been getting better at it is doing just enough. Finding the highest priority work is hard but once you find what to do you have to reduce the scope.
Instead of over building, build enough to unblock and make sure it is done well enought to last for the needs of the system. Once you have gotten that far there are a bunch of optimizations, refactors, better engineering, and more that could be done, DO NOT DO THEM.
You have what you need; get going on the next task after pushing all the cool ideas and future work plans into your project management system. You may end up needing them and you may end up needing something different or the first pass you complete works well enough for longer than expected.
October 15, 2019
Code reviews are super important for keeping track of changes, learning from team members and improving the quality of your code base. They take a lot of effort and can sometimes be hard to get right. I have compiled a list of things I like to keep in mind when prepping my code for review or doing a review of other’s work.
Some things to keep in mind when getting your code ready for review by others:
- Review your code with a fresh set of eyes before assigning some one else. I struggle to do this one sometimes but it’s a great thing to do to respect your teammate’s time and help you catch things too.
- Make sure to let your reviewer know expectations of what kind of feedback you need. If it’s just a draft and you want feedback on approach it will be different than a final review before shipping.
- Try to keep your changes small and atomic. Sometimes this can not be helped but when this happens try to chunk the review into pieces. I try to create commit chains that can be stepped through.
- Separate the code that you wrote from your ego as much as possible. This is hard to do and most people struggle to do this completely but it’s important that you realize getting feedback should not reflect on you as an individual entirely.
Things to think about when reviewing:
- Do not nitpick. Try to recognize when things are personal design opinions versus actual issues. If there are small stylistic suggestions, make clear that it is that and not an actual problem. I like to preface comments like these with
- Take your time. To do a good review it might take some digging and work on your end. I sometimes end up digging into documentation, sample code libraries and more before giving advice.
- Do not dismiss choices or make vague suggestions, instead be clear with the problem you see and try to make strides to fix the issue with an alternative name, library or example code.
- Be careful to balance your remarks with calling out things you like too. Remember there is a person on the other end with feelings.
Obviously these are not exhaustive lists, there a lot more things to consider but these are some of the big things I try to keep in mind when reviewing or publishing code to be reviewed.
October 14, 2019
An important way that I stay up on top of news that is important to me is through RSS feeds. RSS is old school tech that has been around since 1999. It’s an open standard that almost every blog and news site supports. I subscribe to a variety of professional news outlets, blog aggregators and individual bloggers.
There are a bunch of different RSS feed readers out there. Two of the big ones I’ve used are Newsblur and Feedly. They both let you browse sources to follow or add your own. I currently pay for Newsblur which though not as pretty as Feedly is more functional for my use case.
I group the blogs I follow by category. The main categories I have are:
- Science & Technology
- Software Leadership
If you are looking for some blogs to start following here are some of my recommendations:
- Derek Sivers: eclectic blog with entrepreneurship, tech, productivity and other random musings.
- Brandur: engineer at Stripe who does some great technical deep dives into Postgres, distributed systems, websockets and more.
- Julia Evans: a tech blog with a mix of technical tips, comics, career tips and more. Example great post: Get your work recognized: write a brag document
- Signal v. Noise: blog about company culture, tech, remote work, managing etc. Started by the people behind Basecamp
- Kalzumeus: Finance, banking, tech and entrepreneurship.
- Hayley E. Frerichs: not a tech blog but a dear friend of mine who writes fun zero waste tips and has creative bullet journals I drool over.
Any blog recommendations for me?