Skip to content

Instantly share code, notes, and snippets.

@conartist6
Last active March 1, 2023 15:02
Show Gist options
  • Save conartist6/c13357dff24566d7ba7d4acb33236466 to your computer and use it in GitHub Desktop.
Save conartist6/c13357dff24566d7ba7d4acb33236466 to your computer and use it in GitHub Desktop.
Conrad Buck - A resume for humans

This is my resume for humans! It is meant to be read, not parsed, and that is on purpose. My goal here is to start conversations, so you are welcome to email me any questions or comments.

Conrad Buck

conartist6@gmail.com
https://github.com/conartist6
https://burningpotato.com
Remote, Eastern Time

I consider myself to be foremost a linguist and a champion of developer experience. I am always considering how it should be possible to express technical concepts with readable code, how to uphold and combine the fundamental principles of development, and what the next step is on the path to much larger goals. I hope that you will read the code I have written and find it unremarkable, but I hope that you understand also that this reflects what I believe is an exceptional ability to reach into many, many different projects, languages, and disciplines to triage and fix bugs, build missing functionality, and most importantly to make the right choices -- even if it means swallowing my pride and admitting that work I did previously was misguided.

Impressive stuff

If you have only a small amount of time to consider me, please use that time to check out my GitHub. I am constantly building there, and you'll notice that my pinned projects are original creations not forks. My repos are exemplary of my skills with implementation, architecture, tooling, and documentation. Here is a field guide to some of the most interesting things you can find on my GitHub:

  • iter-tools: The README contains an excellent summary of the technology. I was not the original creator of this package, but you should look at how much I've contributed to the project. I first worked with the original author on incremental improvements to his port of Python's itertools, and was eventually was granted ongoing maintainership of the project. I published the 7.0.0 release which was a complete rewrite and introduces 100% code coverage, new documentation, and countless bug fixes. I wrote much of the current MDN docs on iterators as well, though sadly the history of those docs is now lost. I'm perhaps proudest of my API design work including the peekerate, spliterate, and forkerate higher order methods.

  • @iter-tools/regex: Everyone wants candidates who know algorithms. Here you can find a non-backtracking (streaming) regex engine I built from scratch. It is fully feature-complete, quite readable, and is the only regex engine in the npm ecosystem that can operate incrementally on stream and iterable data. It contains an algorithmic optimization of my own design (unique to my knowledge): using immutable red-black trees to store and access some state internal to the pattern. A non-backtracking engine essentially works by evolving the pattern, which causes specific problems when the pattern includes quantized repetition, e.g. [a-z]{2,100}. Google's own nonbacktracking regex engine gives this expression up as impossibly expensive but my engine handles it in n log(n) time. Of course my engine is written in javascript and is hundreds of times slower anyway, but the same optimization can be implemented in a low level language.

  • macrome: This build system (still unpublished) sprung from iter-tools and is made possible by streaming header parsing implemented using @iter-tools/regex. It is most closely related to make, but instead of differentiating built files by their extension it uses header comments. This is critical to ensuring that built output can be cleaned and verified with 100% accuracy. The system also offers comprehensive support for file watching and incremental rebuilding powered by Facebook's watchman service. I believe this tool has the power to be transformative in developer experience by encouraging developers to check in code containing no non-standard syntax. This would be a tremendous win for the ability to package and consume pacakged code, for the ability to fork projects and use git forks as pacakges, and for static analysis and novice developers for whom a large variety of bespoke syntaxes are cryptic not convenient.

  • stack-tools: After having difficulty providing rich errors while building macrome I took a detour to build tooling for working with javascript errors and stacks. My work has included the design of an AST structure, implementation of at least two parsers, and integration of the new code with Jest.

  • kye: A UI portfolio project and a bit of eye candy. All the game pieces you see are just divs with exotic styling. Practical? No, I was just showing off really. The design mixes redux immutable game state (lives, levels, etc.) with mutable (ticking) board state. Check out the README—it has 16 instances of the game engine embedded in it to showcase game mechanics but is still perfectly performant. Don't forget to start a new game by double clicking default.kye file on the desktop!

Companies

I have worked for the following companies: SpruceMedia, Switchfly, VMware, Facebook, and Plangrid (which was purchased by Autodesk during my tenure). The timeline can be found in detail on my LinkedIn. You should know that Facebook fired me for (in essence) directing too much of my energy towards attempting to solve problems I percieved to affect many engineers within the company, even where it was not necessarily my job to do so. While I know for sure I made many mistakes in my time at Facebook, using every opportunity the role provided to learn about engineering at the highest levels was not one. I also learned a very valuable lesson: companies cannot give you self-worth. It was this experience which drove me to start creating code for myself and for the community at large.

Tech specs on me

My primary languages are Javascript and Typescript. You'll find me using syntaxes defined in the latest release of the ECMA spec, and often reading, commenting on, and even making proposals.

When I write UIs I prefer to work with React, though I have experience with several other frameworks including Ember, Angular, Backbone, and even jQuery. Even if I don't plan to continue using them, reading their code and seeing their various solutions to similar problems has made me a better developer.

I'm an advocate for GraphQL, which I believe will replace REST APIs for the majority of applications which need to provide CRUD functionality over some graph or tree of data.

As for smaller details of development like state management, accessibility, or translation, I don't think the distinctions between individual methods and libraries are more important than the fact that I can quickly learn syntax and idiomatic usage. I've spent a lot of time with Redux.

I have written in a whole bunch of languages: C, C#, C++, Java, Python, Ruby, Bash, and OCaml.

I have basic knowledge that extends the whole way down the stack, from databases to networks, operating systems, and more. I attended Bucknell University.

@conartist6
Copy link
Author

conartist6 commented Nov 12, 2021

Please do not comment on this. I will delete any comments. You should email me instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment