Junction Two Weeks Bi-weekly Review : Issue #005

First the bad news, then the good news! That’s the appropriate way to present it right?

Schedule Break on Junction (The bad news)

I’m taking a break on Junction for a few weeks to get some other projects off the ground. In a few weeks the plan is to swing back around to Junction and make some changes to the project, which might be pretty big changes, but I’ll leave those as a surprise for now. So right now there isn’t a whole lot of functional code base that is working, partly because Windows 8 and all has left me a little devoid of urgency. If somebody out there really wants to see Windows 8 have a Riak user interface and management tool let me know, maybe we can work out some new urgency on the project! 😉

JavaScript, Go, Training and Orchestrations (The good news)

Over the next few months I’m working on putting together a lot of content for several great companies. One you might have guessed if you’ve read the last few blog entries, “PIE’s Third Class, You Better Keep an Eye on These Companies…” and “Orchestrate.io, Stop Dealing With the Database Infrastructure!” specifically, is some content around what Orchestrate.io is doing. That’ll be coming up real soon, but more about that later.

I’ve just wrapped up my first Pluralsight course that will be available on Riak. I’ll be diving back into working on a course around Docker & Vagrant in the coming days. I’ll be posting some of the work as I go along, of course not the whole thing, but an idea of what the material will be.

There’s also a few more, undisclosed so far, companies I’ll be putting together some content for. Prospectively some content teams even, so if you’re interested in contributing (or working on as a paid consultant) ping me. I might just have some interesting work for you.

So with all that, I’ll have more updates, more coding mischievousness and content coming up in the days and months ahead. Cheers! -Adron

Orchestrate.io, Stop Dealing With the Database Infrastructure!

In this interview I talk to Matt Heitzenroder, Co-founder of Orchestrate.io and previous general manager of Basho Europe, data nerd and love of data types. In this video he talks about the data types, data structures, schema or schema-less options, graph, stores and other ideas behind Orchestrate.io. He also jumps into what exactly Orchestrate’s Mission is.

We also dive into some mentions around plans for geo, time series and what Orchestrate is doing with these data options. After a bit of high level discussion, Matt gives us some strategy and tactical around the plans for their involvement in the community, business domains and open source plans.

Close and important to my passions, we discuss some of the plans around what is coming down the pipe for open source involvement, how Orchestrate will fit into that and what code you’ll be seeing from the team.

https://vimeo.com/77274021

For a sneak peak of some of the open source coming your way check out and maybe even help out with Salter, now with more Go language oompf!  https://github.com/dizzyd/salter

That Was Fun, Done With The Lenovo Carbon X1, Back to GSD!

Over the last couple of months I’ve been double laptoping it. I’ve had a Lenovo Carbon X1 with Windows 8 and Ubuntu dual boot configuration with 8GB RAM, 256GB SSD and i7 and I had a Mac Book Air (MBA) 8GB, 512GB SSD and i7 Proc. The MBA was my primary work machine with the Lenovo being a secondary machine that I was using to test and build Windows 8 Applications and for building native Linux services and related code work.

Windows 8 Critique

Simply, Windows 8 is one of the most broken operating systems I’ve used since Windows ME. Forget Vista, I consider it officially dethroned. Let me clarify what is and isn’t horrible about Windows 8 though. It isn’t that it technically is a bad operating system, it’s that the idea and approach that Microsoft has taken is inherently flawed at several key points.

First, having a desktop on a tablet, which is almost impossible except for all but the finest of finger pointing tablet users, is blindingly stupid. Just go into any place where there is a Windows 8 tablet user and watch them whacking away when they get into the desktop.

The Windows 8 desktop on a tablet is patently absurd for the vast majority of potential Windows 8 users.

However, the straight Metro Interface of Windows 8 (which Microsoft now calls the Windows 8 interface because of legal reasons) is magnificent for tablet usage. There are a few major things that need fixed: responsiveness related to connection state, update status and the availability of high quality applications. Once those things are fixed Windows 8 will be as competent as iOS or Android in the usability department. Until then, it’s a nice dream, with a small number of usable apps with a huge potential.

Now the desktop is the tried and true classic desktop of Windows. Thus, when you’re on a desktop machine or a laptop with a dedicated pointing device or touch screen the back and forth is fine. Matter of fact it is great! I find myself using the touch screen regularly to do a number of tasks, and hope to see its use increase more and more on a number of platforms (yo Apple, got game on this yet or not, OS-X can definitely use a touch interface).

Overall though, Windows 8 – unless you solely do Windows 8 Development, is not a reason to buy a Lenovo X1 Carbon.

Ubuntu Critique

Minus the touch screen, which Ubuntu has no clue what to do with except treat it like a pointer, this is how you see the real power and beauty of the Lenovo X1 Carbon. Ubuntu loads 2x faster and shuts down 2x faster than Windows 8. Comparable builds in IntelliJ, C, C++, Erlang and other compilers are regularly 1.2-3x faster than on Windows. The servers that one would build against, such as GlassFish (see this for my latest on setting up GlassFish & Java 7) are also routinely faster, more responsive and less prone to difficulty than in Windows.

