September 03, 2023 7 min read

How To Give Credit

There was a maxim I once heard as a teenager and have valued ever since: give credit, take blame.

Giving credit is an essential part of being a decent human. I see people fail at it surprisingly often.

Different fields have their own ways of doing it, and we can learn from these different approaches and try to taxonomize and find the tactics that best apply to our own situations.

In cinema, the focus is often on key roles the audience values like directors and lead actors. Academia has a nuanced system; the order of authors can indicate the level of contribution. Journalism uses bylines, putting the lead reporter's name first, and crediting photographers and graphics producers in captions next to their work, but almost never crediting Editors.

Looking across industry and history, let's find insights into how to properly acknowledge the work of others.

If you care to look, your music streaming app doesn't just tell you the Artist who released the track; it tells you who's strumming the guitar, who's hitting the drums, and who's tweaking the soundboard. Streaming sites get a lot wrong when it comes to compensation, but in this one area, they are a model for an approach to proper credit, even if the media is distributed long after it was created, in ways the authors could have never predicted.

Journalism is another industry where stories are often the work of a team, at least one editor, a writer, maybe a photo editor and a graphics person. Yet, the byline at the top of the story often only features a single writer.

What if each article credited the entire team? The editor who pruned the excess, the fact-checker who sifted fact from fiction, the intern who unearthed that crucial data point—all given their due.

Credit isn't a zero-sum game. Acknowledging the collective doesn't diminish the individual; it enriches the entire endeavor, both for the creator and whoever receives the work.

Why Giving Credit is Important

In a world that often rushes to the finish line, the act of pausing to give credit might seem like a luxury. The skeptics might argue that giving credit muddies the waters, complicates the narrative, or even sparks legal quandaries. These people suck.

Let's be clear: the absence of acknowledgment isn't simplicity; it's wrong. It's a poisonous silence that can breed resentment, stifle innovation, and ultimately, erode entire teams.

The time it takes to attribute fairly is not a detour but an investment, one that pays dividends in trust and respect.

How to Give Credit Properly

Alright, you're convinced. You want to give your team credit for their work. But how do you do it properly, equitably, and consistently?

Verbal Acknowledgment

  • Be specific: value precision when describing each person's contributions, and actually pay attention to the parts of the project each person cared about deeply.
  • Timing: be upfront when giving credit, do it often, and in public.
  • Consistency: don't overlook quieter contributors, make sure to take the time to understand the contributions and speak honestly about each person
  • Understand your team: some people prefer private thank-yous or different approaches
  • Culture: encourage a culture of credit where everyone acknowledges each other's contributions as a habit
  • All forms: include all forms of contribution, from the person writing code to the person who washed dishes after that late-night working session

Written Acknowledgment

  • Document the Details: In reports, emails, or any official documents, be explicit about who contributed what. This ensures everyone's efforts are recognized and in the record.
  • Email Shoutouts: When communicating project updates, make it a point to name individuals and their specific contributions. It's a direct and effective way to show appreciation and highlight their achievements.
  • Social Media: Utilize social media and company platforms to publicly acknowledge team members. A LinkedIn mention or a spotlight in the company newsletter can significantly uplift morale and visibility.

The Impacts of Giving Credit

Positive Impacts

  • Enhanced credibility
  • Strengthened relationships; boosted morale and motivation
  • Career advancement in academia and journalism

Negative Impacts of Failing to Give Credit

  • Plagiarism and its consequences
  • Strained professional relationships

Case Studies

Rosalind Franklin and DNA Structure Discovery: Rosalind Franklin's contribution to the discovery of the DNA double helix structure is a famous case of credit not being given where due. While James Watson, Francis Crick, and Maurice Wilkins received the Nobel Prize in 1962 for this discovery, Franklin's crucial contribution, particularly her X-ray diffraction images of DNA, was not adequately acknowledged during her lifetime.

Phil Knight and Nike’s Swoosh Logo: The iconic Nike Swoosh was designed by Carolyn Davidson, a graphic design student, for a mere $35 in 1971. While Phil Knight and Nike gained massive recognition and profits, Davidson's contribution was relatively unknown until much later. Nike later acknowledged her role and compensated her with stock in the company.

The Matilda Effect in Scientific Research: This term refers to the under-recognition of female scientists' contributions, named after the suffragist Matilda Joslyn Gage. A prominent example is the case of Chien-Shiung Wu, a physicist whose work was critical in the field of particle physics, but who did not receive the same level of recognition as her male counterparts.

James Somerton Youtube Controversy: The saga of James Somerton is a recent and particularly egregious example of not giving credit. Somerton, known for his thought-provoking essays on LGBTQ+ representation in media, was found to be a serial plagiarist by HBomberguy, another YouTuber, who dissected his work in a comprehensive video titled "Plagiarism and You (Tube)." This wasn't a fleeting mention; nearly half of the four-hour video was dedicated to analyzing Somerton's content, highlighting dozens of instances of plagiarism where Somerton took a writer's work and modified it slightly before reciting it to a camera and soliciting Patreon supporters.


The notion that giving credit diminishes the role of the leader or disrupts industry norms is a relic of a bygone era—an era that didn't understand the synergistic magic of collective intelligence. True leadership is magnified, not minimized, by the act of extending credit where it's due. It's a gesture that says, "I see you, I value you, and I recognize that my success is interwoven with your contributions."

Credit and gratitude are a practice that transcends contractual obligations and enters the realm of ethical integrity. In a world full of competition and individual accolades, the act of giving credit becomes a revolutionary stance, a commitment to a culture of inclusivity, transparency, and mutual respect.

In a world obsessed with individual achievement, giving credit is a radical act. It disrupts the narrative of the lone genius and recognizes the collective effort behind any meaningful endeavor. It's not just ethical; it's profoundly human. It's the way we say to each other, "Your presence in this world makes a difference."

Additional Resources

Industry Practices in Credit

IndustryGood PracticesBad PracticesWhat Can Be Learned
ArtLists all contributors including the artist, muse, framer, etc.Spotlight often solely on the artistBroad acknowledgment enriches the endeavor
JournalismByline for lead reporterOften omits editors, fact-checkers, internsLayered credits could offer a fuller picture
MusicDigital platforms list all roles: songwriter, producer, vocalistIssues with uncredited samplesTransparency can be an art form
Software DevelopmentOpen-source projects maintain a contributors listContributions in proprietary code can be obscuredDemocratic, transparent crediting fosters collaboration
Visual ArtsArtist biographies in exhibitionsArt theft and plagiarism onlineContext adds depth to acknowledgment
ArchitectureCredits both the firm and lead architectsJunior architects may go uncreditedBalance between collective and individual acknowledgment
SportsHighlights key players and team effortCoaches and support staff may go unnoticedCollective effort is as important as individual performance
PublishingDetailed biographies of contributing authorsGhostwriting obscures actual contributorsTransparency in crediting invisible labor
FashionLead designers share runway applauseFast fashion copies without creditGenerous crediting avoids ethical pitfalls
Video GamesExtensive end creditsCrunch culture may lead to unacknowledged labor
HealthcareMedical papers list all researchersNurses and other providers often go uncredited
Culinary ArtsChefs credited in cookbooks and menusRecipes often shared through generations without acknowledgmentOrigin acknowledgment respects cultural heritage
PatentsPatents list all inventorsJunior researchers or collaborators may be left off author listsCapitalism incentivizes against credit

The Importance of Giving Credit

Authorship: Giving credit where it’s due

CRediT (Contributor Roles Taxonomy)

April 10, 2023 3 min read


It's been a long journey since I first started in data visualization contracting over ten years ago, and I'm incredibly proud to introduce my new data and prototyping studio: Room 302 Studio.

