Validating OAS 3 specification in your CI build

As part of my work on standards under GA4GH, I frequently deal with API specifications, most often written in OpenAPI 3 (OAS 3). The setup is always similar – there’s a public GitHub repository containing an OAS 3 YAML file and a few common auxiliary files (.gitignore, LICENSE, CONTRIBUTING.md, and README.md). Reference implementations of the specifications and other tools live... Read more about Validating OAS 3 specification in your CI build

Obtaining a URL to a file in a GitHub repository in a Travis CI build

I’m a fan of Travis CI and use it for continuous integration across pretty much all my open-source projects on GitHub. From time to time, I need to obtain a URL to a file in the repository in my build, e.g. to point a particular tool to it, in a way that respects branches as well as pull requests from... Read more about Obtaining a URL to a file in a GitHub repository in a Travis CI build

Devops CI GitHub Travis Reading time: ~1 minute

Building a global search engine for genetic data at DevTO

DevTO is a popular meetup for software developers in Toronto. Attended by over 100 developers on the last Monday of each month, the group features two 20-minute presentations on various topics from the industry, accompanied by food, drinks and networking. On April 30, Wealthsimple hosted the event celebrating the 7th anniversary of DevTO. I was invited to give a talk... Read more about Building a global search engine for genetic data at DevTO

Beacon Network Beacon DevTO Talk Reading time: ~1 minute

Java 9 at Java With The Best 2018

Java With The Best is a new Java conference in a series of developer conferences powered by BeMyApp. There are 2 main properties that differentiate this event from other conferences you may have attended – everything takes place online, without a physical venue, and attendees can book virtual 1-1 sessions with the speakers. The event featured 58 talks in 3... Read more about Java 9 at Java With The Best 2018

Java Java 9 Java With The Best Talk Reading time: ~3 minutes

Beacon Network at Index San Francisco 2018

In the previous post, we talked about one of the talks I gave at the Index Developer Conference last week. In this post, we share the materials from the other one, titled How we built a global search engine for genetic data. The session was scheduled in the Real-life production deployments track. Unlike the talks I usually give, this was... Read more about Beacon Network at Index San Francisco 2018

Beacon Network Beacon Index Talk Reading time: ~1 minute

Exploring Java 9 at Index San Francisco 2018

Index Developer Conference is a new conference organized by IBM to promote software development as a craft. The event took place at the Moscone Center, San Francisco, a popular software conference venue, on February 20-22, 2018. This was my first conference of the year and I was very excited about being invited to give 2 talks in 2 different tracks... Read more about Exploring Java 9 at Index San Francisco 2018

Java Java 9 Index Talk Reading time: ~1 minute

My talk for the Singapore Java User Group

Huge thanks to the Singapore Java User Group for having me as a speaker at their first event of 2018, Pivotal for hosting the event and providing pizza and drinks, as well as all the attendees for finding the time, all the positive feedback and good questions! Despite taking place early in the new year, the event was very well-attended,... Read more about My talk for the Singapore Java User Group

Java Java 9 SINGAJUG Talk Reading time: ~1 minute

Java 9: Convenience factory methods for collections

In the previous post in the Java 9 series, we’ve introduced a new tool in the JDK toolbox – JShell. In this post, we’ll use JShell to showcase another useful feature in Java 9 – convenience factory methods for collections. Thanks to JEP 269, Java 9 makes it really easy to create small, immutable collections, which was relatively tedious to... Read more about Java 9: Convenience factory methods for collections

Java 9 Java Reading time: ~3 minutes

My talk at TJUG

Last week, I had the opportunity to speak at the Toronto Java Users Group (TJUG). We had a full house, and overall great feedback – thank you, TJUG, for having me! TJUG is a meetup for Java practitioners covering the latest and greatest things in the Java ecosystem. It’s a monthly event taking place on the last Thursday of every... Read more about My talk at TJUG

JShell Java Java 9 TJUG Talk Reading time: ~1 minute

My talk at FSTOCO 2017

FSTOCO is a Toronto-based full-stack software conference focused on web development. It’s a 3-day annual event featuring more than 40 talks and speakers in 3 parallel tracks – client side, server side, and UX – with a few exceptions covering things like team skills and Blockchain. This year was my first time attending, and I was fortunate enough to come... Read more about My talk at FSTOCO 2017

JShell Java Java 9 FSTOCO Conference Talk Reading time: ~1 minute

