Posts

Showing posts from August, 2021

8 bits of history: My first game is still available on the internet

Image
Smackeyackys excellent adventure I was somewhere around eight or nine when the 8 bit era of personal computers started getting into action. Of course down in Australia, everything was 2 years behind what was happening in the US. My first real experience of computers wasn't a fat minicomputer over an acoustic coupler, or an S100 based Altair clone, it was "Space Invaders" in the form of a cocktail cabinet at the local sports club. I was fascinated with it, and when the local Tandy stores started stocking TRS-80s and rich friends houses started getting Apple II's I blagged as much keyboard time as I could, either hanging out in the shops or fiddling around until my friends parents kicked me out. Magazines became an expensive hobby if you didn't have your own microcomputer. Eventually, a Microbee was purchased for our household and I promptly lost myself in it. Image By Suzy Jackson (Suzyj (talk)) (Transfered byArosio Stefano/Original uploaded by Bilby) - S...

GitHub actions vs. the good old Makefile

Image
Ghostbusters The story so far: shifted to a mix of Debian and Windows 11 with wsl2 as development machines, reawakened bits of my brain that I haven't used for years. Egon, this somehow reminds me of the time you tried to drill a hole in your head. Do you remember that? So, I'm sitting here at Chungus the Proliant struggling to remember the magic incantation that deployed my .NET core docker container up to AWS. Some digging through my bash history eventually uncovered it and I was on my merry way again, although I found myself in vi, staring at a blank Makefile and not quite remembering why. It was a reflex action from years ago when I was working with a small crew at a bank. Any time we came across some system that needed building on a Sun or other Unix machine, or some set of commands that were hard to remember, it had been beaten into us by our mentors to fire up an editor and make a Makefile. Years of working in IDE's on windows machines, where "make" ...

ElectronNET: cross platform GUI for .NET 5

Image
Repo Man I have been playing a bit with Cincom VisualWorks for a lot of nostalgic reasons and appreciating how good it is. However, no matter how cool and personally productive it is, as a tool for making programs for other people it has some shortcomings. If I'm going to build a cross-platform app that gets distributed to customers, I probably want to use something a little more mainstream. .NET Core is my weapon of choice and where the rest of my code base is, but it still doesn't have a cross-platform GUI solution. Electron is what VSCode uses so let's see if we can get that working with .NET. That means being a good old repo man (i.e. hitting up the repositories, not so much repossessing cars ha ha). I followed the instructions here and got ElectronNET set up on Windows 11 and on Debian Buster. On Windows, the demo worked out of the box. On Debian, I got this error message: [23059:0826/093421.418802:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper b...

Cincom VisualWorks Smalltalk: doing something useful part 3

Image
I told myself to give up, but after futzing about with Pharo and thinking about VisualWorks, I went back The Omega Man That little AWS Browser built in VisualWorks, I just couldn't let it go. I do need something more convenient to tell me things like where the target groups are in my load balancer, what the entries are in the dynamodb tables etc. without having to wade through the AWS website. It's painful (especially digging through the EC2 stuff to find the load balancer target groups). Maybe I dismissed this too early. Trialling the VisualWorks image on my debian box I realised I was constructing the command line arguments wrong, so I fixed that and got this far: So, it enumerates all the elastic load balancers in that account, enumerates the target groups and then enumerates the target health of the targets within the target group. All by encapsulating the correct commands. Not only does it save me from remembering the commands, it's more convenient than the A...

Debian Day 10: The one where things are very boring

Image
The English Patient So at day 10 I've been through a couple of bug fixing / building / testing / deploying sessions on both the Android app and the web service. Android Studio hasn't really changed much except the debugging experience is a lot better on the big HP proliant running Debian. Since my lab is up there (including the test Cassia Networks X1000 and a pile of SmartShepherd devices) this is great news. VSCode does take a little getting used to compared to Visual Studio, although that is to be expected since they are very different beasts. Every night.. I cut out my heart... But in the morning it was full again. Visual Studio has been my bread and butter for quite some time now - it seems strange to be letting it go so suddently. VSCode is not quite as polished in some ways, there are very few convenient right-click menus and most of the extensions are only available by holding ctrl-shift-p and trawling through the longest, stupidest menu I have seen in a long tim...