One of the problems that is ongoing, is it is hard to move to Ubuntu unless you are doing dev. Using Adobe tools is a non-starter, best to stick to slow Windows or get real fast using OS-X. Again though, if it runs on Windows and Linux, I’d take a safe guess that the Linux versions will be faster, probably more stable, and all around it’ll likely work better over time. There is something to that whole unix way about building things. One other big booster for Ubuntu, is writing JavaScript, which I do regularly these days is a much better experience than on Windows. I use standard tools, that usually are available on Windows, but launching Sublime 2 or WebStorm is just faster, noticeably, on Linux versus Windows 8 (or whatever version really).

So overall, if you’re going to get a Linux machine, the Lenovo X1 Carbon is a prime choice. If not one of the best. If I understand correctly, there may even be some solid Linux software out there that would make the touch screen more usable too. So if you’re adventurous you may be able to solve that one single issue that I had with Linux running on the X1.

Would I Give Up My Mac for the X1?

This is easy, the answer is absurdly simple. However I did give up the Mac Book Air I had in parallel with the Lenovo for several months, as it belonged to Basho (which I’ve departed from).

Hell no!!!

Matter of fact, even though I’ve used the laptop extensively with Ubuntu and Windows 8, I’ve just bought a new Mac Book Pro Retina 15″ to do all of my work with Ubuntu, Windows 8 and OS-X. The solidness of the MBP is untouchable compared to the X1. The screen is better, the keyboard is more consistent and easier to type on, the ghost tracking of the track pad is non-existent on the air, versus the X1 Carbon. In this case, I’d even turned off the trackpad entirely on the X1 Carbon. Simply, the X1 Carbon just doesn’t measure up to the Mac Book Pro.

Other observations I’ve made about the two machines. The Mac Book Pro is far more solid, the construction is just not even comparable. The X1 feels solid but compared to the MBP it feels cheap and flimsy. Considering the hardware works flawlessly with the software on the MBP is also no competition. The Carbon regularly needed driver updates, things would flake out and I’d have to restart. This would be prevalent in windows or linux, it didn’t matter. Fortunately a restart would fix it, but none of these issues exist on the MBP, using either OS-X or running a VM with Windows 8 or Ubuntu.

Also, even though the MBP design is over a year old now, the i7, 16 GB RAM and 512 GB SSD makes the X1 Carbon seem like a morbidly out of date, slow and antiquated device even though it is actually a newer device!

So, would I give up my mac for the X1?

Junction Two Weeks Bi-weekly Review : Issue #004 Tier 3 Pulls Into the Junction

Like any good open source project, a good continuous integration server is fundamental to a smooth workflow for everyone. I’ve always been a big advocate of Team City from JetBrains. With the versatility of the their build server it could be used for Junction and prospectively more in the future as projects started up and expanded. The only issue I ran into immediately was, where can I get some resources to run Team City on?

Immediately I pinged my friend Jared Wray @jaredwray over at Tier 3 to see if there might be some options. He immediately was into the idea, being interested in the Junction Project itself and an advocate of Riak himself it was a perfect fit. Jared ok’d and the Tier 3 team got some access setup to get a Team City build server running for the Junction Project.

I dove into setting up the build server at Tier 3 and as of this moment have a solid green light showing a good build! Thanks to Jared and the Tier 3 team for helping out, we’re all looking forward to slinging some code and getting a nice open source project in Junction.

Over the next few days I’ll also be providing a number of blog entries (the final touches are getting wrapped up right now!) on how I went about setting up Team City, server issues I ran into and the troubleshooting I did to get .NET 4.5 to work specifically for the Junction Application. In the end I’ve gotten a Windows 8 Store Application, using C# building successfully on Team City using NuGet and other key features.

For a quick how-to of setting up Team City check out “TeamCity Setup for Junction Build, Plus Implosions“.

For more information on the Junction Project check out “Windows 8 Logos, Badges, Splash Screens of Riak“, the “Introducing Junction” and “Junction Two Week on Tuesdays Bi-weekly Review : Issues #001“).

Glassfish, Java, JSF and Explorations of IntelliJ IDEA 13

I recently dove into working with some tooling at Jetbrains. The first thing I needed to take a dive into is the latest EAP of IntelliJ IDEA 13. If you do any sort of Java development you’ve definitely heard of IntelliJ, and if you work in other realms like C#, Node.js & JavaScript, Python or other languages you’ve likely heard of other Jetbrains tools like ReSharper, WebStorm or PHPStorm, Pycharm or a host of the other IDEs that they produce. A few ways to describe their product line; solid, quality, useful and kick ass. But I digress, here’s a run down of the look into IntelliJ IDEA 13.

Getting Something to Serve These Pages

