Caleb Meyer

Caleb Meyer

Arbiter of Documentation, Script Ninja, Veteran Mercenary

I'm a father of 2, professional board gamer, intermediate pianist, and amateur barista. I love the great indoors, especially with great company.

I've been at Cerner for almost a decade now, and learned a few things along the way that I'd love to share.

Current sessions

Rust - A language for the next 40 years

The C Programming language is used incredibly widely today. Its echoes can be felt throughout the programming space, from the basic syntax we use to the underpinnings of all modern computing. C has been used to write programming languages, operating systems, and everything in between.

But we live in a world full of malicious actors, and C (and C++) are so close to the metal you can burn yourself easily. Heartbleed, Shellshock, Stagefright, Rowhammer, Spectre, Meltdown. So many security vulnerabilities come from C's (entirely reasonable at the time) decision to force you to manually allocate and free memory.

Rust is a new (by C's standards) programming language, known for its friendly and welcoming community, first class ecosystem, and for eliminating entire categories of bugs like these without sacrificing performance.

In this talk, we'll take a fairly high level look at those three parts of the Rust language. We'll talk about how the community has diversity and inclusion as core beliefs, and the many ways you can get help or get in touch. We'll talk about Rust's best in breed ecosystem: cargo, the dependency manager; rustup, the language version manager; rls, the smart language server; and clippy, the linter. And finally we'll talk about how Rust eliminates race conditions and the need for manual memory management without introducing a garbage collector and sacrificing its blazing fast performance.

Target Audience: Developers, especially those who currently work on anything performance sensitive.

Postman and Newman: API Testing made Easy

Come to this talk and find out how to supercharge your API testing with Postman. Topics covered include:
- A brief history of Postman (did you know it started as a chrome extension?)
- Postman and HTTP basics
- Using collections to group related requests
- Using environment variables to manage secrets and base URIs
- Automating authentication with OAuth (1 and 2)
- Testing with Postman and the Postman CLI, newman
- Using the Postman API to get real fancy: multiple related requests
- When should I _not_ use Postman, and what else can I use?

You don't need any prior postman (or web dev) experience to come to this talk, and when you leave you should feel comfortable managing basic requests and auth in Postman. This talk is aimed primarily at people who create or test APIs, though many of the concepts are helpful for general web development.

Automate so you can spend time on what matters

Humans and computers have an interesting symbiotic relationship. Computers excel at tasks that require processing or recalling lots of information, especially things that are repeated frequently with only small changes. Humans are good at tasks that have poorly defined or constantly changing requirements, or that require empathy.

We as developers get the best of both worlds. Programmers and machinists are the only two professions that can improve their own tools to better fit their constantly changing workflow.

In this talk, you will learn exactly what you can do, regardless of your programming experience, to automate the boring stuff. We'll cover a wide range of topics, including but not limited to:
- Managing your outlook effectively with filters and favorites
- Creating a keyboard driven workflow using Alfred for mac or Executor for windows
- Using a clipboard manager and OS wide keyboard snippets to avoid typing things twice
- Basic shell customization to make the terminal less scary, like a better prompt, better auto-completions, and shell aliases
- Writing simple scripts that interact with the GitHub/JIRA APIs
- Writing a dead simple web front-end for those scripts to make them useful for people whose title is not "engineer"

Target audience: Anyone who does anything repetitive daily. Developers or others with experience writing code will get more out of this talk, but it should be useful for everyone.

You should learn a new language

In this talk, I'd like to convince you to start learning a new language. But why would you learn a new language? ESR summarized it better than I can:

LISP is worth learning for a different reason [than practicality] -- the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot.
- Eric Stevens Raymond, the original hacker

I have personally learned a bit of LISP, but I've also learned a lot of many other programming languages. I cut my teeth on C++ in high school, started with Java in college, and moved on to Python and C later in my bachelors. Since coming to Cerner, I've learned Ruby and several dialects of Javascript, and I've dabbled in Rust and Go.

Do you know what a conjugation is? If you've ever had any semesters of a second natural language, I guarantee you do. Do you know what a hygienic macro is? If you've done much LISP or Rust, you probably do.

The cool thing about these concepts is that you can apply them to the languages you already know. Recognizing verb tenses will allow you to pick the correct one in your writing and speaking. Knowing about macro hygiene means you already know about macros, one of the greatest time savers in all of programming, and that you know the pitfalls. Most programming languages have at least limited support for macros, even if it's in the form of the dreaded `eval`.

If you want to learn a natural language, duolingo is free and a great starting point. If you want to learn a programming language, perhaps the best way to learn it is to code in it, following the guide or book from that language's website.

Target Audience: Anyone who knows at least one programming or natural language, but mostly programming.