Playing around with Nettops

It looks like I’ve switched from an obsession to netbooks to an obsession with nettops. Since it makes more sense to be able to swap the screen, keyboard and mouse depending on what functionality I want the computer to provide. I think there is functionality that is provided by laptops but it’s much more of an investment.

A laptop is essentially a computer that comes bundled with a fixed screen, fixed keyboard, and fixed mouse (in the form of a trackpad). And while you may have the option to upgrade the screen, RAM or Hard disk. There isn’t much you can do to change anything outside of those few factors, expect by completely buying a new laptop.

There’s also the issue that laptops are somewhat of an oxymoron when it comes to specs. Better specs will increase what you can do on a laptop, but it comes at the cost of more heat, more weight, and less battery life which are aspects that are not desire-able with when it comes working with a mobile computer.

Right now I have four nettops and it allows me to test different configurations with respect to computer hardware. And I’m only buying and storing the nettop which helps save on both space and costs for testing different configurations. The four configurations I have are as follows.

1. Windows 11 modern
2. Windows XP classic
3. Ubuntu 21.10 Ultra-wide
4. Ubuntu 21.10 Dual Screen

On the Linux-side of things, I’ve found Ubuntu to be the clear winner for a distribution. It’s the most common one to work with, and the easiest one to find information for. It’s also the easiest to make the assertion that anything that works for you on a certain release of Ubuntu, should work the same for other people with the same distribution. What also helps is that the Gnome experience is getting really polished. I’m really looking forward to a lot of the UI updates coming in Ubuntu 22.04, and aside from the login and tiling, I have very little issuing with the overall desktop experience.

As far as ultrawide versus multi-monitor, i find multi-monitor to be a vastly superior experience. The first issue with a lack of default tiling on Gnome makes it much easier to use a multi-monitor setup to snap Windows to the left or right of the screen. I haven’t tried something like PaperWM, but for my workflow I often use Gimp and the File Manager to cascade windows ontop of each other. If I had a console-only workflow then I would probably be using i3wm/sway already.

Where multi-monitor really shines is full screen. If I run a game or video on my ultrawide screen, then a large portion of the screen ends up being used for black bars. Where as with a multi-monitor setup I can run something in full screen, and then still have another screen for space. Combined with the quick window snapping, multi-monitor is a much better experience.

Where things take an interesting turn is Windows. I can’t say I’ve used Windows very much for the last ten years. The main reason for having a Windows computer is that I used Noesis, I don’t like using Wine, and I prefer to avoid hosting a virtual version of another operating system. So my thinking was to use Windows as a Remote Desktop Server. That way I could use Linux as my main driver, and then tap into Windows remotely as needed.

Since I’ve taken the time to set up a windows computer, I wanted to take the opportunity to see what games could be played natively since I avoid using Wine. In general it looks like games like Typing of the Dead Overkill, Resident Evil Revelations, and Starcraft 2 just work. I would also probably install Phantasy Star Universe all without having to deal with Wine.

In the case of older games, I wanted something that could be run on period accurate hardware. Which is why I went to the extent to find an nettop for running Windows XP on. From my testing it looks like broken games are just broken and they work on Windows 11 just as well as they would have on Windows XP. Mostly I bought it to tinker with and do something for fun. I mostly want to play around with hardware that I didn’t have a chance to play around with when it was new.

Once we’ve done testing with Windows, we can find out what approach works best. Remote desktop, virtual host, or bite the bullet and attempt to work with Wine. But in cases like Noesis being able to see and work with the Windows file system is pretty important so having a working Windows desktop is pretty important when it comes to installing, and testing games. So at this point I would mostly lean towards the emulation approach. And virtual box allows me to seemlessly run a Windows desktop on a different monitor.

Notes: GIGABYTE BRIX PRO GB-BSi5-1135G7-BWUS Mini

Quick Notes

I’ve finally had a chance to start making updates to DashGL again. And quick notes of things todo.

1. Get a new Youtube intro
2. Sketch out a new Homepage
3. Figure out what to do with the blog

In this case 1 and 2 are easy, so we can get started on them.
To follow up with this, I ordered a youtube intro and used it this last week. I think we’ll continue to use it as we continue to make simple 10 minute videos every week.

New homepage is sketched out, designed and ordered. For the blog I think I want to stop this wordpress site to reduce the number of VPS that I have scattered everywhere. Normally I think I’d like to re-use this domain. But there are a few links that I would prefer not to break. So what I’ll do is export everything over as a static site and host it on gitlab with static pages under the same domain. I think any new blog going forward will be done on the homepage directly.

Getting Screwed Over