Pharo - not quite Smalltalk, possibly worse than VisualWorks

Image
Attack of the Killer Tomatoes Just a short one this time - it was nagging at me that I didn't try a more modern version of Smalltalk and Pharo comes up a lot in searches. Downloaded, installed, a quick test drive: We have to convince the little housewife out there that the tomato that ate the family pet is not dangerous! I was expecting it to be familiar but different and it definitely is. I thought I would start by porting over the AWS helper classes I made, which went fine (there is a JSON parser called "STONJSON" which is all caps for some reason, but works similar to the Xtream one in VisualWorks. I hit a fairly big snag though, there is no simple way to kick off an operating system process. There seems to have been some kind of fight in Pharo-land about OSProcess vs. OSSubProcess, neither of which is included in the standard image, neither of which can spawn a program on Windows(!), something which is both weird and a little frightening for a supposedly cross ...

Cincom VisualWorks Smalltalk: doing something useful part 2

Image
The Omega Man Straight up, I spent an embarrassing amount of time on this and I'm not going to go into all the details. Suffice to say, VisualWorks ancient UI painter has been a major problem for the last 30 years and it still sucks. It demos quite well and the instructional video is very informative, but like a lot of 1990s era GUI builder tools, the demos were always fantastic and the lived reality is a major pain. Here is the instructional video and I had to watch it to get anything done at all . We were warned about The End. Well, here it is The stock VisualWorks image doesn't have the good old UI painter in it, you have to add it via the Package manager. Once it's there, fire it up on a blank canvas and drop a couple of controls on there. I want a tree view and a space to dump some text (because I'm not going to fancy format anything just yet). Once you've painted up your interface, you need to stop and create somewhere to put your classes (watch the ...

Cincom VisualWorks Smalltalk: doing something useful

Image
The Return of the Living Dead (I'm going to ignore the sequels to the original classic film. I like to pretend they were never made). In the last post, I had resolved myself to making something useful. One of the good things about Visual Studio is the AWS explorer, it enables you to nose around in your AWS setup, look at output logs of lambda functions, look at your ECS containers and whatnot. When I switched to Visual Studio Code, I see there is an AWS explorer but it's a bit pathetic. Building an AWS explorer is a bit of an undertaking (there are a lot of things in AWS) but I have a few rules for this undertaking. The first is that the tool is for me, personally. It's not necessarily going to become an essential part of my build process and I won't foist it on other developers that work on my code base. The second is that it will have a proper UI. You can simply use the AWS command line tools to do pretty much everything, so I can always fall back to that. ...

Cincom VisualWorks Smalltalk 25 years on

Image
Return of the Living Dead I don't want to be disparaging about this product, it was my favourite development environment for a long time. It could be astonishingly productive or completely, brutally time wasting depending on the programmer. After writing about it in the last post I figured I would see what it's like now and how it stacks up to modern environments like Android Studio or Visual Studio Code Now, you can't just go and grab a copy of VisualWorks (I think, for a brief period in the 2000s they offered the community download no questions asked, but they don't any more). You make a polite request on their website , part of which I think is some vetting required for US export customers, not so different to downloading some of the embedded tools from Texas Instruments but still, it's some friction. I was allowed access to the download links (which were emailed to me) after 24 hours. It...it hurts to be dead? The download isn't an installer exactly,...

Windows 11 and WSLg and cross platform GUIs: a lesson from Smalltalk

