SleepyNova

A Sleepy Developer discussing interesting topics

Hi again

Reading Time: < 1 minutes

Hey all!

It’s been a while since I posted here. I really don’t use sleepynova as much as I’d like. To be honest, I think it’s because I have a little bit of a inferiority complex, and I don’t think people can get value from what I’m saying. I’d like to change that though, as I’m constantly learning and improving, and as I get more years under my belt my knowledge should be useful to more junior engineers and others who like tech.

I think part of the reason for my lack of using sleepynova is wordpress. It feels slow right now, so I may try and do some work on it to see if I can’t speed up the site and make it less boring.

In addition, the tech market is hard, and I find myself job hunting again. That’s twice in two years due to layoffs, which to be 100% candid, feels like shit. It’s not reflective of my performance though, as each time I’ve been laid off my managers have assured me that I’m an excellent engineer and that my terminations were for financial reasons, and I have my reasons for believing them.

Anyway, not trying to ramble, but I want to post here more often. I want to get better at writing and communicating my thoughts concisely as well. If you’re reading this, stay tuned, cuz I’m going to be posting again soon.

Optional Chaining: A Powerful Tool and Lethal Weapon

Reading Time: 5 minutes

### Introduction

In the ever-evolving landscape of software development, engineers constantly seek ways to write cleaner, more efficient, and less error-prone code. One of the breakthrough features introduced in modern programming languages is optional chaining.

Optional chaining can be a game-changer, simplifying code and enhancing readability. If applied properly, it can also eliminate errors associated with null or undefined values. However, this comes as a double-edged sword, as it can also introduce risks that severely degrade the integrity of your code. We will go over the risks in a future section, but for now, let’s learn what Optional Chaining even is.

### What is Optional Chaining?

Optional chaining is a feature available in several modern languages, but I’ve seen it most in JavaScript and TypeScript. It is a way to decrease type errors by not assuming a given property will exist at all. In addition, it decreases errors thrown as a result of something being null or undefined.

However, this is a double-edged sword, as it can mask issues in stack traces or cause errors to throw too late, causing systematic issues that are larger than would otherwise exist.

The drawbacks of Optional Chaining make it a hotly debated topic among process steering engineers and code standards committees. I have been in a few calls and discussions that got quite heated due to optional chaining. Some call it an all-around risk, and others call for full adoption. There are inarguably safe ways to use Optional chaining, and we’ll discuss some in this next section.

### Using Optional Chaining

Here’s a basic example to illustrate optional chaining’s usage:

let user = {}; // user has no address
alert( user.address.street ); // (error)
alert( user?.address?.street ); // (no error)

No checks are made, and thus it throws an error in the first alert, as neither address nor street is defined under user. However, in the second alert, it would not throw an error, returning undefined instead. This is because the optional chaining broke at user?.address, due to it being undefined.

This is quite powerful, as you can essentially skip any error relating to properties if they may be undefined. That is also why it is so dangerous, as sometimes you’ll need them to be defined. There are some ways to mitigate these issues, but at certain times you also have to ask whether it’s worth using optional chaining if you’ll need to write out more code just to check it, when not using it will have you writing the same checks.

Here’s a snippet from a project where I safely used optional chaining, reducing lines and not compromising safety:

// without optional chaining
const currentPage = () => {
  if(router.pathname === '/') return 'Home'
  const entry = Object.entries(PAGES).filter(filterFunc)
  return entry[0][1].name;

//optional chaining
const currentPage = () => PAGES.find((page) => page.link === router.pathname)?.name || "Home"

There were a couple of other refactors that happened here, as entry[0][1].name means that you’d have to understand the filterFunc function to use it, and it likely isn’t designed in a human-friendly way, but ignoring that change, this function is much simpler with optional chaining than before. In addition, it only required one type check, and entirely rid itself of a secondary function full of other type checks.

These kinds of situations are where Optional chaining shines, and they aren’t super rare either. You just have to be wary that you fully understand the object you’re interacting with to ensure proper usage.

### Benefits of Optional Chaining

  1. Code Conciseness: Optional chaining reduces boilerplate code, making your codebase cleaner and more concise. It eliminates the need for repetitive null or undefined checks, resulting in more readable code.
  2. Error Prevention: By preventing runtime errors caused by null or undefined values, optional chaining helps improve the robustness and reliability of your applications. This is especially crucial in large codebases with multiple contributors.
  3. Improved Productivity: Developers can write code more efficiently and focus on solving the actual problems rather than handling null-related edge cases. This leads to increased productivity and faster development cycles.
  4. Better Code Maintenance: Code that relies on optional chaining is easier to maintain because it’s less error-prone and more self-explanatory. Future developers working on the codebase will appreciate the clarity it brings.

### Considerations and Best Practices

While optional chaining is a valuable tool, it’s essential to use it judiciously:

  1. Keep it readable: Don’t use syntax you find hard to read. Longer code is not always worse, and if it makes it more human-readable with no major slowdowns, it is better to keep it readable than to make it optimal.
  2. Avoid Overuse: Don’t blindly apply optional chaining everywhere. Use it when dealing with potentially nullable properties or methods to improve code readability and safety.
  3. Maintain Code Clarity: While optional chaining reduces code verbosity, it should not compromise code clarity. Name your variables and properties with meaning to ensure your code is human-readable.

### My Opinion

I’m of the mind that optional chaining is not a tool that should be used often. I understand there are clear benefits to it, such as not throwing errors for issues that won’t break anything, or to shorten syntax. I have used it before, so it isn’t something I am 100% against, however, I have found that in many cases you end up doing as many – if not more – type checks just to use optional chaining.

I also feel that most instances I’ve seen of it compromised the integrity of the code, didn’t shorten it, or made it less readable. While I don’t agree with the “don’t fix what ain’t broke” mentality a lot of the time, it is my personal opinion that type checking most of the time should not be fixed unless it is longer than necessary (as in there are two ifs that could be broken down further, or merged with past statements, etc.).

Of course, you should always know the data you’re working with and know what is safe to optionally chain and what isn’t, and any senior+ developers will already be using it safely. The above opinion mainly applies to people who haven’t learned about it yet, as they are also likely Junior engineers, and I’ve seen it become a very hard to correct bad habit when not used with enough discretion.

All I’m saying is to be very careful that you know your data. If you don’t, rather than resorting to optional chaining first, read your docs and learn what you’re unsure of, or reach out to someone else who’ll have the answer you need.

### Conclusion

Optional chaining is a simple yet powerful tool. As with most powerful tools in modern engineering, it comes with some large risks and must be used with discretion.

When in the hands of an experienced and thorough engineer, optional chaining can level up your code by a large margin, so don’t hesitate to add it if you’ve determined it’s the best option (had to add at least one bad pun). If you’re a junior engineer, you likely can use this tool to help you get a deeper grasp of the consideration that working with variable data requires.

As software development continues to evolve, mastering tools like optional chaining will become more essential for staying competitive and building robust applications. So regardless of your opinion on it, make sure you learn it and can use it safely.

Browser Testing

Reading Time: 4 minutesSince I got into web development I’ve been looking for the perfect browser. This is an impossible task, as the perfect software does not exist, browsers included. That being said, some are better than others.

I’ve been using the Vivaldi browser for the past couple of years, and I’ve loved it more than any other browser I’ve seen. However, recently I’ve been experiencing issues with the browser rendering sites partially, if at all. Whenever I start having problems in a browser I know it’s time to start browsing (heh) again to see if there are any alternatives worth using. Of course, there’s always Firefox, Chrome, and Edge, and they always work, but they’re also just a bit inoffensive, never really majorly shaking up the landscape, but always being reliable, if not for performance issues that seem to crop up every few months. If all you want is a browser that goes painlessly, then sticking with the big three is not a bad choice.

However I wanted more, and Vivaldi came through with that. It has a panel window with a whole lot of power, and for how much it has, it still performs better than Chrome does most of the time. It runs on a chromium base, allowing for chrome extensions to be added, and has cloud sync for your bookmarks so you can sync your info across computers. In addition, it comes with a built-in adblocker (better than any adblocker I’ve used on Mozilla-based browsers, and probably better than most chrome adblockers too. You can add RSS feeds to the side panel, checklists, email feeds, and a ton more. Overall it’s a great choice for casual browsing, however, you run into issues if you want to be a developer (you’re honestly best sticking to chrome if you’re writing code). Clearing the cache is a bit more difficult than most browsers, and you can’t hard reload. Also to not harp too hard on Vivaldi, some of the issues I’m experiencing right now started after my upgrade to Windows 11, so it could be a compatibility issue there, and a casual user may never experience them, however for me it happened frequently enough to start considering switching.

One of the browsers I looked into in the past while somehow having never used was Brave. I do like Brave a lot, it has a comfortable interface, built-in ad blocking, and is a baseline Vivaldi alternative out of the box. It doesn’t have all the extra robust features that Vivaldi did but is a solid alternative. I didn’t use it as I enjoy finding other smaller projects to use for my daily driver, while still having the big projects as backup browsers (although in this case I am considering just switching to Brave, still undecided).

A fun alternative I found while searching is the Pale Moon Browser, a goanna-based browser that is consistently updated, however, looks like it hasn’t been touched since vista.

The pale moon browser, looking as though it belongs in 2007

That being said, it doesn’t seem like a bad browser either and gives the vibe of Internet explorer without the clunkiness. If that’s what you (or your grandparents) are looking for then it is a viable option, receiving updates once to twice a month consistently.

The browser I’ve settled on for now though is Waterfox, another Mozilla-based browser with some of the things I wanted from Vivaldi, and in a light-enough package. To be honest, I did integrate into waterfox before testing Brave, hence why I’m considering swapping over to brave now, but waterfox is doing everything I need so far so I’m not yet sure if it’s worth the swap. To make waterfox do what I needed, I imported my bookmarks and installed an adblocker and a tab grouper. Those are all I require from a browser, but there aren’t any browsers I know of outside of Vivaldi that have all those features built-in (for instance Brave has adblock but not grouping). With minimal work, however, Waterfox was able to cover all my bases, where I know Chrome probably couldn’t. I also was biased towards Mozilla slightly, as when I swap browsers I do like to go to the opposite of what I’ve been using.

Simple Tab Groups, a plugin for Firefox Browsers

Simple Tab Groups, a plugin for Firefox Browsers

Another thing I’d like to add is I didn’t try out any of the Opera browsers. I just didn’t feel the need to, and while I know that Opera GX is out there and people like it, I haven’t been very enthused with Opera as of yet. I may make another post in the future reviewing them, however.

Post-Writing addition:
While I was still considering a swap to Brave while writing, I discovered that Brave is actually a Chromium Browser, not a Firefox browser, and thus could not have my Tab Grouping Plugin installed on it. That means that unless I find an alternative that works just as well, I’ll be sticking with Waterfox for the foreseeable future.

Elon bought Twitter

Reading Time: 2 minutesThis one’s just stream of consciousness, no editing or anything, so sorry if it sounds bad, it’s just what’s on my mind.

Apparently Twitter is on fire. I left the platform a while ago so I can’t confirm, but I can say I’m not surprised. When Elon bought Twitter, I was hoping he’d just let it go as is, and occasionally propose new ideas or updates. As the incoming Owner and CEO, I’d expect him to understand that he probably has a decent amount to learn about current operations and how ideas are experimented on and implemented. It does not seem like he did that though, instead opting to go in, tear everything apart, and reconstruct it in his image. The problem is that you can’t expect to rebuild a platform and also have it operational at the same time unless you’re running A/B tests for each feature, and it can’t happen all at once unless you take down that platform temporarily. That on top of having engineers print out their code to keep those who committed the most being a horrible idea just reeks of someone who thinks they know more than they do about what they’re working on. I don’t mean to say that like it’s just a him problem, of course all of us bite off more than we can chew occasionally because we assume we have a higher skill in an area than we actually do, but while he can run a car company fairly well, Twitter isn’t cars. I’ve also had a lot of people tell me “But he’s a developer, he sold a game he made and helped found PayPal, so he knows how this works”. I won’t discount that first part, but he wasn’t an active developer in PayPal either. He bought his way into the company post-founding and paid for his title, so I wouldn’t say that really counts towards his credibility. That on top of that he hasn’t worked on development in years should mean that he won’t have current experience of workflows and management structures for CI/CD that I’m sure are used at Twitter’s corporate level. Now with all the engineers leaving, I’m not sure if the site will fully recover. The user base is there, and I don’t think they’re going anywhere if it survives, but if I hadn’t already left, I’d be off the platform permanently now. I don’t want to unnecessarily bash him, as I don’t really like bashing anyone, but this really got under my skin as an experiment engineer and developer.

Paid Interviews

Reading Time: < 1 minutesI just wanted to bring attention to this concept. I’m in the process of interviewing for a job (I’m not putting details unless I get it, in which case I’ll probably talk about it a bit), and I’ve just been invited to a paid interview. This is not a concept I had heard of before but is a very good idea to incentivize applicants while also discovering more about them to ensure the best picks. Essentially, a paid interview is a 40-100 hr (at this firm) trial run of the applicant. You work on the same type of jobs as you would at the position, of course not the actual tickets though, just examples made by the team. They pay you a set hourly rate during this time and once you complete everything or the time completes they make their decision. This may be something common at other companies, but I’ve only ever done skill assessments and technical interviews. In my opinion, this is a much better way to hire, as it is much more selective and harsh in the interviews, but it only selects the best applicants, as you already have to be willing to pay them to get them that far, but if they are just very charismatic and lack the skill, you don’t get stuck with them. It also respects the candidates as they get paid, so even if they don’t get hired it makes their life a little easier. I feel this process should be expanded by more companies and made standard. 

The problem with modern skill assessments

Reading Time: 2 minutesHave you ever applied to a job and received a code assessment asking for something entirely outside the scope of your position? You give it your best shot, but since you’re an entry-level developer fresh out of a workshop, you cannot complete it within the time limit set for you. 

It can be very discouraging when this happens, but it is a common experience, even with experienced developers. In fact, in forums for experienced developers, it’s common to hear devs with 5+ years failing these tests. That said, there are also many good assessments with challenging problems you have probably encountered previously. These tend to be created with a solution you can engineer using simple logic and knowledge of your chosen language.

Obviously, these problems vary widely depending on the position you’re applying to, and they are worse in some positions than others. In my experience, positions with the “software developer” title tend to be the worst for these problems, often requiring knowledge of specific algorithms which you may or may not know to solve the problem. I’ve also found that Front-End Developer positions have the most consistently relevant problems, likely because there are a few semi-universal plugins that don’t assist with logic, so proof of knowledge is much simpler and harder to make non-relevant in the first place.

This also provides a barrier for devs who want to hop over to another focus (i.e. web developers trying to move to Software Development). A common problem that I’ve seen is Dijkstra’s algorithm functions. They appear pretty commonly in software developer assessments, but it isn’t an algorithm that is very universal. It’s a very helpful algorithm for those working on maps, but most developers never use it, and this can also cause problems during assessments.  It is possible these are taught in college, but as I didn’t attend college for CS, nor have I gone through any workshops, I have never learned it (or any graph theory associated with it). I’m not saying these being difficult is bad, as there need to be quality checks for people who are hiring, but I am saying that companies should be sure to make them relevant to the position. Asking a Front-End Developer who will be making react applications to understand graph theory is rather nonsensical, much like asking a database engineer to know how to manipulate the DOM with JQuery. Not only does it cause the applicants to lose morale, but it also prevents employers from finding properly qualified applicants.

A sample Dijsktra’s Algorithm graph

If you’re currently applying to jobs and you encounter one of these assessments, don’t get into your head about it. Just learn what you can, and use the good assessments to help round your skills more to become a better developer.

How to Handle Scope Creep as a Developer

Reading Time: 2 minutesScope creep happens. Clients will always want more, and if you’re developing your own application, you’ll have new ideas to improve it. It is a magnanimous feat to finish an application, but what if adding to the scope is a great idea? Should you eschew all new ideas in favor of completing the app? Or should you add every new feature idea and hope you eventually finish? Luckily, there are ways to compensate for new ideas, and while it will take discipline not to edit the original scope for release, you can complete your app and ensure all ideas get through to the result.

You may have heard of Agile, CI/CD, Scrum, or other seemingly random terms in relation to development. It can be hard to understand how exactly these work, but the basic idea is that these ideologies manage feature requests and ideas to ensure applications don’t bloat too far out from their original scope. Agile is the most frequently used in SaaS contexts. It effectively sets a baseline scope for the application, and a backlog stores all new ideas so they are not lost. These tend to involve an active list, a review list, and a staging list. The active list holds what is currently in development, the review list is for queuing review of completed features, and staging is for features that are complete and awaiting release. Before the initial release of an application, a second backlog can be created to store the initial scope. This second backlog will set a set number of features that need to be handled for the initial release. It can only be changed if the application does not work without a feature that was missed in the initial creation or conception.

Most other management methodologies are similar and tend to differ in application and effectiveness due to complexity, size of initial scope, and the size of the team, but the backlog tends to be the most important part. The reason for scope creep is really just FOMO, so if you have something keeping track of ideas so you don’t forget them, you can both focus on the current tasks and ensure that in the future you can revisit all your ideas for expanding the scope. This, of course, is not necessary for small applications, such as quick calculators or scripts to rename large batches of files. If you are developing a website or extending a CMS, these systems will be indispensable to your efforts, so be sure to learn how to use them before diving in. You don’t want to get lost in the sea of scope.

 

Depression, Dark Souls, and your Development

Reading Time: 4 minutesDark Souls is brutal. I don’t think anyone can disagree, even if they naturally meshed with it. With 3 mainline games and several others in the same style, it’s a fairly well-known experience. On top of this, it is wildly beloved by its players; The deep lore can draw in those dedicated enough to learn it, and the unforgiving yet fair gameplay provides massive catharsis when you tackle the challenges set for you. Yet, a theme is arising among Souls vets, and almost all of them have experienced it to some degree. Dark Souls, and the Soulsborne series as a whole, seem to help people get out of depression. That sounds like a big claim, and it is. Depression is a serious mental illness, and it can take years to fully recover from depending on the cause. So why does a game seem to help people through it to a reasonably consistent degree? There can be a lot of theories on this, but I have my own theory that I believe makes these games such effective depression killers. 

Dark souls is primarily a game about development. You go into a new area, die a ton, get better, and then clear it, repeating the growth process until you beat the game. Leveling helps keep the challenge consistently hard rather than constantly getting harder, rather than making the game easier like with most other games. This means you still are the one developing and getting better, not your character. The development process, in a video game or not, is no easy task. It requires you to throw yourself at a wall over and over and over again until it breaks or you do. This is the challenge the Soulsborne games present: Will you break, or will they? In psychology, the quantifiable aspect of this process is called grit. Grit is your resilience to keep going despite failure and tedium (A wonderful ted talk by Angela Lee Duckworth was done on the topic). The higher grit, the more you can trudge on; the less grit, the more easily you give up. It’s not quite the same as stubbornness, but is related to it.

Titanite demons were a special challenge posed by Dark Souls. Harder enemies, but extra rewards for killing them

Let’s talk about grit for a second, as this is an important part of my theory. There are studies concerning grit in relation to depression and anxiety, and the conclusion has found an inverse correlation between grit and depression levels. This means that as grit increases, depression decreases, and vice versa. This leads to the hypothesis that training grit can help decrease depression. This is also the theory (outside of endorphins) as to why going to the gym helps ease depression. Doing hard things and succeeding leads to a better mental state.

When someone is in therapy for overwhelming depression, a common assignment is to clean their room. The theory behind this is that if you are overwhelmed, taking control of a piece can help you take control of the whole. The assignment doesn’t have a due date or any stipulations like “clean it in under an hour”. Most therapists will add that you can do it in tiny pieces if necessary, just to get it done how you can. This sounds similar to the Dark Souls gameplay loop does it not? This is a big part of why I think Miyazaki’s (the creator of the Dark Souls series) games can do this. His team balances the games so they feel fair almost all of the time (they are not always successful, see the Lesser Red Wolf of Radagon from Elden Ring), and that allows people to think about how they can be better, and how they can take control. This is also why I think other developers can’t quite achieve the same result. Most games end up feeling unfair, or just being a foray into escapism. Dark Souls is a dive into battle, and victory is guaranteed if you play long enough.

The aforementioned Lesser Red Wolf of Radagon

Grit is not exclusive to where you developed it. It is something that becomes a part of your character. This means that developing it in a video game can help you use it in a job hunt, or cooking, or cleaning your room. You may not realize you can do it at first, but it will happen eventually, which will lead to an upward spiral of personal betterment.

Dark Souls was not designed as a therapeutic tool, and I don’t believe it should be treated as one. I don’t know if everyone would benefit from it the way I and others have, and I think that’s ok. It displays the principle and works for some, and as long as we can figure out how to apply the principle and develop it elsewhere, then we have succeeded. However, I hold that for many players, Dark Souls and the games that followed will always be appreciated for what they created in us.

Pikmin 4 Announced

Reading Time: 3 minutesPikmin 4 was just announced. I don’t go onto Twitter often, but as I’m currently applying for jobs, I logged in to chat with a talent agent. I happened to see Arlo trending, so I clicked in to see that this announcement had happened 2 minutes earlier.

For those unaware of Pikmin, it is a game series where you are a little guy who leads a group of even smaller alien-plant people to collect things. If that sounds like an absurd premise, you’d be right, and yet it is one of my favourite game series.

A Piece of Promotional Art of Pikmin 1

There isn’t anything quite like Pikmin, so I’ll do my best to talk about the games here, but they are best understood by playing the games yourself.

The original Pikmin is about Captain Olimar from the planet Hocotate. He crash lands on a planet – likely earth – and has to repair his ship by finding 30 pieces of it in 30 days. If he cannot, he will suffocate from the deadly oxygen atmosphere. While looking for these pieces, he finds the titular Pikmin, small humanoids of varying shapes and colours. They begin following him and assisting in his work around the planet. He doesn’t force – or even ask  – them to follow him, they just think he’s neat. The Pikmin return to their onion (the onion is their home/ship) come nightfall, and both they and the Player-character go into orbit for the night.

The following two games aren’t very different, and they tend to only add to the formula instead of subtracting. The second game has a second character you can play as, and adds new Pikmin and mechanics, like unlimited days and dungeon-like caves; The third adds even more Pikmin and changes how the day limit works. I’m sure Pikmin 4 will follow this trend as well, given the series’ current track record. You also don’t need to play the whole series, you can just play any one game and understand everything. Kind of like the SoulsBorne series if you will.

Some Yellow and Rock Pikmin

The basic gameplay loop of each game tends to look something like this: Call Pikmin out from the Onion; Explore the surrounding area; Kill enemies/Find parts and take them back to the onion(s)/ship; Repeat until Sunset. The Pikmin do all the heavy lifting, but you need numbers to make this happen. You can have up to 100 Pikmin on the field at once, and even more in the onion. There are a couple of ways to propagate your Pikmin. Either you can collect numbered flower pellets that create the number of Pikmin indicated on the pellet, or you can kill enemies and put them in the onion(s). In the first game, you have Red, Yellow, and Blue Pikmin, each with individual strengths and weaknesses. For example, Yellow Pikmin can pick up things, are immune to electricity, and can be thrown further than others, and Blue Pikmin don’t drown in water, but aren’t as strong as Red Pikmin, which deal more damage to enemies and are immune to Fire. They introduce new types in each game, and none have been left behind to any permanent degree in games so far.

The SS Dolphin after wrecking on earth

If you haven’t yet, I highly recommend you play the first couple of games, or all of them if you enjoy the first ones. Pikmin 1 and 2 are iconic, and 3 is good but doesn’t quite hit the same. My personal favourite is Pikmin 2. There is so much to do, and the difficulty scale can go up pretty high if you fully engage in all it offers. If you don’t have a GameCube, they are easy enough to emulate with a rom and a DS4 controller, so no worries there. Go experience the strange magic that makes up Pikmin, and enjoy Pikmin 4 when it arrives!

 

Watch the Trailer here!

Solarpunk and the Conception of the Future

Reading Time: 3 minutesImagine a world of green and sun. Not grassy fields, but densely packed buildings with large windows and trees weaving in and out of the architecture. Mossy sidewalks next to river roads, and coffee shops with ivy-covered facades.

Today I would like to talk about Solarpunk.

Solarpunk is a future-predictive aesthetic, looking at where one would like the world to go. Out of the punks, you have cyberpunk, steampunk, and others alongside solarpunk. Like all aesthetics, this deals with the subjectivity of how to conceive reality. This subjectivity deals with how technology develops, rather than aspects like clothing and room design (think Fairy Kei and Dark Academia respectively).

Solarpunk art also tends to be a little cluttered

This particular aesthetic looks at a world where humanity develops into a more sustainable form. Nature and buildings seamlessly transition, and rivers cut through cities as a primary form of transport. It takes ideas from the past and integrates them into now, while not excluding how we can improve without disrupting the flow of nature. Instead of covering rivers with bridges for cars, only human-sized bridges which are tall enough for boats to pass. Instead of dark concrete buildings, there are buildings of glass and steel or brick, with trees inside and out to create bright green landscapes. Many concepts look like Venice, Italy (or Water7 if you have seen One Piece). They also tend to have a lot of Japanese inspiration, but I am not sure if this is a requirement or simply tends to be the artist(s) preference.

I am a gardener, as well as a developer. Technology and nature form my daily life. It is an enjoyable lifestyle, so it makes sense that I would be attracted to an aesthetic that looks like how I live. However, there is also a large spectrum of how Solarpunk can appear. Some of the themes I mentioned above are common through most conceptions, yet some are debated. Many see Solarpunk as Cottagecore adjacent, with more computers, technology, and farming tech. Others see it as a sleek, clean utopia with high levels of white steel architecture, and plants weaving in and out of buildings. Both can fit under the Solarpunk ethos but are yet at odds with one another. I will include images of both kinds for reference, but I am not here to discuss if one is better than another. I will say that I do prefer a more cluttered, less sleek Solarpunk.

An almost alien example of Solarpunk using sleek steel and glass.

So, why is Solarpunk important? To be frank, it is no more important than any other art. Something I like to keep in mind, however, is that conception creates reality. When I was young, my mother would often say “Science fiction predicts the world because people only research the capability of the sci-fi worlds people write of”. In the same way, how we view the future shapes the path we take to create it. In a way, this makes Solarpunk art the most important, because it is how I would like the future to look. Of course, I like my rainbow gamer gear and sleek blacks and whites, but I can love a world that looks a bit more antiquated, and a bit more green. After all, we can create individual spaces for the things we like that don’t quite fit.

A Solarpunk City of Glass and Steel

A fantasy Solarpunk City of Glass and Steel

I’ve always loved plants, and I was exposed to plenty of them as a child. I grew up internationally, but my home base was a 1-acre plot of land in the middle of an orchard. Yet, I became a developer by trade, and my first dev job was in a room with no windows, fluorescent lights and tiny cubicles, and a literal chain link fence dividing the space in two. I know what a boring dystopia looks like, and I do not believe we would benefit from more of the same. Instead, adding more green and windows, while retaining the computers and technology would create a suitable reality for humanities next generations. Solarpunk embodies this reality, and that makes it an important addition to our conceptions of possibility.

Page 1 of 2

Powered by WordPress & Theme Modified From Lovecraft, By Anders Norén