Seems like the only thing I talk about on this blog is hardware, so why quit now? Recently I ordered a Samsung Chromebook Plus V2. It’s not that great of a computer, but it has a 1980×1200 inch screen, a touch panel with pen, can fold back into a tablet, with 4GB RAM and 64GB SSD. So it probably has short comings, but for around $350, it’s decent, and something I can play around with.

The problem is what actually arrived is a Samsung Chromebook 3. With a 1376×768 screen, 2GB of RAM and 16GB SSD. Which really sucks because now I need to ship it back to the States in order to get a refund. The box that they sent it to me in is also stupidly huge. So I need to get a new box, get some bubble wrap, and then print all of the labels and take it to the post office. Today I need to print the labels. And tomorrow I need to stop by the post office to get a box, and maybe bubble wrap. So I can take that stuff home and pack it.

Really sucks to have to try and run around to do stuff at the post office outside of work hours. What I’m really annoyed with is how crappy the Chromebook is that they sent me. I wouldn’t mind if I had gotten the wrong thing that was at least half-decent.

Making Use Of Raspberry Pi’s

Right now I have a bunch of Pi’s sitting around my house. And I keep thinking that I can use them for different small projects, but in reality it seems like I get busy with work and family, and then I never get around to actually messing around with the Pi’s. And right now something I do pretty poorly is managing my VPS’s. I have a bunch of random things scattered around a bunch of VPS’s. And now that I have fiber optic internet, it seems like I should try and make better use of local resources on my network.

There is the option of trying to move everything to free hosting on Github. I tried using Gatsby, but it seemed like a lot of work to try and convert a site to use it. Mainly it seemed like a bad investment. Something like NextJS would allow me to set up projects as well as static sites, so going forward that seems like the right tool to use. Converting what I have doesn’t seem like the best use of my resources at the moment.

So what kind of things will I be looking at?

– Moving did.shellshop.lol
– Probably moving shellshop.lol in general
– Moving this blog
– Setting up a NextCloud instance
– Setting up a network share

The main crux is how I want to manage my DNS, and hosting. For the DNS, the most direct option would be to set up my Raspberry Pi Zero W to be a dedicated Pi-hole instance. I tried to use it for taking notes, the problem is that there doesn’t seem to be reliable way of running Nodejs on the Pi Zero, so otherwise it’s only been holding static contents. If the Raspberry Pi Zero W was able to run Nodejs, it seems like it would be a great little development server. This is why I ordered a Raspberry Pi Zero 2W, so we’ll shuffle things around and see how that works.

Mostly I think we’ll be running into https problems around hosting. I have two options. The first is to use a VPS to reserve a static IP and then forward all of the traffic to the Raspberry Pi, or the second option is to use a dynamic DNS. And since I’m trying to reduce the number of VPS’s i have, the dynamic DNS approach seems to be more in the spirit of what I’m going for.

Edit:

It looks like in terms of practical application. I’m getting a 504 error timeout when I try to access my local network remotely. And the Raspberry Pi’s connected to my LAN keep dying for some reason. I think the easier option might be to simply to rent a cheap VPS that will act as an NGINX server to validate Let’s Encrypt, and then use a VPN to reverse proxy the request back to my local network. In general I’m not in too much hurry to do this. I might start by making a list

Playing around with more hardware

I finally got a functional home office cobbled together. I have a decent screen, a decent computer, and a key board and mouse. For the screen I have a 3440×1440 wide screen monitor. I’m generally on the fence about having an ultrawide versus a normal 4k monitor. In terms of width, it’s basically the same number of pixels, the main difference is how tall the monitor is.

My main thinking was that for coding it makes more sense to have a wider monitor, since I don’t need to use the vertical space as much. So I would prefer for the extra space to simply not exist instead of being “too tall”. The counter point to that is that I find myself branching off into more work flows like sketching or editing video where the vertical space actually helps. So I think i might move over to using one or more 4k monitors the next time I upgrade my computer.

In terms of the computer it’s a Thinkcentre Tiny with a Ryzen 2200GE. Since I generally use a terminal and watch youtube, it’s probably more than enough to run what I need it to. The main downside is the single channel memory which mostly has an impact on games. If it can run Resident Evil 0 or Resident Evil 4, i should be pretty happy. I don’t often have time to game, so I’m mostly generally interested in if the game will hypothetically run or not more than actually taking the time to play it. My actually gaming is focused on PSX or PSP games that can literally run on a toaster at this point.