Java 9: JShell

JDK 9 is finally here. Let’s talk about it. This is the first post in the Java 9 series, which covers various new features in the latest release of the JDK. We’ll start with an exciting new tool – JShell. JShell, described in detail in JEP 222, is Java’s implementation of REPL, Read-Eval-Print-Loop. It’s a tool that loops, continually reads... Read more about Java 9: JShell

JShell Java 9 Java Reading time: ~3 minutes

Editing modes and shortcuts in JBoss CLI

JBoss CLI is built on top of Æsh (Another Extendable SHell). As such, the CLI inherits many features of Æsh, including its line editing mechanisms. Æsh implements the majority of Readline functions for use by applications allowing users to edit commands as they’re entered, and provides additional features on top of these functions, such as advanced command creation and line... Read more about Editing modes and shortcuts in JBoss CLI

WildFly JBoss CLI JBoss Java EE Java Reading time: ~3 minutes

Aliases in JBoss CLI

JBoss CLI uses many concepts known from standard Unix shells, such as Bash. These include the way variables are handled and how they can be used to store actions (commands and operations). In interactive CLI sessions, however, there is a better way of referring to actions – shell-like aliases managed via alias and unalias commands. To a certain extent, alias... Read more about Aliases in JBoss CLI

WildFly JBoss CLI JBoss Java EE Java Reading time: ~2 minutes

Variables in JBoss CLI

In Using environment variables in JBoss CLI, we described how to pass environment variables to CLI scripts. This brings us to a related concept – not unlike Unix shells, CLI also allows us to define variables for use inside scripts and interactive sessions. The basic commands for defining and undefining variables are set and unset, respectively. The $ symbol can... Read more about Variables in JBoss CLI

WildFly JBoss CLI JBoss Java EE Java Reading time: ~1 minute

Using environment variables in JBoss CLI

If you’re used to automating WildFly configuration with its CLI, you’ve probably faced the need for passing parameters to your scripts. In the era of Docker, which is a common way to distribute and run WildFly, things are usually passed around through environment variables. In this post, we’ll show how to get environment variables into CLI scripts. By default, the... Read more about Using environment variables in JBoss CLI

WildFly JBoss CLI JBoss Java EE Java Reading time: ~2 minutes

Secure database connection with WildFly

Security should be a priority for any application and there is rarely a reason not to encrypt the connection between the server and the database. Unfortunately, seeing an encrypted setup in practice is more the exception that the rule, probably partially due to the complexity associated with the setup. With an unencrypted connection, anyone with access to the network can... Read more about Secure database connection with WildFly

Continuous integration for LaTeX

Continuous integration is a necessary part of modern software development and you should take advantage of it in all your projects. The includes the LaTeX ones, which are often overlooked. For example, on GitHub, you can easily set up testing environment using Travis CI. Even if you always compile your documents locally, errors might slip through, particularly if you use... Read more about Continuous integration for LaTeX

TeX LaTeX CI Travis CI Reading time: ~1 minute

Interesting software development resources

In a previous post, I described the first session I hosted at this year’s GSoC Mentor Summit, an unconference wrapping up the Google Summer of Code (GSoC) program. This post summarizes my second session titled Interesting software development resources. The goal of this session was simple – get a group of developers in a room, let them describe what they’re... Read more about Interesting software development resources

Java GSoC GSoC 2016 Conference Reading time: ~1 minute

Useful libraries for Java developers

Google Summer of Code (GSoC) is a global program run by Google, the objective of which is to get university and college students involved in open-source development. Every year, Google pairs mentors from over 100 organizations with over 1000 students to work on three-month open-source programming assignments. Once the program is done, mentors are invited to GSoC Mentor Summit, an... Read more about Useful libraries for Java developers

Java GSoC GSoC 2016 Conference Reading time: ~2 minutes

Beacon poster at GA4GH Plenary 2016

This year’s Global Alliance for Genomics and Health (GA4GH) Plenary meeting in Vancouver featured introductory posters for various Global Alliance projects and initiatives. The Beacon Project was one of them. If you couldn’t attend, check out the poster here: Beacon: A Protocol for Federated Discovery and Sharing of Genomic Data from Miro Cupak Feel free to download the PDF or... Read more about Beacon poster at GA4GH Plenary 2016

Beacon GA4GH Plenary 2016 Conference Reading time: ~1 minute

