Latest Posts (20 found)
Dominik Weber 5 days ago

Learning photography: composition

I've been taking pictures with mine for years, as I imagine most smartphone owners do. When I see something picture-worthy, I pull out my smartphone and take a shot. But I never seem to be able to do the scenes justice. The pictures always fall flat. What I found so captivating when seeing it with my own eyes is nowhere to be seen in the picture. I wanted to learn how to take pictures that captures what I like about the scenes. So, to improve my photography skills I decided to learn the foundations. The books I read covered a wide array of topics. Composition, lighting, technical knowledge (e.g. lenses, exposure), how to recognize picture-worthy scenes, and much more. It was great to read about all that, and it showed me many areas to learn and improve. But as an amateur photographer it's too much to focus on at once. I have to take my time and practice step by step. Composition, learning how to arrange the elements, appeared to be the foundation. Other topics, like lighting for example, build on top of composition. Which is the reason why I focused my efforts on improving my composition skills before anything else. ## Composition Composition is a catchall term that covers a bunch of techniques and guidelines. The ones I learned about are leading lines, framing, foreground interest, symmetry, landscape vs portrait,, rule of thirds, and visual weight. It's possible to take great pictures without those guidelines, or by breaking them, but as a beginner they helped me improve my pictures. And knowing about them sharpened my eye. I classify them in 2 areas - Creating balance in the picture: symmetry, rule of thirds, visual weight - Guiding the eye of the viewer: leading lines, framing, foreground interest, landscape vs portrait They can be arbitrarily combined. It's not necessary to use all of them, and using more of them doesn't guarantee a great result. It takes experimentation and experience. For me, this knowledge combined with intuition and experimentation (taking many pictures of the same subject) creates the best results. And I assume (hope) that over time the accumulated experience will allow me to take better pictures with fewer takes. ## Guiding the eye Techniques for guiding the eye are about connecting the viewer with the picture. My pictures often appeared lifeless, and the primary reason was that I photographed the main subject without paying attention to the surroundings. The result was that the images had nothing that draws the viewer in. Nothing that connects the viewer with the subject. Techniques to guide the eye to the subject fix that. ### Foreground interest When photographing a subject that's large or far away, images often feel disconnected and lose their sense of depth. Objects in the foreground can counteract that effect. They are a stepping stone into the image, towards the subject. This is particularly important for landscape photography. It's easy to focus on the big picture, on the landscape. But a good picture also needs something close by to connect the viewer to the subject or landscape. ![](./IMG_0873.jpeg) In this picture, the subject is the Arco da Rua Augusta (the building). The bucket and the bag with the red jacket were happy accidents (I didn't know they were there, didn't pay attention to them). Without them, the foreground would be empty, and there would be nothing to connect the viewer to the subject further back. As a side note, cropping the image, shaving some off the top, would probably further improve it. ### Framing Framing is surrounding (parts of) the picture with something that resembles a frame. It can be anything, a window, a door frame, or any other kind of opening. The frame calls attention to the part of the picture that's inside. ![](./IMG_0933.jpeg) In this picture the scenery is framed by the stone wall around it. Framing can have a stronger impact if there was a specific subject that's worthy of framing, and if it frames only part of the picture. Here, the frame covers the whole picture. I still like it, but mostly because of the symmetry (I'll reuse the picture later in this article). The pictures with framing that I have all cover the full image. More complex scenes, where only part of the image is framed, and the other part still is interesting enough to be in the picture, are much more difficult to spot. ### Leading lines Leading lines are any objects that create some sort of line. They help drawing viewers into the picture. They guide the eye of the viewer to a specific part, often the subject. ![](./IMG_1017.jpg) In this picture I used the bridge as a leading line going to the colorful buildings in the back. Without the bridge, it would be a picture of random buildings in the background. ### Landscape vs portrait I was never quite sure which orientation to take my pictures in. I mostly decided that based on the picture and how the scene would fit in it. Now I know that landscape pictures encourage the eye to move from side to side, while portrait pictures encourage up and down movement. It's best to choose the orientation that matches the flow of the subject, or the dominant lines in the image. For example, in the image above (Leading lines section), the dominant line is the bridge. At first it goes straight into the image, but the more important part is when it turns right and becomes horizontal. This is why I shot it in landscape. In the image below, the eye should quite clearly move from the street in the front to the hill and building in the back. That's why this picture is in portrait mode. ![](./IMG_0938.jpeg) ## Creating balance Balance in a photo creates harmony and evokes an emotional response. If the viewer is connected with the image (through the aforementioned techniques), balance is what causes captivation. I imagine there are many more ways to evoke an emotional response and create great pictures. But for me, currently, harmony is what I'm after in my photos. ### Symmetry There is beauty in symmetry, and we are instinctively drawn to it. The same in pictures. However, if it's too symmetric, it can feel a bit eerie, a bit too perfect. Slight imperfections make it interesting. ![](./IMG_0933.jpeg) In this picture I like the frame (as mentioned before) but also the symmetric aspect of the man standing on the left and the stand on the right. They create a balance, without perfectly mirroring each other. ### Rule of thirds This is probably the most well-known technique. Pretty much every camera and camera app has a setting to show lines at 1/3rd and 2/3rd of the width and height. The rule of thirds is about putting the subject at one of the points where the lines overlap. So that the focal point of the image is about a third of the width or height away from the center. Putting the subject in the center can be too boring, too predictable. Moving it off-center can make the picture more exciting while still keeping it balanced. ### Visual weight The visual weight is how strong an element appears in the image. For a balanced picture, the size of elements are less important than their visual weights. If one element looks heavier than the others, it should take less space in the picture to balance it out. Finding the correct relationship between the elements is complicated. I haven't read any specific tips, besides trusting yourself when taking and viewing the picture, and adjusting based on feeling. ![](./IMG_1063.jpeg) ![](./IMG_1064.jpeg) I think it's obvious why I like these pictures. The sky is breathtaking. What I find interesting though is that on my phone, the first picture looked better. There the balance of the bright sky and dark foreground was good. But when looking at them on my laptop (with a bigger screen), I find the second one better. I'm not sure what to make of that, maybe the size of the image changes the visual balance? ## Final words Photos are good if they create an emotional response. As I paid more attention to the mentioned techniques, it became easier to create such pictures, but they're by no means a requirement. The books I read mentioned that it's also possible to take great pictures by throwing all rules out the window. It's much more difficult though, it takes a trained eye which I, as an amateur, don't have. So for now I'll use these rules when taking pictures. And I am happy that I finally decided to read photography books. With that little investment my pictures are 10x better than before.

