HNHacker News
TopNewBestAskShowJobs

adzicg

2,615 karma · joined January 9, 2014

Gojko Adzic, http://gojko.net/about

Stuff I’ve built/participated in:

https://www.narakeet.com, https://votito.com, https://bugmagnet.org

Previously worked on https://www.mindmup.com, https://claudiajs.com

My books: https://gojko.net/books/

submissionscomments
adzicg··on [dead]
Google Search console started showing "AI Overview stats" for some of my sites (the high traffic ones, it shows "page not found" for low traffic sites on this). Might be an interesting peek for people to see what they've lost to AI overview in terms of SEO traffic. It shows only page/country/device type and no direct query info.

https://search.google.com/search-console/performance/search-...

adzicg··on Ask HN: Building a solo business is impossible?
It's not impossible, it's just difficult :) Luck plays part like in anything, but consistency and persistence also makes it possible for luck to happen.

I'd recommend scratching your itch first and then finding people in a similar situation. You know enough about your own problem to be able to design a solution around it, and you likely know some other people around that as well. Slice that segment into something worth attacking first. Bill Aulet defined the first group of people worth solving for as a "beachhead market". This is his test for that first segment:

- the customers within the market should all buy similar products

- the customers within the market should have a similar sales cycle and expect products to provide value in similar ways

- the customers within the market talk to each other, and there is a high probability of word-of-mouth referrals, where customers can serve as a “compelling and high-value references for one another in making purchases”.

The third one is for me the key to open doors as a solo founder. You probably don't have the marketing budget to compete with large companies, so word of mouth and happy customers will be your first best marketing strategy. SEO is black magic, and from my experience takes a long time to actually start working - happy customers doing word of mouth and writing/recommending you also helps significantly with that.

Once this segment opens the doors, things will likely change for something else, then you follow the trail.

adzicg··on Show HN: Simple Teleprompter App for the Browser
Hey HN,

Had to record some videos and ended up building a simple teleprompter browser app (all data is stored in local storage, never leaves the browser). It has basic markdown highlighting support (bold/italic) and works with most clickers to speed up/slow down the reading speed.

adzicg··on Dialectical Bootstrapping
I found out about dialectical bootstrapping yesterday, looks like a good way to get AI agents to think a bit deeper, but seems to be one of those techniques that help humans do better work as well. In a nutshell, it's a systematic "prompt" for thinking about plausible alternatives and then providing a second guess.
adzicg··on Ask HN: How are you LLM-coding in an established code base?
tdd is very present in our process, it's mandated by CONTIRIBUTING.md with very specific instructions on how to structure tests.
adzicg··on Ask HN: How are you LLM-coding in an established code base?
hahaha. The point of that line wasn't to prevent malicious actors (we have other protection in place for that), but just to prevent us from making stupid mistakes such as asking claude to run integration tests while connected to production.
adzicg··on Ask HN: How are you LLM-coding in an established code base?
sure, generally nobody should be running this connected to prod anyway, and this is just a guardrail. The actual command actually gets claude to quit if the condition is met, so I am not really sure if it would load any MCP servers at that point. Here's the line

- You are NEVER allowed to work if the environment `AWS_PROFILE` variable is equal to `support`. When starting, check that condition. If it's met, print an error message and exit instead of starting.

adzicg··on Ask HN: How are you LLM-coding in an established code base?
We use claude code, running it inside a docker container (the project was already set up so that all the dev tools and server setup is in docker, making this easy); the interface between claude code and a developer is effectively the file system. The docker container doesn't have git credentials, so claude code can see git history etc and do local git ops (e.g. git mv) but not actually push anything without a review. Developers review the output and then do git add between steps, or instruct Claude to refactor until happy; then git commit at the end of a longer task.