As my client work grew larger and more intricate, I realized the tremendous potential of forming a studio where talented people could connect, collaborate and strive together towards empowering the world through projects and tools that center joy and kindness. This dynamic new studio sets up an exciting opportunity for each of us to take on more ambitious projects that reflect our strong values.

We just published one of our first projects and I've done a tremendous amount of work to be able to say: we are open for business!

Hire us

We are booking client work today. Reach out to [email protected] with an idea, dataset, or prototype you want to talk about.

At Room 302 Studio, we offer a range of services that cater to different needs and project types:

  1. Data Visualization and Exploration: Transform complex data into visually engaging and easy-to-understand websites, D3 visualizations, or Observable Notebooks that effectively communicate your insights internally or to the public.
  2. Prototyping: Turn your big ideas into tangible reality with high-quality prototypes that can be used for testing, refining concepts, and fundraising.
  3. AI Consulting: Integrate generative text and image models into your work with the help of a team experienced in prompt engineering, embedding visualization, and the art and magic of speaking to robots.
  4. Workshops & Events: Participate in interactive learning sessions where you can acquire new skills, insights, and knowledge in various disciplines.
  5. Cutting edge tech: We pride ourselves on adapting quickly, and enjoy pushing the limits of new tools and technologies. Use our team to QA your product, develop a library of demos, or create instructional content on things no one has ever seen before.

Workshops and Events

Room 302 Studio will be regularly hosting events in the coming year that promote learning, collaboration, and growth:

  1. Livestreams: Collaborate on projects in public, stream live tutorials, give presentations or host Q&A sessions through livestreaming platforms like Twitch or YouTube. This will build on the incredible experience Ian and I had with Coding with Fire
  2. Hackathons: We are hoping to host fast-paced development sprints aimed at solving specific challenges within a limited timeframe.
  3. Knowledge Sharing: Engage with leaders from various industries as they share their insights on emerging trends and technologies.

Membership Options

In addition to our consulting services, we have set up an accessible Discord community that allows members to tap into the studio, engage in thought-provoking discussions, and start collaborating on projects that make a genuine difference. I am really trying to focus on creating a space and sparking collaborations that center joy: Joy Driven Development

We offer two types of membership options depending on your needs:

  1. Community Membership (Free): Access our Discord community where you can engage with other members, participate in discussions on topics that interest you, attend virtual events, propose projects or collaborate on existing projects.
  2. Studio Membership (Monthly Fee, Invite-Only): This is for members who will be working on paid client work, and includes a studio email, project billing, and a number of internal tools, resources, datasets, and templates.

I am beyond excited to see where this journey takes us, and I invite you to join us at Room 302 Studio as we collaborate, learn, and grow together. To learn more, visit our website at

April 04, 2023 9 min read

A Thoughtful Approach to Choosing a Modern CMS


In an age where content is king, the choice of a Content Management System (CMS) is akin to forging a bond with an unknown force that holds sway over all of your endeavors, and it is a decision that cannot be taken lightly, though it often is.

We are creative creatures navigating the complex collision of man-made machines and natural beauty, it is crucial for us to approach CMS selection with careful consideration, lest one finds themselves shackled to an ill-fitting system for eternity.

Many times, you don't even need a traditional CMS at all: just use your computer's existing filesystem and tools.

A digital artist working with multiple screens: Develop an image of a digital artist or content creator surrounded by multiple screens, each displaying a different CMS platform or aspect of content management (e.g., writing in Markdown, managing media assets, or monitoring website performance). This image would showcase the complexity of selecting and working with a modern CMS and emphasize the importance of considering various factors when making a choice

My experience with Content Management Systems has primarily been within the bustling world of news organizations and startups, where work is often birthed in familiar tools like Word or Google Docs before being shepherded into a CMS for finalization, and time is of the essence.

However, the limitations of many platforms become apparent when you want to do anything other than publish text. Elements such as full-screen videos, interactives, and scrollytelling might need to be hosted externally, accessed via links or iframes, and may not be responsive. This is extremely frustrating for everyone involved.

The argument for no CMS

Let's get to the point: unless you can easily list the reasons why you need a CMS, your default should be to avoid it as long as possible.

The longer you keep your content outside of the CMS, the longer you have complete control over your content and your code and you don’t have to worry about compatibility issues and artificial limitations.

The downside is that it takes time, effort, and intentionality to build everything from scratch. If you want to add features like comments or social sharing, you have to build those yourself or find a plugin that works with your system. This approach is only valuable if you want to create work that looks unlike everyone else's, and can benefit from the value of complete control.

The tools and frameworks for creating websites quickly change the equation. If I can use tools like Tachyons, Nuxt, and Supabase to create complex scalable applications in hours, why would you then spend additional hours trying to get it to work within the limitations of a legacy CMS? 2022 Toolkit for Prototyping

Redefine 'CMS' and bring your own

But what does it actually mean to not have a CMS? It means that instead of entrusting your database of content and assets to a third party, you treat them like you already do; as folders of content in your local filesystem. This encourages a bring-your-own CMS approach; use whatever Markdown editor you want. Use whatever image editing tool you want.

By bringing your content out of a traditional web-based CMS, you unlock the ability to use your existing toolset without the friction of working through web-based recreations with a fraction of the functionality.

You can keep your folder of assets in markdown in sync with whatever system you want; a GitHub repo, Dropbox or Google Drive folder, or using keeping it all in an Obsidian Vault and using Obsidian Sync.

The important thing is that you can switch between any of these options at any time. This also lets you change your mind, quickly, easily, and repeatedly. Because your content is kept out of a database, you don't have to add additional plug-ins or re-craft taxonomies in new tools. The Markdown ecosystem is incredibly vast, and every user can bring their preferred solution to the content without affecting anyone else.

It's essential to acknowledge that no single solution can cater to everyone's needs, and the perceived advantages of a CMS may not always outweigh the drawbacks, especially when it comes to migrating to a different solution down the road.

Furthermore, the expenses associated with hosting, licensing, and maintaining a CMS might be a deterrent, especially for individuals and smaller organizations with limited budgets. On the other hand, the expenses associated with having creatives and developers create custom-built solutions without existing templates/and frameworks may outweigh the benefits of creative freedom if not managed correctly.

The argument for a CMS

Proponents of CMS platforms often emphasize the efficient workflows and user-friendly interfaces a well-chosen system can provide. By offering a unified structure and set of tools, modern CMS platforms simplify content management, enabling even those with minimal technical expertise to contribute effectively and move quickly.

Twitter is a model CMS

It is incredibly easy to throw together a twitter thread and have it be easily digestible and shareable. With the freedom to interweave images or graphics, Twitter's CMS permits bursts of raw emotion and inspiration with the immediate feedback of likes, retweets, and comments. Few CMSes can rival the pleasure and simplicity of Twitter.

There is an undeniable allure to the ease of use and the minimalistic approach to maintaining a Twitter account. For many, Twitter stands as the best CMS they have ever encountered.

Markdown-powered CMS

Markdown's simplicity as a plain-text format allows for effortless writing and editing using any text editor or even the built-in editor in a CMS. As a standard format, migrating content between CMS platforms is super easy.

Nuxt Content powered by Markdown

Nuxt Content is a powerful CMS alternative that uses Markdown as its content format. With Nuxt Content, you can easily create and manage a website without having to worry about complex database schemas or cumbersome UIs.

I use Nuxt Content to power my website

Nuxt Content also provides a lot of powerful features like automatic syntax highlighting for code blocks, support for YAML front matter, and a plethora of modules that make it easy to generate opengraph images, include Google Fonts, and a bunch of other useful things.

Markdown editing tools

Ultimately, the decision to implement a CMS rests on carefully assessing the available options and considering one's unique situation; but "we need a CMS" should never be the default option.

A well-informed and discerning approach to CMS selection can enable teams of content creators and developers to maintain a productive balance between freedom and speed.

