Table of Contents
The brain fog is still pretty heavy from the holidays but the new year is finally here and begging for a fresh start. I always try to take some time to reflect on the past years foibles, successes, disappointments and joys. After that I speculate on what might be worthwhile to make a commitment to for the coming year. This year I’m going to write it down in public. Maybe that will shame me into commitment and motivation to stick to what I think might, in some small and subtle way, make life somehow better for myself and the world.
… or, maybe it will just be a short list of things that seem fun and interesting at the moment. At least having a public record will let me look back at the end of 2018 and reflect on what was on my mind that first week of the year… perhaps with a little bit of the feeling that "it seemed like a good idea at the time".
1) Write code everyday
Programming is like any other creative skill. To be good at it you have to practice. By "practice" I just mean "do it". Back-in-th-day™ I used to write a lot of code and I was pretty good at it. That’s because I was writing a lot of code. There is no magic talent or in-born ability. It’s just practice.
It also helps a lot if you have something interesting to work on. I have been thinking about several projects for the company and a bunch of personal ones for some time. This year I want to spend more time getting some of these moving forward. I’ve got projects in machine learning, computer vision, voice recognition, sys admin automation, … I even want to redo some of my old quantum chemistry code.
I’m also mentoring a group of motivated colleagues at the office who want to learn Python. Even though I’ve used Python for decades I do not consider myself a good Python programmer. I’d like to "get better" this year.
Bottom line for this resolution is that I want to write some code every day. Anything! Just get some fun and interesting projects moving forward.
2) Use Jupyterlab instead of Jupyter Notebook
Jupyterlab is the next iteration of the immensely useful Jupyter notebook interface. It is a surprisingly good collection of interactive programming tools that runs in your web browser. It’s a common interface for working with Python but it is not just for Python. It’s a very useful interface for several languages. The name Jupyter is partly derived as a concatenation of Julia, Python and R. The Jupyter notebook interface is a standard tool in the data science community and is an important component in the "reproducible research" movement. The series of blog post I wrote on machine learning in the beginning of 2017 were rendered to html from Jupyter notebooks (which are available on GitHub)
I just watched several interesting talks about Jupyterlab from the JupyterCon meeting in late August. It’s not at version 1.0 yet but the interface is completely usable and is already a good alternative to using Jupyter notebook by itself. (It contains Jupyter notebook).
I’m going to commit to using Jupyterlab for my data analysis and machine learning work this year. And, I’ll try to contribute to the code development if I can. It’s a great project!
3) Write system administration and development how-to’s for Linux AND Windows
I’ve been "making-things-work" on computers for a long time. My systems administration work has mostly been for scientific research applications running on Linux workstations and clusters and I spend 95% of my time on Linux systems. However, I have used Windows from time to time over the years. I’m kind of a fan of Windows 10 and the "New" Microsoft. They have been doing some nice work and I’d like to "make some things work" there too. Windows can be difficult to use for research level code like many of the modern machine learning frameworks. But, it’s gotten a lot better. I just feel compelled to try and use it along side of Linux.
I have a lot of friends and colleagues who use Windows and I’d like to help that community with "making things work" too. One of the most satisfying things about what I do is when someone comes up to me a meeting or writes a comment on one of my blog posts and says thanks for writing about … it helped me get things working.
I’m going to try to get many useful How-To’s written this year for both Linux and Windows.
4) Adopt a Docker based workflow on Linux (and try that on Windows)
This has been on my mind for over a year. In early 2017 I wrote a series of 6 blog posts about setting up docker and NVIDIA-docker on your workstation. There have been changes since then and NVIDIA-docker is at version 2. I used NVIDIA-docker and their NGC docker registry when I did the testing and benchmarking in my recent post about the Titan V. In that post I promiced that I would do a new updated series of posts on how to get that working. It saved me a lot of time and effort for the work I did in the post and I gave the NGC docker registry a strong recommendation. I will do those posts.
What I’m resolving to do is to use docker on my own personal workstation for my own work. That means creating docker images to do what I want instead of installing applications directly onto my system. This takes a bit of a commitment because it’s sometimes awkward to use docker. I want to try to do it. I’m sure there will be difficulties but I’ll try to solve those and write about it. I also, want to try this on Windows too! That may be getting too ambitious but I want to at least try it.
5) Record a screencast every week
This is another one of those things like writing some code everyday. I want to make it a habit so it becomes easy and natural. I am going to create a screencast every week. That does not mean that I am going to use them in my posts! However, that is the ultimate goal. I know it can be helpful to convey information with video and audio. Some people do much better with that media rather than reading. I want to be able to do this and I want it to become a habit. So, I am going to keep my screencasting setup active and in place so that I can make at least one recording every week. If they are usable and useful I’ll post them, otherwise I’ll just delete them. In any case it will be practice.
6) Monitor the comments on my blog posts
This last one is something that I want to correct. I post my work and then forget about it until I need to reference it for some reason. [ It’s nice having blog posts up that I can refer to when I have those moments where I’m saying "how did I do that?" ] I always feel bad when I go back to a post and see comments that I would have liked to have replied to. It’s really great to go back to a post and see that it has taken on a life of it’s own with discussion. I’d like to be sure to be in on the discussion!
I hope I can keep these commitments and that what I write in 2018 will be helpful to many people. We are all in this together!
Happy computing –dbk