Claude.md just has 2 lines. the first points to @CONTRIBUTING.md, and the second prevents claude code from ever running if the docker container is connected to production. We already had existing rules for how the project is organized and how to write code and tests in CONTRIBUTING.md, making this relatively easy, but this file then co-evolved with Claude. Every time it did something unexpected, we'd tell it to update contributing rules to prevent something like that from happening again. After a while, this file grew considerably, so we asked Claude to go through it, reduce the size but keep the precision and instructions, and it did a relatively good job. The file has stabilized after a few months, and we rarely touch it any more.

Generally, tasks for AI-assisted work start with a problem statement in a md file (we keep these in a /roadmap folder under the project), and sometimes a general direction for a proposed solution. We ask Claude code to an analysis and propose a plan (using a custom command that restricts plans to be composed of backwards compatible small steps modifying no more than 3-4 files). A human will read the plan and then iterate on it, telling Claude to modify it where necessary, and then start the work. After each step, Claude runs all unit tests for things that have changed, a bunch of guardrails (linting etc) and tests for the wider project area it's working in, fixing stuff if needed. A developer then reviews the output, requests refactoring if needed, does git add, and tells claude to run the next step. This review might also involve deploying the server code to our test environment if needed.

Claude uses the roadmap markdown file as an internal memory of the progress and key conclusions between steps, and to help with restoring the progress after context resets. Pretty much after the initial review, Claude only uses this file, we don't look at it any more. Once done, this plan file is thrown away - tests and code remain. We occasionally ask it to evaluate if there are any important conclusions to record in the architectural design records or contributing guide.

adzicg··on Ban me at the IP level if you don't like me
We solved a similar issue by blocking free user traffic from data centres (and whitelisted crawlers for SEO). This eliminated most fraudulent usage over VPNs. Commercial users can still access, but free just users get a prompt to pay.

CloudFront is fairly good at marking if someone is accessing from a data centre or a residential/commercial endpoint. It's not 100% accurate and really bad actors can still use infected residential machines to proxy traffic, but this fix was simple and reduced the problem to a negligent level.

adzicg··on Tog's Paradox
it's paradox in a sense that reducing complexity actually ends up increasing complexity; Tognazzini originally proposed it as a complaint against Tesler's Law ("Conservation of complexity"). Tesler observed that complexity stays the same when people try to reduce it. Tognazzini suggested that the complexity doesn't stay the same, but actually increases.
adzicg··on Ask HN: Founders, what was the major sourcing channel for your first 100 users?
I just checked, and have about 9K connections on LinkedIn. I assume with the ability to pay for post promotion you could get a similar reach by paying linkedin a few bucks.

This was for a tool to speed up making educational videos, so I tried to reach out to people who were doing online courses and educational materials.

adzicg··on Ask HN: Founders, what was the major sourcing channel for your first 100 users?
Linkedin for a B2P product. I posted a few questions asking if anyone had similar issues, and got directly in touch with about 20 people who responded to involve them in customer research, then kept in touch with them as I was developing the product for feedback. Those 20 by word of mouth led to a bunch more people trying it out. It's difficult to put a specific number on whether that was 100 or a bit more or fewer, but a few cycles of word of mouth from happy users got me over the 100 users easily.
adzicg··on Show HN: Lizard Optimization (my new book)
Hey HN,

A preview version of my new book Lizard Optimization is now live on LeanPub. It's about 90% done - the final text is there, but some illustrations are still drafts.

A product I worked on grew explosively from November 2021 to November 2022. The key user metric, tracking when people are getting value from the product, increased by more than 500 times in those 12 months (times, not percent). This happened after a period of unremarkable growth and a slow decline. Looking back, the key factor in reversing the decline and unlocking exponential growth was a counter-intuitive approach to engaging users.

This book is a summary of what I learned from that crazy growth phase, synthesized into a simple process that you can apply to improve your products, unlock growth, reduce churn and increase revenue.

This book is primarily for software product managers, product data scientists, senior engineers and anyone else involved in product management and guidance.