Image
Windows 11 - the one where Microsoft throw their hands in the air I'm not the only one to complain about the inconsistancies that have built up in Windows 10. The Microsoft guys admittedly have a huge job to do preserving backwards compatibility with all sorts of garbage from the last 40 years. One thing that's always made me laugh is the device manager (devmgr.msc), something I still find useful because they never finished moving it's functionality entirely into the remade Settings system. Hilariously, the old girl is still present and correct in this build of Windows 11 But wait, what's this WSLg thing? Why it's a full-fledged Wayland implementation on Windows. Like, that Wayland . If I didn't know any better I would guess that trying to get the old Win32 interface into any kind of reasonable shape again has beaten them. I'm quietly a little excited by this development, not least because I'm a Unix guy at heart even though I spent the last 25...

Debian day 4.5: AWS, Cli, dotnet, Docker and ECS

Lions and tigers and bears, oh my! In the last few installments, I put Debian on my recycled Proliant ML330 G6, installed all the dev tools I needed and am now tidying up all the deployment loose ends. Deploying a Lambda function to AWS is working, now the bad boy ECS based web service needs to work. Again, we will be installing a NuGet package into the dotnet environment so we can closely replicate what normally happens in Visual Studio, within Visual Studio Code. There are no handy menus any more, but the command line tools are not difficult and now that I am becoming more familiar with the setup it's quite possible I will automate the entire thing, which is a major bonus. AWS ECS dotnet tools Here's the NuGet page , installation is simple: dotnet tool install --global Amazon.ECS.Tools --version 3.4.2 Once that is done, change into the directory where your already existing Dockerfile is (in this case, from Docker Desktop on windows) and run: dotnet ecs push-ima...

Debian day 4: AWS CLI, .NET and Lambda functions

Image
How did I get so dependent on the GUI? Visual Studio with AWS Explorer on Windows definitely makes you lazy. I mean, it's fantastic to be able to build and deploy something like a Lambda function by right-clicking on the project, but sometimes it's better to understand what is going on under the hood. Despite which, I am now pretty committed to switching to Visual Studio Code now that I am able to build everything in a similar way. My major concern at this point was making sure that when working on Windows (which will still happen) that the build/test/deploy sequence is almost exactly the same as on Debian. I thought that perhaps I would have to pull a pile of stupid stunts like this with wacky hybrid scripts but then I remembered WSL2! Windows Subsystem for Linux (version 2) is a proper Linux kernel running alongside your Windows system. I have been using it quite a lot when dealing with some hardware that we use, the Cassia Networks X1000 Bluetooth gateway . At Smart...

Debian: day 3

Image
The install is the easy part In the last post, I detailed in broad strokes an investigation into whether Debian was a good fit for my software development work. The conclusion is that it's not perfect but neither is Windows 10 Pro or Windows Server 2019. Then again, if you work as a solo-preneur you will also know that the software development part of your business isn't everything, you also need to be able to deal with your accountant, access email in a convenient fashion, talk to customers and maintain your server systems if you have one. The daily grind I do my accounting with Xero and it works well for me. Accessing Xero from Debian is exactly the same as Windows, so no change there. One change has been printing PDFs to sign for those processes that require a scanned signature. I had completely forgotten about the HP printer up in the lab and found myself without the ability to scan to a network folder, because I hadn't replicated the setup I had on Windows Serv...

Can I switch away from Windows to Debian for software development - an exploration

Can I make this switch? Part of this post was motivated by frustration - I have an ancient (as of 2021) Sony Vaio E 11" notebook that became unusable with the later versions of Windows 10. This isn't surprising, it's specifications are a little short of modern expectations. Since I don't use it for development and I can access Microsoft Office 365 over the web I was free to throw Debian Buster on it. It's a fine little machine and Debian sparked it right back up to the performance it had when I bought it. Background Normally for development I have two machines - in my study is an Acer Nitro 5, with two SSDs, a big external monitor, 32gb of memory and an Intel Core i7 processor. It's easily the fastest thing I have ever owned. Running on here is Windows 10 Pro, Android Studio, Visual Studio (for .NET core development), Docker Desktop using WSL2, Texas Instruments Code composer studio for embedded development and Heidi SQL for database maintenance. Ups...