Notes

Hi, friends. My goal is to write every working day. Here we go.

14 Nov - How to be original

From Benda Ueland's "If you want to write":

Everybody is original, if he tells the truth, if he speaks from himself. But it must be from his true self and not from the self he thinks he should be.


Occasionally, when I'm feeling rebellious, I make grammar errors when writing on purpose. Most often just because I think it conveys what I want to say better than the grammatically correct version.

More so when I write in Lithuanian, which has stricter rules than English.

14 Nov - The protest

I participated in a protest today against the inclusion of a party in Lithuania's new coalition government whose leader has previously violated the constitution and is known for anti-Semitic rhetoric.

Around 4,000 people attended, even braving bad weather to make our voices heard. Though it may seem like a small number, a protest like this has a powerful impact.

It shows that we, as citizens, care deeply and won’t remain silent. With extensive news coverage, it sets an important tone for the half of the country watching on TV.

It was also nice to see friends there and have a chance to socialize while standing together.

13 Nov - An evening walk on the Striečiukai trail

I walked the Striečiukai trail today just before sunset, covering 4.5 kilometers and passing only one person—and his dog.

Even though forests surround Vilnius, escaping the sounds of civilization isn’t easy. I stopped occasionally to listen, and I could always hear the hum of cars on the nearby main road or a dog barking in the distance.

Here’s something interesting: Google Maps street view covers the entire trail, and in every location, you’ll spot the same man carrying his child in a carrier on his back. A recent dad took a walk and mapped the trail himself. Sweet. What a cool thing to do.

12 Nov - UX Salon

Attended a UX Salon event today at Vinted.

Reminder to self: in presentations, the story is everything.

Pablo Stanley gave a motivational talk on creativity, telling the story of Morgan, a burrito cook on a quest to save the land of Creativia. The rest of his presentation featured about 20 slides of, well, butts (yes, actual behinds) — and it was great!

Jonas Bučinskas shared a captivating story about how Ovoko opened a real scrapyard to dogfood their own product. It reminded me of my own approach, using Dhub to create content on this website.

You can watch the full video on youtube.

11 Nov - AI Lab: Defense Edition

Went to a meetup today in Vilnius. Some great guests. Oleksii Rezinov have some brutal advice. Lots of thoughts about autonomous drones. But it seems some of the biggest hurdles in Europe to advance defense tech are slow institutions, lack cooperation between countries, lack of urgency, low of production capacity.

8 Nov - Search of Truth

I'm reading If You Want to Write by Barbara Ueland. It was first published in 1938, and my copy was printed in 1984. I got it second-hand, and I've already spilled coffe on it, adding to its vintage character.

Reading it feels like forming a deeply human and personal connection with the author. Here's the author's promise in the introduction:

You will never be working from grim, dry willpower but from generosity and the fascinating search for truth.

7 Nov 2024 - The System

Through some reverse engineering—and simply asking my weightlifting coach—I’ve gathered the following information: the system they use to track clients' data and progress over time is built with Next.js, hosted on Vercel, and uses Mantine for the UI.

I was told they "have a coder", so the system is custom-made.

Not only do coaches have access, but all clients have a login that lets them enter data, track both their body weight and the weight they lift. The system also tracks body measurements (handy for online clothes shopping) and allows you to explore various charts.

6 Nov 2024 - Starting Strength

Apparently, my weightlifting coach follows the Starting Strength program. I only discovered this during my seventh training session.

I’ve been wanting to do Starting Strength for a long time—I even have the book on my Kindle—but I never managed to learn it on my own. Maybe it’s for the best, as weightlifting can be harmful if not done with proper form.

5 Nov 2024 - How to start a new NextJs project with Prose UI

Here's how to create and configure a Next.js project with MDX and Prose UI.

Soon you'll be able to start a Prose UI project from a template and make the process of project creation quicker and more DX-friendly. Stay tuned.

Start by creating a Next.js project, choosing defaults in the prompts.

Create a new NextJs project
npx create-next-app@latest

Enter your project’s folder and install the dependencies for rendering MDX and Prose UI. I'm using pnpm, but feel free to use your preferred package manager.

