Tools

Episode 100. To the CLOUD… Which one? All of them!

Yeah! so we have been working with the cloud for a while, terms like K8s, EC2, Route53, BlobData, CLI has been swinged around… and is a little mysterious, and sometimes looks like a black box where you just click buttons, add things, type commands, until it finally something good happens. But if something bad happens, we tend not to have the slightest idea on why!

Never fear, on this episode of PubHouse we start from the very beginning on describing (And dismantling) what the “Cloud” really is… Starting on how we got there, what are the different “components” of most clouds, and how to reason about them.

This way, the next time something unpredictable happens, you will know exactly where to start troubleshooting and how to navigate this space! This is the first episode of a series (probably a series of 2) on Cloud technologies. So if you never been exposed to the cloud and you’re curious, or even if you’ve been working on it but everything sounds mysterious, then dive in!


We thank DataDogHQ for sponsoring this podcast episode

Don’t forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

Intro to AWS
https://docs.aws.amazon.com/whitepapers/latest/aws-overview/introduction.html

What is Elastic Load Balancing
https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html

What is Amazon Route 53
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html

EC2 vs ECS vs Lambda
https://www.cloudzero.com/blog/ecs-vs-ec2

Intro to Azure Fundamentals
https://docs.microsoft.com/en-us/learn/modules/intro-to-azure-fundamentals/

Azure Containter Registry
https://azure.microsoft.com/en-us/services/container-registry/#features

Azure Compute
https://azure.microsoft.com/en-us/services/virtual-machines/#overview

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

Episode 96. Watching Metrics w/Micrometer and Statsd

You’ll run it everywhere there’s a production system. Some kind of Metrics collector like Statsd or InfluxDB. They work like magic, reporting on the health of your application. but how does it really happen?

We dive in on how these Application Performance Management tools work and how do they really “see into” your application. We demistify all this magic, and actually describe how to add “new” metrics and how to publish it!

If you ever worked in a production application, and were wondering how do these metrics get graphed and collected, well, wonder-no-more! We go deep into Micrometer (the SLF4J of Metrics) and how it all works!

http://www.javaoffheap.com/datadog
We thank DataDogHQ for sponsoring this podcast episode

http://www.javaoffheap.com/datadog
We thank DataDogHQ for sponsoring this podcast episode

Don’t forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

Micrometer
https://micrometer.io/

Creating Meters
https://micrometer.io/docs/concepts#_meters

Spring Boot and Micrometer
https://spring.io/blog/2018/03/16/micrometer-spring-boot-2-s-new-application-metrics-collector

Statsd
https://github.com/statsd/statsd

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

Episode 95. Ludicruos speed! Practical GraalVM

So we had a previous episode where we show a party trick with GraalVM, where we saw how to create a Native Image. It was really the “hello world” of Native image creation, so Bob decided that’s not good enough!

In this epidose we dive a little deeper on how to actually run your Restful Web service (or other app) natively, going through the exercise of debugging GraalVM builds including adding Maven plugins, finding out how to quelch the different reflection errors and how to deal with resources (and those pesky JNI / so libs).

In all, this is more of actually a practical use of GraalVM, not just a “it can do it”, but more, how is it done. So want ludicruos startup speed and performance? then press play and listen!

http://www.javaoffheap.com/datadog
We thank DataDogHQ for sponsoring this podcast episode

GraalVM Native Image Options
https://www.graalvm.org/reference-manual/native-image/Options/

Maven GraalVM Native Image Plugin
https://www.graalvm.org/reference-manual/native-image/NativeImageMavenPlugin/

Apache HttpComponents
http://hc.apache.org/

https://www.graalvm.org/docs/getting-started/linux/

GraalVM Resources
https://www.graalvm.org/reference-manual/native-image/Resources/

Build Configuration
https://www.graalvm.org/reference-manual/native-image/BuildConfiguration/

GraalVM Example Code
https://github.com/bobpaulin/javapubhouse-graal-episode/
https://github.com/bobpaulin/opencv-1/tree/feature/add-native-image

GraalVM Native Image InvalidAlgorithmParameterException
https://github.com/oracle/graal/issues/768

Don’t forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

Episode 94. Oh, put on your hat Dr. Watson, we are sleuthing this Heap Dump

