Pratik Patel is a Java Champion and developer advocate at Azul Systems and has written 3 books on programming (Java, Cloud and OSS). An all around software and hardware nerd with experience in the healthcare, telecom, financial services, and startup sectors. He's also a co-organizer of the Atlanta Java User Group and North Atlanta JavaScript meetup, frequent speaker at tech events, and master builder of nachos.
Functional Programming is available in many programming languages today. You probably know that FP is possible in JavaScript - but did you know that writing FP style JavaScript will lead to cleaner, more maintainable code? In this session, we'll explore writing FP style JavaScript and cover the basics, and intermediate techniques. We'll do a functional refactor and explain the reasoning along the way.
We'll use mostly basic JavaScript and the underscore library for code examples to demonstrate Functional Programming in a simple to understand, and more practical, way.
This is a hands-on workshop, in 2 X 90 minute segments, to help you raise your JavaScript expertise, using the new JavaScript version (ES6) to avoid common problems and to make writing JavaScript more elegant. Topics covered include:
This is a hands-on workshop, in 2 X 90 minute segments, to help you raise your JavaScript expertise, using the new JavaScript version (ES6) to avoid common problems and to make writing JavaScript more elegant. Topics covered include:
This is a hands-on workshop, in 2 X 90 minute segments, to help you raise your JavaScript expertise, using the new JavaScript version (ES6) to avoid common problems and to make writing JavaScript more elegant. Topics covered include:
This is a hands-on workshop, in 2 X 90 minute segments, to help you raise your JavaScript expertise, using the new JavaScript version (ES6) to avoid common problems and to make writing JavaScript more elegant. Topics covered include:
So you think you've picked up enough JavaScript to be dangerous, but feel like the whole prototypical language thing is still a mystery. In this session, we'll go from basic JavaScript to advanced JavaScript. We'll discuss and code modular JavaScript with CommonJS. We'll look into the details of a prototype language and discuss things like parasitic inheritance. We'll also look at JavaScript libraries that will help you get the most out of JavaScript - not jQuery, but a library like UnderscoreJS and SugarJS.
This is a fast paced session meant to bring you up to speed with the latest and greatest JavaScript techniques and tools. Whether you're building client side JavaScript with HTML5 or Appcelerator Titanium, or server-side JavaScript with node.js, you'll come away with knowledge and patterns for how the pro's use JavaScript for building real apps.
JavaScript is a single-threaded runtime, with an asynchronous programming model. For developers, this presents a unique set of challenges: handling nested async events, debugging, disconnected code. There are a number of ways we write JavaScript to handle asynchronicity: promises (in ES6) and async/await (in ES7), along with 3rd party libs are common tools that are used by developers.In this session, we’ll dive into Reactive Extensions for JavaScript (RxJS). While RxJS can be used to just write better async JavaScript code, RxJS can also be used to build a complete architecture that is event and stream based.
We will discuss and code Observables and look at how functional programming comes into the mix with RxJS, and learn about a programming model called Functional Reactive Programming (FRP). We’ll also take a look at a web framework built around FRP called Cycle.js.
JavaScript has first class support for functional programming. There are many techniques for writing code in more clear, and concise form, in JavaScript using these techniques. In this session, we'll explore these techniques and talk about how to implement them. We'll use commonly used libraries like underscore to make elegant JavaScript code.
JavaScript has first class support for functional programming. There are many techniques for writing code in more clear, and concise form, in JavaScript using these techniques. In this session, we'll explore these techniques and talk about how to implement them. We'll use commonly used libraries like underscore to make elegant JavaScript code.
As an architect you're often working at a high level on projects, thinking of architectural concerns such as distributed applications, CI/CD pipelines, inter-team APIs, and setting standards. Code quality affects everything that a software architect needs to work on - from a small way to a big way.
We typically look at 6 Code Quality Areas:
Readability
Flexibility
Reusability
Scalability
Extendibility
Maintainability
In this talk, we'll look at techniques and tools for managing code quality. Our goal as architects is to maximize the manageability of code, consider different coding paradigms and their effect on the six areas, and how to create habits and processes to ensure long term code viability. We'll take a couple of sidebars on performant vs manageable code and OO vs Data Oriented coding. We'll look at tools for doing static analysis vs dynamic analysis.
Cloud usage has been soaring over the last few years, and now developers are starting to get pressure to reduce cloud spend. In this session, we’ll discuss how to optimize your cloud utilization, and hence how much your team spends, on cloud infrastructure.
We’ll discuss these topics with a specific focus on Java applications:
Architecture of your application
PaaS, CaaS, Cloud Functions or Kube?
JVM ramp-up & optimization time
Headroom for variable load
Over provision or elastic compute?
This session covers the basics of setting up a Web & JavaScript project for Continuous Integration. The goal is to apply the same engineering practices as for projects coded in Java. Topics covered:
This session covers the basics of setting up a Web & JavaScript project for Continuous Integration. The goal is to apply the same engineering practices as for projects coded in Java. Topics covered:
You don't have to wait to use the next generation JavaScript language until all browsers support it - using transpilation you can start using it today and future proof your code and make it more elegant NOW! See the details for the topics covered.
In this rapid fire, live-coding session, we'll look at the features in ES2015:
arrows
classes
enhanced object literals
template strings
destructuring
default + rest + spread
let + const
iterators + for..of
generators
unicode
modules
module loaders
map + set + weakmap + weakset
proxies
symbols
subclassable built-ins
promises
math + number + string + array + object APIs
binary and octal literals
reflect api
tail calls
Want to get your kids interested in programming? Maybe you're a kid at heart too? Come to this session and learn how to use ScriptCraft for Minecraft modding!
In this session, I'll discuss Minecraft modding with ScriptCraft. We'll start with an overview of Minecraft and ScriptCraft. We'll see how we install the necessary software to get our modding environment ready. Then we'll interact with Minecraft by writing code commands directly from within Minecraft! Finally, we'll build some cool mods and invoke them from Minecraft. If you're interested in getting your kids into Minecraft, come to this session to get a primer on everything you need to get them interested and hacking their own code.
JavaScript has a mixed heritage: OO and Functional. To date, us developers have focused on the OO side of JavaScript and not much mind-share has been given to the other, more powerful side. In this session we'll explore how to use the power of functional Javascript.
JavaScript has elements of two distinct programming languages: Self and Scheme. These two languages are very different - and some of JavaScript's weirdness is due to this mixing of very different language designs. The conceptual models are also very different between Self and Scheme - one is a prototypical object based language, while the other is a functional language. In this session, we'll discuss the elements of how the Scheme functional programming language manifest in JavaScript. We're going to explore how you can write JavaScript in a more elegant and powerful way by applying functional concepts.
In this session, we'll dig deep into the performance aspects of JavaScript and the Web Browser. Single page web applications are becoming popular very quickly, and understanding the low-level and high-level aspects of the browser platform and JavaScript runtimes embedding in them are important.
We'll cover topics such as browser pipe-lining, memory management, testing and measuring performance.
We've come a long way down the JavaScript road. Gone are the days of 'just hack it' for the web - architecting even a small project in JavaScript can be a challenge. Thankfully, there are several frameworks to help you; the most popular currently is Backbone.js.
Before you start using a framework in JavaScript, you will want to understand the techniques expert JavaScript programmers use to build them. In this session, we'll dive into design patterns in JavaScript, and do live coding so you can see these patterns applied. Even if you're not using a framework, you can use these design patterns to make your code more maintainabile, elegant, and concise.
In this fun 2 part workshop, we'll do a series of exercises to convert “old school” JavaScript code to ES2015, or ECMAScript 2015 code. ES2015 just got finalized, but you don't have to wait to use it. Using transpilation as part of your build process, you can quickly start using it TODAY. See the details below to get a flavour for what we'll be hacking in this fast-paced workshop.
We'll do exercises to convert legacy JavaScript code to ES2015 to help you understand how to migrate existing code and write new code in the new version of the language:
arrows
classes
enhanced object literals
template strings
destructuring
default + rest + spread
let + const
iterators + for..of
generators
unicode
modules
module loaders
map + set + weakmap + weakset
proxies
symbols
subclassable built-ins
promises
math + number + string + array + object APIs
binary and octal literals
reflect api
tail calls
In this fun 2 part workshop, we'll do a series of exercises to convert “old school” JavaScript code to ES2015, or ECMAScript 2015 code. ES2015 just got finalized, but you don't have to wait to use it. Using transpilation as part of your build process, you can quickly start using it TODAY. See the details below to get a flavour for what we'll be hacking in this fast-paced workshop.
We'll do exercises to convert legacy JavaScript code to ES2015 to help you understand how to migrate existing code and write new code in the new version of the language:
arrows
classes
enhanced object literals
template strings
destructuring
default + rest + spread
let + const
iterators + for..of
generators
unicode
modules
module loaders
map + set + weakmap + weakset
proxies
symbols
subclassable built-ins
promises
math + number + string + array + object APIs
binary and octal literals
reflect api
tail calls
Creating a web site, web app, or native app for mobile use presents a special set of challenges. Specifically, developers and designers should be zoned into the techniques for usability - and usability can be enhanced greatly by taking performance elements into consideration up-front.
In this session, we explore the many performance tips and tricks you can employ to make your website or web app or native app shine on mobile devices. This is an advanced course that discusses issues such as image loading, JavaScript performance, and wireless latency.
Creating a web site, web app, or native app for mobile use presents a special set of challenges. Specifically, developers and designers should be zoned into the techniques for usability - and usability can be enhanced greatly by taking performance elements into consideration up-front.
In this session, we explore the many performance tips and tricks you can employ to make your website or web app or native app shine on mobile devices. This is an advanced course that discusses issues such as image loading, JavaScript performance, and wireless latency.
RabbitMQ is open source message broker software (sometimes called message-oriented middleware) that implements the Advanced Message Queuing Protocol (AMQP). While JMS works great in an all-Java environment, RabbitMQ works across all major platforms including Java, .NET, Python, Ruby, and JavaScript. RabbitMQ has the features you would expect from an enterprise grade message queue such as fault-tolerance, clustering, and high-availability. This is an introductory session to RabbitMQ.
RabbitMQ uses the AMQ protocol for messaging and features a nice management UI. While being lightweight and fast, it still provides excellent performance and scalability. In this session we'll cover the basics of RabbitMQ and run some live code samples.
React.js is a view library from Facecbook for building performant user-interfaces in JavaScript. In this session, we'll explore React.js and understand why it's a great step forward for building complex UI's that run fast. We'll code up an example web application using React.js and step through the basics of using the library while discussing concepts like the virtual DOM and components.
This is a HAND-ON WORKSHOP, INTRODUCTORY LEVEL. Please come with a laptop, and if possible, with the software needed pre-installed (Instructions below). We'll cover these topics - both in code and in discussion format, and do as many as we can in the time alloted:
React.js is a view library from Facecbook for building performant user-interfaces in JavaScript. In this session, we'll explore React.js and understand why it's a great step forward for building complex UI's that run fast. We'll code up an example web application using React.js and step through the basics of using the library while discussing concepts like the virtual DOM and components.
In this session, we'll explore React.js and understand why it's a great step forward for building complex UI's that run fast. We'll code up an example web application using React.js and step through the basics of using the library while discussing concepts like the shadow DOM and components.
You've learned some React.js, and you've built a prototype, or even a full application. How do you organize a React.js application? What is the architecture of the application? Or perhaps you're building an Angular based application. How do you deal with complexity as your SPA grows in size? In this session, we'll look at Redux, a framework to organize and build a React (or even Angular!) single page web application with sanity. While we'll do the examples in React, the same Redux architecture (and code) can be used for an Angular app also. Redux uses basic functional programming techniques to make web development simple and fun!
While Redux can be used with any view library to build single page web applications, it works particularly well with React.js. In this session, we'll talk about a modern, elegant, sophisticated, but yet simple way to build single page web applications: Redux with React. React only provides the view layer, but has a strong conceptual model based on state. Redux describes itself as “Redux is a predictable state container for JavaScript apps.” Using the two together, in a word, is awesome. The best part is that we can use the simplicity and sophistication of functional programming in JavaScript while building Redux + React applications!
We'll cover Redux basics, starting with an architectural overview, then diving into the major components of a Redux application:
We'll also discuss concepts such as dumb and smart components.
The Single Page App, or SPA, require the developer thinks about architecture in new ways compared to traditional server-side page generation web apps. Whether you've used Java web frameworks like Spring Web, or Struts, dynamic frameworks like Grails or Rails, or even Django or PHP, you will need to learn some new techniques for building SPA type applications. We discuss the architecture and design of Service Oriented Front End Architectures (SOFEA) in this session.
In this session, we'll look at structuring your app from both the client and server side. Using a SPA framework like Backbone.js or Ember can help, but does not answer critical design questions. This is a fast paced session where we'll talk about SPAs, REST, SEO, and much more.
The world of hardware hacking has been gaining popularity recently. With the advent of open-source hardware, there's been tremendous interest in hacking hardware again. In this session, we'll look at two popular hardware platforms: Arduino and RaspberryPi. We'll also look at how to integrate the Arduino with Android to build a cheap, complete hardware hacking platform, all written in Java!
We'll go over the current open hardware scene first. Then we'll look at how to setup these two platforms. Of course, we'll write some code and deploy them onto the hardware!
There's tons of options for doing data processing in other languages like Java and Python. With actionhero.js, you can use Nodejs's event loop model to create a scalable and cohesive API for processing and serving large amount of data. From the actionhero.js documentation, here's a quick synopsis of this great framework:
“actionhero.js is a multi-transport API Server with integrated cluster capabilities and delayed tasks. The goal of actionhero is to create an easy-to-use toolkit for making reusable & scalable APIs.”
In this session, we'll use actionhero.js to build some examples, with lots of code, to demonstrate the capabilities of this framework. We'll consume some data, do some task processing, then access the data via an API. We'll use Websockets along with standard HTTP to build a real-time, web-enabled, application.
Jasmine is a browser centric testing framework. It's the default test framework in Jasmine and is the most popular framework among JavaScript developers. It takes a BDD testing approach.
Mocha is a popular testing framework for JavaScript - for any JavaScript environment, including the Web Browser, NodeJS, and Titanium. It allows for simple asynchronous testing, test coverage, and integration to CI tools. In this session, learn all you need to know about getting started for writing beautiful tests in JavaScript for these environments. We’ll discuss a number of add-ons for Mocha to make testing a breeze. We’ll talk about “should” and “chai” for expectation matching. We’ll discuss “simon” for mocking in your test cases. We’ll also talk about test automation with Grunt.
This session is a code-driven class that covers the Jasmine and Mocha JavaScript testing library. It is an introductory level session.
The usage of JavaScript on the server is rising. In this session, we'll talk about all the tools and utilities that comprise a modern JavaScript application, from a server-side point of view.
The usage of JavaScript on the command line and server has exploded over the past couple of years. Node.js has become popular with development shops from startups to big corporations. With its asynchronous nature, JavaScript provides the ability to scale dramatically. Along with the ability to drive your server-side applications, there are a number of tools that help with all aspects of browser development: testing, packaging, and deployment. In this session, we'll explore these tools and show you how you can incorporate these into your environment.