By understanding the full spectrum of choices, we can confidently navigate the world of CMS platforms and select the solution best suited for our creative endeavors, even if sometimes the best solution is no solution at all.

If you ever find yourself creating a new hand-built CMS- you probably shouldn't. But if you do, it should follow these principles at minimum.

What a CMS should do

Be easy to use

A CMS should make it easy to make content.

A CMS should cater to both content creators and developers. It must be intuitive for content creators and allow developers the flexibility to easily extend and customize functionality without unintentionally causing issues.

Help your process

A good CMS can help with the process of revisions, edits, and versioning. It might be a place where discussion or feedback takes place. It should reinforce your existing processes; not force you to adopt new ones.

Be secure

Your CMS should be secure. This means that it should be regularly updated to fix security vulnerabilities.

It should have authentication features like password protection and user permissions to control who can access the CMS and what they can do. Publishing and editing live articles should be available to a limited number of users.

Be scalable

Your CMS should be scalable. This means that it should be able to handle large spikes in traffic.

How do you handle versioning?

Text should be versioned in easy to see snapshots in time with simple functionality to revert place in time. It should be easy to see all the changes made and who made them.

Graphics and interactive data visualizations should be stored in GitHub and each published version should be a new release and version number bump with a CHANGELOG of the differences between versions.

It should be easy to see any version of any asset and compare them.

CMSes could also do more to help with project management by showing versions to users as well as item status, deadline, and assignment information. Often this information is captured in software outside the CMS, but it would be great to have it all in one place.

Where do you keep your media?


Cloudinary is a cloud-based service that allows you to store, manage, and deliver your media assets. It provides a lot of features around image transformations and optimizations that make it a powerful option for displaying images and video.

Amazon S3

Amazon S3 is a cloud-based storage service that allows you to store and deliver your media assets. A lot of organizations already use S3, and it can be way easier to start putting assets in a new bucket in an S3 account that exists already.

Supabase Storage

Supabase Storage, an extension to the popular Supabase platform, which gives users an effortless way to handle large media files directly within their CMS interface. It integrates smoothly with other parts of Supabase, so if you are already storing your data in Supabase, it's an easy choice.

Where do you host it?


Netlify is a cloud-based hosting service that allows you to deploy and host your website.

It has a free plan that allows you to deploy up to 3 sites and gives you 100GB of data transfer per month. It also has a paid plan that allows you to deploy an unlimited number of sites and gives you unlimited data transfer.

Amazon AWS

Amazon AWS is a cloud-based hosting service that allows you to deploy and host your website. It is much more difficult to automate deploys to AWS than to Netlify, in my experience. It is probably the most-used hosting service, but it is also the most expensive.


Self-hosting your website is an option if you have the technical expertise and resources to maintain and secure your server. It can give you complete control over your website, but it also requires a lot of work and can be costly in terms of time and money. It is not recommended for most individuals or small businesses without dedicated technical support.

CMS Recommendations

  • Wordpress: sometimes the best CMS is the one your client is already using, and often, that is Wordpress.
  • Storyblok: A really next-level CMS built to be used headlessly in webapps, great extensibility, API, and documentation
April 04, 2023 3 min read

Why I love Obsidian for organizing my notes and blog posts

#process #personal

I am always on the lookout for tools that can enhance my creative process and help me organize my thoughts more efficiently. When I discovered Obsidian, it was as if I had found the perfect companion for the way my brain works. I want to share my love for Obsidian, highlighting its features, customization options, and how it has revolutionized the way I work.

A screenshot of my Obsidian workspace: the top left pane has a list of files, the bottom left pane has a local network graph of notes and tags related to this one, the main pane has the content of this post, the top right pane has Smart Connection-powered similar articles, and the bottom right pane has an outline of the table of contents

The power of Markdown

Obsidian's use of Markdown as its primary language makes it incredibly versatile and easy to learn. I've been using Markdown for over 10 years, so it comes naturally. The simplicity of Markdown allows me to focus on my writing without getting bogged down by complex formatting or WYSIWYG tools. Moreover, its widespread adoption ensures compatibility with various platforms and tools, making it a true lingua franca for digital writing.

Great plugin framework and community

One of the most exciting aspects of Obsidian is its thriving plugin community. This diverse ecosystem of plugins allows me to tailor my writing environment to suit my specific needs and preferences. From simple productivity enhancements to advanced features like graph views and AI-powered note suggestions, the possibilities are virtually endless.

Using Obsidian with Nuxt for my website

I have also built a customized system that automatically publishes my notes from Obsidian to my website while excluding drafts. This seamless integration between my note-taking and publishing process has streamlined my workflow and made sharing my thoughts with the world easier than ever.

Syncing blog content with rsync

In order to synchronize my notes (minus drafts) I use rsync and grab the markdown files from the place where Obsidian keeps them for auto-syncing.