So it happens. Sometimes a Java program just “dies” with the dreaded Out-of-memory Exception. Sometimes, it leaves behind a “heap dump”, or a copy of what the Java program had in memory when just before it throw the Out-of-memory exception. For some devs, a heap dump is stressful, because they think is a black box with only mysteries, but we are here to calm your fears!

In this episode we show how Heap dumps are your friends! If you happen to have one, then is almost assured that you can find what caused the out-of-memory, and/or you can “see” what the real values of configuration were. For troubleshooting a production incident, a heap dump becomes invaluable since “nothing” hides from it. Doesn’t matter where the code came from, a heap dump will have exactly what each variable was holding and who might be responsible for a memory leak!

“Memory leak you say? I thought java didn’t have memory leaks!”. Well, that’s the other part of this episode where we discuss while Java has way less worries than (say c++) on allocating and deallocating memory, you can still create Memory leaks by having strong referenced objects that are never removed (and if that sounded like mumbo jumbo, even a better excuse to listen to this episode)

So, we survived 2020. Take a listen to this end-of-the-year episode, and be even more ready for whatever 2021 throws at us!

We thank DataDogHQ for sponsoring this podcast episode

Don’t forget to SUBSCRIBE to our cool NewsCast OffHeap!
http://www.javaoffheap.com/

How to capture a Heap Dump
https://www.baeldung.com/java-heap-dump-capture

Eclipse Memory Analyzer
https://www.eclipse.org/mat/

VisualVM
https://visualvm.github.io/

Do you like the episodes? Want more? Help us out! Buy us a beer!
https://www.javapubhouse.com/beer

And Follow us!
https://www.twitter.com/javapubhouse

Episode 89. Kubernetes! (Oh container orchestration)

You heard it going around, everybody is talking about Kubernetes, and Minikube, when using Docker, and CLI. It’s like a foreign language! While we know Java very well, with the advent of Devops, we are supposed to be Deployers, and Scalability Experts. Well, once you start going down this episode you’ll become the DevOps Hero your company was waiting for!

Kubernetes is interesting because is a technology that matured almost in tandem with Docker. But Kubernetes is not Docker…Instead Kubernetes manages Docker Containers (among other things). So if you’ve been wondering what exactly it is? and were afraid (or just didn’t know where to start), well, fear no more! We’ll unveil all the Kubernetes mysteries

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!



We thank DataDogHQ for sponsoring this podcast episode and providing our Guest Speaker!

DataDog Logo
Don’t forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!


And Follow us! @javapubhouse and @fguime and @bobpaulin

Episode 88. Logging! (An Interview w/Renaud from DataDog)

One of the first things that you learn to appreciate when you transition programming from hobby to a way of life is to find a good way to troubleshoot problems. Most of the time this means logging and monitoring, so for this episode we decided to interview Renaud Boutet who is DataDog’s VP of Product Manager, and don’t worry, he’s really a developer that went to the “Management” (i.e. dark) side, so he knows what he’s talking about!

Diving into topics from Logging Frameworks, to MDC, to a discussion of the three pillars of observability (Metrics, Traces, and Logs), this episode have good advice for everyone. From your first System.out.println (“I’m here”) to your slf4j with MDC setup, you’ll sure learn new tips and tricks!

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!



We thank DataDogHQ for sponsoring this podcast episode and providing our Guest Speaker!

DataDog Logo
Don’t forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!


And Follow us! @javapubhouse and @fguime and @bobpaulin

Episode 86. Move Over Slow Startup times, GraalVM…IS…HERE. (and cross-language support, and less memory footprint…)

Oh my! This episode is going to be one of our favorites. There are times where the Java ecosystem delivers something incredibly interesting (InvokeDynamic, Lambdas, Streams, Kotlin), and this episode is one of those! You may have heard it mentioned around the interwebs or conferences (this new GraalVM thing)… well, it’s here to stay and is propelling JVM languages to a whole new level of interoperatibility and performance!

So GraalVM at the very high-level view is a “Java Virtual Machine” (in reality there’s much more to it, but we can at least start there). It provides tons of interesting features, like the ability to not only compile Java/JVM languages, but also Javascript, LLVM Languages (like C++), Python, R (and is expanding to others), and more importantly, interoperatibility between all these languages.

