Containerized Development With Singularity

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...

Using Emacs as a C++ IDE - Take 2

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....

The Missing for constexpr

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...

Antergos/Arch Linux on MacBook Pro 11,4

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...

Lambdas and Overloads and Type Traits, Oh My!

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...

Variadic Using and How to Use It

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...

TMP Part 4 - Recursion Free Tuple Iteration

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...

TMP Part 3 - Tuple Iteration With Recursion

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...

Template Metaprogramming Part 2

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...

Template Metaprogramming Part 1

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...

CLion as C++ IDE With Charm++ Projects

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....

Using Emacs as a C++ IDE

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...

Kepler's Third Law in Schwarzschild

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...

Terminal Multiplexer (tmux) on OSX

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...

Emacs and Flymake Syntax-Checking

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...

Well, Hello!

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...