Speaker Series

Nick Hazekamp Nick Hazekamp

SoftwareGR Presents Drew Colthorp: TypeScript's Structural Type System

Tuesday, September 18, 2018

6pm-8pm

Atomic Object, 1034 Wealthy St. SE, Grand Rapids

 

TypeScript's Structural Type System

I was wrong. I thought TypeScript was something like a Java-ey type system layered atop JavaScript, bringing a dose of brittleness and losing the flexibility I appreciated about the warty-yet-ubiquitous multi-paradigm language.

But that's not it at all! TypeScript radically improves the JavaScript development experience by providing a flexible, light-weight type system for modern EcmaScript. It does so while maintaining a delicate balance: adding a way to enforce assumptions and invariants without removing the flexibility prized by dynamic language developers. This works because TypeScript's type system is _structural_ and not _nominal_ - that is, based on shapes of data instead of identities of types.

Come see what's cool and exciting about TypeScript's defining feature. We'll show what differentiates a structural type system from a nominal one; how key features of TypeScript provide a powerful language to express invariants about your system; and how TypeScript leverages its knowledge of what your code means to avoid most of the type system nuisances that put some developers off of statically typed languages.

 

drew_colthorp.png

About Drew

As Principal Consultant and Developer at Atomic Object, Drew is trying to find the most elegant balance between user needs, business goals, and technical constraints.

Read More
Software GR Software GR

SoftwareGR Presents Hillel Wayne: "The Two Hardest Problems in CS"

Tuesday, June 5, 2018

6pm-8pm

Atomic Object, 1034 Wealthy St. SE, Grand Rapids

 

"The Two Hardest Problems in CS"

"The two hardest problems in CS are Cache Invalidation and Naming Things." This is, if anything, too _optimistic_: cache invalidation is just a special case of concurrency, and naming things is just a special case of explaining them. And these are actually the same problem: without a way of describing concurrency, we don't have a way of understanding it, much less rigorously analyzing it.

Fortunately, we have some powerful tools to manage this. With _formal specification_, we can describe our systems in a way that's more expressive than code and more precise and unambiguous than human language. Once we have a semantics for the hard problems in CS, we have a way of studying them, finding complex bugs in systems before we've written any lines of code. We'll cover how this is useful, focusing primarily on TLA+, which is both powerful and practical enough for use in all kinds of day-to-day work.

hillel-wayne.jpg

About Hillel

Hillel is a software engineer and consultant in formal methods. He's currently writing a book on formal specification in TLA+ and a series on the history of UML. In his free time, he juggles and makes candy. He did, in fact, bring enough for everyone.

Read More
Software GR Software GR

SoftwareGR Presents Brittany Postnikoff: "Bridging the Gap Between Academia and Industry"

Tuesday, May 1, 2018

6pm - 8pm

Atomic Object, 1034 Wealthy St. SE, Grand Rapids

"Bridging the Gap Between Academia and Industry"

Getting information in and out of the academic sphere can be a daunting task. The current state of academic knowledge sharing is hidden behind paywalls, has severe lag, and can come at great personal cost. This presentation analyzes the state of academic information spread, specifically in information security, and provides ways to access that information safely and easily so you can learn, be inspired, and do some science.

Brittany Postnikoff.jpeg

About Brittany:

Brittany Postnikoff is a graduate student in the Cryptography, Security, and Privacy Lab at the University of Waterloo. She researches the interplay between robots and social engineering to predict and mitigate the negative impact of social robots on security and privacy.

Brittany holds a diploma in Business Administration from Red River College, an Honours Bachelor of Computer Science degree from the University of Manitoba, and will be completing her Master of Mathematics degree at the University of Waterloo this year.

Read More
Software GR Software GR

SoftwareGR Presents Rae Krantz: "A Game of Theories: Why Languages Do What They Do"

Tuesday, March 27, 2018

6pm-8pm

Atomic Object, 1034 Wealthy St. SE, Grand Rapids

 "A Game of Theories: Why Languages Do What They Do"