For the keyboard, it never seems like I can find an “ideal” keyboard. I like tenless keyboards, but when I try mechanical keyboards they can be too loud and clacky. I tried the quiet mechanical keyboards and they turned out mushy. I like chiclet style keyboards, so a tenless chiclet style keyboard would be pretty awesome. In general I don’t seem to have any problems with membrane keyboards as long as they have a bit of travel and are quiet. The SK-8827 lenovo keyboard that came with the Thinkcentre I bought is pretty nice. It if didn’t have the number pad, it would actually be pretty damn perfect. But in general it seems hard to find the right keyboard with the right amount of weight, key travel, noise, and key layout. Cheap options are often mushy and poorly made, expensive options are pretty punishing if they don’t pan out.

For mouse, for now at least i have a wireless quiet mouse. Since I don’t use a mouse too often, it’s not that big of a deal. Kind of tempted to ditching a mouse for a wacom tablet that doubles as a trackpad. But I probably don’t draw enough for that to be worth it, so a quiet, cheap, wireless mouse is fine.

Now that I have a working desk set up, I’m thinking of how this affects my other devices. I have two laptops, one with windows, and the other with Linux. For the one with Windows I keep it around to be on the safe side. It mostly sits there collecting dust, so something fanless, and thin and light would make more sense. For Linux I like having a thin-client for coding, so I would prefer to have something thin and light with a long battery life. Really hoping to see more ARM computers in the laptop space, I think that would be really compelling for both a lite windows computer that has office, a web browser, and a few programs. And a lite linux computer with i3wm / sway for writing code.

I think I would be needlessly wasting money for buying anything currently on the market. Really hoping to see some M1 macbook clones trying to copy what Apple has done, so I’ll try to wait and watch things pan out. I would love to have a laptop powered by a Raspberry Pi computer module with different replacable parts. But again, for now I’ll leave my laptops alone as they work well enough for now.

Also a note is that now that I have a linux desktop for my main computer, I can probably take my Raspberry Pi 4 and play around with it. I would like to try installing i3wm / Sway on the Raspberry Pi and being able to play around with a slim desktop environment. Not sure if I want to go the distance and buy a case with a beefy cooling fan, but I have a sata-SSD, so I’ll probably clear that off and make that available to the Raspberry Pi to play around with it.

Planning out the next two weeks

So right now I think I might actually gotten a job, or at least an offer. So since we’re in September, I’m going to be planning out the next two weeks to try and invest my time correctly. In terms of preparation I want to get my home office in order. Quick list for that would be:

1. A computer Screen
2. A computer chair
3. 5G internet
4. Computer

For the computer, I went ahead and ordered a think centre tiny, since that should be more than enough to run a terminal, browser and play a few games. I might need to upgrade the RAM and hard drive. The Ram only has 8GB, so I could bump that up to 16GB, or possibly 32GB depending on how expensive ram is. Probably 16GB makes the most sense if I can pop another RAM stick in there. For the hard drive, I’m really tempted to drop in 1 or 2 TB to have enough room. In terms of an operating system, I’m tempted to use Manjaro, but I might give Debian Bullseye a try first to see if that will work for what I need it. In terms of programs, all I need is Blender, Visual Studio Code, Firefox and Steam.

For the chair and screen, i can order those from Amazon. For the 5G, i need to upgrade my contract to be able to do that. So I might try logging into my account to see if I can upgrade that. Another problem point is my Nexus 5x battery died and I have to keep it plugged into power. So I might swap that out for a Google pixel and install Lineage OS on it. Or maybe if I’m only Japan for another year, I can skip on getting a new number entirely and set up a 050 number with my data plan.

In terms of projects and things to work on in the next two weeks. I have two priorities. The first is learning redux, and the second is logging in with json web tokens. I also want to get modoki.io set up, so i have some context to contrast working with did’s against. And then I also want to try logging with a public key / private key pair. And also I probably shouldn’t forget to go ahead with the paperwork to make sure everything is fine at my new job.

Monthly Challenges

One issue that I run into with programming, is that I always feel busy. I always feel like there’s something that needs to be done and I don’t have enough time to do it. And I’m always on the computer doing something. The problem is that when I finish that something or move on to the next thing, I can never remember what it was that I was doing, or what felt important at the time. It feels like such a huge waste of time, that I generally would prefer to be reverse engineering old games, but instead I’m “busy” doing something else. And if I can’t justify what that something was, then why wasn’t I investing it in reverse engineering games?

My plan to approach this is to focus on monthly challenges. The idea is that each month will be dedicated to a specific topic. and I can justify why I’m focusing on that specific topic. Define how far I want to get. And why I’m working on it over other random side projects. And then be able to track what I was doing for each month, so I don’t forget it as soon as its done.