Beacon technical talks at GA4GH Plenary 2016

The most recent Global Alliance for Genomics and Health (GA4GH) Plenary meeting ended a couple of days ago. This time, it took place in Vancouver, just before ASHG 2016 (Oct 16-18). As always, the meeting was organized very well (huge thanks to everybody involved), and successful in advancing GA4GH projects, as well as introducing new people to the initiatives. The... Read more about Beacon technical talks at GA4GH Plenary 2016

JavaOne 2016: Day 2

Day 2 of JavaOne 2016 started early again and was primarily focused on microservices in my case. Session 1: Operational excellence with Netflix Hystrix Hystrix is a latency and fault tolerance library from Netflix known for its circuit breaker implementation. This hands-on tutorial session described lessons learned from preventing cascading failures in a distributed system consisting of many services. The... Read more about JavaOne 2016: Day 2

Java JavaOne Conference Reading time: ~6 minutes

JavaOne 2016: Day 1

Day 1 of JavaOne 2016 was packed with great content. I started it with an early 2-hour tutorial session focused on microservices. Session 1: Introduction to microservices in Java Jason Swartz gave the first session of the day. Although categorized as a tutorial, the session turn out to be in a pretty standard slide-based format with basically no hands-on work.... Read more about JavaOne 2016: Day 1

Java JavaOne Conference Reading time: ~4 minutes

Logging requests with Undertow

If you develop Java EE web services, I’m sure you’ve found yourself in a situation when you’d like to see HTTP requests coming to your application for a moment in order to help you debug an issue. Sure, you could extend ContainerRequestFilter and write a nice logging filter based on JAX-RS, but you just need something temporarily to help you... Read more about Logging requests with Undertow

Undertow WildFly Logging JBoss CLI JBoss Java EE Java Reading time: ~1 minute

Configuring a datasource on WildFly

No matter how you’re running your application server, one of the first configuration changes you do is likely the addition of a datasource. In this post, we show how to do it with CLI on WildFly, using MySQL. The examples in this post assume there is a WildFly instance running on its default localhost:8080 and the management interface is listening... Read more about Configuring a datasource on WildFly

WildFly JBoss CLI JBoss Java EE Java Database MySQL Reading time: ~1 minute

Securing web applications with Keycloak and CLI

Keycloak is a great open-source authentication (now also authorization/access control) server particularly suited for applications consisting of many (micro)services. To make it easier to secure applications on WildFly and other runtimes, Keycloak comes with OpenID Connect and SAML 2.0 adapters. More information on adapter installation and configuration can be found in Keycloak’s documentation. WildFly adapter offers you 2 ways of... Read more about Securing web applications with Keycloak and CLI

Keycloak WildFly JBoss CLI JBoss Java EE Java Reading time: ~2 minutes

Enabling long deployments on WildFly

By default, WildFly has a 5-minute timeout for application deployment. This might not be enough for some enterprise applications, or if your application executes some lengthy operation during deployment, for example upon database initialization. In cases like these, you might see the following error in the log of your server: 400: Invalid request To increase the timeout, there are 2... Read more about Enabling long deployments on WildFly

WildFly JBoss CLI JBoss Java EE Java Reading time: ~1 minute

Duplicate services and the POJO subsystem in WildFly

If you’re developing a Java EE application consisting of several (micro)services, building with Maven, and deploying to WildFly, odds are you’ve seen the following line in the server log when the deployment of your application failed: 400: Invalid request Diagnosing the cause and fixing this issue can be a bit tricky and you need to have a firm grasp of... Read more about Duplicate services and the POJO subsystem in WildFly

WildFly POJO JBoss CLI JBoss Java EE Java Reading time: ~2 minutes

Configuring WildFly behind a reverse proxy with TLS

In practice, I typically find myself running WildFly behind an Apache reverse proxy. While configuring Apache is easy, I found the corresponding setup for WildFly hard to find in the depths of its documentation. Simply putting your installation behind the proxy is not enough, you need to perform additional configuration steps to ensure things like UriInfo in JAX-RS work correctly.... Read more about Configuring WildFly behind a reverse proxy with TLS

Setting up an open blog for free

As a developer, I come across technical challenges on a daily basis. Some are complex, but many of them are simple to implement once you take the initial time to figure out how things work. A while ago, I decided it would be a good idea to start writing down the solutions to this type of problems, not only to... Read more about Setting up an open blog for free