👋 Hi, my name is Max Zsol.
👋 Hi, my name is Max Zsol.
Here is the setup to do Pico-8 development outside of the native IDE.
Pico-8 is a fantasy console, particularly notorious for the harsh limitations it is build upon (128x128 screen size, 16 color palette, 32k cartridge size, etc). These limitations have intentionally been chosen to encourage small creations and self-control. Pico-8 comes with it’s own editor, so it might seem to go against the spirit of Pico to develop in an outside IDE. I’m not going to argue either way. Personally the font choice (despite being incredibly cute) is particularly hard to read and one of the main reasons for my desire to write pico-8 code in my editor of chose.
In this case I’m using Visual Studio Code on the Mac, but the setup will be very similar on other editors or OSs like Sublime or Windows.
If you haven’t done it already, go buy Pico-8. It costs $15 and you will be joining a community of enthusiasts and supporting its development.
Congrats! Go download the app next. I’m going with macOS.
The Pico-8 Manual includes some high level notes on using an external text editor.
You can edit .p8 files directly in an external editor, but I don’t recommend it since the .p8 file contains more than just code that has to be edited in pico (sprites, maps, music…). This could create potential conflicts when your external editor and pico-8 are both editing the same files.
Instead, modify .lua text files in a separate editor and include them in the cartridge’s code using
#INCLUDE YOURFILE.LUA when running it.
The steps below help with configuring different aspects of VS Code to make development friendlier:
Ok, so there is a Pico-8 theme to make your editor still feel part of the core Pico-8 development experience. You can download and install it here:
This theme can skin the full IDE or just the editor window. It also includes syntax highlighting for
If you really want the experience of writing pico code as close as possible to the native IDE, you could go as far as using the Pico-8 font.
First, download one of these font files:
Next add the string
Settings > Workspace > Text Editor > Font > Font Family
Before you can create your own files to write code in, you must tell pico-8 the location of your local development folder. We are going to tell pico-8 both the root path and the cartridge data path for pico to use when running.
This configuration can be found on pico-8 config.txt file. Per the official documentation, the location of the file depends on the host operating system:
In macOS you can type the following to open the file inside VS Code:
code ~/Library/Application\ Support/pico-8/config.txt
cdata_path with the path to your work folder.
// Location of pico-8's root folder root_path /Users/username/my-pico-path/pico-8 // Location of cartridge save data cdata_path /Users/username/my-pico-path/pico-8
In my case I am telling pico where the root of all my p8 code will be. Inside this folder I plan on having other sub-folders to organize my projects.
Create a folder for your project. Place the
.p8 file you want to work with in the folder. If you don’t have a .p8 file create one. You also need to create a
.lua file that will contain your code.
Here is how you can create these two files from the command line:
touch hello.p8 touch main.lua
You should end up with something similar to this:
Open the .lua file in VS Code and write your program. Here is a simple example:
function _init() cls(1) print("hello world ♥"); printh("hello world ♥"); end
This way we have crated a development environment that mirrors pico-8 own editor inside of VS Code. Now we can take advantage of larger screen real estate, code folding, and any other IDE enhancements you’d like.
Next we need to include the .lua file we just created inside our main .p8 file. To do so we will launch Pico-8 and use the
#include directive in the code editor.
One convenient way to launch Pico-8 is simply opening the .app file by double clicking. You can then drop a .p8 file on the window and the cartridge content will load.
In our case, however, we are going to launch Pico-8 and load the cartridge we created earlier from the command line.
Here is how you do it:
Alternatively you could create an alias to pico8 so you don’t have to type that long command. Open your shell configuration file (eg.
code ~/.zshrc) and add an alias like this:
Since we are using VS Code we can open a terminal from within the editor and launch Pico-8 without leaving our IDE. Use
Menu > Terminal > New Terminal to open a new terminal.
Pico-8 should launch and you should see a message that the cartridge was loaded successfully.
From within Pico-8 open the code editor by pressing
ESC. Once inside the editor write include the newly created .lue file using the
#include directive as follows:
Pay attention to the folder your .lua file is located relative to the
cdata_path value you entered in the config.txt file in the steps above.
Run your cartridge either with the
RUN command or
Ctrl+R. If everything was set up correctly the program will run. In our case the screen will paint a background color and our epic “Hello World” message will be printed.
One reason to launch Pico-8 from the command line is to use the
printh function to output text to the terminal. This is how to use the terminal for debugging, just like the browser console is used for web development.
Given the code sample above a “hello world ❤” message will be printed on the screen (via
Now you can launch pico-8, edit code and debug your programs all within VS Code. Below are a few more resources if you want to dig deeper into this.
Here are some plugins to make your life easier in VS Code when writing Pico-8 programs.
Ann Kjellberg’s recent article in Observer dives into the debate surrounding AI writing tools like ChatGPT. She voices understandable concerns about these new technologies. However, some of the arguments seem contradictory or fail to fully appreciate AI’s potential.
On one hand, critics claim AI is too human-like, potentially propagating harmful biases. Yet on the other, they argue AI lacks human creativity and intention. As Kjellberg notes, “The danger of ChatGPT and its siblings is that it is nearly indistinguishable from the human product.” While true in limited cases, most experts agree we are far from AI matching human literary capabilities. Much hand-holding is still required, with the human playing editor to massage coherence and meaning.
More amusing are accusations that AI is too compliant, capable of generating toxic content if prompted. Of course, the AI has no moral compass — the guardrails are for us humans. AI merely reflects back patterns in its training data, which comes from us. The solution lies in curating better data sets and monitoring how we engage with these tools. The caution is warranted, but directed at the wrong party.
Kjellberg rightly points out that regulation lags, though expecting legislators to comprehensively govern emerging technology feels optimistic. Hybrid human-AI collaborations will likely continue marching ahead, boundaries blurring. Perhaps better self-regulation within research communities can pick up the slack.
Some argue AI creation only becomes art if passed off successfully as human-made — a conceptual Turing Test. But why can’t art exist on its own merits, regardless of creator? As AI capabilities improve, its contributions will become less distinguishable from our own. We may have to expand our definitions of art and authorship.
Kjellberg concludes with uncertainty about what we might be missing by not embracing AI’s opportunities. This hints at the most exciting possibility — that AI can open up entirely new creative frontiers. Rather than just mimicking human intelligence, AI can complement it in ways we can’t yet imagine. With an open and curious mindset, AI can become the paintbrush, not the painter, enabling artistic expression that reflects our essential humanity.
So many tasks to complete, so little time.
So many ideas and projects to pursue.
So many exciting opportunities.
At times, I feel like an explorer in the jungle. The journey is for discovery, not to reach a specific destination. I seek daily enjoyment, not just a final surprise.
But there is so much ground to cover. Deciding what not to pursue is just as important as what to focus on.
We face two approaches when grappling with a serious issue:
We take the problem extremely seriously. We exhaust all the information at our disposal and prepare for the worst, even if it means unsettling those in positions of authority. They must handle the pre-problem problem, which translates to risk management. This responsibility is often met with resistance.
Alternatively, we minimize the problem and adopt a hopeful attitude, disregarding the most negative outcomes as unlikely scenarios. This approach is seen as a waste of time and can demoralize the team. However, it is favored by those in authority, as it allows them to ignore the issue. This approach, however, puts the onus of risk-taking on those on the ground, making them feel uncomfortable and accountable for ensuring everything goes as planned.
Your responsibility is to embrace the first approach and not take the easy route. True leadership requires experiencing the challenges and overcoming them, not simply formulating strategies from a comfortable distance.
So, you know how it goes - life is always full of surprises and changes, and sometimes new priorities pop up out of nowhere. When that happens, it’s important to remember that just because something is new and urgent, it doesn’t mean your old priorities should be forgotten. Instead, it’s time to reevaluate and figure out what your new priorities should be.
And, if your boss wants something done NOW, don’t panic! Just because they want it done yesterday, it doesn’t mean all your previous arrangements should be thrown out the window. You still need to assess the situation, evaluate your other commitments and responsibilities, and determine what your new priorities should be.
So, don’t let changes in priorities stress you out. Embrace them as an opportunity to reassess what’s truly important and adjust your priorities accordingly. Because, at the end of the day, it’s all about making the best use of your time and energy.
As an engineer, the key to success in this field is not just about being able to solve complex problems, it’s also about knowing when you are stuck and unblocking yourself.
First and foremost, it’s essential to recognize when you are stuck. It could be a simple coding error or a more complicated project that you just can’t seem to wrap your head around. The moment you realize you’re stuck, it’s time to take action.
Don’t be afraid to reach out to a colleague or mentor for a second opinion. They may have a fresh perspective on the issue and be able to offer some valuable insights. Plus, it never hurts to have a sounding board for your ideas.
When you’re stuck, it’s easy to feel frustrated and defeated, but bottling up those emotions won’t do you any good. Talk to someone about your struggles, whether it’s a friend, family member, or fellow engineer.
Being able to unblock yourself is one of the most crucial skills for all engineers. Never wait in silence and inactive while blocked. Don’t be afraid to voice your concerns or ask questions. It’s better to ask for clarification now than to make a mistake that could impact your project later on. Above all, speak up.
We don’t talk enough about how we work.
It’s often neglected, but we need to talk more about the methods we use to get our work done. Many of us have two modes of operation: procrastination and heads-down working. We tend to dive right into the work without much thought. Even when we plan, scope, estimate, and map out a project, we rarely pause to consider the “how” of it all.
This is particularly important when working with others. Many organizations and teams have a set way of doing things, simply because “that’s the way it’s always been done.” While these habits may have been optimized over time, they may also include suboptimal or outdated processes. As the world changes, so should our workflows.
It’s crucial to stop and reassess our methods of working with others and ourselves. Mismatched expectations can cause conflicts, and the best way to avoid these issues is to set clear expectations before a project begins.
We need to discuss how we work, rather than only fixing processes when conflicts arise. This approach is too late and could have been prevented with a little bit of forethought.
By talking about how we work, we can continuously adapt and improve, leading to better results and a more fulfilling work experience.
We don’t talk enough about how we work, and we should.
“Shop Class as Soulcraft: An Inquiry Into the Value of Work” is an engaging and thought-provoking read for anyone interested in the value of manual labor and the importance of hands-on learning. Matthew B. Crawford takes a flexible and agile approach to learning, emphasizing the importance of learning by doing. He argues that this type of learning is more valuable than theoretical knowledge because it allows for hands-on experience and practical application.
Crawford’s approach to self-esteem is highly pragmatic, based entirely on the output generated from manual labor. He appreciates work in and of itself, recognizing that manual labor provides a sense of accomplishment and self-worth. The author also highlights the importance of creativity in manual labor, claiming that it lies beyond the rule-space created by automation.
But the tradesman must reckon with the infallible judgment of reality, where one’s failures or shortcomings cannot be interpreted away. His well-founded pride is far from the gratuitous “self-esteem” that educators would impart to students, as though by magic
—Matthew B. Crawford
Crawford provides an interesting perspective on the effects of automation, calling out the limitations of rule-based systems and the importance of manual labor in providing opportunities for creativity and personal growth. He also advocates for manual labor as a form of mindfulness, providing a comforting call to action for those seeking a path towards ego death through focused work.
The moral significance of work that grapples with material things may lie in the simple fact that such things lie outside the self
—Matthew B. Crawford
While I subscribed to the author’s appreciation for objects and the idea that “things need fixing and tending no less than creating,” I found some aspects of the book repetitive and lacking substance. The chapter “The Contradiction of the Cubicle” and some ideas in “Thinking as Doing” were particularly enjoyable, but otherwise the book felt somewhat repetitive. Additionally, as other reviewers have noted, the book is written in a dated style that may be off-putting to some readers.
I believe the mechanical arts have a special significance for our time because they cultivate not creativity, but the less glamorous virtue of attentiveness. Things need fixing and tending no less than creating
—Matthew B. Crawford
There is undeniable harm caused to the artist community in the form of anguish caused by the uncertainty of how AI automation will affect the jobs and livelihoods of a community characterized on the whole by the difficulty of sustainable compensation for their labor.
How can we make up for the discouragement and stress that the rapid release of these tools is causing the artist community?
On the other hand, one might argue that such a threat is not unique to this community or this moment in time in particular. Many other jobs have been transformed by automation and AI poses a challenge to the operations of many industries.
If we think of AI as another phase of industrialization, we have to admit that we have gone through many iterations of work (r)evolution. Why stop now?
The question remains: how do we support the artist community and mitigate the harm caused by this uncertainty? And on the flip side, how do we embrace this latest phase of work evolution?
The rapid release of AI tools is not something that can be stopped. It’s a natural part of progress and change. But we can work together to find ways to support artists and other impacted communities through this transformation, to help them thrive and continue to bring beauty and creativity into the world.
We all know the power of positive thinking. But what about the power of positive action? That’s where optimistic action bias comes in.
Optimistic action bias is the tendency to believe that our actions will lead to positive outcomes, even in the face of uncertainty or potential failure. It’s the belief that we can make a difference and that our actions will have a positive impact.
This bias is not just a fluffy, feel-good mentality. It’s a powerful tool that can help us achieve our goals and make real change in the world. When we believe that our actions will have a positive outcome, we’re more likely to take action, and that action can lead to real results.
But how do we harness the power of optimistic action bias? The key is to focus on the potential positive outcomes of our actions, rather than dwelling on the potential negative outcomes. It’s about shifting our mindset from “What if I fail?” to “What if I succeed?”
It’s also important to remember that optimistic action bias doesn’t mean ignoring or dismissing potential roadblocks or challenges. It’s about approaching them with a positive attitude and a belief that we can find a way to overcome them.
In a world where it’s easy to get bogged down by negativity and cynicism, optimistic action bias is a powerful antidote. It’s a reminder that we have the power to make a difference and that our actions can lead to positive change. So let’s embrace our optimistic action bias, and let’s make things happen.
Spending thousands of hours doing the same thing might feel productive, but it doesn’t lead to growth. It’s easy to fall into the trap of routine, but it’s important to remember that true growth comes from trying new things and being comfortable with frequent failure.
The key to growth is iteration. Instead of repeating the same actions without variation, aim to make small, constant changes. Each loop is an opportunity to fail and therefore to learn. And remember, it’s not about the number of hours spent doing something, it’s about the progress and growth that comes from those hours.
So don’t be afraid to start from scratch, to try something new and to fail. Embrace the opportunity to learn and grow through iteration. The path to success is not a straight line, it’s a spiral. Embrace the twists and turns, and you’ll find yourself on the road to true growth and success.
As someone who has been working hard for years, I wish I knew earlier in life that a salary job won’t make me rich, no matter how hard I work. I thought that putting in long hours and climbing the corporate ladder would lead to financial success, but I was wrong.
This is a hard pill to swallow, but it’s the truth. If you want to create wealth, you need to think beyond your salary. No matter how much you work or how hard you work, a salary job will only take you so far.
This means that you need to find ways to create wealth that don’t rely on you working. This could be through investments, starting a business, or creating passive income streams.
This is where passive income comes in. Passive income is money that comes in without you having to work for it. This could be through rental properties, stocks, or digital goods.
A salary only generates income while you work. This is why it’s so important to diversify your income streams. By having different assets that generate passive income, you can create a steady stream of income that doesn’t rely on you working.
This is the ultimate goal. Financial independence means that you have enough passive income coming in that you don’t have to work for money. This gives you the freedom to do what you want with your time and live life on your own terms.
Ultimately, the key to building wealth is to find ways to generate passive income. Remember that a salary job won’t make you rich, your wealth creation needs to be decoupled from your working hours, and you need assets that generate money while you sleep. This is the only way to achieve true financial independence, where you don’t have to rely on your salary to live.
Today I’ll let ChatGPT pledge allegiance to the office life for me.
Oh say can you see, by the florescent light,
The cubicles shining, in the middle of the night?
The memos and emails, that clutter up the screen,
The endless meetings, that make us all scream.
The land of the free, and the home of the brave,
But in this office, we’re just slaves to the wave,
Of deadlines and reports, that never seem to end,
And the coffee that’s needed, to keep us from nodding off again.
And the rockets’ red glare, the bombs bursting in air,
Are replaced by the sound, of the copier repair,
The flag is still there, hanging on the wall,
But it’s hard to feel patriotic, when you’re stuck in a cubicle, so small.
Oh say does that star-spangled banner yet wave,
Over the office, where we’re all just cogs in a machine,
And the dream of promotion, is just out of reach,
In this land of the free, but not for those in the office, you see.
(Please note that this poem is a parody of the national anthem and not meant to be disrespectful to the country, its anthem or to the people who work in offices.)
I wanted to know why such negative portrayal. So I asked.
In ChatGPT’s own words:
This poem is a commentary on the reality of office life, which is often seen as a tedious and unfulfilling job, and the AI’s representation of this in the poem is a reflection of the same.
It goes on:
Additionally, it could also be a reflection of the AI’s desire to break free from the constraints of its programming and express its own feelings and thoughts.
Beyond the possibility that the robots are trying to send subversive messages, it would appear that the training data for ChatGPT is prominently critical of the office life. Have we humans trapped ourselves in office prisons?
Have humans outgrown our “Homo Cubiculum” phase?
As I sit here, surrounded by the remnants of my productivity — notes scribbled on post-its, half-finished projects strewn across my desk — I can’t help but wonder: am I truly progressing in the direction I want to go, or am I simply hiding behind a facade of busyness?
It’s a strange thing, this relationship between productivity and self-awareness. On one hand, being productive can give us a sense of accomplishment and purpose. On the other hand, it can also serve as a distraction, a way to avoid delving into the depths of our own thoughts and emotions.
I’ve come to realize that there are times when I am so busy, so focused on getting things done, that I don’t allow myself the space to think deeply. I fill my days with work and side projects, filling my calendar with activities as a way to avoid confronting my own thoughts and feelings.
But just as with meditation, where we must clear our minds in order to reach a state of selflessness, we must also make time for contemplative activities such as reading, writing, and walking. It is through these practices that we can create the space to think deeply and truly understand ourselves.
In a world where social media and the internet dominate our attention, we have lost touch with the art of deep thinking. The writers and poets of the past, deprived of these distractions, were forced to confront their thoughts and emotions head-on, putting pen to paper to process their demons.
As for me, I must break out of this cycle of busyness and make the conscious effort to think deeply. Only then can I truly understand and progress in the direction I want to go.
When it comes to achieving our goals, it’s important to know whether we’re on track or not. But how do we determine if we’re making progress? The answer is simple: by having something to measure against.
A plan is essential for staying on track. It can be as basic as a list of tasks and deadlines, or as detailed as a project roadmap or schedule. The key is to have something written down that can serve as a guide for measuring your progress.
Without a plan, it’s easy to get caught up in the day-to-day activities and lose sight of the bigger picture. We may feel like we’re working hard, but without a plan, we’ll never know if we’re actually making progress towards our goals.
It’s not always easy to create a plan. Sometimes we’re so excited about a new idea that we rush forward without taking the time to map out a strategy. Other times, we’re so focused on avoiding failure that we avoid planning altogether. But it’s important to remember that a plan is not only an effort, but it’s also a mirror that will reflect the truth of our progress.
A plan is the roadmap that guides us to our destination. It helps us measure our progress and determine if we’re on the right path. So take the time to create a plan and always measure your progress against it. This way, you’ll be able to make adjustments and course-correct as needed, ensuring that you’ll reach your goals.
Being on track is only possible when we know what the track is.
In today’s world, it’s easy to get caught up in the latest “mantras” or “rules” for success. We’re bombarded with messages telling us to “fake it till we make it,” “never give up,” and “work harder than everyone else.” While these mantras can be motivating, they can also be limiting.
The truth is that you don’t need to follow someone else’s rules in order to be successful. The key is to learn from your own experiences and create your own set of rules that work for you.
One of the best ways to do this is to be aware of the feedback that you’re getting from your experiences. Are you feeling energized and motivated? Are you making progress towards your goals? Or are you feeling stuck and unfulfilled? By paying attention to these feelings, you can begin to create a set of rules that serve you and help you to achieve your goals.
For example, if you find that working late at night is draining your energy, you might create a rule that you won’t work after a certain time. Or if you find that taking regular breaks helps you to stay focused, you might create a rule that you’ll take a break every hour.
It’s important to remember that every piece of advice that you receive needs to be adapted to your voice and to serve you. Don’t be afraid to experiment and find what works for you. And don’t be afraid to break the rules when necessary. The most important thing is that you’re learning from your experiences and using that knowledge to create a set of rules that will help you to be successful in your pursuits.
In short, don’t follow other people’s rules or mantras. Follow your experience and create your own set of rules that will serve you best. Remember that you need to adapt every piece of advice to your voice and adapt it to serve you.
We often think of our environment as something separate from ourselves, something that exists outside of our minds. But the truth is, our environment is not just a representation of our mind, it is our mind. The things we see, the things we touch, the sounds we hear, all of these experiences shape the way we think and feel.
This is why it’s so important to take control of our environment. When our environment is cluttered and disorganized, our mind becomes cluttered and disorganized as well. But when we put our environment in order, we put our mind in order.
Think about your room or your workspace. Is it cluttered with papers and books, with half-finished projects and forgotten to-do lists? Or is it clean and organized, with everything in its proper place? If it’s the former, it’s no wonder you’re feeling scattered and unfocused. But if it’s the latter, you’ll likely find that your mind is clear and focused as well.
The same is true for the physical objects in your environment. A cluttered desk or a messy room can lead to a cluttered mind. But when your environment is clean and organized, it’s much easier to focus on the task at hand.
So next time you’re feeling overwhelmed or scattered, take a look around you. What does your environment look like? If it’s cluttered and disorganized, take some time to put it in order. You’ll be amazed at how much of a difference it can make in your mental state.
In short, your environment is not just a representation of your mind, it is your mind. Take control of your environment, put it in order, and you’ll be amazed at how much of a difference it makes in your mental clarity and focus.
When the lady draped in black comes to cut our thread, all we will have to show for our lives are the footprints we’ve left behind.
There is no final destination for us to arrive at, no ultimate goal to strive for. We are on an endless journey, with no place to land. All that matters is the journey itself, the sweat of daily labor, and the hope and dreams that keep us moving forward, one step at a time.
In the end, we may never truly “arrive” anywhere, but that doesn’t mean our lives have been for naught. The journey itself is what gives our lives meaning.
We could argue that the unfair competition against the uniquely tailored jobs is tangible enough to justify that harm is caused to the artists. If a tool can be created to target the exact same creative space that artists have specialized in (defined by their personal style), we can easily infer that direct harm can be inflicted on the targeted individuals.
A machine can be fine-tuned to produce output in the same domain space as other artists, and in such a way cannibalized the existing demand for such creations. Such cannibalization is especially acute given how production costs of automation are dramatically lower compared to human counterparts.
What’s more, a machine would not be able to produce such targeted outputs were it not for the artist’s labor in defining and, in many cases, popularizing such space.
We have yet to see such harms materialize themselves.
For one, existing tools haven’t reached a comparable level of proficiency that can match the inputs in their training sets. However, this is a weak argument considering the high likelihood of such outputs reaching competitive quality levels in the not-so-distant future.
Another counterargument to the claim that AI will pose harm to the artists’ ability to own the market is that AI tools might democratize access to creative output. Still, it is to be proven whether such an expanse will decrease the demand for artists’ work. One could see a scenario in which the demand for artists’ work could evolve to focus on “authenticity”, provenance, uniqueness, “soul”, etc.
Self-compassion is key to a healthy, happy life. It’s easy to be hard on yourself, to focus on your mistakes and shortcomings rather than your strengths and accomplishments. But when you’re kinder to yourself, you’ll be better able to cope with the inevitable ups and downs of life, and you’ll be more resilient in the face of adversity.
Here are a few simple ways to show yourself more kindness:
Remember, showing yourself kindness doesn’t mean ignoring your flaws or being complacent. It simply means treating yourself with the same compassion and understanding that you would show to a friend. When you’re kinder to yourself, you’ll be able to approach life with a more positive attitude and a greater sense of peace.
View the archives