Pre-July 2021 Before I broke my challenges into focus for a clear month, I started Whitmir.io, with the intention of making a portfolio piece to get into Freelance. I ran into several challenges with what I expected to be a straightforward side-project. The main issue that I ran into was the rich text editor. The design behind the project was to make a simple blog editor, where a user could create simple documents and then compile them into a book which could be exported in some e-book format.

The issue I had with the rich text editors is that I wanted to have more control of the design and it didn’t fit with how the different libraries I used were structured. And I ended up spending about two weeks going through different options before I reached the end of the month and decided that I had to move on.

In terms of what I learned from this project, I got some hands-on exposure to OAuth and Cors. The idea was to host a strictly static page that could be hosted on Github for free, and then users could login with a Google id, and then documented would be written to and from their Google drive account, to test out the idea of a “server-less” application. Overall that aspect of the application seems to work out. I think I would keep settings for the application, and document for the application in two separate folders. One for the meta data, and the other for documents.

Another option would be if hackmd.io releases an API to interact directly with that. I think a markdown editor might make a lot more sense than a rich text editor in that it makes the format a lot easier to work with. Something that I wasn’t sure about was how to manage the preview for a markdown editor. I think if the screen is big enough to offer a split screen. Otherwise it might be a good idea to split writing text with a button to switch to preview mode.

I think in retrospect that if I approached this again, I would split it up into a few more smaller parts. Make a page that only interacts with Google drive to build a book and pages. Make a page that only interests with Google Drive meta data. Make several different pages and test different options for editors and then have the ability to design around the editors. And then from there I would go back to the drawing board and implement the design. In general through it looks like hackmd.io does a pretty good job of being and editor, and also has the option to export to odf. So the priority for coming back to work on this side-project is quite low.

July 2021 – This was my first “official” monthly challenge. I spent a month to use Shellshop v2 as a way to learn react and TypeScript. And also took the opportunity to use Golang on the back end. What I learned from this is I should be using NextJs for routing and having the option to create and API on the back end. And learned I should be using redux for the model.

August 2021 – Originally my plan for this month was to make an updated version of the DashGL web page using Gatsby. This was changed when I applied for a company. And my homework became the subject of my monthly challenge. The challenge was to get familiar with did’s by creating a flow where a did is created, it’s verified by a third party. And then another party check the validity of the verification.

Making a new Blog and Backups

I think I’ll be making a new blog which will take the place of dashgl.com. I think that using GatsbyJs is going to be the best option for creating static content that can be hosted using Gitlab. And then I can set up a Raspberry Pi or machine that can continuously rebuild and push the blog to the web for any updates.

For a blog feed I think i’ll be using Hackmd.io. Which should make it easier to focus on content. I don’t know what it is about WordPress, but I find it very hard to write about actual content. Most of the time it’s off-topic side notes or musings that get posted here. So I think that having an offsite tool that I don’t need to manage should make it easier to focus on content.

I also need to back up my megaman legends threads. I’ll put a list to back up here:

mml1
https://mmls.proboards.com/thread/6217/list-megaman-legends-tools
https://mmls.proboards.com/thread/5884/megaman-legends-pc-modding
https://mmls.proboards.com/thread/6198/psx-megaman-legends-research-thread
https://mmls.proboards.com/thread/6173/file-animation-viewer-exporter-support
https://mmls.proboards.com/thread/6171/static-gltf-model-exports

mml2
https://mmls.proboards.com/thread/6248/megaman-legends-research-thread-psp
https://mmls.proboards.com/thread/6182/megaman-legends-format-analysis-thread

TypeScript Approach

After writing a long rant about TypeScript yesterday, it gave me the ability to rethink my approach. Basically my thinking is that TypeScript will help with react by being able to define strict values to manage state. My biggest issues with TyepScript and React is the syntax needed to create the classes, but looking online, it seems that most of the content was focused on using React with functions in TypeScript. That way I only need to declare interfaces for the structs for the properties being passed into a component, and not much else.

This generally means that I’ll need to learn how the useState function works, which means I’ll need to get more familiar with React. But it seems this approach is simpler as it allows me to pick my battles and not get too heavily involved in quirky syntax games, and be able to focus on making content instead of pulling out my hair.

In terms of mitigation, I should probably switch to golang. As it’s like writing C with a crayon. But more importantly it has bindings for GTK, and Vulkan. So it seems supported on the Linux desktop side of things. It can write a fast strongly typed server, and it can can be compiled to web ASM. I looked at the JS compiled, and I was a little disappointed it doesn’t produced typed arrays. So I think that client web will still be React + Typescript.

So my focus for TypeScript should probably be focused on Express + TypeScript and React + TypeScript and basically think of it as the new syntax required to work with these, as in all likelyhood it’s a syntax that will be required more and more in web development.