Tried to look into other alternatives for a desktop multi-platform application. In a very distant past I developed a bit in Java – so the first thing I wanted to see is the old good Swing. There was also a GUI builder in Netbeans IDE as I remembered – for sure this was updated since then, right? Having a visual GUI builder could be nice, it speeds up development quite a lot, no?
By “then” I mean early 2000’s, so roughly 20 years ago! (Time flies…)
And so, I’ve downloaded the latest version of now-Apache Netbeans 12.1 and fired a sample project called “GuiFormExamples”…
What can I say… this looks exactly like what should’ve been a new modern app built in 2001 for Windows XP 😁
Well, this doesn’t look very inspiring to me – some searching suggests that there are ways to squeeze more modern look and feel from Swing components, but I don’t know if it makes sense for me to invest more time in that. The attractive part of Electron was that it’s built on the web technologies that are useful anyway for a foreseeable future, because most of the application development is happening for the web anyway and I would like to refresh my knowledge of web development that’s starting to be a bit dated with me doing mostly infrastructure these days.
It looks like his project is going to be a classic case of “Yak Shaving” where I would need to go deeper yet, every time I need to advance. So far, to master Electron I’ll need to be at least half-knowledgeable in at least one web framework.
Still fighting with the tech stack selection – from my first noob looks, the Electron ecosystem seams somewhat sparse and lacking detailed successful tutorials. Especially for people developing on Windows.
Node.js is the main piece of the puzzle and this isn’t easy either. The versions are advancing very fast – even the LTS versions are created every year (twice as fast as Ubuntu for example). And the whole life of the Node.js LTS version from start to EOL is 2.5 years only.
A fun fact – current LTS as of today is 12.19, but the 14 LTS is starting in 5 days – should I wait? 😅
With this in mind, a need for easy version switch is there – and there is the project called “nvm” – that’s the Node version manager. The problem is, it doesn’t work on Windows that I wanted to use as my dev platform! An equivalent windows project exists, it’s called “nvm-windows” but it doesn’t work properly on my machine (and I see I’m not the only person who has the same problem, without clear resolution – the incidents are mostly closed by the project maintainers saying “check your windows security” – not terribly helpful). There is possibility apparently to develop in WSL, but again the problem is I don’t have WSL2, only WSL1 because my Windows build is too old. So basically I can’t use nvm or nvm-windows, so will have to stick to locally installed LTS Node.js and hope I don’t need to develop in different versions at the same time.
All of this isn’t very reassuring, I should’ve probably just go with JavaFX or .NET Core/C# – both have supported SDKs for OCI and much larger community support for desktop apps 😅.
In parallel with regular work, I’ve spent the week since last blog post trying to discover resources for electron.js development newbees.
The situation is “interesting”! On one side lots of simple easy to put in place “hello world” samples, on the other side a number of very advanced open source projects (like VSCode) but not much in between! It’s kind of assumed that the developer interested by Electron already has extensive full stack or front-end experience using popular frameworks like React or Vue. I am not such developer 😅. Back end – yes a bit, but front end – not so much!
Am I abandoning this idea – hell no! I’m searching and I’m looking and I will find a way.
2020 wasn’t an easy year! Forgive me if I wasn’t particularly active since April, lot’s of things happened that weren’t conductive to prolific blogging 🙂
I have an idea finally that I’d like to develop – this may change the blog’s subject a bit. I’d like to learn a new language or a framework while developing something useful at the same time. This something will be a file manager / file transfer client for OCI Object Storage.
So far I’m thinking to develop it as a cross platform GUI application, most probably using ElectronJS. Another somewhat close variant would be a plugin for VSCode – this should be simpler to develop in theory but I’m not really looking for simplicity, for the moment I’d like to treat this as a learning project. My Java Script / Type Script aren’t great, what’s better than something real to build – the best way to learn for me!
I’ve been using Cloud Shell a lot recently and found it very useful for many use cases. Preinstalled and preauthenticated cloud tools (OCI CLI, terraform, kubectl…), programming languages and simply its immediate availability at any time are great for occasional or not so occasional use!
The user directory is persistent as far as you log in at least once every 6 months – and this is great, but what if I want to get a clean brand new Cloud Shell like it was on the very first connection?
I prepare and conduct lots of training sessions, workshops and seminars where it can be useful to start from a clean slate to be sure I’m not relying on something that isn’t available to a regular new user – maybe I’ve installed some binary in the past or modified something, and my workshop is only “working” for me but not for everybody else?
The answer to this question is a little utility delivered in the Cloud Shell and called csreset.
This is written for those of us who’s interested by Kubernetes and would like to install and run it easily and cheaply anywhere. You may already know that installing and running a “full” Kubernetes all by yourself can be rather difficult, the learning curve is really steep.
There are many alternatives out there – one of the solutions to the complexity is subscribing to one of the managed Kubernetes offerings in the cloud, for example Oracle OKE. Rancher Labs came up with another interesting solution, modifying and considerably slimming down a standard distribution.
K3S is a lightweight Kubernetes distribution made by Rancher Labs, targeted to edge computing, IoT devices and ephemeral infrastructure deployments (for example created in CI/CD pipelines). It can run on Intel and ARM processors.
I would say it’s a great case for learning and development environments too. It even runs on Raspberry Pi! Should you run your critical production workloads in k3s? Not sure this is a good idea, Rancher certainly doesn’t position it like that.
In this article I’m going to describe the installation steps needed to install K3S on OCI in an Oracle Linux VM, but pretty much any cloud or local install will be very similar. Was it as easy as advertised? Keep reading 🙂
This is written for those of us who use Windows as their primary workstation but also like to have Linux readily available to them. I describe a minimal setup I recommend for OCI administration purposes.
While it’s almost always possible to develop or administer cloud infrastructure from Windows using its native command line or Powershell, most examples you’ll find out there on internet will be written with Linux or MacOS in mind. Especially when we’re talking about open source software! There are situations when you’ll be better served, spend less time tinkering or have better support if you’re able to use Linux. The fact is, knowing Linux today is pretty much an unavoidable necessity for a Cloud Architect, even if you were using Windows exclusively before and today are working with nothing but Azure!
As a Windows user, in the past you had to jump through few hoops to get access to Linux shell.
Before Windows 10, the options for running Linux locally on a Windows machine were the following:
Dual-boot between Windows and Linux (gah!)
Run Cygwin (collection of POSIX-compatible tools that offer a Linux-like environment).
Run Git Bash that includes a collection of Linux tools compiled to work on Windows. As most of us have Git for Windows installed anyway, the Git Bash will be already there in most cases.