Skip to main content

Three for the price of one

Few weeks ago in the middle of my summer vacation I had a sudden motivation spike when I was browsing my backlog/notepad (analog i.e. paper & pen) where I write down ideas or problems I'd like solve or try out at some point. Two items in the backlog caught my eye and those two produced a third idea in the form of this blog post.

Backlog items


On my backlog I had two separate items that caught my interest.

First item on backlog was a utility library for validating Finnish social security numbers (SSN, HeTu, henkilötunnus) and business identifications (y-tunnus). Both of these have predefined rules on how they are formed and I have implemented utilities for these same validations a few times in the past.
I have discussed about the need for these utilities many times and last time just before my summer vacation with my colleagues because these exact utilities don't exist in the public repositories or if they do we haven't found them and many of us had implemented these utilities several times.

Secondly I had a note that I should try to deploy a library to public Maven repository. This seemed like a idea that I really should and wanted to try out. I just didn't have a suitable library that I could apply to this but the first item provided a solution for that.

The identification validation library


I decided to implement the library with Java 8 for a few reasons. I work a lot with JVM languages so JVM seemed like a safe bet. Java is popular, people who work with any JVM language can use the same library. Despite of what JVM language one uses they can most likely understand Java and my code.

I'm not going to go through the simple code here but provide a link in the end of post where you can review the code yourself.

Publishing the library to public maven repository


I tried first a search with google and ended up having dozens of instructions on how to deploy to Sonatype OSS repository.

After a quick browse through the links I ended up following this blog post http://datumedge.blogspot.fi/2012/05/publishing-from-github-to-maven-central.html and Sonatype documentation http://central.sonatype.org/pages/ossrh-guide.html and from there to Maven specific documentation http://central.sonatype.org/pages/apache-maven.html.

In the end my pom.xml ended up looking a bit different than on the selected blog post but with it I can just issue a maven command mvn clean deploy and my library will be deployed to Sonatype's OSS repository.

Things to notice


Browsing through the documentation and trying to get the library published brought up a few things to remember.
- Make sure you have Sonatype JIRA credentials
- Create a new project ticket
 - Use a domain that you own or come up with a alternative solution

Creating the JIRA credentials isn't a big deal one just has to register to the Sonatype JIRA and verify that you have the same credentials on you Maven settings.xml.

Creating the project ticket is easy as the page http://central.sonatype.org/pages/ossrh-guide.html#create-a-ticket-with-sonatype has a direct link for that.
If you don't own a domain you can do as I did, use a maven group id of your github account e.g. com.github.jorilytter. Now that I have write permissions to my group id I can publish my libraries under all subgroups of that.

The code and the library


The code is available via my github account at https://github.com/jorilytter/finnish-identification-utils and the readme contains instructions on how to add the library as a dependency for your own project.

Final thoughts


Now that I have implemented the library and it's published to a public repository I hope that I can and remember to use it in future projects if needed and hopefully other developers find it and use it.

Now that I know how and have permissions to publish libraries to Sonatype's public Maven repository if I come up with ideas of other common libraries that could be useful I'll be publishing them.

Comments

Popular posts from this blog

Automated browser testing in 2018

Every now and then I do some research on browser testing. More specifically I try to find and evaluate what kind of ready to use solutions or libraries have emerged since my previous research or if some of the previously tested solutions has come up with something new.

Back in September 2017 I had some extra time on my hands and I used a couple of days to see what are the new and interesting solutions at that time. I came across some tools that I have used in the past and found two new interesting options in which one stood out.

Say hello to TestCafe
The most interesting solution that I found was called TestCafe. It's a open source Node.js library from a company called Developer Express Inc. They also have a commercial product called TestCafe (confusing) which I haven't tried as the open source library provided everything I was interested in and it seemed to be under active development.

The thing that caught my interest at first was that this library doesn't depend on WebDri…

Studying and developing as software development professional

As everybody in software development knows, or should know, that studying and experimenting is something one must do to stay on top of the game. That said this time I'm writing about my experiences and ideas of studying. In this post I'll be covering different methods of studying and how I feel about them and what other types of resources are available.

Reading a book Reading a book is probably the most traditional way of studying and I do read a few books every year. To me this is a way to learn theory and principles of something but usually little to nothing to do with the actual implementation. This type book I usually read in a week or two and I like these books when their length is reasonable somewhere between 50 and 250 pages.
Reading a book with exercises These are very common type of books in software development. These usually cover some theory and the exercises bring a pragramatic approach with what one can learn a basic implementation. Some of these books are good i…

DIY home automation v1

For years I've been interested in home automation. I've had remote controllable outlets from a few different manufacturers but I've never been quite satisfied with just the remote. What if I could control my outlets within my local network from any device, now that's something I wanted to have.

Controlling outlets from computer A few years back I bought a three pack of remote controllable nexa outlets. A while ago I discovered that another company manufactured a control unit that's plugged in to a USB port and best of all they provided linux software for it.

To make full use of these I'd need a computer that's always on and that's where I could make use of Raspberry Pi.

Setting up outlets
I had already set up my outlets with the remote that came in the retail pack just follow the manufacturer instructions.
It might be possible to configure the outlets completely via the software at least for some brands but I haven't tried it so I can't be sure.…