0 views
Dominik Weber 3 weeks ago

Thoughts on using synthetic users for product development

## TLDR LLMs can provide information about how specific user groups behaved in the past. Combining a product idea with that can sharpen the understanding of how the product may help the user. It can give feature ideas on how to make the product more complete for the user, and help with understanding which features are not as important. Best for development of MVPs, but can also be useful for existing products. --- Synthetic users are AI-generated personas. They can be asked questions and respond with an approximation of what a real user would say. They come from the UX research space, but while reading [this article](https://www.nngroup.com/articles/synthetic-users/) I had the idea that they may be used for product research and development. The strength of LLMs are their knowledge and ease of interaction. They encode the knowledge of the world, and can be easily chatted with. This means I can give it a persona (e.g. engineering manager in a software company) and tell it to answer questions as this person would. LLMs have a tendency to revert to the mean, to be average. That tendency actually helps here, because I get the typical behavior of that persona. When talking to people I'd have to talk to quite many to get that kind of understanding. On the flipside, LLMs are incapable of giving specific responses (e.g. engineering manager with a 4-person team at Google). So, lets say I have an idea for a product, and a rough idea about who may be interested in it. I can then create a synthetic user (AI persona) about their typical day, their tasks, workflows, and so on. I can find out how an average person does things, and may even ask for multiple ways to achieve the same goal. This is purely information gathering, which LLMs are good at. Based on that information I can judge how the product can help and which features may be useful. Then I can go further into these areas. Get more details about the specific tasks the product may help with. Using that process I can define (a minimal version of) a product or feature that is more grounded in reality than without. The key is to stay clear of any kind of value judgments and future predictions. Don't ask it if a task is annoying, how important it is, how much time it takes, or how the feature and product would change the behavior or workflow. This is where LLMs are even worse than humans. The core message of the book "The mom test" is to ask users about their behavior, what they did in the past. To never ask users to predict how they would behave. This is even more critical with LLMs. They will tell you what you want to hear, but by staying factual, by asking how user groups behave, they may have value. The use-case I'm thinking of for this type of interaction is a software engineer having a product idea. Maybe a side project, maybe something that should become a business. In any case, they want others to use the product. Often they would not do any user research before starting development. By using LLMs it's possible to get information quickly which may help to refine the idea before writing the first line of code. Note: It goes without saying that contact with real people, either through interviews or selling the product, is at some point necessary to verify if the information holds true. But that's a much higher investment which is not warranted every time time before starting development.

0 views
Dominik Weber 2 months ago

Rules for creating good-looking user interfaces, from a developer

Creating good-looking user interfaces has always been a struggle for me. If you're in the same camp, this might help. I recently redesigned [Lighthouse](https://lighthouseapp. io/), and during that process built a system that helped me create much better designs than I ever did before. This system is about achieving the best possible design with the least amount of effort

1 views
Dominik Weber 8 months ago

An approach for automated fact checking

A short while ago I took part in a hackathon from the Wiener Zeitung, where the theme was to tackle problems in the media space. Since I’m working on an RSS feed reader myself, I have a lot of ideas, but not the time to work on them. This hackathon was the perfect opportunity to validate if the fact-checking system I thought of some time ago could work. The result was better than expected.

2 views
Dominik Weber 10 months ago

Self-hosting HyperDX for fun and profit

HyperDX is a relatively new, but complete, product in the observability space. It supports logs, spans, session replay, dashboards, alerts, and everything else necessary for a complete observability solution. I compared its features to a list of other solutions and HyperDX came out on top.

