Ted's a world-renowned conference speaker and keynoter, with more than three hundred (as of 2013) conferences, hundreds of training classes, under his belt. With each presentation, he brings equal amounts of education and entertainment, because not only do you need to teach the crowd, but you need to keep them awake. Below is a list of topics, across close to a dozen categories) he can speak on, but if there's nothing in this list that appeals, contact him.
Ted organizes his presentations into a couple of categories, usually reflected in the title:
Note: Individual talk pages will have links to HTML or PPTX versions of the slides; as of this writing (2 Mar 2022), some of those links may not work as the mechanism to CI/CD the presentations is still under construction. (It's exposing a lot of places where talks are out-of-date and/or need "modernization" to the new scheme.) If you want to see them and the link is broken, [contact Ted](/contact.html). (Having the links there, broken or not, acts as a forcing function and a reminder to get them sorted.)
Oh, and if you're looking for something a little bit longer than an hours'-plus presentation, check out his list of workshops.
History is littered with the stories of iconoclasts--people who truly stood out as pioneers, lateral thinkers, and in some cases, outright heroes--and their successes and failures. From the baseball management vision of Branch Rickey to the glassblowing vision of Dale Chihuly to the engineering design vision of Steve Jobs, iconoclasts ...
"Those who cannot remember the past are condemned to repeat it." --George Santanyana
Over the last decades, several new programming languages have emerged onto the scene, leaving many developers scrambling to understand their purpose. Even languages that we think we know (looking at you, JavaScript) turn out to have ...
You're a manager. You've been hired to run a small (or large) development team, and for the life of you, you can't understand these people. Every time you try to motivate them, they balk and resist. You try to hire them, you can't figure out what they want and they walk away. Then, without any sort of action on your part, suddenly they ...
Software architecture is a soft term, apparently able to mean whatever the speaker intends it to mean at will, with little to no argument from the audience, industry, or other architects. One would think that by this time in our industry's lifecycle, we'd have nailed some of this down by now, so let's do that--let's nail down what ...
As the mid-decade mark passed in the 2010s, the software development industry felt itself cross a threshold, but wasn't quite sure what that threshold was. It was clear that traditional Web applications--server-side generated HTML sent back to a browser running on some kind of device--wasn't really "cutting it", not with all ...
Starting with the ‘domain-specific language’ movement, and bolstered by the Pragmatic Programmers’ suggestion that programmers should learn a new language every year, the notion of ‘polyglot programming’ became something of a critics’ darling when talking about career paths. But somewhere along the way, it feels like the original ...
Ever wondered what a software architect is? Or what a software architecture is? Ever wondered what a software architect does? Even if you are one? In this session, we'll explore what software architecture is, what a software architect does, and why it seems nobody seems to "get" what software is like.
Philosophy: ancient Greek for "love of wisdom", philosophy is the study of the general and fundamental nature of reality, existence, knowledge, values, reason, mind and language.
Psychology: the science of the brain, emotions, and behavior.
Programming: ancient Latin for "please God let it compile this ...
The ancient Greeks had a term, "eudaimonia", which, translated loosely, means "the good life". It is this concept of which Socrates spoke when he said that "the unexamined life was not worth living"; it is this same concept of which the Stoics spoke when the Roman Emperor Marcus Aurelius wrote his ...
Philosophy: ancient Greek for "love of wisdom", philosophy is the study of the general and fundamental nature of reality, existence, knowledge, values, reason, mind and language.
Psychology: the science of the brain, emotions, and behavior.
Programming: ancient Latin for "please God let it compile this ...
For so many years, developers have been taught by the "craftsmen" of the world that quick-and-dirty is a sin, an evil that must be rooted out and destroyed wherever it is found. What if I told you that not only is quick-and-dirty not the outright abomination that "thought leaders" make it out to be, but a necessary ...
"No regrets." It's a mantra that permeates so many messages we see and hear all around us. Celebrities swear they "don't believe in regrets", social media posts exhort you to "live a life of no regrets", even schoolteachers put up posters instructing children to "make decisions they won't later ...
What do Imperial Germany, Napoleonic France, Czarist Russia, Web Services, OSF RPC and CORBA have in common? A lot more than you might think. History is filled with "learning opportunities" for those who are aware of it, and the history of distributed systems is no different. In this keynote, we'll examine the lessons of ...
The era of the big, heavy, transactionally-oriented relational-backed client/server topology, as best described by the J2EE Specification and Blueprints document, seems to be over. The era of the lightweight, transactionally-oriented relational-backed client/server topology seems to be at its zenith. Is this really where we want to be ...
What is the role of an architect in a software project? This question has plagued many a software organization (and even those who do the job), and provided loads of entertainment. In this presentation, we aim to explore the intersection of software architect with the worlds of architecture, psychology, business, and even music. By the ...
In 1995, I graduated from the University of California at Davis (Go Aggies!) with a Bachelor of Arts in International Relations (IR). I then proceeded, despite that "handicap", to go out and forge a career as a developer, architect, and (now) manager/CTO. During that time, I spent a lot of time in interviews and casual ...
In the latter half of the 2000s, a new kind of programming language seemed poised to take the steam out of the dominancen of object-oriented programming languages and their hold over "mainstream" development. But these new languages, collectively referred to as "functional" languages, were nothing new. In fact, ...
Thanks to the plateau of per-chip performance increases and the resulting need to work better with multi-core CPUs, the relative difficulty of mapping user requirements to general-purpose programming languages, the emergence of language-agnostic "virtual machines" that abstract away the machine, the relative ceiling of ...
Ah, managers. Team leads, if you prefer. People who have the hiring (and firing) authority over others within the company, and are ostensibly tasked with.... Wait, what do managers do again? Is it something you were thinking about doing? Is it something any right-minded developer would want to do? Or is it the logical next step in a ...
Statistically speaking, developers--particularly those with a few years under their belt--find the idea of "giving back" to be not just appealing, but a necessity. Sadly, desptte the genuine good intentions, most developers have no idea how to mentor a younger developer, and often flounder and stumble and make a mess of ...
Ever had to make a decision? Ever wondered how we actually decide things? Ever agonized over the process of making the decision and wondered if there is "a better way" to come to one?
Hire or don't hire, fire or don't fire, pursue or abandon, praise or criticize, meet or email, the manager's life is filled with ...
For most developers and their managers, interviewing candidates to join the team is a process frought with uncertainty, deep feelings of imposter syndrome, outright feelings of competition, not to mention all those HR regulations. Coupled with the constant reminders about the costs of a "bad hire", interviewing becomes one of ...
It is said that the performance of a manager (team lead, tech lead, leader, etc) is the same as the performance of their team. If that's the case, and you lead a team of developers, then suddenly your bonus--and promotions--are in the hands of a group of people whose actions you don't directly control. Is it any wonder why ...
Unless you've been under a rock this past decade, you've probably run across the term "psychological safety"; the tech industry largely ignored it, until Google and Microsoft ran some research to find out what makes a software team click, and discovered that more than training, hiring, or methodology, it was... you guessed ...
Meetings! Clearly, if there is one topic that everyone inside of a technology organization loves to hold up as the single most responsible thing for why nothing gets done, it's the loathesome meeting. Too many long meetings, too many people in meetings, too many boring meetings, too many... meetings.
And yet? They're a necessary ...
You're a manager. You've been hired to run a small (or large) development team, and for the life of you, you can't understand these people. Every time you try to motivate them, they balk and resist. You try to hire them, you can't figure out what they want and they walk away. Then, without any sort of action on your part, suddenly they ...
For so many years, developers have been taught by the "craftsmen" of the world that quick-and-dirty is a sin, an evil that must be rooted out and destroyed wherever it is found. What if I told you that not only is quick-and-dirty not the outright abomination that "thought leaders" make it out to be, but a necessary ...
"No regrets." It's a mantra that permeates so many messages we see and hear all around us. Celebrities swear they "don't believe in regrets", social media posts exhort you to "live a life of no regrets", even schoolteachers put up posters instructing children to "make decisions they won't later ...
In 1995, I graduated from the University of California at Davis (Go Aggies!) with a Bachelor of Arts in International Relations (IR). I then proceeded, despite that "handicap", to go out and forge a career as a developer, architect, and (now) manager/CTO. During that time, I spent a lot of time in interviews and casual ...
The fear of public speaking actually exceeds the fear of death. (And the dentist.) But speaking to a group of technical peers can also be one of the most rewarding and career-enhancing things you can do. Whether it's a "brown bag" at your company, a local Meetup user group talk, or a conference presentation, there's a core ...
This presentation is a case study, describing a project's goals, implementation, successes and failures. In this case, around a web-based project for the Dragonflight Convention held every year in the Pacific Northwest.
With the dawn of the new decade, "cloud" swept into developers' (and their managers'!) mindsets with a vengeance. Suddenly, everything was "in the cloud", development was racing "to the cloud", and if you weren't "cloud-friendly", you were facing an uphill battle. And yet, with all this ...
The Comand/Query Responsibility Separation (CQRS) architectural style has emerged once again into the hallowed halls of software architecture, and it brings with it an entirely different approach to building/architecting software systems. Some of it makes sense; some of it baffles the newcomer. In this presentation, we'll talk about ...
"Developer Operations", or its more commonly-known nickname, DevOps, has taken the industry by storm. Everywhere you turn, everybody wants to be doing DevOps. It's the new black, the new normal, the thing that everybody clearly represents the next pinnacle in software development.... Except not everybody agrees on what it is, ...
Service-oriented, Representational State Transfer, Remote Procedure Calls, oh my!
If it's one thing the Computer Science industry has given us, it's a thousand different ways to communicate from one process to another. But all these options don't always come with a good user manual of which to choose at which times, or why one ...
In 2005, I published a book on how to go about building applications in the enterprise Java world more effectively, entitled "Effective Enterprise Java". Although the technology has changed some, the basic principles underlying the 75 items in the book have most certainly not. In this presentation (designed as an overview to ...
Java and .NET represent the lion's share of enterprise development. In this talk, learn how the two environments can interoperate with one another, not only over web services, but also via in-process channels and other methods. Along the way, we'll talk about how to leverage the strengths of each, such as using Microsoft Office to act ...
In the 90's, developers sought to build web pages. In the 2000's, it was all about web applications. But clearly the needle is still moving, and the technology keeps evolving. "Platform-Oriented Architecture" (or POA) is, very simply, what the next wave of software development is moving towards. In this workshop, we'll go ...
The Representational State Transfer (REST) architectural style has taken the software development world by storm, profoundly influencing a number of different ideas and technologies, and its author, Roy Fielding, has laid down a fairly strict description of whata REST architecture looks like. Is REST really the
wave of the ...
If you've been keeping your ear to the ground, you may have heard some talk recently about "rules", "business rules" and "rules engines", but not necessarily any clear discussion on what they are, how to use or design them, or why they might be useful or important.
This presentation puts some ...
Ever wished you could just put parts of your program in end-users' hands and let them build the infinite little changes they want? Ever thought about how you might make your application more robust by writing less code, not more? Embed a scripting engine into your application--complete with the safeguards necessary to ensure that users ...
When "the cloud" became a development watchword, several players immediately moved in to occupy the space. And then a few more, and then a few more, and then.... Well, pardon the pun, but the clouds burst open, and everybody suddenly seems to have a cloud offering these days. Going by various different names (like ...
Every software developer, at some point in their career, has fallen into the trap of 10 devilishly subtle distributed system assumptions. Come hear what they are, why they all lead to big trouble and painful learning experiences in the long run, and how to avoid them using the tools and technologies of your favorite platform.
Every enterprise developer, at some point in their career, has fallen into the trap of 10 devilishly subtle enterprise software development assumptions. Come hear what they are, why they all lead to big trouble and painful learning experiences in the long run, and how to avoid them using the tools and technologies of your favorite ...
Application security, like all things computer-security-related, can be an overwhelming topic. In an attempt to help bring some of the infinite myriad security concerns under control, a group calling itself the "Open Web Application Security Project", also known as OWASP, has been managing and curating a series of talking ...
Over the last decade, focus in inter-process communication has centered on Remote Procedure Calls (RPC) and its object-oriented equivalents. In this talk, we'll discuss the benefits of using another communication approach, messaging, to gain flexibility, scalability, extensibility, and other integration benefits that traditional RPC ...
In 2000, Roy Fielding (he of REST dissertation fame. published a paper entitled 'Principled Design of Modern Web Architecture', in which he and his co-author described REST, how it achieved the goals of the Web, and cited examples. In this session, we're going to do something of the same: talk not just about REST, but about the path ...
Ever wanted to step into the role of a software architect, but had no idea how to get started, or even what an architect really does? In this presentation, we'll talk about what software architecture is, what software architects do, and how to make the transition from developing to architecting--and why developing is a skil crucial for ...
For most software projects, that classic 3-layered/n-tiered "box-arrow-box-arrow-cylinder" architecture suffices to provide all the flexibility the application needs. Unfortunately, that strategy, though elegant in its simplicity, doesn't work everywhere and all the time--various factors require data to be scattered, ...
Software architecture is a soft term, apparently able to mean whatever the speaker intends it to mean at will, with little to no argument from the audience, industry, or other architects. One would think that by this time in our industry's lifecycle, we'd have nailed some of this down by now, so let's do that--let's nail down what ...
As the mid-decade mark passed in the 2010s, the software development industry felt itself cross a threshold, but wasn't quite sure what that threshold was. It was clear that traditional Web applications--server-side generated HTML sent back to a browser running on some kind of device--wasn't really "cutting it", not with all ...
Ever wondered what a software architect is? Or what a software architecture is? Ever wondered what a software architect does? Even if you are one? In this session, we'll explore what software architecture is, what a software architect does, and why it seems nobody seems to "get" what software is like.
What is the role of an architect in a software project? This question has plagued many a software organization (and even those who do the job), and provided loads of entertainment. In this presentation, we aim to explore the intersection of software architect with the worlds of architecture, psychology, business, and even music. By the ...
AspectJ is the first (and, arguably, the gold standard) of "aspect-oriented" programming languages. Developed to run on the Java Virtual Machine and be entirely compatible with other Java products and libraries, AspectJ brought an entirely new way of thinking about how to partition closely-related code across an inheritance ...
"Saaaaaaaay whaaaaat? Assembly language? Seriously?" A developer should always know one level below the level at which he/she works, and for many developers, assembly is that level. Come on out and learn a little about how assembly language works, not so that you can write anything major in it, but so that you can read ...
Despite the frivolity implied by its name, Ballerina, like the dancers who bear the same name, is a graceful language with surprising elegance and strength inside a slender frame. Ballerina is a language designed from the ground up for the world of Web 2.0, with built-in support for HTTP endpoints, JSON data types, and an input ...
Virtual machines rule the world of programming right now: the Java Virtual Machine (JVM) and the .NET Common Language Runtime (CLR) are perhaps the two best-known, but Python, Ruby, and Chrome's V8 engine (powering Chrome and NodeJS) are all also virtual machines, and between those five, we have most of the world covered. But how do ...
We use them all the time, but we're often not quite sure how they work. Submit a string formatted "just so", and receive back in mere microseconds a set of results that are laid out in a manner that's useful to us. Whether you use a relational database, graph, or even one of the most basic key-value stores, the engineering ...
Ever wanted to truly explore what it would be like to be a James Gosling, or a Bjarne Stroustrup, or Anders Hejlsberg? Want to see what it's really like, building a language from soup to nuts? This presentation will take you through that process exactly, from deciding whether your language will be compiled or interpreted, or static- or ...
"Clojure is a Lisp." That's the first answer one usually gets when asking what, exactly, Clojure is. But in a lot of ways, that's an overly simplified answer, and it doesn't really doesn't really do the language justice. In this talk, we'll talk about Clojure for the non-Java developer, why it would be interesting even to ...
With the rise of the NoSQL movement, a whole new crop of different ways to store data suddenly became available to the Java developer. Unfortunately, what didn't come with them was an owner's manual. CouchDB, for example, was the first of the NoSQL databases to be named as such, and offers features not found in the traditional RDBMS: a ...
Crystal, a Ruby-like programming language that utilizes static typing and compiles to native code, represents a new entrant in the field of programming languages. Come see what a language looks like when it blends the best of the flexible Ruby syntax and semantics with the raw speed and power of native execution.
Dart is a multi-platform language that deliberately seeks to "scale up" to building large applications for the Web, as well as mobile and IoT machines. It relies on a traditional C-family-language base syntax, provides some type checking, but retains much of the flexibility of a dynamically- or untyped language, and keeps ...
Ruby: a terrific language for expressing concepts directly, but for years has suffered from a reputation of having a "can't handle loads" underlying platform and virtual machine.
Erlang: a pure-functional language that sometimes even a mother doesn't love, but running on top of an actor-based messaging platform that ...
Before there was React, there was Elm: A client-side web development framework that brought the concepts of Functional Reactive Programming (FRP) to the mainstream. In this presentation, we'll look at Elm, it's syntax and its semantics, and see how it brings functional principles to the world of the DOM and the mouse.
Erlang is one of those languages that is more attractive because of its underlying platform principles, rather than the beauty of its programming language (though undoubtedly it has its share of adoring fans). In this presentation, we'll go over just enough Erlang to get started and understand why it's been the critics' darling for ...
WARNING: This talk is not for the faint of heart.
In this presentation, we will examine the realm of the "esoteric" language: the programming language that is designed not to be useful, or productive, but to tease, punish, or mystify the programmer. Usually for fun.
Somebody's dark, deeply-twisted, ...
If you've been keeping your ear to the ground, you may have heard some talk recently about "rules", "business rules" and "rules engines", but not necessarily any clear discussion on what they are, how to use or design them, or why they might be useful or important.
This presentation puts some ...
F# is a new programming language incorporating the most important concepts of object-oriented and functional languages and running on top of the CLR as standard assemblies. Sporting the usual object-oriented concepts as classes and inheritance, F# also offers a number of powerful functional features, such as algebraic data types, ...
Fantom is a powerful object-oriented language that executes on either the JVM, the CLR or the browser (by compiling into JavaScript), utilizing a mix of features drawn from a variety of different programming styles, including dynamic and functional languages. It's a fascinating look at languages that straddle the line not only across ...
Flutter is Google's entry into the world of cross-platform mobile tools, for building applications that stretch across Android and iOS from a single codebase. Built using the Dart programming language, Flutter offers a new way into the mobile world that requires no knowledge of ViewControllers, MVC, or Activities. But while Flutter ...
As the world moves to more and more functional concepts and style, perhaps it's time to consider using a purely-functional language on your next project. But the cost of switching away from your current platform is so painful and unacceptable....
Relax! As numerous languages have already demonstrated, it's possible to have your ...
Developers have been hearing a lot lately about "functional programming languages" (langauges like ML, Lisp and Haskell) that have influenced both design thoughts and more recently-developed languages (like F#, Scala, and Clojure, to name a few). What's so interesting about these languages? Why does anybody care? And how hard ...
Garbage collection, or "automatic memory management" as it's more formally (and correctly) known, is a subject often spoken of in hushed whispers among those who do not have Masters' degrees in Computer Science. It is the stuff of legends, a part of the arcane "black arts" that only those who work on the virtual ...
In the mid-2010's, Google announced a new programming language, Go, and the collective reaction of most of the programming world was a giant yawn. Yet another language, and even though it came from some serious industry veterans--Brian Kernighan and Rob Pike--it didn't really seem to be bringing all that much that was new or intersting ...
GQL is the latest ISO standard database query language, a peer to SQL, but for querying and interacting with graph data, rather than the relational data its cousin SQL handles. In this presentation, we'll go over the basics of a graph database, get started with GQL syntax, and explore how graph data differs and is similar to relational ...
Ever wanted to play with a language that has no side effects, no mutable state, and a ton fewer bugs because of it? In this session, we take a programmer journeyman's (as opposed to an academic's) approach to the Haskell programming language, and discover what "pure functional", "lazy" and "strict" mean ...
The Haxe programming language is a relative newcomer to the programming field, but provides one thing rare to languages--a deliberate and calculated strategy to work seamlessly with all of them. (Well, most of them, anyway.) In this presentation, we'll talk about the core Haxe syntax, how to get started, and how to make the most of ...
Ever wondered if there was a way to build a tool such that normal people--everyday users that had little-to-no background in programming or technology--could customize or control how the computer behaves? It's the "holy grail" of the DSL community, and we may have accidentally developed the closest thing to it, but ignored it ...
Jolie....
Historically, scientific and analytical programming has favored the use of dynamic languages like Python or R, which can often bring performance issues along with them. This is an unfortunate tradeoff, since these sorts of applications often have performance goals of the highest caliber. Julia, a relative newcomer to the programming ...
With the release of Kotlin, JetBrains makes its first serious dive into the programming language space, and by all accounts, it's quite a graceful dive. Kotlin integrates much of the object-oriented thinking over the last thirty years together with several new ideas from the world of functional programming to create a language that is ...
In the "Pragmatic Programmer", Dave Thomas and Andy Hunt suggest that every programmer should learn a new programming language every year--but they don't tell you which ones to learn! And in a world with so many different programming languages, it can be hard to figure out what to study next. Do you go after Swift? Kotlin? ...
Ever wanted to tinker with a language that was designed to be embedded into larger systems to drive faster, more productive development without having to worry about so many physical details? Game developers did, and they created Lua, a scripting language used in a surprisingly wide variety of situations, as a result. Let's take a look ...
Ah, managers. Team leads, if you prefer. People who have the hiring (and firing) authority over others within the company, and are ostensibly tasked with.... Wait, what do managers do again? Is it something you were thinking about doing? Is it something any right-minded developer would want to do? Or is it the logical next step in a ...
Statistically speaking, developers--particularly those with a few years under their belt--find the idea of "giving back" to be not just appealing, but a necessity. Sadly, desptte the genuine good intentions, most developers have no idea how to mentor a younger developer, and often flounder and stumble and make a mess of ...
Building Web applications has always been a strange affair--HTML, JavaScript, CSS, all mixed together, and often "supporting" languages (like XML) thrown in to somehow make the whole thing "easier". Back in the GUI development days, we used one, maybe two languages tops (your favorite O-O language of choice, and ...
MongoDB is a scalable, high-performance, document-oriented, language/platform-agnostic, schema-free, open-source, native, fast "NoSQL" database that offers a completely different view of how we store data. Built to focus on problems that traditionally have stymied the relational database, Mongo represents a challenge to the ...
Ever tried to store a graph in a relational database? Something like an ancestry tree, or even the reporting structure of the average corporation? Noticed how the "shape" of the data (the graph) doesn't quite line up anywhere close to the shape of your traditional RDBMS? This is because there is an impedance mismatch between ...
Remember when TypeScript, or C#, or even C++ was new, and you wished you'd known they were going to "be big" so you could be the person ahead of the curve instead of struggling to catch up to where everybody else seemed to be already? The world-famous hockey player Wayne Gretzky, when asked what made him different than all ...
Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula, and supports a large number of interesting features that put it on par with C++ or Rust as a systems-level programming language. In this presentation, we'll be taking a look at how to get ...
With the introduction of CouchDB to the world, the world suddenly seemed to be alive with a whole slew of "alternative" approaches to data persistence, collectively called "NoSQL" and offering a "slightly different" to "radically different" view of data storage and retrieval. It’s left a few ...
Odin....
Pony is a programming language from Microsoft Research that compiles to native code, but more importantly, doubles down on the safety--not only is it type-safe, it is memory safe, exception safe, data-race free, and deadlock-free. In this presentation, we'll take a loko at how to get started and what interesting features are in this ...
In the grand scheme of things, Prolog may seem like an odd language; it's never made the mainstream, it doesn't seem to address some of the more recent fad approaches, and it doesn't seem to promise some of the things (concurrency! scalability! actors!) that "modern" languages are pushing. But Prolog has some deeply powerful ...
Python is a general-purpose dynamically-typed programming language and platform that provides a rich ecosystem of powerful features and libraries. Making use of "significant whitespace" to denote scope blocks (instead of lexical markers), Python is relatively easy for the developer to pick up, and Python's success in the ...
Red ....
As a dynamically-typed object-oriented language with some flexible syntactic constructs and a deep ecosystem of powerful libraries and tools, Ruby is a good tool to know, regardless of your preferred platform. In this presentation, we'll go over some core Ruby syntax, how to get started with Ruby, and how Ruby can fit in to an existing ...
Rust is a new systems-level programming language that aims to provide better safety by requiring stronger programmer control over allocated memory and pointers. It has gathered quite the following, so come take a seat and let's spend a little time in this presentation talking about syntax, how to get started, and when to think about ...
Apple shocked everybody a few years back when they introduced, without any warning or hint whatsoever, a brand-new programming language, called "Swift", that looks more and more like it is Apple's replacement offering over Objective-C. In this presentation, we will take a long and hard look at Swift, starting from scratch and ...
Microsoft has one, Amazon has one, but it turns out that there's a lot of different developer-focused cloud environments out there, and sometimes it's exactly what you need to get your project going quickly--assuming you know it exists. In this session, we're going to take a survey of a variety of different cloud providers, many with ...
Machine Learning? Heavens, no! ML (the predecessor to OCaml, which in turn gave us F#, among other things) is, in many ways, the world's original functional language. As a pure functional language, learning ML can help understand functional languages more clearly and distinctly, without any attempt to try to bind to objects or use ...
Ever wanted to walk up to a new programming language that you have never seen before, and realize, "Oh, I get it" without having to study it for ten years first? It means you'll know where and how this new thing would apply, and could guide your teams and colleagues into or around the new thing, depending on your needs! And ...
JavaScript frequently confuses developers, with its odd language rules and inconsistent approach to various aspects of the language. TypeScript is an attempt to clean up the language, simplifying it and creating a syntax easier to understand and use, but that compiles down to native JavaScript for widespread use in the browser (and ...
WebAssembly is a new cross-browser emerging standard providing a "target bytecode" for languages that want to compile into something that can be run natively inside the browser; in many ways, it's the culmination of the effort to provide developers with an ability to do "browser plug-ins" without having to be ...
In 1993, when object-oriented programming was new, initiates to the idea were told to "go learn Smalltalk if you really want to 'get' objects", on the grounds that abandoning traditional procedural ideas found in C and Pascal were really the best ways to grok object-oriented. Heard all about this functional programming thing? ...
Zig....
Ever wanted to step into the role of a software architect, but had no idea how to get started, or even what an architect really does? In this presentation, we'll talk about what software architecture is, what software architects do, and how to make the transition from developing to architecting--and why developing is a skil crucial for ...
Java and .NET represent the lion's share of enterprise development. In this talk, learn how the two environments can interoperate with one another, not only over web services, but also via in-process channels and other methods. Along the way, we'll talk about how to leverage the strengths of each, such as using Microsoft Office to act ...
AspectJ is the first (and, arguably, the gold standard) of "aspect-oriented" programming languages. Developed to run on the Java Virtual Machine and be entirely compatible with other Java products and libraries, AspectJ brought an entirely new way of thinking about how to partition closely-related code across an inheritance ...
Despite the frivolity implied by its name, Ballerina, like the dancers who bear the same name, is a graceful language with surprising elegance and strength inside a slender frame. Ballerina is a language designed from the ground up for the world of Web 2.0, with built-in support for HTTP endpoints, JSON data types, and an input ...
"Clojure is a Lisp." That's the first answer one usually gets when asking what, exactly, Clojure is. But in a lot of ways, that's an overly simplified answer, and it doesn't really doesn't really do the language justice. In this talk, we'll talk about Clojure for the non-Java developer, why it would be interesting even to ...
If you've been keeping your ear to the ground, you may have heard some talk recently about "rules", "business rules" and "rules engines", but not necessarily any clear discussion on what they are, how to use or design them, or why they might be useful or important.
This presentation puts some ...
Developers have been hearing a lot lately about "functional programming languages" (langauges like ML, Lisp and Haskell) that have influenced both design thoughts and more recently-developed languages (like F#, Scala, and Clojure, to name a few). What's so interesting about these languages? Why does anybody care? And how hard ...
Garbage collection, or "automatic memory management" as it's more formally (and correctly) known, is a subject often spoken of in hushed whispers among those who do not have Masters' degrees in Computer Science. It is the stuff of legends, a part of the arcane "black arts" that only those who work on the virtual ...
With the release of Kotlin, JetBrains makes its first serious dive into the programming language space, and by all accounts, it's quite a graceful dive. Kotlin integrates much of the object-oriented thinking over the last thirty years together with several new ideas from the world of functional programming to create a language that is ...
Remember when TypeScript, or C#, or even C++ was new, and you wished you'd known they were going to "be big" so you could be the person ahead of the curve instead of struggling to catch up to where everybody else seemed to be already? The world-famous hockey player Wayne Gretzky, when asked what made him different than all ...
Permissions, policy, SecurityExceptions, oh my! The Java platform is a rich and powerful platform, complete with a rich and powerful security mechanism, but sometimes understanding it and how it works can be daunting and intimidating, and leave developers with the basic impression that it's mysterious and dark and incomprehensible. ...
Python is a general-purpose dynamically-typed programming language and platform that provides a rich ecosystem of powerful features and libraries. Making use of "significant whitespace" to denote scope blocks (instead of lexical markers), Python is relatively easy for the developer to pick up, and Python's success in the ...
As a dynamically-typed object-oriented language with some flexible syntactic constructs and a deep ecosystem of powerful libraries and tools, Ruby is a good tool to know, regardless of your preferred platform. In this presentation, we'll go over some core Ruby syntax, how to get started with Ruby, and how Ruby can fit in to an existing ...
In 1993, when object-oriented programming was new, initiates to the idea were told to "go learn Smalltalk if you really want to 'get' objects", on the grounds that abandoning traditional procedural ideas found in C and Pascal were really the best ways to grok object-oriented. Heard all about this functional programming thing? ...
In recent years, the term 'polyglot'--meaning 'many languages', or 'being fluent in many languages'--has come to the world of programming. Neal Ford first coined the term 'polyglot programming' as one who uses multiple languages collectively as a way to build systems. And the JVM is a perfect platform on which to do this: not only do ...
If you've ever gotten a ClassCastException and just knew the runtime was wrong about it, or found yourself copying .jar files all over your production server just to get your code to run, then you probably find the Java ClassLoader mechanism to be deep, dark, mysterious, and incomprehensible. Take a deep breath, and relax--ClassLoaders ...
For so many Java developers, the java.util.* package consists of List, ArrayList, and maybe Map and HashMap. But the Collections classes are so much more powerful than many of us are led to believe, and all it requires is a small amount of digging and some simple exploration to begin to "get" the real power of the Collection ...
Bugs? We all know your code has no bugs, but someday, you're going to find yourself tracking down a bug in somebody else's code, and that's when it's going to be helpful to make use of the wealth of tools that the Java Standard Platform makes available to you--tools that your IDE may not know exist, tools that you can make use of even ...
The Google Guava project contains a host of new features/classes for use by the Java programmer. Intended as a drop-in supplement for the standard JDK APIs, Guava provides features like immutable and forwarding collections, some concurrency utilities, more support for primitives, and so on.
In this session, we'll go over the ...
Ever since its 1.1 release, the Java Virtual Machine steadily becomes a more and more "hackable" (configurable, pluggable, customizable, choose your own adjective here) platform for Java developers, yet few, if any, Java developers take advantage of it. Time to take the kid gloves off, crack open the platform, and see what's ...
With the release of the OpenJDK source code, Java developers have been given a unique opportunity to peer inside the hood of the JVM, see what's there, and how Java code actually executes. In this presentation, we'll talk about how to get the OpenJDK codebase, how to compile it (for both Windows and Linux systems), and point out some ...
For close to two decades, the Java Virtual Machine has had a deep and meaningful relationship with the relational database systems of the world through the JDBC interface. It may not always be the prettiest, or the easiest, but it's the foundation for every relational database data access API on the JVM today. In this session, we'll ...
The Java Message Service API provides a unified programming interface to a variety of different messaging systems, and provides a necessary and important supplement to distributed communications. In this presentation, we'll go over the basics of messaging systems, the core JMS APIs, some configuration tips for popular JMS ...
Java bytecode is the code set used by the Java runtime (the JVM) that is JIT-compiled into native code at runtime. Find out how to read (and write) JVM bytecode directly, so as to better understand how the runtime works, and be able to disassemble key libraries that you depend on. This will also let you understand more about tools and ...
As much as the Java Virtual Machine and libraries provide a comfortable womb in which to write code, moments appear in every Java developer's life when they just have to call down to code that exists at the native, C-executable, level. Java provides a standard API for doing this--Java Native Interface, or JNI--but its use is at once ...
As simplicity-gets-you-power goes, ObjectInputStream and ObjectOutputStream stand as two of the greatest wonders of the Java world. Feed any arbitrary Java object graph to ObjectOutputStream to transform the graph into a stream of bytes, then feed the stream of bytes into ObjectInputStream to transform back into objects again, all ...
If you've never used Reflection (java.lang.reflect), you don't know what you're missing. In this presentation, we'll take a code-first, soup-to-nuts look at the Java Reflection APIs, from how to examine the class metadata that Reflection provides, to using annotations to enhance that metadata with your own information, even through the ...
Remote Method Invocation, or RMI, is at the heart of just about every distributed Java technology, from EJB to Spring to Jini. Learn the "how-to" of RMI, from the basics of "Hello, world" via RMI to the details of exported stubs and how clients can obtain those stubs through more than just the traditional ...
With the growth of the Web, and a heightening awareness that we want to build more than just "Web pages" (namely, we want to build "platforms"), Java developers are becoming more and more often asked to build "platform APIs" using the HTTP protocol as the connector of choice. Because these APIs (sometimes ...
Ever wished you could just put parts of your program in end-users' hands and let them build the infinite little changes they want? Ever thought about how you might make your application more robust by writing less code, not more? Embed a scripting engine into your application--complete with the safeguards necessary to ensure that users ...
In 1993, when object-oriented programming was new, initiates to the idea were told to "go learn Smalltalk if you really want to 'get' objects", on the grounds that abandoning traditional procedural ideas found in C and Pascal were really the best ways to grok object-oriented. Heard all about this functional programming thing? ...
CIL (Common Intermediate Language) is the execution code set used by the .NET runtime (the Common Language Infrastructure, or CLI) that is JIT-compiled into native opcodes at runtime. Find out how to read (and write) IL code directly, so as to better understand how the runtime works, learn what new type features were introduced in the ...
With the rise of ASP.NET Core and other refactored systems, Microsoft has begun to unify the idea of "hosting" and dependency injection into a single set of libraries and idioms. In this presentation, we'll explore this space, including the Inversion-of-Control (IoC) ideas that underlie it, and demystify what--precisely--is ...
Garbage collection, or "automatic memory management" as it's more formally (and correctly) known, is a subject often spoken of in hushed whispers among those who do not have Masters' degrees in Computer Science. It is the stuff of legends, a part of the arcane "black arts" that only those who work on the virtual ...
C++ was widely denigrated as a "hopelessly complex" language with "way too many moving parts", and in truth, it was a language made up of three dominant paradigms: procedural, object-oriented, and meta-programmatic. C#, by contrast, has five dominant paradigms: procedural, object-oriented, meta-programmatic, ...
As simplicity-gets-you-power goes, .NET object serialization stands as one of the greatest wonders of the .NET world. Feed any arbitrary object graph to it to transform the graph into a stream of bytes, then deserialize back into objects again, all without any sort of interference or work on the part of the developer. But what if we ...
Within the distributed systems community, much has been made about the "actors model" and its implications for building large-scale, fault-tolerant, highly resilient code bases. The Orleans project, from Microsoft, is the latest entry in the genre, and in this presentation, we'll go over what "virtual actors" are, ...
If you've never used Reflection (the System.Reflection namespace) before, you don't know what you're missing. In this presentation, we'll take a code-first, soup-to-nuts look at the .NET Reflection APIs, from how to examine the type metadata baked within every .NET assembly, to using custom attributes to enhance that metadata with your ...
Ever wished you could just put parts of your program in end-users' hands and let them build the infinite little changes they want? Ever thought about how you might make your application more robust by writing less code, not more? Embed a scripting engine into your application--complete with the safeguards necessary to ensure that users ...
Java and .NET represent the lion's share of enterprise development. In this talk, learn how the two environments can interoperate with one another, not only over web services, but also via in-process channels and other methods. Along the way, we'll talk about how to leverage the strengths of each, such as using Microsoft Office to act ...
If you've been keeping your ear to the ground, you may have heard some talk recently about "rules", "business rules" and "rules engines", but not necessarily any clear discussion on what they are, how to use or design them, or why they might be useful or important.
This presentation puts some ...
F# is a new programming language incorporating the most important concepts of object-oriented and functional languages and running on top of the CLR as standard assemblies. Sporting the usual object-oriented concepts as classes and inheritance, F# also offers a number of powerful functional features, such as algebraic data types, ...
Developers have been hearing a lot lately about "functional programming languages" (langauges like ML, Lisp and Haskell) that have influenced both design thoughts and more recently-developed languages (like F#, Scala, and Clojure, to name a few). What's so interesting about these languages? Why does anybody care? And how hard ...
Garbage collection, or "automatic memory management" as it's more formally (and correctly) known, is a subject often spoken of in hushed whispers among those who do not have Masters' degrees in Computer Science. It is the stuff of legends, a part of the arcane "black arts" that only those who work on the virtual ...
Remember when TypeScript, or C#, or even C++ was new, and you wished you'd known they were going to "be big" so you could be the person ahead of the curve instead of struggling to catch up to where everybody else seemed to be already? The world-famous hockey player Wayne Gretzky, when asked what made him different than all ...
Python is a general-purpose dynamically-typed programming language and platform that provides a rich ecosystem of powerful features and libraries. Making use of "significant whitespace" to denote scope blocks (instead of lexical markers), Python is relatively easy for the developer to pick up, and Python's success in the ...
As a dynamically-typed object-oriented language with some flexible syntactic constructs and a deep ecosystem of powerful libraries and tools, Ruby is a good tool to know, regardless of your preferred platform. In this presentation, we'll go over some core Ruby syntax, how to get started with Ruby, and how Ruby can fit in to an existing ...
Dart is a multi-platform language that deliberately seeks to "scale up" to building large applications for the Web, as well as mobile and IoT machines. It relies on a traditional C-family-language base syntax, provides some type checking, but retains much of the flexibility of a dynamically- or untyped language, and keeps ...
ECMAScript, better known by its original name, Javascript, remains one of the most popular--and misunderstood--programming languages in use today. While most developers see Javascript as a crippled form of its namesake (Java), it turns out that ECMAScript represents a powerful dynamically-typed language, easily equal to the other ...
Fantom is a powerful object-oriented language that executes on either the JVM, the CLR or the browser (by compiling into JavaScript), utilizing a mix of features drawn from a variety of different programming styles, including dynamic and functional languages. It's a fascinating look at languages that straddle the line not only across ...
Remember when TypeScript, or C#, or even C++ was new, and you wished you'd known they were going to "be big" so you could be the person ahead of the curve instead of struggling to catch up to where everybody else seemed to be already? The world-famous hockey player Wayne Gretzky, when asked what made him different than all ...
With the introduction of CouchDB to the world, the world suddenly seemed to be alive with a whole slew of "alternative" approaches to data persistence, collectively called "NoSQL" and offering a "slightly different" to "radically different" view of data storage and retrieval. It’s left a few ...
JavaScript frequently confuses developers, with its odd language rules and inconsistent approach to various aspects of the language. TypeScript is an attempt to clean up the language, simplifying it and creating a syntax easier to understand and use, but that compiles down to native JavaScript for widespread use in the browser (and ...
WebAssembly is a new cross-browser emerging standard providing a "target bytecode" for languages that want to compile into something that can be run natively inside the browser; in many ways, it's the culmination of the effort to provide developers with an ability to do "browser plug-ins" without having to be ...
GraalVM, an Oracle Labs production, describes itself as "a high-performance JDK distribution designed to accelerate the execution of applications written in Java and other JVM languages along with support for JavaScript, Ruby, Python, and a number of other popular languages." What that single sentence describes is a veritable ...
With the rise of interest in JavaScript as more than just a hack to get the browser to do something more interesting than just plain HTML, a number of libraries have emerged to make it easier for developers to write code, whether intended for the server (Node.js) or the browser (jQuery). In fact, we're starting to see JavaScript show ...
Angular has taken the Web world by storm, as an "opinionated" Javascript single-page application web framework specifically for building "CRUD business" applications. In this presentation, we're going to take a pass at Angular, examining its syntax, organization, approach, and features, with an eye towards how one ...
Apache Cordova was the first (of several) programming platforms that offered up a tempting concept: Build mobile applications using only the tools that any Web developer would know--HTML, CSS, and JavaScript. Not surprisingly, it became quite popular, and we found it useful in places, less so in others.
In this talk, we'll go ...
With the rise of interest in JavaScript as more than just a hack to get the browser to do something more interesting than just plain HTML, a number of libraries have emerged to make it easier for developers to write code, whether intended for the server (Node.js) or the browser (jQuery). One of these libraries, ExpressJS, is a package ...
With the rise of interest in JavaScript as more than just a hack to get the browser to do something more interesting than just plain HTML, and the parallel rise of interest in functional programming tactics and techniques, a strong desire to know how to program functionally in JavaScript has emerged, greeted by a chorus of "Why ...
The Loopback stack is a Javascript/NodeJS-based stack for building server-side API endpoints and middleware for building beautiful, simple, consistent API endpoints. A formal part of the NodeJS foundation, Loopback enjoys large corporate backing (IBM in this case), open-source cred (some of its original committers were key players in ...
Ever wished you could just focus on one language, and use that one language across all the various tiers and layers of your application? If you're willing to let that "one language" be Javascript, there might be an option for you to do just that.
MeteorJS (http://www.meteor.com) is a ...
Looking to build a native mobile application, but want to either leverage your skills as a Web developer (particularly if you're familiar with React), or the code you've already built for your React-based Website? Relax! Facebook has released unto us the ReactNative toolchain, for using the same principles as are used in React, to ...
With the rise of interest in JavaScript as more than just a hack to get the browser to do something more interesting than just plain HTML, a number of libraries have emerged to make it easier for developers to write code, whether intended for the server (Node.js) or the browser (jQuery). One of these libraries, SweetJS, provides a set ...
JavaScript: a dynamically-typed (or, as some consider it, entirely untyped) language and platform. TypeScript: a strongly-typed language designed to cross-compile/transpile to the JavaScript platform. Two things that couldn't be more dissimilar, intended to work together. In this session, we'll go over the syntax, semantics and ...
If you're a NodeJS developer, you use the V8 engine every day--it's the Javascript engine
that powers the NodeJS platform. But if you're like most NodeJS developers, you have no idea
what your code looks like once the V8 engine picks up the source files and starts parsing
them--it's just magic. In this presentation, ...
TypeScript is mostly known for being a strongly-typed JavaScript. While this is certainly a viable view of the language, it ignores the view that TypeScript has a unique place among languages, that of being strongly-typed on top of a weakly/untyped platform. This enables TypeScript to do some language syntax and implementation that ...
The Gang-of-Four collection of patterns has long served as a fundamental basis for object-oriented developers. TypeScript being an O-O language, it makes a certain amount of sense to see how we might apply the language to some of the traditional GOF patterns--and a few others besides. In this session, we'll explore how TS can simplify ...