• Debugging Backwards in Time

    Thursday November, 09, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    1

    What if a debugger could allow you to simply step BACKWARDS? Instead of all that hassle with guessing where to put breakpoints and the fear of typing "continue" one too many times... What if you could simply go backwards to see what went wrong?

     

    This is the essence of the "Omniscient Debugger" -- it remembers everything that happened during the run of a program, and allows the programmer to "step backwards in time" to see what happened at any point of the program. All variable values, all objects, all method calls, all exceptions are recorded and the programmer can now look at anything that happened at any time.

     

    In this talk, I will describe the design of the "ODB" -- an implementation of Omniscient Debugging for Java programs -- and discuss the various costs and tradeoffs. The last half of the talk will be a demonstration of the ODB, showing how the various pieces of data are displayed and how the programmer can "navigate" through time to see what the program was doing, where values were set, when various threads ran, etc.

    At the conclusion of the talk, the audience will be invited to use the ODB to find some actual bugs.

    If you have a bug (current or former) in a Java program that you'd like to explore, bring it along! Please make sure it's pure Java, in a relatively small program that you have the source code to, and that it manifests itself within 10 seconds of a known action (e.g., start up or a button push).

  • Algebraic Databases

    Thursday October, 12, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    0

    In this talk we describe a new algebraic approach to databases based on category theory, a branch of mathematics which has already revolutionized several areas of computer science (including functional programming) and which provides theoretical guidance missing from the relational, graph, XML and RDF data models.  In summary, we conceptualize a database schema as a category, and from this simple definition obtain a basis of operations sufficient to query data (providing an alternative to SQL), migrate data (providing an alternative to ETL tools such as Informatica), and integrate data (providing an alternative to integration tools such as Tamr).

     

    This project originated in the MIT math department in 2010 and has culminated in a Java-based open-source data manipulation tool, AQL, available at http://categoricaldata.net/aql.html, as well as a start-up company, Categorical Informatics, commercializing AQL with the support of the National Institute of Standards and Technology (NIST).  This project was briefly described in a NEJUG lightning talk in the Spring of 2016, and in this talk we expand on both the technical specifics from the previous talk and demonstrate additional progress that has been made toward making AQL industrial strength - including significant performance and expressivity improvements.  No knowledge of category theory is required to understand the talk.   

  • Kotlin and Java - Better Together

    Thursday September, 14, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    0

    At Google I/O 2017, the Android team announced official first-class support for Kotlin. Kotlin, developed by JetBrains - the company behind the IntelliJ IDE, compiles to JVM bytecode. It has many characteristics that make it also a great fit for developing server-side applications, including Expressiveness, Scalability, Interoperability, Migration, Tooling, and Learning Curve.

    Kotlin is touted as being targeted at multiple platforms: JVM/Android, JavaScript, and Native (Linux, Mac OS, iOS).

    In this talk, we will dive into basic syntax fairly broadly though not in depth. Topics include:

    • Functions as expressions
    • Conditions as expressions
    • Nullable/non-nullable values and alternate idioms to ensure null safety
    • Type checks and automatic smart casts, safe casting
    • When-expressions ('when' improves on Java's 'switch' but can be an expression as well as a statement)
    • Ranges
    • Functional literals, aka lambda expressions -- time permitting
    • Closure
    • Classes and inheritance, Class properties; Visibility modifiers
    • Extensions to extend a class without having to inherit it

    My favorite features are Extensions, and Java Interoperability.Don't let only Google and Android developers have all the fun with Kotlin; find out for yourself what is all that jazz about Kotlin.

  • NFJS - Fall 2017

    Thursday August, 24, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    0

    Meeting content is being refined, but will essentially be a "mashup" of Craig's two NFJS sessions: Essential Spring Boot and Extreme Spring Boot. Until we have a consolidated summary for the NEJUG presentation, here are the descriptions of his two NFJS sessions:

    Essential Spring Boot: In this session, you'll learn how to streamline your Spring development utilizing the four essential features of Spring Boot: auto-configuration, starter dependencies, the Actuator, and the Spring Boot CLI.

    Extreme Spring Boot: In this session, you'll learn how to take your Spring Boot skills to the next level, applying the latest features of Spring Boot. Topics may include Spring Boot DevTools, configuration properties and profiles, customizing the Actuator, and crafting your own starters and auto-configuration.

  • Serious Professional Development – Phase 1 of 3

    Thursday June, 08, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    0

    There are many ways to structure knowledge, and many more ways to provide instruction. One of the simplest, oldest, and effective can be framed with three basic phases: (1) Know Where You Are, (2) Determine Where You Are Going, and (3) Plan How to Get There.

    In this meeting, Ron Peacetree will be kicking off a three-part presentation series, with Phase-2 sometime in the fall and Phase-3 early in the new year. We will be setting a foundation for the series this month with a highly interactive conversations about what we, the NEJUG membership, are actually experiencing in the workplace. 

    We will explore questions such as: 

    * What issues are we facing - personal, technical, managerial, cultural, etc?
    * What strategies are we using to address our “pain points”?
    * Where are we being successful, in both the large and small?

    Ron will guide the conversations, adding his own perspective where useful, but mostly drawing out and listening to our experiences. In this way, he will facilitate our collective sense of Knowing Where We Are. With that knowledge in hand, he will then develop the Phase-2 presentation to provide a clear and coherent vision of a place worth living in - a way of working and of managing our careers and personal growth that is worthy of our lives. In short, he will help us Determine Where We Are Going. Later, in Phase-3, he will discuss various strategies, techniques, and tools that will support an achievable Plan for How to Get There.

    After planning your work, you will be well prepared to take on Phase-4: Work Your Plan.

  • Career Management for Experienced Developers

    Thursday May, 11, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    0

    Everyone who's been in the industry for a few jobs and years knows the basics about hunting down that next posistion. This month's meeting is designed to provide you with a set of tools, techniques, strategies and resources that go beyond the "Bring a copy of your own resume" and "Always dress nice, even in a casual dress office" basics. As you can see from the sub-topic bullets, you will be getting more than new-graduate advice.

    • Be Your Own Recruiter
    • Networking - Not Just Being a Meeting Regular
    • Joining a Start-Up, Despite Family & Mortgage Obligations
    • Pro-Active Job Searches
    • The Inside Perspective - What's Important to HR

    We will follow our "standard" panel format: a series of 10-15 minute presentations, each focusing on one of the above topics. After the break, we will have a panel discussion where the speakers can add to (and challenge) each other, followed by an extended Q&A.

  • Organizing Your Code Using a DSL for Architecture Description

    Thursday April, 13, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    0

    The single best thing you can do for the long-term health, quality and maintainability of a non-trivial software system is to carefully manage and control the dependencies between its different elements and components by defining and enforcing an architectural blueprint over its lifetime. In the talk, we will introduce a domain specific language that was specifically developed for that purpose. You will be introduced to the key features of the language. Moreover, we will also have a look at some implementation details.

  • Concurrency then Lagom

    Thursday March, 09, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    1

    This meeting will cover two distinct topics:

    Various Concurrency Topics, by Nermin Šerifovic

    This talk will first cover some CPU and thread fundamentals, including thread pools and effects of blocking operations. It will then explore a few immutability concepts, such as mutable state and immutable data structures. We will discover how referential transparency lends itself to easy parallelization. Lastly, we will take a look at common impediments towards writing performant concurrent code.

    Lagom - An Introduction, by Morgan Creighton

    Lagom, an open source reactive microservice platform, is the subject of this presentation. We will review the (abbreviated) history of microservices, what "reactive" systems are, and how the Lagom platform brings those together to provide a powerful way to  build applications.

  • Special Topics in Java 8 (Snow Date)

    Wednesday February, 15, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    0

    This talk covers several issues related to the new functional changes in Java 8 and above. Topics will include:

     

    - Lazy Streams
    - Concurrency and parallel streams
    - Generics in the Java 8 API
    - Effective uses of "reduce"
    - Refactoring to Java 8

    If time allows, proper use of Optional, grouping and partitioning streams, downstream collectors, and features of the new Date-Time API will also be discussed.

  • ANTLR - Not Your Parent's Parser Generator

    Thursday January, 12, 2017 06:00 PM Constant Contact Reservoir Place 1601 Trapelo Road Waltham MA 021451
    1

    ANTLR (ANother Tool for Language Recognition) is a parser generator that is used in many tools and frameworks (Groovy, Hibernate, Clover, and more). Come learn about the the history of ANTLR, and how to start using ANTLR4 in your own Java projects.

    Do you remember Lex & Yacc from the “good old” C days? Perhaps you cut your parser-generator-teeth on Bison – or Frown, or Lemon, or PLY – or one of many others. Whatever you've used before, this meeting is the time to come up to speed on ANTLR. If you're like me, it's been many years since you've taken a serious look at grammars and parsing. In fact, the current trend is to develop so-called “DSL” libraries that make a carrier language read like different language – but that is all smoke and mirrors. A full DSL needs a parser, and a parser needs a parser generator.

    ANTLR is one of the more powerful generators available to the Java community. It's well grounded in theoretical computer science, is a mature tool with good IDE integration, and has a committed ecosystem. During this presentation, we will give a quick review of grammar specification, discuss lexical & parser technologies, and then go deeper into what differentiates ANTLR from the pack. Included in the presentation will be a review of working code and runtime demonstration of parsing in action – of an input source that you might find surprising, delightful, and (most importantly) useful in your day-to-day work.