you could use your favorite tool despite the situation
my story⌗
I was recently thinking about contrary some of the things I do are. I tend to not use what is the right for the tool but what I like to use for the tool.
For a long while, I have been writing all my programs in an editor that has no color scheme, no keybindings, no linter, no typechecker, no syntax highlighter, no plugins and no configuration file. Yes, not even a configuration file.
It is quite strange for the average developer to imagine such a setup because most would think that this setup is flawed in some sense. One might also assume that I haven’t tried the features of Emacs, (Neo)Vi(m), VS Code, Sublime Text, Atom, Adobe Elements, heck even CodeMirror.
Most of the features that developers depend on today are either useless and are worth letting go of or are completely replacable with a better equivalent.
Take for example color schemes. While color scheme might seem like a big deal the moment you let go of them, after about a month you’ll wonder why did you use them from the first place. After gaining a good amount of fluency in a progrmaming language, color schemes lose their ability to benefit you rather quickly.
I think this is because we underestimate our brains to understand our code. At times, this is true but that mostly means that the language you are using isn’t that good of a language to begin with. Even languages like Lisp do not need something like highlighting parenthesis, you could just write shorter functions(which will improve your code base) or simply count them.
Yes, counting your parenthesis. After a while, the counting happens in your head and you could just continue writing Lisp code.
linters, keybinds, …⌗
As for linters, keybindings and typecheckers, if you are aware of what you are writing, you become a lot better at reducing the amount of code you are writing.
A very nasty habit I used to have was that I would play Music while coding which made my code incomprehensible. Half of the time, you just need your brain and you need to think about which way to approach the problem you are dealing with.
plugins⌗
Plugins are also unnecessary only if you have the ability to modify the body of your buffer externally. For example, if you could write the result of a command in the buffer, you are basically golden. Bonus points if you could do to replace certain parts of a buffer.
dmenu + config files⌗
The subtitute for configuration files that I use is scripts to wrap around the program I want to use. dmenu
is a good example of this since it has both a configuration file and command line flags.
In dmenu
, one could configure the program’s colors, fonts, options, heck even the width and height through using command-line flags.
esoteric languages and web apps⌗
You could probably create a better web app, functionally, by skimming out on most Javascript solutions. A good example of this is the CryptPad project that uses no React, Svelte, or anything and instead just uses their own set of minimal libraries for bundling and loading scripts, manipulating the DOM and creating elements.
I’d go as far as to say, Lisp generated Javascript would triumph over normal Javascript. That includes not using any Javascript libraries beside the standard library Javascript.
One might even conclude the reason web apps are so slow, unusable, hard to maintain and not fun to develop is because they use “modern” standards.
what I will do in the future⌗
I have figured out a lot of things for myself. In the future, I plan to create my own laptop from scratch. No, I will not contact TSMC or ARM, or some other party, instead I will utilize existing hardware and software but I will put it in a combination not many would have thought about trying before. Yes, I will daily drive it.
DIY Perks had a video where he created his own laptop through use of materials such as aluminimum, an IPS panel he bought from eBay, a commercial power bank, a wireless keyboard + touchpad and lastly, some broken smartphone.
The key about it was his smartphone. It was a Galaxy S10 if I recall correctly. Galaxy phones have a feature no other phones have; The ability to use the phone as a desktop if plugged to an HDMI Cable.
Since the Galaxy used Type C for its charging port, that meant that it could be extended to N ports. The mouse + touchpad were wireless and he had hacked them to become wired and connected them to the internal port extender in his laptop chassis.
what could be improved upon⌗
I think a Banana Pi or a Raspberry Pi could be used in the place of DIY Perks’ Galaxy phone. Of course, I am speaking from a developer’s perspective that knows how to utilize Linux.
Further designs could let go of Linux and use another distributed operating system like Plan 9 or 9front. Why 9front? 9front, being based on Plan 9, utilizes resources a lot better. Not in some RAM, CPU or Disk space savings, though it could without a shred of a doubt and add more value at it. What I am more considered with is the ease of importing resources such as disk space, programs, et cetera.
9front is probably the only operating system that has no fundamental mechanism for sharing audio over a network, yet it could allow it. What I mean by that is 9front can absolutely share audio over a multitude of computers across the network. However, it does not have that ability hardcoded into the system.
Other operating systems, Linux, Windows, heck even MacOS, iOS or even Android, may have the ability to share audio over a multitude of computers ONLY if it has been hardcoded.
What this effectively means is that 9front, and Plan 9, were designed for sharing resources in mind. What this means for the user is that, you could have a single board computer such as the Raspberry Pi and you could run programs on your PC but display them on your Raspberry Pi.
How cool is that? Utilizing the GPU, RAM, and CPU of a more beefy computer while controlling the program from a Raspberry Pi. Things such as video editing would be a blessing if you could them as fast as desktops on your laptop.
The Powerbank would give the SbC(single board computer) tons of hours to run. This is already evident through Chromebooks and their magnificient battery hours that go for 18 hours at times. The Macbook M1 has similar battery hours while outperforming traditional Windows laptops. Of course these are no idle times but full load.
It is ironic that laptop companies have a lot of research, a lot of investment, a lot of engineers, but if one can execute this idea, they can produce a better overall laptop.
The assumption that these companies assume is that better performance = better laptop. It is quite lazy to be honest because there are many facets to a laptop.
bonus (non)features⌗
When I execute this idea to its fullest, I will skim out on any 3g/4g/5g or other modem thing as it can be traced back to me. Instead, I will rely on wireless networks that already exist in coffeeshops and restaurants.
Bluetooth would also be unnecessary as I rarely use it in my daily driver Thinkpad T430. (I don’t have bluetooth installed)
If wanted, I could have it in the form of USB dongles that exist in a DVD-tray like fashion. This also includes microphone and webcam.
A touchpad would also be skimmed on as the Thinkpad Trackpoint™ is far more useful and ergonomic in my opinion. Yes, I also have my touchpad disabled in favor of the Trackpoint™.