Glassfish 4.0 is the latest and greatest of the Glassfish Server. I downloaded and got the server up and running to use as a base to do local development off of. I had installed Glassfish 3.1.2 but realized rapidly that it just wasn’t a good idea. Thus, a piece of advice, stick to Glassfish 4.

When installing Glassfish 4. I ran into a recurring problem, which is obviously recurring far beyond my use. The installer has the error trapped with an intelligent response.

Click for full size image.
Click for full size image.

So thus the Glassfish doesn’t understand where the default installation location is for the JRE. Thus you’ll likely have to help it out and provide it the path via the -j switch. Your path will likely look like this:

[sourcecode language=”bash”]
"C:\Users\you\Downloads\glassfish-4.0-windows.exe" -j "C:\Program Files\Java\jre7"
[/sourcecode]

Once that was taken care of Glassfish 4.0 installed just fine and I was on my way to some sample app building. On to that sample app building shortly, for now let’s talk about configuration of IntelliJ IDEA 13 to work with Glassfish as an application server and the respective bits to get going.

IntelliJ IDEA 13 Configuration

Once you have IntelliJ IDEA 13 open, create a new project.

Welcome Screen for IntelliJ IDEA 13. Click for full size image.
Welcome Screen for IntelliJ IDEA 13. Click for full size image.

Once you click that, pending you’ve already configured IntelliJ IDEA you’ll see a screen display as shown below. If you haven’t configured it already, I’ll go through how to configure things after project creation. That way one can double back and configure the applications you might have already started or pulled from git or something without Glassfish or other servers being setup.

Glassfish and other things, already setup, available for options during project creation. Click for full size image.
Glassfish and other things, already setup, available for options during project creation. Click for full size image.

Note the JavaEE Web Module selection, then set a project name, project location (or leave the default, it’ll fill in when you enter the project name), set the Project SDK. If one isn’t available you’ll need to setup the SDK via the New button. This will bring up a dialog that will allow you to point to the SDK path and IntelliJ will know which version is available. You can do this for additional versions also, but for this example I’ve just installed 1.7 and run with it. Next set the Application server to Glassfish 4.0.0. Next click on Finish, then you’re all set.

When setting up Glassfish a few other options I like to set are shown in the dialog below. This is my default Glassfish setup for Local development. I’ve set the default browser to launch after a build to Chrome. Set the application server to GlassFish 4.0.0. It might seem silly to have this selection on the GlassFish Server dialog, but when there are multiple versions available you may need to setup a different version for different configurations. Next, I often run the server locally without security username and password, so be sure to remove the admin username that is there for the default configuration.

Glassfish Local setup. Click for full size image.
Glassfish Local setup. Click for full size image.

One last thing that I do to myself when setting up JSF, is keep forgetting to add the appropriate option to GlassFish to run JSF Workflow Apps. To run these apps open up the application server configuration for glassfish itself and select the JSF framework library.

Selecting JSF. Click for full size image.
Selecting JSF. Click for full size image.

Now with the application created there is a list of files & libraries.

To the left you can view a number of files & libraries listed. Click for full size image.
To the left you can view a number of files & libraries listed. Click for full size image.

Just to make sure everything is wired up right and the application is able to run, double click on the index.jsp file and add some HTML content. I’ve set up my file like this just to get started.

[sourcecode language=”html”]
<%– Created by IntelliJ IDEA. –%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Octo Bear!</title>
</head>
<body>
<h1>Bears!</h1>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla at iaculis eros. Cras eget aliquam mi, ut suscipit
arcu. Suspendisse accumsan auctor tellus in condimentum. Integer interdum a neque eget pharetra. Mauris nec dolor
ipsum. Quisque quis fermentum lorem. Sed tempor egestas dui, sed bibendum justo vulputate eget. Pellentesque tempus
auctor tellus id aliquam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat leo, pharetra eget
convallis ut, interdum et eros. Morbi in tortor id tellus tristique aliquet at non urna. Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpis egestas.</p>
</body>
</html>
[/sourcecode]

Now click on the run button in the top right corner of IntelliJ. You might hit this error if you’ve just installed Glassfish and moved straight to creating the project.

Running the new project immediately after installing Glassfish.
Running the new project immediately after installing Glassfish.

Open up a browser and navigate to http://localhost:4848/ to bring up the administration page for Glassfish 4.0.

Glassfish 4.0 Administration site. (click for full size image)
Glassfish 4.0 Administration site. (click for full size image)

Click on the server (Admin server) section that’s pointed to in the image above. A page will display that has a button to stop the Glassfish server. Click on stop and that will enable IntelliJ to take over and run the server instead. You’ll want IntelliJ to do this as it will manage the restart, redeploy, update of classes and resources during coding & running the web application. This is much easier than attempting to attach or otherwise manage the server during development.

That’s just a few of the tips and tricks to getting started with the latest IntelliJ IDEA 13 EAP IDE for Java. In my next article I’m going to dive into a few of IntelliJ IDEA 13’s newest features for JSF Workflow Faces Applications.