When I said, “I use Linux Mint as my main desktop at home.”, I was apparently and jokingly ridiculed by my colleague because “it’s for beginners.”
I used to like to use computers for the sake of using computers and I still do to a degree, but I don’t believe that using Linux Mint makes you a novice Linux user. There are so many configurations I don’t even have to deal with so that I can spend my time for better things like working on more useful software.
Let’s not categorize people who use certain distro as novice or advanced users. What’s important is what you do with the OSes.
I’ve always wanted to be a good engineer. I consider myself a “good enough” engineer but maybe not a good engineer yet. I’m going to list the qualities for good engineers below.
Respect for others
I’m sure someone can add more to this list but that’s what I think of right now. As I see them now, I am far from my ideal engineer…
One day, when I was watching a technical YouTube channel, this guy said that to be a good engineer, you have to be somewhat jerk. I guess he meant it takes being aggressive without a fear of hurting someone’s feelings to get things done, but I don’t really agree with him. I believe if you are a truly good engineer, your communication skill is very good to a point where you can nicely persuade your fellow engineers. I have met such engineers that I respect and keep in touch even now.
Technical skill is the most important one to be a good engineer but that’s not all that it takes. We are all humans before we are engineers. We ought to remember that.
I did some OS hopping in the past. I have been a long time Windows user and then I switched my home machine to Mac about a more than decade ago. Mac switch was just out of my curiosity as an engineer. I wanted to see what Steve Jobs and his people were secretly cooking. It took me about a year to get really familiarized with the environment and I’m glad I did.
On the side, I had been installing multiple Linux distros on my VMWare Fusion. I knew they were more than viable solutions, but I wasn’t so sure as a desktop OS. GNOME, Mate, KDE and there are multiple desktop environments in the Linux world but I wasn’t convinced to really switch.
As of now I have switched my main desktop environment to Linux Mint. I tried Ubuntu GNOME and Mate but I like Linux Mint better. I hear good things about Arch and some other distros but the main purpose me using my computer is coding not spending so much time just to get my environment up and running, so Linux Mint makes the most sense to me.
I love the UI and I’m pleasantly surprised by how sophisticated it is. Of course, a lot of core stuff inherits from Ubuntu which also inherits from Debian and without the “forked” projects, there wouldn’t be no Linux Mint. I think it’s the beauty of open source projects.
I have also installed VMWare Workstation Pro which allows me to host Windows and other OSes as necessary. I do have a Windows 10 VM up and running on it as I still need Windows for some things.
I spent pretty much the whole weekend to do my research and my experiments to create the environment. I’m quite happy with what I have got and excited to explore more in this environment.
If you are in tech industry, it’s hard not to use virtualization. If you are a little bit technically savvy, virtualization comes in really handy.
This post is a little bit of me just reminiscing the old days… Everything used to run on physical machines. I remember using Ghost for backing up computer images and restore them on physical machines. It’s still a viable solution but virtualization makes it so much easier.
If you want to save a state of a computer, just hit the “snapshot” button. You can always go back to where you were.
Now that I’m building an Ubuntu environment, I’m starting to use VMWare Workstation 15 Player. This is a free product for non-commercial use that allows you to create virtual machines. I had been a VMWare Fusion (for Mac) customer for more than 10 years so I thought I would give it a try and I’m happy I did. I may purchase a Pro version license down the road.
Though I love what Ubuntu (Canonical) has done for the Linux world and I want to use their environment as my main environment, I feel that I cannot give up Windows 100% because it’s still a defacto-standard OS and there are some applications that requires Windows 10. I should keep my option to be able to do things on Windows. VMWare totally makes it possible.
I’m trying to dual boot my main desktop at home. I want to use Ubuntu as my main desktop but I can’t totally give up Windows 10. I have been able to dual boot these 2 OSes but it took me a while to get my Archer T9UH to work on my Ubuntu so here we go.
As of today (2/1/2019), my Ubuntu version is the following.
In my previous post, I introduced a way to generate Java classes out of actual JSON data. This time, I will talk about how you can actually call Jenkins REST API and deserialize the data to usable objects.
Jenkins can give you the list of slave nodes in JSON format with the URL like the following.
When you hit the URL with your browser, it gives you the JSON data like the following.
public class JenkinsServer extends Base implements IJenkinsServer
public ComputerCollection getComputers(String Url) throws IOException
var client = new OkHttpClient();
var request = new Request.Builder()
var call = client.newCall(request);
var response = call.execute();
var mapper = new ObjectMapper();
return mapper.readValue(response.body().string(), ComputerCollection.class);
The function getComputers uses OkHttp. I looked around for HTTP client component and I think OkHttp feels more modern than other components. It basically gets the JSON data via HTTP GET call and the last line of the function deserializes the data. Imagine having to parse the JSON data and write the code to convert the data to Java objects… This is a very clean way of consuming REST API data.
If you take a look at the deserialized objects in IntelliJ, it looks like the following image. The data is cleanly mapped to the usable objects in memory.
If you just try this yourself, you might get authentication error. I haven’t gone through how to include authentication header in the code. I will post another article how to add authentication code. I will be basically modifying the getComputers function in this post.