How often do you search for “how to do [x] in [language]”? Maybe you’re a Python developer who thinks Go’s dedication to clean syntax feels familiar, or maybe you’re a Ruby dev who thinks Erlang’s pattern matching doesn’t leave enough freedom in your code to deal. Language differences and similarities both enamor and infuriate us, so let’s compare how they solve our common problems. What does a language’s built-in-functions tell us about why they were created and how they are best used?
Language list: Ruby, Python, Go, Erlang, Clojure, JavaScript (possibly Rust and/or Elm, but we only have so much time!)

note: there will be minor Game of Thrones references throughout, however specific spoilers are saved for the end so it will be easy to earmuff it for ~2 minutes at that time and then rejoin us for questions

Rae_Krantz.png

About Rae

Rae's 9-to-5 hours focus on Angular, and her past experience has included Ruby, Chef, and enough Python to be dangerous. She also did a kata in Erlang once. In her local community, she has started a programming book club, monthly hack nights, and a bi-weekly TDD practice. One thing she's proud of is hiking 6.5 miles up a mountain to Grinnell Glacier (Glacier NP) while 6.5 months pregnant.
She has lived in Akron, OH since 2014 and dreams of one day having an apartment that allows dogs.

Read More
Nick Hazekamp Nick Hazekamp

SoftwareGR Presents Victoria Gonda: Functional Android

Functional Android

For the most part, programming in Android has meant living in the imperative programming world. Recently, many aspects of functional programming have become standard with the adoption of Kotlin and RxJava. What does it mean to use functional paradigm properties in our Android code, and how can it help us? In this talk you’ll learn some of the fundamentals of functional programming, and what this might look like on Android.

Victoria Gonda.jpg

About Victoria

Victoria was drawn to programming because of its potential to help people in a meaningful way. She is currently an Android Engineer at Buffer. The conferences she has spoken at have been an enjoyable way to connect with the technical community and exchange information with others. In her spare time, Victoria enjoys dancing and curling up with a good book.

Read More
Nick Hazekamp Nick Hazekamp

SoftwareGR Presents Michael Bopp: Mastering the Art of Learning in Technology

Mastering the Art of Learning in Technology

When was the last time you learned something new on the job? Making a career in technology requires constant learning. Every project offers opportunities to apply new techniques, frameworks, or hacks. Since we learn on a consistent basis, how do we learn well? This talk will explore learning techniques, guidance, and advice. We will also take a glimpse into "how" we consciously or unconsciously learn. While the talk will be centered around software development and the tech industry, concepts can be applied to just about any occupation or hobby, whether you’re new at this, or you’ve been doing this for thirty years.

 

Michael Bopp.jpg

About Mike

Mike has been a professional software developer since 2001 and has worked in many languages and development frameworks over the years, including Java and .NET. Mike is a founding member of Rapid Development Group. Mike leads DevOps and iOS development (Swift & ObjC) and RDG, and is expert in Javascript (React), PHP, and MySQL and other web and mobile technologies. Outside of work Mike enjoys raising his family, the outdoors, home improvement and carpentry.

Read More
Nick Hazekamp Nick Hazekamp

SoftwareGR Presents Matt Behrens: Electron in the Real World

Tuesday, Nov. 28

6pm-8pm

Atomic Object, 1034 Wealthy St. SE, Grand Rapids

Electron in the Real World: Architecture, Capabilities, and Performance 

Electron gets a bad rap for being a slow and resource-hungry wrapper around Chrome, but in reality, it's a very capable desktop application framework that's well-suited for building complex software. Leveraging the capabilities of Node.js, you can read and write files, work with databases, speak bespoke IP protocols to control connected devices, and then wrap it all up behind a responsive, quick, and friendly user interface. 

In this session, we'll explore a successful Electron application that does all of those things. You'll learn about Electron's general architecture and how it works to make all these things happen. You'll hear about how the team of React, Redux and TypeScript all worked together to make this complex application robust and understandable. We'll talk about lessons learned while building this application, including how some realizations and subsequent refactors simplified it and made it faster and easier to implement new features. 

