I use this blog mainly to remember things I've figured out, but I also share things that I expect to be useful for others.
01 July 2018
I’ve been wanting to try using containers for managing different development environments for a while now. Docker is a well known container software, but I’ve found it not be well-suited for development. Singularity is an alternative that is designed for high performance computing and not microservices. It integrates more readily...
27 December 2017
Updated Feb. 10, 2018 Updated Oct. 14, 2019 Just over a year ago I wrote a post about using Emacs is a C++ IDE. Over the past year many small improvements have led me to an entirely different configuration that I find to be much faster and easier to use....
09 December 2017
With C++17 we finally get if constexpr. However, I have started running into a lot of cases where I want a for constexpr that is guaranteed to be evaluated at compile time. My use case is effectively compile time indexing of a multi-index tuple-like datastructure. This means that arbitrary nesting...
09 December 2017
I’ve been wanting to run a Linux distro on my MacBook Pro for about 6 years now. About a year ago I decided to give it another go and had a lot of success. After doing some research on the topic I came to the conclusion that Arch Linux is...
10 September 2017
In this post I will discuss overloading generic lambdas in C++14, using SFINAE with lambdas, using tagged dispatch for “pseudo-SFINAE”, and finally using overloading and SFINAE to create local type traits inside functions. All of these are useful when writing generic code. Overloading generic lambdas, for example, proves to be...
02 September 2017
C++17 allows parameter pack expansion inside using statements. This feature is sometimes called variadic-using and the paper is here. Unfortunately, I found searching for “variadic using” with Google to not be all that helpful. In this post I will provide a concrete example of what this feature can be used...
25 August 2017
This post is a follow up to iterating over tuples, but this time we do not use runtime or compile time recursion, so the resulting code is cleaner and faster. There are two different types of iteration, one where you keep a “state” and one where you do not. By...
24 August 2017
A fairly common task one encounters is iterating over a std::tuple. I’m going to keep this post fairly brief and go over how not to iterate over a tuple. We’ll discuss how you should iterate over a tuple in the next post. The most naive way to iterate over a...
29 January 2017
We continue on our adventure of template metaprogramming. We explore the concept of compile-time data structures such as a typelist, map, and a set. This is done using the brigand template metaprogramming library (TMPL). However, there are several other options available. I outline them in a table below along with...
14 January 2017
What is template metaprogramming? Why do I care about template metaprogramming? What is a typelist? These are the sorts of questions I asked myself when I first started looking at template metaprogramming seriously. In this series of posts I will do my best to answer these questions using practical (from...
14 January 2017
A while ago I wrote a post on using Emacs as a C++ IDE. That setup seems to work really well for small to medium sized projects that don’t use certain libraries. However, I’ve found that the code completion is not always as consistent and good as I would like....
17 July 2016
An updated version of this post is available here. Last year I wrote a post about using Flymake with Emacs to get on-the-fly syntax checking. Recently I watched a cppcon lightning talk by Atila Neves on his setup for using Emacs as a C++ IDE and was inspired to adapt...
04 December 2015
Kepler’s third law in classical mechanics states that the square of the orbital period, \(T\), of a planet or particle is proportional to the cube of the semi-major axis of its orbit. The classical equation describing this is \[\left(\frac{d\phi}{dt_{\text{Newt}}}\right)^2=\frac{G(M+m)}{a^3}\] where \(a\) is the semi-major axis, \(t_{\text{Newt}}\) the Newtonian time, and...
07 November 2015
I recently started using tmux and have found that it has improved my workflow. Being an Emacs (Aquamacs) user most of my work is done inside Emacs with little to no need for a separate terminal. However, much of my work requires connecting to remote systems via SSH and so...
31 July 2015
Emacs is a great tool for software development. If you’re not using a more advanced environment than Notepad and a Terminal it may be time for you to look at options. Two popular ones are Emacs and Vim. Depending on who you ask you will get widely varying responses about...
28 July 2015
Welcome! I’m starting this site to share my knowledge of physics, experiences developing software for scientific use, and anything else that gets me excited. I am currently a graduate student in the physics department at Cornell University working with Prof. Saul Teukolsky with the SXS collaboration. My research interests are...