Java Passion – Feeling the electricity? yes but only 12 volts of it…

In January I joined Jpassion.com. There were 2 reasons for this, one being I had previously used the service back in 2009 when it was run as JavaPassion.com. It was a Sun Microsystems sponsored service which suffered at the hands of the Oracles takeover. At that time I obtained 2 certificates in Javafx script and Java EE. I therefore knew the quality of the coursework was likely to be of a high standard.

The second reason was price. For a subscription of only $49 you get a clear set of courses you can complete. The current courses available are:

Each course is broken down into topics. For each of these there is a pdf presentation, a lab which includes a homework and a recording which is the pdf presentation and an audio track. The recordings are more than just a bland reading of the presentation. The speaker goes into each topic verbosely and other resources are referenced. All of the topics are set out well and I managed to bash through a number of these without a hitch.

You start to hit problems due to the age of some of the topics. The applets and Java web start are the  best examples of this. Very few projects use applets since they have been ripped out of most browsers (for very good reason). The Java web start was also a pain given that certificates are required to run them. You might say just add an exception. Unfortunately this does not work and though it is just about possible in windows, in Linux I just could not get it to work.

The OSGI topic also had versioning issues when using it in conjunction with the example maven projects. I ended up editing the manifest file in the jar to get OSGI to accept the example modules.

It would also be nice if there were some Java 9 and 10 courses that covered their new features, local var etc. Additionally the site design is a little tired.

It has to be emphasised that a year’s subscription is only $49 dollars and what you get is a wealth of knowledge here. Although it is little old in places, it is well worth a punt considering lots of people spend this on one night out or a week smoking.

Design Patterns & Good Practice

As part of refreshing my skills I have started a Jpassion.com course ‘Design Patterns’.

So I can practice what I am learning I decided to update an unfinished project titled WhitestarMediaLibrary (2009). It was originally for a DVR project as WINTV, at the time, was unreliable. This is not an issue since I moved to Linux and Mythtv does everything I want with the exception of the music library. The name Whitestar comes from the Babylon5 universe and all my media centre pc’s have carried the name, I am now on Whitestar9.

Anyway, this media manager is to have the following functions:

  • Manage 4 types of media; TV, Film, Music and Games
  • Pull metadata from the internet
  • Group classifications of genres. When I want to find Rock tracks I don’t want to search for every type of rock i.e soft metal, Hard Rock, thrash etc. I want to click on rock and it return all the tracks in that category.
  • Provide facilities such as playlist creation.

Below is a class diagram of the current implementation.

There are some classes missing here. In particular, extended Whitestarmedia classes for music and game that have been created with attributes specific to those types.

So to begin with,and for the next few posts, I will take this back to basics and review this project using SOLID principles (Single Responsibility Principle (SRP), Open Closed Design Principle,  Liskov Substitution Principle ,(LSP) Interface Segregation Principle, Dependency Inversion Principle).

Rest…When you don’t know where you are going any road will take you there.

I have taken some time to decide on where I should focus my energies. Learn a new language C++, C#, PHP? Given I have already invested a significant amount of time learning and creating programs in Java I have decided that, for now, I will stick with the Java eco system.

This leaves me with the next problem, what to focus on? The state of Java desktop is negligible, as far as I am aware it is not distributed now with  new PC’s.  The nightmare that was Java applets and how it has, rightfully, been kicked out of web browsers.  This leaves the realm of back-end server stuff.

The problem with this is I tend to learn by rote .I create programs I intend to use myself. So I need a trajectory which requires me to create something I could use or that someone else will use. i.e at my place of work. So the options I have thought of are:

  • I currently work in the NHS at a GP practice so I could create a comprehensive intranet site instead of the static one currently in place. Using a local PC as the server. For a practice of no more than 20 pcs the desktop machine should cope with the workload.
  • Create a service that allows me to access recordings, videos and music on a mythtv box from across the web.
  • Build the basic structure for a new clinical system.  The NHS currently uses EMIS Web (Egton) and System One (The Phoenix Project). Given the amount of frustration with the service provided by the current provider this is incredibly appealing and daunting in equal measure.
  • Do both the first and the second in this list.  Create a service that has a solid foundation for a practice intranet site. Then start to add facilities for patient documentation, management etc.

This last option is appealing as it would allow me the scope to create a replacement clinical system whilst knowing that, for the time being, its main purpose is to be a practice intranet site.  This leads me to my next choice, given it is a intranet site, it should lever the strengths of the web. i.e Rest.

I have had “REST in Practice: Hypermedia and Systems Architecture” by by Jim Webber , Savas Parastatidis and  Ian Robinson sitting on my shelf for a couple of years and, as I hate to waste anything, this is the way I am going to go.  In January I also signed up to Jpassion.com (see the upcoming post) which, although the site looks a little tired, it has some good content. It has a REST course.

So I will use both of these to start the MTMC intranet project (MTMC is the abreivation of the GP practice where I work).

It is now time to set sail, though all this floating about makes me sleep restlessly…