We'll cover what was done when performance problems reared their ugly heads so the application could easily handle a hundred state updates per second, smoothly updating metrics and plotting devices' positions on live maps. We'll also talk about what the stack's limitations are, so you know what Electron is good at, helping you to leverage its strengths and avoid its weaknesses. 

If you've been wondering whether Electron is right for your project, this tour through the development of a complex and successful application will help give you the information you need to make a well-informed decision and get you started using Electron to build it.

Behrens_Matt-2017WebFull Cropped.jpg

About Matt Behrens 

Matt Behrens has been a software developer and consultant with Atomic Object for three years; during that time and for decades before, he's worked and supported on several full-stack applications on the web, desktop, servers, and in the mobile space, across several different industries. Matt has always had a love for networking since the day he first strung copper across his parents' basement to get his stack of cast-off PCs talking to each other and the rest of the world, and to this day he's happiest working on applications where he gets to roll up his sleeves and get systems talking to each other.

Read More
Nick Hazekamp Nick Hazekamp

SoftwareGR Presents Dan Lindeman: A Talk About Kotlin

Tuesday, Sept. 19

6pm-8pm

Atomic Object, 1034 Wealthy St. SE, Grand Rapids

A Talk About Kotlin

What is with all the hubaloo around Kotlin? After Google IO this May, Kotlin went from the darling of a few, to the promised land of many. In this talk, Dan Lindeman will present an introduction to the Kotlin programming language, showing off some marquee features. Further we will discuss several stories that the language seeks to address. 

About Dan Lindeman

Dan is a Software Engineer from Grand Rapids, MI, where he lives with his wife Kayla and his dog Bowie. When not learning a new language, framework, or piece of tech, Dan enjoys playing Nintendo games and spending time with friends.

An educator-turned-developer, Dan got his start in the software industry testing embedded automotive infotainment systems. He is currently a part-time Masters student at Grand Valley State University focusing on Web Architectures. A self-described conference junkie, Dan can be found organizing community events and software meetups groups all over West Michigan.

Read More
Nick Hazekamp Nick Hazekamp

SoftwareGR Presents Reid Draper: The Simple Side of Haskell

Tuesday, June 27

6pm-8pm

Atomic Object, 1034 Wealthy St. SE, Grand Rapids

Abstract: The Simple Side of Haskell

Haskell has a (well-deserved) reputation for having a large, complex type system. However, there is tremendous power in using only Haskell's most basic features. In this talk we'll see how you can use simple types to ensure a password is cryptographically hashed, that an email is valid, or that a refactor is complete. No prior knowledge of Haskell is assumed!

About Reid Draper

Reid Draper is a software leader with expertise in functional programming, distributed systems, and databases. Most recently, he was VP of Engineering at Helium, where he led a team of Haskell developers. Reid also worked on distributed databases at Basho, and music recommendations at The Echo Nest.

Read More
Nick Hazekamp Nick Hazekamp

SoftwareGR Presents Alex Fisher: The web and "trustless"­ communications

Tuesday, April 25

6pm-8pm

Atomic Object, 1034 Wealthy St. SE, Grand Rapids

Introduction to Ethereum

Come learn about the future of the web and "trustless" communications.  This presentation will explain what a Blockchain is and focus in on a specific public blockchain called Ethereum.  Ethereum is a decentralized platform that runs smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third party interference.  These apps run on a custom built  blockchain, an enormously powerful shared global infrastructure that can move value around and represent the ownership of property. This enables developers to create markets, store registries of debts or promises, move funds in accordance with instructions given long in the past (like a will or a futures contract) and many other things that have not been invented yet, all without a middle man or counterparty risk.

About Alex Fisher

Alex has had a dual interest in both engineering and business since he was a kid. He started his first business in high school, a computer repair company, that was featured on the front page of the Detroit Free Press.  His most recent business, one of Michigan's largest web design companies, was acquired by a Chicago marketing agency in 2016.  Today, he's head-down in blockchain technology which is disrupting the world of finance, banking, logistics and other areas of business through "trustless" computing.  He is helping to build the Ethereum community as an "Ethereum Evangelist" and founder of the Michigan Ethereum Meetup group.

 

Read More