adzicg··on Show HN: ReadToMe (iOS) turns paper books into audio
Narakeet can read EPUB and a bunch of other formats using realistic TTS - see https://www.narakeet.com/create/text-to-voice-audiobooks.htm...
adzicg··on Ask HN: UX Challenges Matrix?
yes, that one, thanks!
adzicg··on Discussing CNET’s content-pruning to improve SEO ranking
It’a not that simple. Older content might not have webp images variants available, or styling might be optimised for newer stuff and cause old pages to reflow, and many other things like that.

Key web vitals change over time and it’s often a mix of content, styling and scripting that needs to be optimised to fix CVW issues. Revisiting old content and rebuilding old assets might not be worth it.

I’m not talking from a perspective of maintaining a personal blog, but a product web site that currently gets about 1.5 million visits from organic search per month. It’s not CNET, granted, but not a trivial site either.

adzicg··on Discussing CNET’s content-pruning to improve SEO ranking
one aspect of this that's overlooked in the discussion is how google penalises pages for bad core web vitals. instead of marking a single page bad and reducing its ranking, google decides using some weird algorithm to bundle a bunch of pages together into a group and penalise them based on the average core vitals metrics in the group. this would explain easily why old content is not worth keeping around. older pages might not be optimised for current web vitals metrics, but they can bring down stuff you care about a lot.

SEO is black magic and astrology, so there's a lot of guessing going around, but I think I can vouch for this as this particular issue happened to one of the sites I maintain, and it caused the homepage to lose lots of traffic because it was bundled as related with some ancient blog posts. the homepage performed quite well according to all the metrics, but old pages did not, and until Google started penalising groups last year it didn't make a difference to keep the old pages around. Since they started penalising random groups, something that's important can be affected by something old and irrelevant, and the feedback loop is very slow.

It takes 28 days to get feedback from the web console about any potential changes to page performance, so I tried fixing the old pages in a few ways, then just gave up and deleted them. the average rose up, the penalty to the whole group was gone, and the homepage again started getting a decent amount of traffic.

