John Musgrave

new projects

Some highlights of recent projects in the works:

Coming up to speed on using Kubernetes and Docker Swarm for project deployment. Building something like a PaaS is becoming more trivial now due to the reliability and simplicity of using these services for deployment and things like container orchestration. I see no reason to use anything else. After developing a PaaS platform for deployment in the past year, there’s no reason to re-invent features that are present in Kubernetes. Especially since Google has donated the project to the Cloud Native Computing Foundation.

I was learning Rust for a bit. Has some nice features, and seems to be gaining adoption comparable to Golang. I thought the concurrency model was a novel idea, and the compile time checks for concurrency were an interesting takeaway. Heard an interesting talk from wycatz comparing Rust to Node, in their accessibility to beginners and the impact that it could have on larger projects.

Reading about lower level stuff in Computer Organization and Architecture.

I finished reading Linux Kernel Development and am reading The Design of the Unix Operating System, after reading Ritchie’s paper on Unix, “The Unix Timesharing System.” Pretty good description of how they implemented the filesystem in this paper. Additionally there are some great design principles in the Unix book. And it’s a nice introduction to the Linux system API. He goes over a basic implementation of a file copy program within the first few pages that takes very few lines of code to implement, and is extremely performant using kernel system calls. I also took a crack at writing a shell to execute commands after forking from the parent process.

Was working on a project for the generation of synthetic digital circuits using existing benchmarks and CCirc and CGen from the University of Toronto. This required writing a lexer for the Berkeley Logic Interchange Format, which defines rules for logic gates, and then parsing the generated DOT formatted files, which can generate graphs using GraphViz.

Read an interesting article not too long ago in Communications of the ACM on learning problems, and their application to learning models of Deterministic Finite Automata.

Interested in using the Synaptic Node.js library for Machine Learning, if I can find a dataset that has good applications to a learning problem. Also interested in the implications of machine learning processing using parallel computation, since they are both a good fit for (sparse, I’m assuming) matrices. Still trying to come up to speed on my Category Theory and Abstract Algebra.

Picking up a functional style of programming, and started learning Haskell.

Spent some time learning more compiler tools. Parser and compiler generators. Pretty much all that I could find. Yacc, Lex, Bison, Flex, ANTLR. Also started working with the LLVM toolchain and wrote a sample LLVM Pass.

Trying to get more involved in the web standards community.

Taking a look at parallel simulation models in greater depth.

Read Kevin Mitnick’s new book on privacy and security.

Oh, and the ACM Hackathon this Spring was awesome.