Add npm packages
pnpm add @prose-ui/core @prose-ui/next @next/mdx @mdx-js/loader @mdx-js/react @types/mdx

Create an mdx-components.tsx file in the root of your project, or inside the src folder. This file will be used to override the default components used by MDX.

mdx-components.tsx
1
2
3
4
5
6
7
8
9
import { mdxComponents } from "@prose-ui/next";
import type { MDXComponents } from "mdx/types";

export function useMDXComponents(components: MDXComponents): MDXComponents {
  return {
    ...components,
    ...mdxComponents,
  };
}

Next, go to your src/app/globals.css and import Prose UI styles at the top of the file:

globals.css
@import "@prose-ui/next/prose-ui.css";

Configure your project to use mdx with Prose UI by modifying the next.config.ts in the following way:

next.config.ts
import createMDX from "@next/mdx";
import { remarkPlugins } from "@prose-ui/core";

/** @type {import('next').NextConfig} */
const nextConfig = {
  pageExtensions: ["js", "jsx", "md", "mdx", "ts", "tsx"],
};

const withMDX = createMDX({
  options: {
    remarkPlugins,
  },
});

export default withMDX(nextConfig);

Go to your app/layout.tsx and replace the content with the code below to ensure that your pages have the correct fonts and styles applied.

layout.tsx
1
2
3
4
5
<html lang="en" className={`dark ${geistSans.variable} ${geistMono.variable}`}>
  <body className="prose-ui antialiased">
    <div className="mx-auto max-w-3xl px-8 mb-32">{children}</div>
  </body>
</html>

Rename src/app/page.tsx to src/app/page.mdx and replace the content with your Markdown/MDX. For example:

page.mdx
1
2
3
4
5
6
7
8
9
10
# Hello, world!

The Viking landers, part of NASA's [Viking program](https://en.wikipedia.org/wiki/Viking_program), were the first U.S. missions to successfully land on Mars and transmit images and scientific data back to Earth in 1976.

<Frame align="center" caption="Viking lander">
  <Image
    src="https://nssdc.gsfc.nasa.gov/image/spacecraft/viking_lander.jpg"
    alt="Viking lander"
  />
</Frame>

That's it! Run pnpm dev and open your project in the browser.

4 Nov 2024

I'm approaching the first release of the open-source UI library I've been working on: Prose UI. This website uses Prose UI.

Briefly put, it's a collection of components for building content-centric websites. I'm going to write more about why I'm building it, and how to use it in the coming days.

Meanwhile, here's an image of a blob generated using generative AI by Domas.

Abstract art generated with the help of stable diffusion
Abstract art generated with the help of stable diffusion

1 Nov 2024

What’s the name of the feeling when you look at something—a product, a design, a text—and it has a simple, subtle, and unobtrusive beauty in both form and function? It's as simple as it can be, and not more complex than it needs to be. Is there a word for that?

31 Oct 2024

I spent over an hour today trying to get my Jest tests to work. I tried everything: followed the documentation, asked ChatGPT, but nothing solved the issue. It was frustrating. The setup for jest, ts-jest, and tsinfo felt overcomplicated for something that should have been simple—just running some TypeScript code to check if a function’s response matched what I expected.

In a moment of frustration, I typed this whole rant into ChatGPT. Like a patient therapist, it understood and suggested I try vitest instead of jest. And it worked! I was up and running in 3 minutes.

There’s a skill to asking the right questions to get the best answers from AI.

30 Oct 2024

I wonder how to deal with the fact that I don’t have the time or mental capacity to write each day. I’m thinking I could try writing more than one text on a good day, so I can publish something on the a bad day when I’m not able to write.

It’s important to stick to the schedule, even if what I write isn’t great.

29 Oct 2024

Writing is hard, so I don't. But I want to.

I want to write so I can understand the world and myself more clearly.

I want to write because putting thoughts and ideas into words and structure gives me a certain type of joy and a feeling of safety.

I want to write so I can remember my thoughts and ideas better.

I want to write as a form of communication with friends and random people who happen to read what I write (if I'm lucky).

I will write a short text every workday, and this is the first one.