DAN COLLINS Software Architect, Engineer, Leader

Total Page:16

File Type:pdf, Size:1020Kb

DAN COLLINS Software Architect, Engineer, Leader DAN COLLINS Software Architect, Engineer, Leader EXPERIENCE MOST PROUD OF Grit & Perseverance Sr. Principal Engineer Jan 2018 - Ongoing Uptake Technologies, Inc to tackle hard problems and deliver ¬ Proposed and then built Uptake’s next generation industrial AI and data science platform as a SaaS offering using the working software combined experience of over four years in industrial IOT, data science, and data engineering ¬ Created the Uptake Data Service, codenamed Escher, as the reimagined backbone for data persistence with features like strong Building Teams schema enforcement and consistency for data scientists as well as dynamic schema creation and metadata storage for that share a vision, understand the application development architecture, and excel together ¬ Established the Enterprise Architecture Group with the Chief Architect and Sr. Principals to codify best practices and technology Exciting Users patterns along with building a community of practice for software architecture with results made possible by systems ¬ Drove the effort to modernize the Uptake tech stack resulting in the adoption of Kubernetes for runtime orchestration, I’ve designed Spinnaker for continuous deployment, and Apache Flink for streaming data processing ¬ Improved Uptake’s adoption of cloud native services including AWS Lambda, RDS, Glue, Athena, S3, and SNS to lower overall TECHNOLOGY cost to serve and decrease time to market Architectures ¬ Standardized engineering documentation across over 90 repositories and 8 different teams for better knowledge sharing Layered/n-Tier, Message Oriented, Backend for Frontend, Evented, Principal Engineer Jan 2017 - Jan 2018 Uptake Technologies, Inc Service Oriented, Microservices, ¬ Architected and built a world-class streaming data platform, codenamed Symphony, that ingested and curated data from over Embedded 170 Caterpillar dealers around the world in real-time; Apache Kafka and Elasticsearch along with a microservices architecture Backend Frameworks enabled by Mesosphere’s DC/OS (Apache Mesos, Zookeeper, and Marathon) were core to the design Netty, Play Framework, Jetty, Scalatra, ¬ Scaled a reactive, metadata-driven, data integrity and pipelining process to over 100k real-time streaming applications and Spring Boot asynchronous data reporting processes using Kafka Streams and Akka ¬ Improved interview and on-boarding practices to be more inclusive and standardized across Uptake engineering Container Orchestration ¬ Won Uptake’s Summer Hackathon 2017 building a real-time, unsupervised schema inference and data classifier with a ragtag Docker Swarm, Kubernetes, group of data scientists and engineers (it was awesome!) Marathon/Mesos Databases Sr. Software Architect Apr 2016 - Jan 2017 Morningstar, Inc Postgres, CockroachDB, Elasticsearch, ¬ Converged development processes across Morningstar by creating a front-end framework, called Quikr, that unified best Cassandra, MySQL, MariaDB, Redis, practices, created paved road solutions, and accelerated development Apache Kafka ¬ Evaluated systems and software architecture for three acquisitions including By All Accounts, HelloWallet, and Pitchbook to Data Formats accelerate systems integration and organizational cohesion Avro, JSON, Orc, Parquet, Thrift, XML, ¬ Ensured continuity and minimal impact to technical strategy during the transition of Morningstar’s CTO culminating in a YAML partnership to create an Office of the CTO under new leadership that drove standards and cloud adoption Frontend Frameworks Software Architect May 2014 - Apr 2016 Morningstar, Inc Angular, Aurelia, Backbone, CSS/3, ¬ Led five on-site and six off-shore development teams in evolving the shared services architecture, which included a variety of Ember, Less, Material, React, Sass, distributed calculation, data storage, and analytics processing systems Vue.js ¬ Partnered with the Morningstar for Investors App team to improve cross-systems integrations establishing shared practices Languages across stacks written in Objective-C, Java/Play, C++, and C#/.NET Scala, Java, Python, C++, R, ¬ Conducted a vendor analysis and software evaluation search for an identity and access management solution; implemented it JavaScript/Node, SQL, Rust, Go, Lua, to unify identity and access management across 12 major systems Perl, Bash, Objective-C Streaming Frameworks Sr. Software Developer Oct 2010 - May 2014 Morningstar, Inc Apache Camel, Apache Flink, Akka ¬ Expanded Site Builder Toolkit to support complex portfolio analysis workflows, real-time pricing integrations, and instrument Streaming, Kafka Connect, Kafka screening with full internationalization in over 10 languages Streams ¬ Pioneered the technical viability of business to business web service products for fund comparison, similar fund analysis, and portfolio x-ray leading to several, new multimillion-dollar subscriptions PRESENTATIONS ¬ Reduced latency for complex instrument screening and performance calculations by optimizing expression tree analysis using At the Speed of Open Apache Roadshow Chicago 2019 in-memory, multi-threaded functional predicates Data Engineering the Startup Way Technical Analyst, Level 3 May 2007 - Oct 2010 State Farm Insurance AWS re:Invent Las Vegas 2018 ¬ Established a middleware reference architecture to geo-load balance traffic for auto rate quote on StateFarm.com and over 17k Data Engineering the Startup Way agent locations nationwide AWS Startup Days Chicago 2018 ¬ Collaborated with Microsoft, Sun Microsystems, and IBM on next-generation web architecture as State Farm’s Systems in-house EDUCATION technology and patterns expert University of Illinois at Springfield ¬ Earned four special effort and innovation awards for systems design that stabilized over 800 mission critical applications B.S. Computer Science 3.99 GPA, Summa Cum Laude Chicago, IL 773-946-0424 [email protected] .
Recommended publications
  • A Web-Based System for Executing Interactive Scala Programming Exercises in Browser
    Aalto University School of Science Master's Programme in Information Networks Anastasia Lipi¨ainen A Web-Based System for Executing Interactive Scala Programming Exercises in Browser Master's Thesis Espoo, November 27, 2016 Supervisor: Professor Lauri Malmi Advisors: Otto Sepp¨al¨aD.Sc. (Tech) Juha Sorva D.Sc. (Tech) Aalto University School of Science ABSTRACT OF Master's Programme in Information Networks MASTER'S THESIS Author: Anastasia Lipi¨ainen Title: A Web-Based System for Executing Interactive Scala Program- ming Exercises in Browser Date: November 27, 2016 Pages: vii + 120 Major: Information Networks Code: SCI3047 Supervisor: Professor Lauri Malmi Advisors: Otto Sepp¨al¨aD.Sc. (Tech), Juha Sorva D.Sc. (Tech) When first introduced to programming, students are often assigned to write mere code snippets that only produce a numerical output with the help of a simple control structure. The students are left unimpressed as they fail to see the real utility that learning to program holds. By assigning students real-world programming problems, such as games and media computation exercises, we showcase real applications for programming. At the beginning of their first programming course, students are already used to working with modern, interactive, and visually impressive interfaces. However, they cannot be expected to produce the graphical user interfaces required to take the full advantage of media content. Previously, we have distributed interfaces implemented with Swing as program code for local execution; the practise does not allow the easy updating of assignment related code and achieving a usable interface is tiresome with the use of Swing. To address the issues of the current process, we developed a web-based system that allows the execution of interactive Scala programs in a browser.
    [Show full text]
  • The Lift Approach
    Science of Computer Programming 102 (2015) 1–19 Contents lists available at ScienceDirect Science of Computer Programming www.elsevier.com/locate/scico Analyzing best practices on Web development frameworks: The lift approach ∗ María del Pilar Salas-Zárate a, Giner Alor-Hernández b, , Rafael Valencia-García a, Lisbeth Rodríguez-Mazahua b, Alejandro Rodríguez-González c,e, José Luis López Cuadrado d a Departamento de Informática y Sistemas, Universidad de Murcia, Campus de Espinardo, 30100 Murcia, Spain b Division of Research and Postgraduate Studies, Instituto Tecnológico de Orizaba, Mexico c Bioinformatics at Centre for Plant Biotechnology and Genomics, Polytechnic University of Madrid, Spain d Computer Science Department, Universidad Carlos III de Madrid, Spain e Department of Engineering, School of Engineering, Universidad Internacional de La Rioja, Spain a r t i c l e i n f oa b s t r a c t Article history: Choosing the Web framework that best fits the requirements is not an easy task for Received 1 October 2013 developers. Several frameworks now exist to develop Web applications, such as Struts, Received in revised form 18 December 2014 JSF, Ruby on Rails, Grails, CakePHP, Django, and Catalyst. However, Lift is a relatively new Accepted 19 December 2014 framework that emerged in 2007 for the Scala programming language and which promises Available online 5 January 2015 a great number of advantages and additional features. Companies such as Siemens© and Keywords: IBM®, as well as social networks such as Twitter® and Foursquare®, have now begun to Best practices develop their applications by using Scala and Lift. Best practices are activities, technical Lift or important issues identified by users in a specific context, and which have rendered Scala excellent service and are expected to achieve similar results in similar situations.
    [Show full text]
  • N2O Most Powerful Erlang Web Framework @5HT How Do I Shot Web? Micro REST
    N2O Most Powerful Erlang Web Framework @5HT How do I shot Web? Micro REST Python Flask Ruby Sinatra PHP Silex Scala Scalatra Concurrency in Mind Ruby Celluloid PHP React PHP phpDaemon Java+Scala Play SPA Angular Meteor Ember Chaplin Brunch D3 Knockout React Backbone jQuery Functional DSL Scala Lift Erlang Nitrogen Haskell BlazeHtml OCaml Ocsigen F# WebSharper Clojure Laser Enlive Compojure Ring Hiccup ClojureScript Om http-kit aleph noir JVM Elixir Weber def action(_, conn) do {:render, [project: "simpleTodo"], []} end def add([body: body], _conn) do {:json, [response: "ok"], [{"Content-Type", "application/json"}]} end def wrong(_, _) do {:redirect, "/"} end Erlang ChicagoBoss DTL Engine Database Connectivity PubSub Ruby on Rails like Nitrogen N2O ~2000 LOC One Process per Connection Binary Page Construction Zero Bridge GProc Pub/Sub WebSockets, KVS DB Tuned Layers static and dynamic Routing Path cleaned Query Parser Session Cookies stored in ETS cached DTL Templates optimized Nitrogen DSL rendering HTML Elements binaries JavaScript Actions deferred Layers Performance components TCP conn (K) PHP5 FCGI Simple Script <?php ?> 5 Nitrogen No session, No DSL, DTL 1 N2O Sessions, DSL, DTL 7 N2O Sessions, no DSL, DTL 10 N2O No Sessions, no DSL, DTL 13 On same machine raw webserver performance measured with wrk: NGINX -- 60K Cowboy -- 30K Measuring Tools requests pages/sec latency (ms) wrk 15K 13628.86 18.88 ab 10K 5464.63 190 httperf 10K 3623.50 200 siege 1K 884.51 430 On same machine raw webserver performance measured with wrk: NGINX -- 60K Cowboy -- 30K Decreasing Latency From 2x to ∞ Deliver HTML ASAP Deferred JavaScript delivery after WebSocket connection established <script> TransitionProcess = '<0.7780.5>' </script> socket.send(["N2O",TransitionProcess]).
    [Show full text]
  • Full-Graph-Limited-Mvn-Deps.Pdf
    org.jboss.cl.jboss-cl-2.0.9.GA org.jboss.cl.jboss-cl-parent-2.2.1.GA org.jboss.cl.jboss-classloader-N/A org.jboss.cl.jboss-classloading-vfs-N/A org.jboss.cl.jboss-classloading-N/A org.primefaces.extensions.master-pom-1.0.0 org.sonatype.mercury.mercury-mp3-1.0-alpha-1 org.primefaces.themes.overcast-${primefaces.theme.version} org.primefaces.themes.dark-hive-${primefaces.theme.version}org.primefaces.themes.humanity-${primefaces.theme.version}org.primefaces.themes.le-frog-${primefaces.theme.version} org.primefaces.themes.south-street-${primefaces.theme.version}org.primefaces.themes.sunny-${primefaces.theme.version}org.primefaces.themes.hot-sneaks-${primefaces.theme.version}org.primefaces.themes.cupertino-${primefaces.theme.version} org.primefaces.themes.trontastic-${primefaces.theme.version}org.primefaces.themes.excite-bike-${primefaces.theme.version} org.apache.maven.mercury.mercury-external-N/A org.primefaces.themes.redmond-${primefaces.theme.version}org.primefaces.themes.afterwork-${primefaces.theme.version}org.primefaces.themes.glass-x-${primefaces.theme.version}org.primefaces.themes.home-${primefaces.theme.version} org.primefaces.themes.black-tie-${primefaces.theme.version}org.primefaces.themes.eggplant-${primefaces.theme.version} org.apache.maven.mercury.mercury-repo-remote-m2-N/Aorg.apache.maven.mercury.mercury-md-sat-N/A org.primefaces.themes.ui-lightness-${primefaces.theme.version}org.primefaces.themes.midnight-${primefaces.theme.version}org.primefaces.themes.mint-choc-${primefaces.theme.version}org.primefaces.themes.afternoon-${primefaces.theme.version}org.primefaces.themes.dot-luv-${primefaces.theme.version}org.primefaces.themes.smoothness-${primefaces.theme.version}org.primefaces.themes.swanky-purse-${primefaces.theme.version}
    [Show full text]
  • A Sampling of NYC Python My Startups And
    A Startup Junkie's Journey to Python via Java, Ruby and Scala Andy Parsons @andyparsons Happiness Speed Magic Readability My Startups and Their Stacks What Are We Building? And in general... Happify is an angel-funded consumer Github Project Relative % destination “life game.” BUSINESS WEB API SERVICES DATABASES TEAM SIZE HTML5, Mobile, and Facebook front ends. Pro Photo ASP.NET C#, Perl SQL Server 12 Currently in stealth mode. Scala Ruby 4% 60% Hyperlocal PostgreSQL, How do they “Stack” Up? RoR Sinatra Scala 10 Content MongoDB (Geolocation ) Score is based on: Ereading and Python Book RoR Scalatra Scala/Java MongoDB 8 Green = 2 Recommende Yellow = 1 23 36% r Red = 0 Python/ PostgreSQL, Life Gaming Flask Python 3 Gevent MongoDB 18 Building Happify: Comparing Language Options BASICS 8 PACKAGING / FRAMEWORKS SPEED CONCURRENCY TOOLING DEPLOYMENT TESTING DEPENDENCIES / LIBS Growing collection Healthy, lots of Fast enough Achieved through Process.fork Gems Capistrano Mature of libs, but weak in RUBY choice NLP Early for native Scala Ruby Python Still early. IDE’s Complex. JARs, SBT, Ivy, Fast! Real concurrency, Akka ? Maturing scala libraries, rely SCALA weak. Maven. on Java interop A Sampling of NYC Python Achieved through Healthy, lots of Massive collection Fast enough Eggs Fabric Mature Gratuitous Perf Charts! PYTHON multiprocessing choice of libraries FLAME BAIT HAPPINESS / COMMUNITY / PROPENSITY FOR MATURITY / READABILITY HIRING PRODUCTIVITY ACTIVITY MAGIC STABILITY OK. Emphasis Metaprogramming is sometimes Stable, but much Tough. Medium RUBY metaprogramming can High Huge and active abused. RoR is too magical and catchup remaining for learning curve, present challenges. many imitated its philosophy gems to support 1.9 hard to find seasoned devs Too many ways to accomplish Language spec Very difficult.
    [Show full text]
  • Akka, Play & Scala in Practice – Stjepan
    1 Akka, Play & Scala u praksi STJEPAN BULJAT ETNA D.O.O. [email protected] @sbuljat JavaCro ‘13 – 2nd International Java Conference in Croatia 2 O predavaču… Radim kao voditelj tima za razvoj i istraživanje u tvrtki Etna d.o.o. Završio FER (mag.ing.comp.) i EFZG (univ.spec.oec ) Povijest programiranja: Pascal C Smalltalk Java Scala je privatna tvrtka iz Zagreba osnovana 1990. godine Zapošljava 30ak djelatnika 22 godine iskustva u bankarstvu i informatici Usluge razvoja i uvođenja informatičkih rješenja uz primjenu suvremenih informacijskih tehnologija Usluge prilagodbe i integracije postojećih informatičkih rješenja Usluge poslovne analize i poslovnih konzultacija All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 3 Akka - Uvod Threads are bad? Ne nužno, ali apstrakcija može biti korisna… tu dolazi Akka Akka je middleware koji omogućuje izgradnju visoko konkurentnih i distribuiranih event-driven aplikacija koje su otporne na greške (eng. fault tolerant ) Komunikacijski model se bazira na asinkronoj razmjeni poruka između dijelova sustava Omogućuje konkurentnost bez dijeljenog promjenjivog stanja i zaključavanja resursa Osnovni gradivni element u Akka-i je ACTOR Location Transparent & Distributable by Design Actor Model je definirao Carl Hewitt 1973, ali zasluge za popularizaciju ipak pripadaju Erlangu Actori omogućuju Jednostavnu apstrakciju konkurentnosti i paralelizma Asinkroni, ne blokirajući i jako učinkovit event-driven programski model Lightweight event-driven procese (cca 2.7M actora po GB Heap-a) All rights reserved. Copyright © 2013 Etna d.o.o. | www.etna.hr 16.6.2013. 21:33 4 Akka – Actor Actor može biti alternativa za: Thread, Component, Listener , Service, Load balancer , EJB SB / MDB, … Osnovne actor operacije DEFINE CREATE SEND BECOME SUPERVISE All rights reserved.
    [Show full text]
  • Introducing Scalatra by Ivan Porto Carrero, Ross A
    1 Introducing Scalatra By Ivan Porto Carrero, Ross A. Baker, Dave Hrycyszyn, Stefan Ollinger, and Jared Armstrong, authors of Scalatra in Action Scalatra is an HTTP micro-framework, written in the up-and-coming new language, Scala. Scalatra is used by LinkedIn, the BBC, the Guardian newspaper, games website IGN, social identity provider JanRain, the Wordnik online dictionary, and the British government’s new flagship website. It’s fast, battle-tested, and in production. This article introduces you to the simplicity of Scalatra micro-framework. Add a small configuration file, download, and run one command, and you’ve got a running web application. There’s a lot more to Scalatra, but the following simple code expresses its essence. You define a route, which is a combination of an HTTP verb (get), and a URL route matcher (/hello), which executes a block of code on the server and returns the result (in this case, the string Hello world!). Listing 1 Scalatra in Action package com.example.yourapp import org.scalatra._ class HelloWorld extends ScalatraFilter { get(“/hello”) { “Hello there!” } } If you put this code up on http://yourwebsite.org, you could type http://yourwebsite.org/hello into your browser and see the text “Hello world!” in return. And yet...it’s so small. What do all of these big organizations see in it? The interesting thing is, there isn’t a single answer to that question because Scalatra is a micro-framework. Micro-frameworks vs. full-stack frameworks A micro-framework is a very small framework or way of organizing your code, with only minimal helper functions built in.
    [Show full text]
  • PRINT:OAS:Remain API Studio - Remain Software
    5/18/2020 PRINT:OAS:Remain API Studio - Remain Software PRINT:OAS:Remain API Studio From Remain Software Welcome to the index of the Remain API Studio. OpenAPI Specification (formerly Swagger Specification) is an API description format for REST APIs. An OpenAPI file allows you to describe your entire API. This editor helps you easily create and edit your OpenAPI file. Contents 1 Import OpenAPI 2 Export OpenAPI 3 Schemas 3.1 Add New Schema 3.2 Update Schema 3.2.1 Update Schema Name/Description 3.2.2 Update Schema Properties/Attributes 3.3 Delete Schema 3.4 Import Schema 3.5 Extract Schema From JSON Sample/Payload 3.6 Composite Schema 3.6.1 Add Sub-Schema 3.6.2 Change Sub-Schema (composite) Keyword 3.7 Schema Properties 3.8 Additional Properties 4 Paths 4.1 Add Path 4.2 Edit Path 4.3 Delete Path 4.4 Duplicate Path 4.5 Copy|Cut Operation 4.6 Parameters 4.7 Add global parameter 4.8 Add a path/operation parameter 4.9 Edit/Delete parameter 5 Operations 5.1 Add Operation 5.2 Update Operation 5.3 Delete Operation 6 Request Bodies 6.1 Add A Global Request Body 6.2 Add An Operation Request Body 6.3 Add Request Body Content Type 6.4 Delete Request Body Content Type 6.5 Add Schema to Request Body Content Type 6.6 Update Schema to Request Body Content Type 6.7 Delete Request Body 6.8 Update Request Body 7 Responses 7.1 Add new Response 7.2 Delete a Response 7.3 Update Response 7.4 Add new Response Content Type 7.5 Update/Delete Response Content Type 7.6 Update Response Content Type Schema 8 Tags 8.1 Add Global Tag 8.2 Add Operation Tag 8.3 Update Tag
    [Show full text]
  • {Dоwnlоаd/Rеаd PDF Bооk} Leo : a Ghost Story
    LEO : A GHOST STORY Author: Mac Barnett Number of Pages: 52 pages Published Date: 25 Aug 2015 Publisher: CHRONICLE BOOKS Publication Country: San Francisco, United States Language: English ISBN: 9781452131566 DOWNLOAD: LEO : A GHOST STORY Leo : A Ghost Story PDF Book Using his own strong voice and trademark narrative style, he teaches by example-his own and his students'-how writers can be true to themselves and vivid on the page to pull readers in and keep them reading. At the same time, however, Lewis remains best known for his work with Dean Martin, and in that sense, he remains overshadowed by his more famous partner. A welcome addition to the library of helpful reference material for written English. Packed with helpful information, this book encourages you to confidently get the most out of the new features of Windows 7. Lumpkin's bed, where we will excavate for pizza crusts and coinage, as well as cell phones dating back to the early paleo-iPhone era. Rather, it is offered as a guide, based on a pilot-tested approach. The therapeutic value of electro-magnetism has never been fairly tried - 4it has been resorted to as a universal remedy capable of effecting impossibilities when all other remedies have failed; from this its want of success has arisen, and consequently it has not been duly appreciated. Water and Energy Threats and Opportunities, 2e creates an awareness of the important couplings between water and energy. Buy our stuff. Global random optimization algorithms appear in this book, such as the Simulated Annealing in chapter 6 and the Genetic Algorithms p- posedinchapters3and9.
    [Show full text]
  • Scalatra in Action
    MANNING Dave Hrycyszyn Stefan Ollinger Ross A. Baker www.allitebooks.com Scalatra in Action DAVE HRYCYSZYN STEFAN OLLINGER ROSS A. BAKER MANNING Shelter Island www.allitebooks.com For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Email: [email protected] ©2016 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. Development editor: Karen Miller 20 Baldwin Road Technical development editor:
    [Show full text]
  • The Ultimate Microframework Smackdown
    The ultimate microframework smackdown Jaap Coomans @JaapCoomans Who is that guy? @JaapCoomans Microframeworks Microservices framework? Microservices framework? What is a microframework? Wikipedia “A microframework is a term used to refer to minimalistic web application frameworks. It is contrasted with full-stack frameworks.” Author: Dmitry Abramov https://pixabay.com/illustrations/elephant-pink-sitting-smile-cute-3516211/ Author: Dmitry Abramov https://pixabay.com/illustrations/panic-big-eyes-crooked-arm-1393619/ Timeline minijax Dropwizard jawn light4j gemini 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 Redkale The long list 1. Act Framework 17. Ktor 2. Armeria 18. KumuluzEE 3. Blade 19. Light-4j 4. Dropwizard 20. Meecrowave 5. Gemini 21. Micronaut 6. GreenLightning 22. Minijax 7. Hammock 23. Ninja Framework 8. Helidon SE 24. Pippo 9. Helidon MP 25. Play Framework 10. http4k 26. Proteus 11. Javalin 27. Quarkus 12. Jawn 28. Rapidoid 13. jlhttp 29. Ratpack 14. Jodd 30. Redkale 15. Jooby 31. Scalatra 16. khttp 32. Spark The long list 1. Act Framework 17. Ktor 2. Armeria 18. KumuluzEE 3. Blade 19. Light-4j 4. Dropwizard 20. Meecrowave 5. Gemini 21. Micronaut 6. GreenLightning 22. Minijax 7. Hammock 23. Ninja Framework 8. Helidon SE 24. Pippo 9. Helidon MP 25. Play Framework 10. http4k 26. Proteus 11. Javalin 27. Quarkus 12. Jawn 28. Rapidoid 13. jlhttp | GPL and custom hosting platform 29. Ratpack 14. Jodd 30. Redkale 15. Jooby 31. Scalatra 16. khttp 32. Spark The long list 1. Act Framework 17. Ktor 2. Armeria 18. KumuluzEE 3. Blade 19. Light-4j 4. Dropwizard 20. Meecrowave 5.
    [Show full text]
  • Scalatra in Action
    MANNING SAMPLE CHAPTER Dave Hrycyszyn Stefan Ollinger Ross A. Baker Scalatra in Action by Dave Hrycyszyn Stefan Ollinger and Ross A. Baker Chapter 12 Copyright 2016 Manning Publications brief contents PART 1INTRODUCTION TO SCALATRA.............................................1 1 ■ Introduction 3 2 ■ A taste of Scalatra 12 3 ■ Routing 28 4 ■ Working with user input 49 PART 2COMMON DEVELOPMENT TASKS .........................................71 5 ■ Handling JSON 73 6 ■ Handling files 94 7 ■ Server-side templating 104 8 ■ Testing 116 9 ■ Configuration, build, and deployment 130 10 ■ Working with a database 154 PART 3ADVANCED TOPICS ........................................................169 11 ■ Authentication 171 12 ■ Asynchronous programming 197 13 ■ Creating a RESTful JSON API with Swagger 211 iii Asynchronous programming This chapter covers ■ Scala, servlets, and mutable state ■ Using Futures for asynchronous programming ■ Using Akka Actors with Scalatra ■ Big data in Scalatra with Spark Scala makes multicore, distributed, and asynchronous programming easier. Its focus on immutability, as well as associated libraries such as Akka, lower the concep­ tual burdens of concurrency management by making it easier to reason about your code. Why is this important? Most other languages still rely on old-style concurrency management tools like locks and threads, which can be extremely difficult to use because they are non­ deterministic. That is, you can’t necessarily reproduce your threading bugs when you want, because they can be the result of multiple threads interacting in strange and horrifying ways. Older concurrency models were designed in an age of non-networked, single- core microcomputers, when building distributed systems was the exception rather than the norm. We now live in a very different world.
    [Show full text]