Skip to main content

Posts

Spring Boot native builds when internet downloads are blocked made simple

 No direct access to the internet If you work at a company that controls their software bill of materials, it's quite common to be blocked from directly downloading from: Maven Central Docker hub GitHub (the public parts) Getting the bits Maven Maven is first, because without it, you won't be able to compile your Spring Boot application, let alone move on to turning it into a native docker image. I will be showing changes need to work with artifactory, but you should be able to adapt it to other mirror solutions.  repositories {   maven {     name = "central"     url = "https://artifactory.example.com/central"     credentials {       username = "${project.ext.properties.artifactory_username}"       password = "${project.ext.properties.artifactory_apikey}"     }   } } With this configuration change, you should be able to download your plugins and dependencies, allowing you to compile and ...
Recent posts

Kotlin Notebook when you're blocked from Maven Central

 TLDR; If you are blocked getting to maven central when first using Kotlin Notebooks because of company firewalls, you can use a tool like Fiddler Tool to redirect to a different network location. Kotlin Notebooks Kotlin Notebooks are a JDK based environment that brings the Python based Jupyter Notebooks  expressiveness to IntelliJ. From the blog post announcing the plugin, it looks like this: At home, the installation of jar files looked like this: I played around with it at home, but I couldn't use it at work.  Many companies, mine included, do not allow software components to be used when downloaded directly from the internet. In my companies case, we use a product called Artifactory, which allows you to mirror the content from Maven Central while still applying policies like CVE scanning, tracking, etc. The way it should work IntelliJ, as one of the leading IDE's, generally supports this quite well.  In fact, there is a whole setting page dedicated to dealing wi...

BSOD Unexpected Kernel Mode Trap

 BSOD In Windows, the blue screen of death is what is shown to users when the operating system encounters something it wasn't expecting so bad that it decides to just quit rather than attempting to continue operating. This isn't a single task that has failed, like Windows Explorer.  If that dies you lose the ability to interact with windows, but you can restart the process using keyboard shortcuts. The behavior My Windows 11 desktop had always been a little flaky, occasionally hanging every few weeks. It was annoying, but not enough to actually go through the effort to diagnose or re-install everything.  But after a recent patch Tuesday, the behavior had changed.  Rather than hanging, it started displaying a BSOD, rebooting and then running just fine. I also have three different accounts on my desktop: My standard, low permission account I use for day to day activities and development, games, etc. An Administrator account that is linked to my Microsoft account An Adm...

Mixing layers and a 1 character error

 I recently spent a great deal of time resolving an issue that was make much more difficult because the software architecture had chosen to mix different layers of responsibility. The Error [ActionsApi] [Get] entity conformance check failed: document of type class org.apache.openwhisk.core.entity.WhiskTrigger did not match expected type class org.apache.openwhisk.core.entity.WhistActionMetaData. o.a.c.c.Controller$ Huh?  What? This error came from a Kubernetes installation of OpenWhisk . Due to a configuration error, this installation was not running serverless actions correctly.  Because this was in a new environment, it was not possible to simply revert the changes I had made back to the previous version - it would not run in that configuration either, so I had to put a lot of effort into determining what had gone wrong. The database Serverless functions are stored in a CouchDB instance.  Because this was a new install, one avenue to explore was the possibility tha...

Active vs. Passive Log4jShell remediation

 Log4jShell  All computer professionals should be aware of the Log4jShell ( CVE-2021-44228 ) and it follow on defects.  There is no shortage of opinions and lessons to be be learned: The difficulty of performing safe interpretation The problems when assumptions are not clearly documented.  I, for one, was completely shocked to find out that a logging system would actually attempt to do variable substitution in an actual message. The difficulty of finding and resolving issues with such a common library that is not provided by an OS package manager. IT'S A LOG4J CHRISTMAS One of my favorite podcasts, Security Now - episode 850 , discussed an analysis by Google regarding the depth of log4j dependencies.  From the show notes : One contributing reason is because Log4j is, more often than not, an indirect dependency. Java libraries are built by writing some code which uses functions from other Java libraries, which are built by writing some code which uses functions f...

Catherine Ann (Shinn) Liptak 12/29/1930-8/7/2021