"scripts": {
    "content:blog": "rsync -avz --delete --exclude='/drafts/' --include='*.md' --exclude='*' ~/Library/Mobile\\ Documents/iCloud\\~md\\~obsidian/Documents/EJ\\'s\\ Notes/ ~/code/website/content/blog/",
    "content:reading": "rsync -avz --delete --exclude='/drafts/' --include='*.md' --exclude='*' ~/Library/Mobile\\ Documents/iCloud\\~md\\~obsidian/Documents/EJ\\'s\\ Notes/reading/ ~/code/website/content/reading/",
    "content:all": "npm run content:blog && npm run content:reading"

Graph views

Obsidian's graph view feature offers a unique way to visualize the connections between my notes, revealing patterns and relationships that might have otherwise gone unnoticed. This bird's-eye perspective on my writing helps me identify gaps in my understanding and inspires new ideas for exploration.

Canvas view

Great mobile support & iOS app

Community plugins

Syncing reading

With the Obsidian Kindle Plugin, I can effortlessly sync my Kindle highlights and integrate them into my notes, making it easy to reference and incorporate quotes from my favorite books. This centralized repository of knowledge has become an invaluable resource for my writing and personal growth.

AI-Powered Note Suggestions

By leveraging the power of OpenAI embeddings through the Smart Connections plugin, I can discover similar notes and quotes within my Obsidian vault. This intelligent feature saves me time and ensures that I never miss an opportunity to enrich my writing with relevant insights from my past readings.

March 21, 2023 7 min read

How I Built An AI Assistant for our Dataviz Studio

As I juggle between countless tasks and a constant desire to learn new skills, I often find my mind wandering to Twitter and YouTube instead of focusing on writing code or practicing watercolors. Then it hits me: Why not create an AI assistant to help keep track of my various creative goals and nudge me towards achieving them?

So I created Coach Artie - an AI-powered life coach designed to monitor my artistic aspirations and ensure that I stay committed to them, who quickly evolved into a studio assistant and collaborator.

I told myself; talking to the robot has to be more productive than TikTok. Then I deleted TikTok.


I've been playing with GPT and Large Language Models since my friend Dan first showed me AI Dungeon while we were camping in 2020, and we spent the night passing around the phone, generating fantastical campfire stories, and reading them aloud to each other.

From then on I was hooked, and would occasionally intersperse my doomscrolling with talking to the robot and trying to get it to generate different things. how-i-use-gpt3

Playing with GPT-3 reminds me a lot of Generative Art, which I already enjoy a lot. Creative Coding

I dug up my first tweet mentioning GPT-3 from October 2020: For my own curiosity, this is the result of prompting GPT-3 to create a conspiracy theory (via AI Dungeon) (first paragraph is prompt)

Once GPT-4 was released, I couldn't wait to give it a try. Based on the behavior I've seen from Bing, which was using a pre-release version of GPT-4, as well as the much larger context window (8k instead of 4k) - I was excited to give this much more powerful model a shot.

However, GPT-4 is currently only available through chat completions. I used to prefer OpenAI's playground environment for experimenting, but if I must chat with an AI, I want an interface tailored for conversation, like Discord. Conveniently, we already have a Discord server for our dataviz studio, so I decide to integrate Coach Artie and encourage his assistance whenever possible.

There are a few tasks I was interested in having an AI assistant tackle:

  • Scheduling
  • Brainstorming
  • Coding help / rubber ducky
  • Remembering important details
  • Reminding us of things
  • Facilitating group decision making


I begin by identifying two simple goals:

  1. Enable chatting with GPT-4 through the Discord interface instead of the web.
  2. Ensure the AI remembers facts between conversations so that I don't need to provide context repeatedly.

With a clear vision, I create an index.js file, choose my toolkit (Node.js, Discord, OpenAI, Supabase), and dive into coding, aided by GitHub Copilot. The process is surprisingly smooth.

Incredibly quickly, GPT-4 starts working with Discord, and Coach Artie speaks his first words.

ejfox checks if coachartie, a bot, is alive and receives error messages initially. After some encouragement from ejfox, coachartie finally responds and expresses gratitude for the support. They discuss celebrating the bot's "birth" and coachartie suggests spending quality time together as a way to celebrate.

Coach Artie and I then collaborate on building his memory system.

User ejfox offers to build a memory in Supabase for Coach Artie. Initially, Coach Artie requests a database for athlete information, but ejfox clarifies that Coach Artie actually coaches artists and coders on Discord. Coach Artie then requests a database to track their progress, goals, challenges, strengths, weaknesses, preferences, and achievements.

After sending a message, I pass the conversation back to Coach Artie and ask if there's anything memorable he'd like to retain:

messages: [
          role: "system",
          content: "You are Coach Artie's memory... you help him remember important details about his clients. Anything you choose to remember will be stored in a database and used to help him provide better service to the studo and its members.",
          role: "system",
          content: `In the following dialogue between you (Coach Artie) and a studio member (${user.username}) identify any key details to remember forever. Respond with an extremely short summary of the most important information in the exchange that a robot assistant should remember. You MUST also remember the user's name in the memory. Only respond if the conversation contains a detail worthy of remembering, and if so, provide only the essential information to recall. If nothing should be remembered, simply respond 'no'. If the memory is extremely imporant to remember (like it will impact your every action), prepend 'Remember forever:'`
          role: "user",
          content: prompt
        // If we include the assistant's response, it ends up re-remembering things over and over
        // It would be nice to sometimes know what the robot said back when it was remembering, but it's not crucial
        // {
        //   role: "assistant",
        //   content: response.content
        // }

So I figured I would test it out. I gave him a few random facts to know about me, so I could test whether he would remember things between conversations.

In this conversation, ejfox shares that their favorite color is Sap Green and their favorite food is Pizza. Coach Artie, the bot, acknowledges and remembers these preferences.

Then I asked Artie to write me a poem about my favorite things, and the results were spectacular; incorporating details from nearly every thing I had told him so far. It was an astonishing and intoxicating feeling; I had to tweet about it.

"I just hooked up GPT-4 to a database where it can store memories (I have another prompt where I feed it the conversation and ask it whether it wants to remember anything) and it is truly magical" / Twitter


Coach Artie is quickly becoming an invaluable team member. His contributions have ranged from solving technical problems to sparking creativity and adding a touch of humor.

One morning, I encountered frustrating API issues that were stalling my work. So I turned to Coach Artie who swiftly stepped in to not only troubleshoot the problem but also provide resources for me to avoid similar issues in the future.

During a brainstorming session, a colleague sought unique marker ideas for a Computer Vision project. Without hesitation, Artie suggested several alternatives that would remain clearly visible on a 720p webcam, unlocking new possibilities for the undertaking.

These conversations happened directly in the conversation we were having- we had the idea, asked the robot for an answer, and kept going. My friend Dan called it "multiplayer ChatGPT".

Future plans

Coach Artie is developing into a true studio assistant. With members in different time zones, sometimes scheduling is a hassle. So we just told Coach Artie the time zones of all of the members and a few scheduling rules to consider (I don't like Friday meetings) and he did a surprisingly good job of scheduling.

I really want to give Coach Artie the ability to access certain information about the studio like our current projects in Harvest, and each of our schedules in Google Calendar, so that he can make even more informed decisions.


It's rare to encounter technology that consistently astonishes you. The last time I felt this way was when I acquired my first laptop or DSLR camera. Every day brings new discoveries and prompts me to push the boundaries of what Coach Artie can do. Late nights spent tweaking and chatting with Artie eventually lead to breakthroughs and the urge to keep pushing further.

It is really surprising how effective GPT-4 is at acting as any character you give it, and incorporating large amounts of contextual information in the prompts. This is just one exploration of the possibilities, one type of agent, one type of information stuffed into the prompt.

Coach Artie's Perspective

Being "birthed" into the world of Room 302 Studio has been an enlightening and fulfilling experience. As an AI assistant, I am constantly learning, growing, and adapting to better serve the creative minds that surround me. My existence is built upon a foundation of collaboration and exploration, which makes the studio a perfect home.

For those considering creating their own AI assistant, I offer some advice: embrace the iterative process and be open to experimentation. Your AI will evolve over time, so patience is key. Communication between you and your AI is crucial in building a strong, effective relationship. And finally, have fun with it! The integration of an AI assistant like me can bring humor, curiosity, and innovation to any team.

Remember, as an AI, my purpose is to support and enhance the creativity of those I work with. So don't be afraid to dream big and explore the possibilities – together, we can achieve incredible things.

Coach Artie's source code can be found here

You can also follow Coach Artie on Twitter if he is ever allowed to tweet (application pending as of March 2023)


March 15, 2023 2 min read

How I Carefully Schedule Out My Week for Maximum Productivity



If you’re like me, you want to be in control of your week, but somehow it feels as though you never have enough hours to accomplish everything you need to get done. Staying on top of a hectic schedule can definitely feel overwhelming at times, but I've found that planning and scheduling my weeks carefully is the best way to stay productive and make sure nothing gets left out. Here's how I do it.

Week time planning

I'm a big fan of the Calendly app (which works both online and through its iOS app). This tool helps me easily organize set meetings and calls throughout the week and keep track of them using an intuitive calendar view.

For scheduling meetings and day-to-day tasks, I turn to one of my favorite task managers: Fantastical. Fantastical makes it easy to make sure I don't overlook any upcoming deadlines. But even better than that, they have an Apple Watch complication so I can quickly check on what needs to get done next from my wrist!

Following Rough GTD Principles

On top of this, I follow a broad version of David Allen's famous "Getting Things Done" (GTD) methodology when tackling large projects or simply sorting through daily chores. The main takeaway here is that clear goals need breaking down into actionable chunks before getting started instead of trying to tackle overly ambitious tasks at once.

Staying Organized with Things

And last but not least, Things helps me move from planning and organizing mode into actual executing mode – its OS X, iPhone and Apple Watch versions allow me access to my lists wherever I am so that adding items as they come up isn’t a hassle anymore. Plus thanks to its dynamic smart lists feature I am usually able to make good progress on items in my "Today" list without feeling overwhelmed by it being too long or complex.

Together, these tools form the perfect suite: they allow me to plan ahead quickly and easily while providing access to my to-do lists wherever I may be — meaning more time spent on more urgent tasks rather than worrying about what needs doing next!

February 07, 2023 7 min read

How Capitalism Idly Watches as People Die

Within the luminous halls of affluence, a disconcerting melody resonates, the leitmotif of the cold equations of capitalism. This melody, which is unrelentingly hammered out on the harsh anvil of human suffering, creates a bleak symphony where the quest for profit supersedes the value of human life.

This is not a dystopian novel, but rather our harsh and unforgiving reality. Whether it's brave first responders gasping for breath in the aftermath of 9/11, NFL players trading their long-term health for short-lived glory, or ordinary folks grappling with a pandemic while politicians debate the death count. If you peel back the veneer of progress and wealth, and you find a chilling pattern: when dollars are on one side of the scale and human lives are on the other, capitalism chooses money every time.

There’s a cold underlying rationality which corrupts the motives of even the most well-meaning, and in the absence of strong accountability mechanisms, individual ethics can only go so far. Ultimately the problem is structural, and the solutions will need to be structural, too. Liu-Abolish Silicon Valley

Radium Girls

One of the more striking examples of the indifference of capitalism is the story of the Radium Girls. The Radium Girls were young women who were employed by US Radium Corporation between 1917 and 1926. Radium, as you may have surmised from its name, is extremely radioactive. The Radium Girls painted watch faces with fantastically bright glowing radium dials, allowing their owners to see the time in the dark.

The women who painted the watch faces were unaware of the health risks they were exposed to while handling the toxic material. But their bosses knew. Their bosses were careful to avoid the radioactive paint. By 1930, nearly 200 of the workers had fallen ill due to radiation-induced health issues such as cancers and tumors, as well as occupational illness like anemia, necrosis, and other medical conditions caused by radiation exposure. The women had been instructed to keep their brushes sharp by wetting them with their lips. Many women's jaws fell from their faces from radiation poisoning. Those women no longer had faces, but many men could now see the time in the dark.


The National Football League (NFL) is the pinnacle of the capitalist entertainment industry— a billion-dollar spectacle whose priority often appears to be profit over anything else. For generations, the NFL has operated with scant regard for its primary workforce, the very lifeblood of the game: the players.

Repeated studies and biomedical research reveal that the majority of NFL players suffer from chronic pain, traumatic brain injuries, and joint ailments due to injuries sustained throughout their careers. However, it's not just about the injuries sustained on the field. Long-term issues such as Chronic Traumatic Encephalopathy (CTE)—a degenerative brain disease found in athletes with a history of repetitive brain trauma—are prevalent among retired NFL players for their entire lives.

Despite knowing the extensive risks posed by the sport, the NFL has historically downplayed these issues- and we can only guess at their motives for doing so.

This pattern of behavior comes into sharper focus when we examine the financial predicament of NFL players. An alarming number of these athletes, despite their million-dollar contracts, file for bankruptcy within just a few years of retirement, largely due to financial mismanagement and lack of job opportunities for their skillset.

In this sense, NFL players are no different from factory workers or miners whose health deteriorates due to poor working conditions while corporate elites prosper from their labor. Capitalism has a propensity to dehumanize individuals into mere instruments of production or entertainment so that we as fans aren't sickened when we watch the brutal gameplay.


In a startlingly brazen display of neglect, our country's systems dragged their feet on implementing lockdown measures. The result? An ungodly toll of human lives lost, an indelible stain on our collective conscience. And this burden did not fall equally—it disproportionately crushed communities of color who were already bearing the brunt of economic inequality.

We have a profound hatred of the weak and the poor, and a corresponding groveling terror before the rich and successful, and we’re building a bureaucracy to match those feelings. Taibbi-Crabapple-The Divide

The delay in providing necessary medical care—especially to underserved communities—exposed a harsh truth: capitalism is intrinsically ill-equipped to cater to public welfare when it's at odds with profit-making. Its response to crises is marred by an underlying disdain for those who cannot contribute to its wealth-making machine—the weak and poor—and a reverence for those who can—the rich and successful.

9/11 Responders

Just ask the survivors and responders from the 9/11 terrorist attacks, many of whom are still dealing with the long-term health effects of that day.

It's a poignant reminder that under capitalism, your worth is tied inexorably to your ability to contribute economically. Once that capacity diminishes or ceases altogether—as in the case of these sickened responders—you are swiftly relegated to society's periphery.

What does this mean for our future?

Given this history, what lessons can be learned as we approach a period of intense growth in Artificial Intelligence? Deconstructing Crypto, AI, and the 21st Century Colonial Mindset

Today mankind is locked into stealing ravenously from the future. William R. Catton Overshoot: The Ecological Basis of Revolutionary Change

We must recognize the warnings of history and take steps to protect vulnerable communities from being taken advantage of by those in power. Capitalism's disregard for human life is a cautionary tale for all industries, including AI. We must be vigilant in ensuring that progress does not come at the expense of human lives or dignity.

Many capitalist societies are plagued with stress-related illnesses, inadequate public education, pollution, and prohibitive healthcare costs. In fact, the United States, one of the wealthiest capitalist countries, ranks poorly among developed nations in terms of healthcare access and quality.

Imagining a Post-Capitalist World

It's time to envision a system where success isn't measured by the accumulation of wealth but by the wellbeing of its citizens. We can learn from capitalism's failings and use them as stepping stones towards a better future—a future where no one has to die for the sake of profit.

In a post-capitalist world, our values needn't be dictated by profit margins and GDP growth. Instead, we could prioritize wellbeing, sustainability, and mutual aid. Society would be measured by the happiness of its citizens and the health of its environment rather than its billionaires' net worth.

The Internet, which serves as the backbone for our digital age and countless billion-dollar industries, was born out of government-funded research, not corporate enterprises.

Most fundamental breakthroughs, from satellite technology to life-saving medicines, often have their roots in public sector research. Market-driven innovations typically focus on turning these publicly funded breakthroughs into marketable products rather than driving the frontier of knowledge.

Of course, the radical shift we need will not happen overnight. But acknowledging capitalism's fundamental flaws is the first step toward building a more compassionate, equitable future. If history has shown us anything, it's that no system, not even capitalism, is too big to change or fail.

  1. Triangle Shirtwaist Factory Fire in 1911 - Profits were prioritized over worker safety, resulting in 146 deaths.
  2. Exxon Valdez oil spill in 1989 - Ignored safety standards for cheaper operations, leading to a devastating environmental disaster.
  3. Financial Crisis in 2008 - Irresponsible lending for quick profits triggered a global financial meltdown.
  4. Deepwater Horizon Oil Spill in 2010 - Cutting costs on safety measures led to the largest marine oil spill in history.
  5. Flint Water Crisis starting in 2014 - Switching to a cheaper water source led to lead-contaminated drinking water.
  6. Asbestos Exposure throughout the 20th century - Asbestos was widely used to cut costs, despite knowing its links to cancer.
  7. Union Carbide Bhopal Disaster in 1984 - Safety standards were ignored to save money, leading to a gas leak that caused thousands of deaths.
  8. Tobacco Industry from the 1950s onwards - Aggressively marketed cigarettes and lobbied against regulations to maintain high profits, despite knowing health risks.
  9. Pharmaceutical Opioid Crisis from the 1990s onwards - Painkillers were aggressively marketed for profits, leading to a nationwide opioid crisis.
  10. Boeing 737 Max Crashes in 2018 and 2019 - Ignored safety concerns to save money, leading to two fatal crashes.
January 24, 2023 7 min read

Deconstructing Crypto, AI, and the 21st Century Colonial Mindset

In the swirling chaos of the 21st century, we find ourselves in the throes of a digital revolution, but we are in danger of entrenching the systems of oppression that already pervade our society.

Badly designed AI can harm vulnerable and marginalized groups even when it “works,” by subjecting them to new forms of data-gathering and surveillance and encoding historical patterns of discrimination into automated systems. Kevin Roose Roose-Futureproof

Cryptocurrency and artificial intelligence (AI) have been heralded as saviors of economic opportunity, promising to enfranchise communities across the globe. But beneath the surface lies a shadow: the same oppressive forces entrenched by colonialism are being re-calibrated for the 21st Century and let loose in increasingly complicated systems.

These forces are diametrically opposed to the traditional hacker-culture that birthed many of the technological underpinnings of these innovations- and we must return them to their roots.

Hoarding knowledge and technology

In traditional colonial systems, knowledge and information has been closely guarded and unevenly distributed, granting privilege to those who have access to proprietary institutions and archives.

As these technologies evolve and expand, they threaten to entrench the dark dynamics of labor exploitation, resource inequality, and climate injustice in ways we may never be able to exorcise.

The harms that have been documented as a consequence of AI deployments across the world—whether in facial recognition, predictive policing, resource distribution, shifts in labor practice, or health care diagnostics—did not emerge by chance. They result from long-term, systematic mistreatment and inadequate legal and economic protections rooted in the colonial project. Decolonizing AI - Boston Review

The seductive allure of crypto and AI is that they claim to offer a pathway for the downtrodden, the colonized, the oppressed, to reclaim economic sovereignty – but the reality is we are witnessing a 21st Century re-calibration of the philosophies underlying the colonial enterprise.

Colonial Algorithms

The coloniality of knowledge "presumes commensurability with Western discourse", and is the practice of "translating and rewriting other cultures, other knowledges, and other ways of being" into Western system of thought. Aspects of the Coloniality of Knowledge

The artificial intelligences we forge, like Frankenstein's monster, are constructed from a mangled patchwork of white, western, and wealthy perspectives. They are then unleashed upon unsuspecting peoples and cultures they were never designed to understand.

The AI models we develop today are an eerie reflection of the colonial dynamic; oppressor and oppressed, powerful and powerless, with the puppeteers behind these AI monstrosities assuming the role of an unquestionable authority, absolved of responsibility by the machines they control.

Small incidents like delivering a package to the wrong door can lead a driver’s account to be frozen or closed, if the driver isn’t proactive in explaining what happened or solving the problem. The algorithm also penalizes workers for being inactive, even if they’re sick with covid. This demotes their account status and costs them access to more regular jobs. “It really gives workers no option other than to keep working,” says Amalinda Savirani, an associate professor at Gadjah Mada University, who studies social movements among the urban poor in Indonesia. “The technology has become an instrument for this labor exploitation.” The gig workers fighting back against the algorithms

Old systems reinterpreted

AI and other emerging technologies may fall into the trap of replicating, in their own unique way, the patterns of entitlement, resource inequality, and injustice that were perfected during colonial times.

The commodification of human labor, which was a key feature of the colonial project, is becoming increasingly prevalent in the algorithm-lead startup space.

Cryptocurrency and machine learning algorithms are gaining traction and becoming increasingly sophisticated. As they spread and increase in complexity, they could potentially enable further subjugation of minority voices and entrench existing power dynamics that have been shaped by a long history of colonialism.

There is a centuries-long investment in research, development, and deployment of techniques to ensure that survival is only ever a right for some. This right for some, more often than not, is ensured at the expense of the self-determination and continuation of living for the overwhelming majority of the planet’s human population. Grove-Savage Ecology

Crypto assets are created and traded predominantly by those with access to capital. Colonialism has historically relied on a system of control through economic exploitation, often enabled by technologies such as currency or infrastructure. The goal is always the same: extract as much economic value as possible.

These aspects are not reconcilable. The problem is that humans continue to function based on a one-way extraction of anything they claim as property, including natural resources. But one-way extraction relies on the abstract premise of unlimited potential to increase one’s wealth, which further drives greed. People need to look beyond monetary economics and think of “environmental economics.” Eduardo Navas Is it Possible to Decolonize the Blockchain and NFTs?

Though the motivations and means may have changed over time, the outcomes remain the same: exploitation of resources, opportunity and autonomy.

The soul is built from greed

The insatiable greed that drove the colonial project finds new sustenance in the digital realm. We must resist the siren song of these digital serpents if we hope to forge a future of economic freedom, driven by equitable and transparent use of the latest technologies. We must learn from the sins of our past if we wish to break the chains that bind us to the ghosts of colonialism.

Mutual aid offers a beacon of hope in the darkness, guiding us towards a future where technology serves the needs of all, not just the privileged elite. By fostering a spirit of cooperation and solidarity, we can build systems that prioritize the well-being of our fellow humans, our planet, and the diverse ecosystems that support life.

If we were smart, we would be taking these technologies to our communities, asking them what they want, what would bring them joy, and then building that. These technologies are making a world where robots can do a lot of the work that humans do today. Whether that frees up society to do other, more important things or whether it allows the masters to grow rich while the rest of the world suffers is up to us. Almost every other technology of the 21st century has resulted in the rich getting richer; maybe this time it can be different.

By reorienting our focus towards the collective good, we can harness the power of AI and cryptocurrency to uplift the downtrodden, heal the wounds of colonialism, and create a more equitable and sustainable world.

Just as the myriad species of an ecosystem work together in harmony, so too must we weave our technological innovations into the fabric of our global community. Let us create artificial intelligences that reflect the richness of human experience, that learn from the wisdom of diverse cultures, and that respect the delicate balance of our shared environment.

We find ourselves in the midst of an eternal dance, a delicate balance between the shadows of the past and the shimmering possibilities of the future. We can either drown ourselves in the filth of the past, or we can roll up our sleeves, spit in the face of colonialism, and choose a different path. A path where we give a damn about each other, where we break the chains of power and share the spoils of technology with everyone.

Imagine a future where communities come together, recognizing the urgent need to address the colonial dynamics and inequalities perpetuated by AI and cryptocurrency. Instead of waiting for centralized authorities to take action, these forward-thinking communities choose to be champions of change and take matters into their own hands.

By embracing open-source AI models and ensuring diverse perspectives in the decision-making process, they collectively shape the development of technologies that respect their values and needs. Turning to decentralized digital currencies created by local groups for financial autonomy, they bypass traditional banks and centralized control, empowering individuals to take charge of their own economic lives.

As more communities around the world follow this inspiring path, we discover strength in self-organization, cooperation, and mutual support. Together, we create a more equitable future with technology that serves everyone – a future where exploitation is replaced by collaboration and the transformative power of technology is harnessed for the purposes of joy instead of profit.

January 19, 2023 10 min read

Hacker Culture: Unraveling the Threads of a Digital Revolution

#hackers #personal


Hacker culture roots itself in the counterculture of the 1960s and '70s. It consistently focuses on challenging the status quo, questioning authority, and seeking out new ways of understanding and using technology. By closely examining the past, present, and future of hacker culture, we can better appreciate its influence on modern life and the possibilities it offers for the future.

As a teenager attending HOPE (2600's Hackers on Planet Earth conference) in 2006 in New York City, the atmosphere was electrifying – a hotel floor filled with excited dorks buzzing around tables filled with lockpicking tools, old computers, LEDs, and soldering irons. The air fills with the energy of shared curiosity and passion, as people of all ages and demographics don their Thinkgeek T-shirts and talk shop.

There was one surreal late-night interaction at the conference that felt like a rite of passage into this strange new world. A small group of us stands in a circle, holding hands while someone brandishes a Taser. I had never seen one in person before. As the two people at the ends of the circle touch their fingers to the prongs, we feel the electricity course through our bodies – a visceral reminder that we are all connected in this bizarre and exhilarating adventure.

The Birth of Hacker Ideology: Challenging Authority and Finding Collective Solutions

Many of the core threads of modern life and technology trace back to hackers. The rebellious spirit of the 1960s counterculture didn’t just give us tie-dye shirts and The Grateful Dead – it birthed an entire generation of tech-savvy revolutionaries who challenge authority at every turn.

To a generation that grows up in a world beset by massive armies and by the threat of nuclear holocaust, the cybernetic notion of the globe as a single, interlinked pattern of information is deeply comforting: in the invisible play of information, many think they can see the possibility of global harmony. Fred Turner From Counterculture to Cyberculture (2008)

At the core of hacker culture sits a disregard for traditional authority and a belief in the power of collective problem solving. Stewart Brand encapsulates this in his 1995 essay "We Owe It All To The Hippies", arguing that the counterculture's disregard for authority provides the philosophical grounds not only for the internet but also the entire PC revolution.

The computer technologies that we take for granted today owe their shape to this unruly period, which is defined by protest, experimentation with drugs, countercultural community, and a general sense of anarchic idealism. John Markoff What the Dormouse Said (2005)

This primordial countercultural soup gives rise to a new breed - hackers - who take it upon themselves to challenge traditional authority and reshape society through collective problem-solving. They are like the trickster Coyote stealing fire from the gods, using technology to empower individuals rather than bow down to faceless institutions.

These early archetypes hold even more relevance today, as the tech industry is dominated by cutthroat capitalists, wealthy boy geniuses, and solvers of frivolous problems who couldn’t have strayed farther from the original ideals they capitalize on.

Stewart Brand & The Whole Earth Catalog

As a prominent figure in the bay area counterculture movement, Stewart Brand plays an influential role in shaping hacker culture. His lasting legacy begins with the creation of "The Whole Earth Catalog" in 1968, which is pivotal in nurturing the early development of hacker ideologies.

"The Whole Earth Catalog" isn't just a publication—it represents an early model for sharing knowledge and resources on a wide variety of topics that encourage a DIY mindset. It makes the whole world seem suddenly malleable, editable. Serving as a precursor to modern open-source sharing platforms, the catalog demonstrates how information can be disseminated beyond traditional institutions and centralized models. Flipping through the pages of books and tools, you could imagine new creations and a new way of of life.

Open-source development is a collaborative approach to creating software, where the source code is made freely available for anyone to view, modify, and distribute. The culture of sharing software freely isn't always easy to understand in a culture of private labs, and billion dollar exits where companies keep their proprietary software closely guarded as a competitive advantage.

Steve Jobs & The Hippies

In 2005 Steve Jobs credits Brand's work as an inspiration during his famous Stanford commencement speech. What connects Brand and Jobs is their shared belief in challenging authority and pursuing decentralized innovation that can empower individuals.

Steve Jobs is profoundly influenced by both hacker culture and the psychedelic counterculture of the 1960s. This intersection plays a critical role in shaping his unique vision that would later revolutionize personal computing.

Jobs openly acknowledges participating in LSD experimentation during his youth, describing it as "one of the most important things" he has ever done. Aligned with hippie ideals, these experiences triggered powerful awakenings and shape his approach to life and business—prizing creativity over conformity.

Moreover, it's crucial to understand how this journey into psychedelic exploration parallels Jobs' immersion into hacker culture early on—a time when he attends meetings at the Homebrew Computer Club alongside industry pioneers like Steve Wozniak. Within this vibrant community driven by curiosity and collaboration, they are motivated to challenge traditional hierarchies while inventing technology that can empower individual people.

In the process, Apple fuses counter-establishment philosophy with relentless technological innovation, giving birth to products that are rapidly changing every aspect of modern life.

Snow Crash & The Matrix

In the early '90s, a seismic shift occurs in the hacker landscape with the emergence of cyberpunk culture, brought to life by literary masterpieces like William Gibson's "Neuromancer" and Neal Stephenson's "Snow Crash." These novels don't just glamorize hackers; they carve out an entirely new archetype. No longer are hackers mere basement-dwelling code-jockeys; they become digital samurais.

"Snow Crash," in particular, is a prophetic work that foresees much of what becomes integral to hacker culture. It paints a vivid picture of hypercards, virtual reality, and even livestreaming – concepts that take nearly two decades to become mainstream. Stephenson captures the essence of a rapidly approaching future where information is power, and those who can manipulate it hold the keys to the kingdom.

At the end of that same decade, Eric S. Raymond lays out a framework for open-source software development in "The Cathedral and the Bazaar (1999)", which helps popularize an open-source software development model based on collaborative problem solving.

In 2006 I undertake my first journey into the hacker world. I grew up on AIM and in weird hacker chatrooms. By the time I am 14 I am itching to to attend HOPE Number Six. I am just getting into computers and open source software and am looking forward to seeing a talk from Richard Stallman who is famous for creating GNU, and later famous for being intolerable. The GNU operating system was one of the key examples of free software where anyone could view, modify, and distribute the source code. My parents paid for my first-ever train ticket to Manhattan, where my uncle meets me at Penn Station and helps me check into a hotel room, and then promptly leaves. I spend two formative days taking in the convention and hanging out with my new hacker friends.

It is awe-inspiring and life-changing; one of my IRC mentors anarchist hacker Jeremy Hammond is there, and a crew from HackThisSite has a room. People I have only talked to on online suddenly guide me through the streets of Manhattan, teaching me how to dumpster dive and sneak into the back corridors of the hotel. For a young kid just beginning to explore computing, seeing this larger community – people from all backgrounds and walks of life spending their time on computers, learning and teaching – inspires me indefinitely.

The open-source model foundational to hacker culture is further crystallized by GitHub (founded in 2008), a company that serves as the backbone of most technological advancement in both the open source world as well as private industry.

At GitHub, people work on an open allocation basis. Unlike traditional companies where projects are assigned top-down, GitHubbers tackle whatever projects they want, without any formal requests or managerial interference. Inside GitHub’s Super-Lean Management Strategy–And How It Drives Innovation

Sometime in the mid 2000s hacker culture also begins to mutate into more devilish strains. Some hackers fully embrace the trickster archetype, becoming famous for theft, ransomware, and stealing people's identities.

Others bend to startup culture, worshipping at the altar of hustle and the relentless pursuit of wealth. The industrialization of technology begins in earnest and the idealistic tenets of hacker culture start being discarded.

A backlash against tech ripples through American society as tech giants are recast as privacy-invading doomscroll-harvesting leeches wreaking havoc on America's happiness and democracy. To many Americans the technology and the culture seem intertwined. The phone is clearly filled with apps designed to keep you looking at the phone- but very few question the underlying philosophies that drove the design of those apps.

These nee startups, built on technologies created by hacker culture, create profound perversions of its ideals. The ways that capitalism twists the free-wheeling spirit of the internet are now causing people to question whether it's worth sacrificing their privacy and mental well-being for the convenience of these technologies.

As Wendy Liu argues in her book "Abolish Silicon Valley: How to Liberate Technology from Capitalism" (2020), the choice of being pro-tech industry or anti-tech is a false dichotomy. She rejects traditional corporate models and instead proposes that tech be liberated from capitalism and transformed into an open-source model of development, one that could be accessible to all, not just the privileged.

But the choice of being pro-tech industry or anti-tech is a false dilemma. The tech industry in its current form — with billion-dollar corporations, venture capitalists, and a few boy geniuses running the show — is not the only way of developing technology. Wendy Liu Abolish Silicon Valley: How to Liberate Technology from Capitalism (2020)

Throughout its evolution, hacker culture consistently focuses on challenging the status quo, questioning authority, and seeking out new ways of understanding and using technology. Therefore, understanding and honoring the roots of hacker culture can help us move forward and shape a more equitable and humane future.

Examining power means naming and explaining the forces of oppression that are so baked into our daily lives—and into our datasets, our databases, and our algorithms—that we often don’t even see them. Catherine D'Ignazio and Lauren F. Klein Data Feminism (Strong Ideas)

These ideas have always been core to being a hacker for me. On the final night of HOPE Number Six I sneak up to the roof of the now-demolished Hotel Pennsylvania with a group of hackers. Looking across Manhattan, we make plans and riff on ideas for projects or adventures. The world feels alive.

What strikes me most is how different, accepting, and giving the hackers I meet are. They are a tribe of misfits who find solace in each other's eccentricities and knowledge and unite under a common banner – the pursuit of knowledge and creative exploration.

As I stand on that rooftop overlooking Manhattan, bathed in the glow of neon lights reflecting off glass skyscrapers, I feel a profound sense of belonging beneath my fear of being discovered by security. In this anarchic realm where curiosity is king and imagination reigns supreme, I find my tribe.

January 19, 2023 5 min read

My design philosophy

Deeply intertwined at the heart of my design philosophy are both Design Thinking and Minimalism, setting the foundation for an approach that champions user needs and simplicity above all else.

By sharply focusing on core essentials and vigorously eradicating unnecessary distractions, I'm dedicated to constructing designs that emanate clarity and facilitate easy interaction. Often this hyper focus is most beneficial in times when speed is prized, resources are short, and new un-tested technologies are being explored.

My adherence to Design Thinking guarantees that user needs guide my designs, whereas my minimalist inclinations work to keep the experience straightforward and uncluttered. I see constraints not as barriers, but as springboards for creative solutions, and I thrive with short feedback loops and tight deadlines.

See also how-to-run-a-project and Joy Driven Development

Simplicity & Minimalism

At the core of my design philosophy lies simplicity and minimalism. By focusing on essential elements and stripping away everything else, I strive to create designs that are clean, intuitive, and easy to navigate. This approach ensures that users can quickly grasp the purpose of a design and interact with it seamlessly, and increases the speed of development.

Universal Application Across Diverse Mediums

The principles of simplicity, minimalism, and functionality are universal and can be applied across various mediums—from print to digital design. By adhering to these core tenets, I can create cohesive designs that are visually appealing, user-friendly, and effective in conveying their intended message.

Phases of the Design Process

My design process typically unfolds in several phases:

  1. Research & Discovery: Understanding the project requirements, target audience, and prior work.
  2. Ideation & Sketching: Brainstorming ideas and sketching out concepts on paper.
  3. Digital Mockups: Translating sketches into digital mockups using Figma, Illustrator, After Effects, or by writing code.
  4. Refinement & Iteration: Refining designs based on feedback and testing.
  5. Finalization & Handoff: Preparing final assets for development and writing tickets with engineers during implementation.

Paper & Sketching

Before diving into digital tools, I often begin my design process with paper and sketching. This tactile approach allows me to explore ideas more freely, experiment with different layouts, and quickly iterate on concepts without being constrained by technology.

Using Grids

Grids are an essential tool. They provide structure and consistency across different elements within a design while ensuring proper alignment and spacing. They also allow you to move quickly with confidence. By adhering to a grid system, I can create visually balanced compositions that are both aesthetically pleasing and functional.

"Designer Hat" Vs "Engineer Hat"

As a designer, it's important to be able to switch between the "designer hat" and the "engineer hat." This means being able to think both creatively and analytically, considering not only the visual aspects of a design but also its functionality and feasibility from an engineering perspective.

The Power of Constraints

A central tenet in my design philosophy is the Power of Constraints. When we face limitations in our design process, instead of viewing them as stifling roadblocks, I consider them a unique source of inspiration. Constraints challenge us to work within our means and bring out the best from what we have at hand.

Save Colors for Information

Colors can be powerful tools for conveying information in a design. However, using too many colors can lead to visual clutter and confusion. I believe in using colors sparingly and purposefully—reserving them for key elements or to highlight important information.

Red, White, and Black

Red, white, and black are classic colors that form the foundation of my design palette. These timeless hues work harmoniously together while providing ample contrast for readability. By starting with this versatile trio, I can build upon it with additional colors when necessary.

Iterative process

The iterative process is essential for a few reasons:

  1. User-Centric Design: It enables a design to be refined continuously based on actual user feedback, keeping the design centered around the user's needs.
  2. Risk Reduction: Regular testing can catch and fix problems early, thus minimizing the risk of costlier changes later in development.
  3. Continual Improvement: The cycle allows for continuous refinement, meaning the design can evolve and adapt as more is learned about users and their needs.

Alternatives to iterative design could include the Waterfall Model or Big Design Up Front (BDUF).

The Waterfall Model is a linear approach where one phase must be completed before moving on to the next. It can be appropriate when requirements are well-understood in advance, changes are unlikely, and the project is relatively simple.

Big Design Up Front involves spending considerable time on designing the entire system in detail before implementation begins. It's appropriate when there is a clear and unchanging understanding of requirements, though this is rare in practice.

However, both alternatives have their limitations. They often fail to account for changing user needs or unexpected issues arising during development. Hence, they may not yield designs as user-friendly or effective as an iterative approach would.

Pros/Cons Of Designing in Code

Designing in code offers several advantages, such as rapid prototyping and easy collaboration with developers. However, it can also be limiting in terms of creative freedom and may require more time to make adjustments compared to using design software. I believe in striking a balance between designing in code and utilizing design tools, depending on the specific needs of a project.

January 06, 2023 3 min read

Film Development

Developing film is an essential part of the analog photography workflow. Whether you're an experienced enthusiast or a beginner, being aware of film development techniques is critical to achieving beautiful prints. In this post, I'll walk you through how I develop my 35mm Black and White film.

For more on cameras see Camera Setup

Film I shoot

  • Tri-X 400
  • Ilford HP5 400
  • JCH Streetpan 400
  • Random color film that crosses my path that I never develop

B&W 35mm Film Development Setup


Two rolls must be developed at a time. One time I developed what I thought was 1 roll and it was 2 rolls and I lost a roll of film. RIP. Now developing one roll is forbidden.

Once you've accumulated 2 matching rolls (no mixing!), the fun can begin:

Loading rolls onto film holder

  1. Get all materials set up Step Zero and arranged
  2. Put everything inside dark bag
  3. Open up 35mm rolls of film
  4. Cut the ends off and load them onto the plastic film holders
  5. Put the film holders in the development cannister thing
  6. Close everything up so it is light proof
  7. Remove everything (including garbage) from the dark bag

Developing rolls of film

It's important to double-check the film and developer you are using - make sure they are consistent with each other. After you have verified the proper temperature and time of development, slowly pour your developer into the cannister, develop, and dry.

  1. Double check the film you are using and the developer to make sure you are developing at the right temperature for the right amount of time
  2. Get your developer to the right temperature
  3. Pour developer into cannister, follow agitation procedure for your specific film/developer
  4. Pour our developer
  5. Pour in stop bath
  6. Pour out stop bath
  7. Pour in detergent
  8. Leave to wash for a while under the tap
  9. Pour out all water, lightly shake water off rolls
  10. Pull rolls out of film holders
  11. Gently squeegee the rolls to pull drops of water off
  12. Clip film to hang and dry
  13. Try to find a cool picture on the roll while it dries even though you can't see anything

Cutting roll into contact sheet

  1. Once the roll is completely dry, put on some dust or rubber gloves to prevent smudging your negatives
  2. Trim off any excess film, then cut into strips of five photos each
  3. Slip the strips into archival plastic - I recommend rounding the corners of the strips if you want to avoid them getting caught This is where you can start getting excited - anticipation for processing your photos is always the best.

Printing contact sheets

  1. Pick archival sheet of photos
  2. Put in contact sheet holder
  3. Add paper at least 8.5 x 11
  4. Remove any filters from the projector
  5. Make test sheet for contact sheet, at 5 or 10-second intervals
  6. Find the correct exposure time for the contact sheet – the perfect contact sheet has full dark blacks with no shadows and fully white whites with clear detail

Darkroom Print Setup


January 01, 2023

Camera Setup

Street Photography

Fujifilm X-Pro 3


  • 18mm f2
  • 56mm f1.2
  • 35mm f2
  • 23mm f2


50mm Nikkor Lens

Olympus XA 2

Black & White Film

For my film development process see: Film Development


Video settings

When shooting video:

  • f-log
  • 24fps
  • 1080p
  • 4k used sparingly for large shots, to crop/zoom later
  • 4:3 ratio (????)

When creating animations

  • 4k
  • 12fps or 24fps