1 views
Dominik Weber 10 months ago

AsyncLocalStorage and how to use it to reduce repetition of log data

AsyncLocalStorage is a Node.js class that makes it possible to store global data for one specific function execution. It doesn’t matter if the function is synchronous or asynchronous, but in practice it’s more relevant for async functions.

0 views
Dominik Weber 11 months ago

Type-safe logging with custom string interpolation

In an effort to improve observability of Lighthouse, I updated the logging infrastructure and switched from console.log to pino. That led me down the rabbit hole of typing the logging functions. I wanted to create a function that takes a message string and data object, where the message string can reference values in the data object, and TypeScript verifies that all referenced values are in the data object.

1 views
Dominik Weber 11 months ago

On log levels

Logs are an important part of observability. When something went wrong, logs help with the investigation and understanding of what happened. One of the most common problems is inconsistent use of log levels. If that’s the case, filtering by log level is almost useless and logs become hard to read. Defining and documenting log levels helps maintain consistency

0 views
Dominik Weber 11 months ago

Monorepo setup with TypeScript, Tailwind, NextJs, and WXT (browser extension development) with shared components

The most-requested feature for Lighthouse is a browser extension to add articles to the library. Lighthouse has always been a monorepo to share code between the NextJs application and a couple of Lambda functions. Since there was only one application that used UI components, they were always part of the NextJs codebase. To avoid code duplication with the browser extension, the UI components had to move to a separate package.

0 views
Dominik Weber 1 years ago

When to choose the freemium pricing model as solo founder

Pricing is a difficult topic, especially for first-time SaaS founders who don't have experience in that area. One common question is whether the product should have a free plan. I have read many articles on that topic, and received a lot of contradictory advice. Often it's just a "it worked for me so it'll work for you" kinda thing

0 views
Dominik Weber 1 years ago

Pivoting to a well-defined product category

I'm a solopreneur and working on my first serious product. It's called Lighthouse, and combines the features of an RSS feed reader, newsletter reader, and read-it-later app. The problem that I want to address is that when people subscribe to many blogs, newsletters, YouTube channels, and various other sources, the volume of content quickly becomes overwhelming

0 views
Dominik Weber 1 years ago

Product naming trends over time

It took me months to settle on the name Lighthouse for the product I'm working on, which combines the functionality of an RSS feed reader, a newsletter reader, and a read-it-later app, to fight content overload. Some people excel at naming their products. I'm not one of them. I experimented a lot with different strategies

0 views
Dominik Weber 1 years ago

About risk taking in life and job

When speaking with individuals in the finance community who aim to maximize their wealth, the most common strategy I encounter regarding property investment is to buy as much as you can reasonably afford. If you have enough cash to buy one flat outright, you could alternatively buy three flats by taking a mortgage

0 views
Dominik Weber 1 years ago

What I want to achieve with Lighthouse

I've been learning from articles, blog posts, and newsletters since I was in school. They're not my only source of knowledge, but they are great to stay up to date, get practical knowledge from people who've done it, expose myself to new ideas, and much more. Over the years I've gone through a couple different tools. Initially, I opened everything in a new tab

0 views
Dominik Weber 1 years ago

Think of dopamine as finite resource to spend on activities

We usually think of dopamine as a feel-good chemical we get from specific activities, without considering that dopamine production has limits. What if we reversed our thinking to dopamine-first, that it's a finite resource we can spend on activities. Dopamine is known as the motivation and reward chemical in the brain

0 views
Dominik Weber 1 years ago

Reading articles and newsletters reduces blind spots

Reading articles, blog posts, and newsletters is such an enjoyable activity for me because it reduces blind spots without needing a lot of cognitive effort. Finding out about a novel approach that I can use in my work, or a tool that gives me new capabilities, is exciting. I get to see what else is out there without expending much mental energy

0 views
Dominik Weber 2 years ago

Startups and marketing

When I heard marketing professionals giving advice, it never fully made sense to me. Until a couple days ago, when it finally clicked. An important distinction is the state of the company. As an indie developer I was looking at marketing from the point of view of a new product (getting first users), and marketers work through the lens of established businesses

0 views
Dominik Weber 2 years ago

Refactoring an entire NextJs application to server components

Next.js 13 introduced the app directory and React Server Components. On Star Wars day (May 4th) a couple months later, React Server Components was marked as stable. Server components separate page rendering, with some parts rendered on the server and others on the client. The key difference is that server components are always rendered on the server, not prerendered on the server and hydrated on the client. Server-side rendering existed before, but now for the first time it’s possible to mix it with client-side rendering on the same page.

1 views
Dominik Weber 3 years ago

Vertical tabs in Visual Studio Code

I love vertical tabs. I use them wherever possible. Mostly in my browser (Firefox) and the IDEs I use. For years I tried to have the same in VS Code too, but couldn't find a way. And now, finally, I found one. It's actually quite easy. First make sure that `View->Appearance->Show secondary side bar` is checked. . [](. /1. png) Then drag `Open Editors` to the secondary sidebar. . [](. /2

0 views