adzicg··on Someone Added ChatGPT to a Furby
tech stack from a follow-up tweet (https://twitter.com/jessicard/status/1642867214943412224):

py speech recognition lib for audio, then @OpenAI’s whisper library for speech->text, then chatgpt, text->speech w/ @narakeet for voice ai, then play it through speaker with pydub playback

adzicg··on Inkscape 1.2.2
maybe this will help - I pulled it together using instructions from Linux From Scratch, to build a static RSVG Convert that run run inside barebones AWS Linux 2 (on Lambda). https://github.com/serverlesspub/rsvg-convert-aws-lambda-bin...
adzicg··on Major Australian banks hit by website outage
Looks as if Akamai is having trouble. CDNs are not having a good month this june.
adzicg··on Fastly Outage
looks like amazon.com started using fastly in May 2020 (https://www.streamingmediablog.com/2020/05/fastly-amazon-hom...) so it's not an AWS thing
adzicg··on Ask HN: Is low level progarmming job more satisfying?
> And then you're at the mercy of your customers!

Not necessarily. With consumer-facing products, especially if they're mass market and the price of a single subscription is low, the customers can't make any big demands (in fact, they can, but you can safely ignore them).

I'm part of a very small team that has a reasonably successful SaaS product aimed directly at consumers. We intentionally priced it very low so we can stay in control of the product, and not be at the mercy of our customers.

adzicg··on Show HN: Narakeet Is Finally Launching - build narrated videos quickly!
Hi everyone, author here.

After two years of development, Narakeet (formerly Video Puppet) is finally generally available and open for business. It started as an experiment for Startup School in 2018 (the one when everyone got accepted). Roughly 50 thousand people participated in the public beta test since April 2020, building more than 120 thousand videos.

Narakeet is an online service that helps people make narrated videos easily, from Powerpoint files or markdown scripts.

Here's the previous discussion from HN, when we launched the beta program in April: https://news.ycombinator.com/item?id=22718854

adzicg··on I no longer build software
My guess is that it has nothing to do with pre-2000 (or non-web), it's just that people enjoy a rote activity a lot more at the start of their careers when things are still new and interesting. When you've done 50 web sites, the 51st isn't nearly as exciting as the first ten.

I got burned out badly by a string of gigs that effectively came down to helping clients fight some self-inflicted business complexity and connecting yet another stupid website to yet another stupid database, but instead of quitting the industry I decided to slowly fire clients that wanted that kind of work, and build my own products. It took a while to get things rolling since I did this as a gradual shift, and financed it by doing smaller and smaller consulting gigs, but I strongly recommend that as an alternative to quitting altogether to anyone who feels the pain outlined in the the original post.

For me, immersive coding is an activity that brings a lot of joy. Building software is the closest thing to modern magic - you turn ideas, keyboard clicks and caffeine into something that people actually use; potentially making a positive impact on someone's life/work/day.

By building my own stuff, at my own pace, I rediscovered the joy of coding. As much as it was in pre-2000 work and before web.

If you build your own stuff, then there's nobody to tell you to connect a RSS feed to a RDBMS system. For me, the key to keep programming enjoyable is to be able to control the pace and business requirements. In my case, this translated to focusing on business-to-consumer products at a very low cost to the consumer, so I'm in charge of the product, not the customers. With B2B, especially at a high single customer price, people feel entitled to ask for stupid shit, and whoever manages the product feels compelled to accept it. With low average lifetime customer value, saying no is very easy. I assume that's not the only way to keep full control of the product, but it worked for me.

adzicg··on Hosting your entire web application using S3 and CloudFront
there's a better and simpler workaround; there are two ways of setting up CloudFront->S3 origin. One is to use the S3 as file storage, the other is to use the S3 web site endpoint as a HTTP origin. With the second option, index documents work with directories, as well as S3 redirect rules etc. CloudFront sends S3 a http request as if it were an external web site, but it's all inside AWS so in effect your costs are the same in both options.
adzicg··on Show HN: From Markdown to Video
> The problem with auto-generated voices in videos like this is as a viewer I can't distinguish between work that someone put deliberate production time into, and something churned out by a content farm.

There's a big difference between good content that is automated into a video, and spam. The key use case for this was helping me focus more on the content, rather than on fiddling with synchronisation and resizing assets. I'm not a native English speaker, and although I speak at quite a few conferences per year, listening to my broken English accent (which sounds like a Bond villain) in a video is quite distracting, even for me. Even with my best efforts to record my own voice professionally, generated voice sounds a lot better than what I can do.

adzicg··on Show HN: From Markdown to Video
simple transitions are already supported, and I plan to add a lot more transitions soon.

you can set transitions globally in the document header, or on individual scenes. for example, just add

    (transition: crossfade 0.2)
for a 0.2sec cross-fade transition between scenes

video segments (different source media start) are also supported. You can do something like:

    (video:
      file: stopwatch.mp4
      segment: 00:02 - 00:04)
Check out video and transition sections here for more info: https://videopuppet.com/docs/format/
adzicg··on Show HN: From Markdown to Video
btw, for narrated powerpoint, you can actually use Video Puppet directly with Powerpoint files - just put narration into speaker notes. Here's more info on that: https://videopuppet.com/docs/powerpoint/
adzicg··on Show HN: From Markdown to Video
you can easily replace auto-generated voice with your own, or a professional recording in Video Puppet scripts. Just add (audio: file.wav) to your scene.
adzicg··on Show HN: From Markdown to Video
you can use JSON or YAML if you like more structure. Markdown has good editor support, so using it as source for videos means video sources render nicely in GitHub, for example.

Also, if you don't like ![](), you can just use stage directions with brackets. The equivalent script will be :

(image: london.jpg)

Welcome to London

---

(image: berlin.jpg)

Welcome to Berlin

Page 1 of 6Next →