But the bee’s knees (or the most interesting fact) is that GraalVM also have the “Native Image”, which allows you to completely bake in a Linux (more platforms coming) binary straight up from your source code. The Native Image doesn’t require Java to be installed, and you can start your application as you would any other Linux executable. The most impressive part? Startup times are incredibly fast!

So we have usually addressed tons of misinformed myths of the Java language like “It’s slow:” (No, not really), or “You can code more performant code in C++” (possibly, but you have to be an expert to squeeze more performance than the JVM’s JIT compiler). But one area that the claim has held true is that “Java has slow startup times”. And (it used to be) true! Because of the dynamic classloading that Java supports, it’s very hard for the JVM to startup fast. For long running applications this is usually not a problem, even so, for the new Cloud folks (and Lambdas, and AutoScaling Groups), fast startup time is a “thing”. And so, with GraalVM (with some caveats) we are conquering one of the last arguments against the JVM languages.

In all, THIS is the episode to listen this year. It’s exciting, new technology that we could really spin up and use. Let’s have fun programming again with GraalVM.

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!



We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo
Don’t forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!


And Follow us! @javapubhouse and @fguime and @bobpaulin

Episode 85. Monitor the World with JMX!

There are technologies that sometimes are forgotten in a lonely corner, but that actually are quite sturdy. One of these is the All-Powerful Java Management Extensions (also known as JMX). With JMX you can actually expose a lot of metrics of your application and TONS of libraries use it “out of the box”. Libraries like Tomcat, JVM, ActiveMQ, Spring (and ton others) exposes their metrics through JMX. And you can too!

In this episode we go over how to both consume JMX metrics (through JConsole, or statsD, or other Performance Monitoring Tools), and how to produce them as well (By creating your own MBeans), not only that, but we also go with how to be able to “invoke” these on a live application. Have you ever wanted to say “Oh my, I wish I could call this method while the program is running in production ‘At will'”. Well, with MBeans, you can make that happen! Not only that, but if you really want to you can also expose your MBeans through a Rest Endpoint with Jolokia.

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!



We thank DataDogHQ for sponsoring this podcast episode

DataDog Logo

We also thank OverOps for sponsoring this podcast episode

OverOps Logo
Don’t forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!


And Follow us! @javapubhouse and @fguime and @bobpaulin

Episode 80. Ah, Maven Archetypes… it’s gonna get META

Nothing like a cold chilly day to stay inside and program some more. Before you start that new project from scratch, let’s go over a pretty cool feature of Maven. Maven Archetypes! Learn how to create “project templates” for your new maven project… or better yet, use one of the predefined maven archetypes already out there.

We go over how easy is to create your own, and over the flexibility on the things you can do! Are you trying to get all your development teams to start with the same libraries, support, or template? Are you using maven? Then the answer is easy. Create an archetype for them! Come and take a listen as we use Maven to create Maven Template for new Maven projects.

FOLLOW US JavaPubHouse on twitter! Where we will be sharing new tech news, and tutorials!

We also have been revamping our site so go there, take a look, listen to old episodes, or search them!



We thank DataDogHQ for sponsoring this podcast episode




Don’t forget to SUBSCRIBE to our cool NewsCast! Java Off Heap



Do you like the episodes? Want more? Help us out! Buy us a beer!


And Follow us! @javapubhouse and @fguime and @bobpaulin

Episode 60. All your Containers Are Belong to Us (An intro to Docker)

So you have heard about it, and probably ran into it already. Docker is a super cool tech that let us create / manage and deploy applications (It is really what would come out if Devs and Ops decided to have a kid). Come hear how you can too master the art of Docker, and more importantly why is it so “accepted” and revered.

A Big Thanks to LaunchDarkly for sponsoring our podcast! Feature flagging is easy, feature flag management is hard. What LaunchDarkly has done is essentially take a system like Google or Facebook has made in-house and bring this to the masses. With features like percentage rollouts, audit logging, and flag statuses, teams have complete control over features at scale. When you effectively separate business logic from code, you can build better software, faster without the risk

Don’t forget to SUBSCRIBE to our cool new NewsCast!
Java Off Heap

 

Do you like the episodes? Want more? Help us out! Buy us a beer!