Catherine Ann (Shinn) Liptak Catherine Ann (Shinn) Liptak, age 90, passed away with family at her side at the Sunnyside Nursing Home in Cloquet, MN on August 7, 2021. She was born December 29th, 1930, in Hart, MI to Eleanor (Osborn) and Hyman Hubert Shinn. She graduated as Valedictorian from Hart High School in 1948; graduating with Honors from the University of Michigan in 1952, with a BA in English and Speech, followed by a Master’s in Library Science. Catherine taught at a number of schools in Michigan and Minnesota until meeting her husband John in 1963, settling in a lake home that John built on Bass Lake after their marriage in Hart, MI on July 25, 1964. She worked at the Virginia Public Library until her retirement in 1993.    One of the constants in Catherine’s life was her love for her family. She was always quick to share stories about her parents and sisters, growing up on Griswold Street, working at the family drive-in restaurant, and having fun with her cousins. C...

FizzBuzz - part 4

 This is no longer really about FizzBuzz At this point, we are not talking about a simple number generator, and if we ask people to pretend it's a "typical" enterprise web application, we can continue to talk with an applicant about what they know. Nothing runs in a vacuum Even with properly running FizzBuzz code, you still need to deploy it.  A simple deployment would look something like this: It's not a good idea to directly expose your application server, so a more limited device like a firewall, load balancer and a reverse proxy server in some combination generally sits in front of an application. Almost all enterprise applications will also need to store the results of their processing somewhere - otherwise why did we build this? A cloud and an on premise deployment have the some functionality.  At the heart of it, they differ in Who runs the component (vendor, customer or shared) What it's called Run in the face of adversity  An applicant should also be able...

FizzBuzz - part 3

 Team Lead  In part 2, I looked at the additional items you would look for in a FizzBuzz discussion for a lead developer.  Without getting too much into what job title means what, the next level up is a team lead. The road not yet discussed My discussion here isn't meant to be exhaustive, there are additional areas an interview can and should go; however, this one is really the last one that I think could possibly have source code up on a white board.  After this, I really think you should start using boxes and arrows. RTFM - Read the F*#cking Manual won't cut it When I started my career, you really could get by with your K&R C manual and the various man pages.  That really ended in my SunOS world (we hadn't converted to Solaris yet) when we started developing in X-Windows R4/Motif.  You really could not actually do your work without an O'Reilly set of books or the equivalent. Today, being able to not only code using a library or framework, but also dir...

FizzBuzz - part 2

 Lead Developer FizzBuzz In part 1 we went over a simple implementation of FizzBuzz.  Now we are going to advance to what I expect a lead developer would create. Job titles are tricky things.  I am not equating this with a job title, what I mean by a lead developer is that they could help a more junior developer develop a more complete solution. Unit Tests The first change is the addition of unit tests.  Developers will develop structurally different code if they are required to develop unit tests.  In order to test code correctly, you have to be able to expose the different facets of your creation.  This allows unit tests to be short and robust. package dev.boundary.waters.FizzBuzz; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; class FizzBuzzTest { @Test void test1() { FizzBuzz fb = new FizzBuzz(); assertEquals("1", fb.process(1), "failed for 1"); } @Test void test3() { FizzBuzz fb = new FizzBuzz();...

FizzBuzz - part 1

 What is FizzBuzz FizzBuzz is a simple programming exercise that is frequently used as a white board problem during interviews.  I, personally, have never used this problem or had anyone ask it of me during an interview so your mileage  may vary. I was inspired to write this sequence after getting Poly Bridge 2 as a Christmas gift.  As I was watching some of the truly intricate bridge designs on YouTube, I also ran across a FizzBuzz video (no, I have no idea why Google put them together as a recommendation).  What, I thought to myself, would happen if I took the simple FizzBuzz to the same levels as Tyler  and Arglin Kampling . I plan to discuss a progression of FizzBuzz from what I would expect from an entry level developer to an enterprise architect.  Since I'm playing both sides of this, I don't expect anyone else will make the same choices as I do - what's important is the journey. The initial solution : package dev.boundary.waters.FizzBuzz; import...

Are you technically ready for Cloud Native?

I'm going to focus on technical requirements in this blog.  That said, I do feel your organizational change is also a prerequisite  for you to be able to make such a transition effectively.  Cloud Native is About Culture, Not Containers  is a good starting place for looking at a transition from that point of view. A successful transition to a new deployment technology requires that everyone involved is ready for the changes necessary: The development team The quality assurance team The deployment team The platform team The operations team The facilities team The management team I'm not going to give advice on your organization's preparation, you know them better than I do and any advice would be speculative at best.  But there are a few structural boundaries that can be analyzed in order to determine if you have done the technical work.  I will be using kubernetes as an example deployment platform becau...