Hacker Newsnew | past | comments | ask | show | jobs | submit | redact207's commentslogin

Same here, it helped a lot. Also don't eat a big meal and go straight to bed. Aim for an earlier dinner.

I love that this man resurrected his blog after 10 years just to write this. Anger and spite are strong motivators.


You have no idea how true this is :). I had to upgrade everything, the old site didn't even have SSL. But this annoyed me so much I wanted others to know how to fix it.


Super fun read. Reminds me of the old software cracking days… totally appreciate you sharing it, even though i likely will never have one of those AC units.


> You have no idea how true this is :). I had to upgrade everything, the old site didn't even have SSL. But this annoyed me so much I wanted others to know how to fix it.

People like you are the ones that make the internet worth logging on for.


Hopefully this costs the company that tried to fleece you even more money in backlash and also as more people see that is possible to fix this.


My best open source work is pretty much entirely in the 'Rage Driven Development' category.

(solid post, also solid rant, mate)


Glad you did! Nice read as well.


I made my daughter’s bed from scratch out of anger and spite toward IKEA.


I have some freak brain (and IKEA experience) which usually let's me do IKEA pretty well. What was it that happened in your case? I'm curious what brought you to that point.


Maybe they moved? In my experience, IKEA furniture that isn't solid wood (more and more of it is heading that direction to their credit) tends to not make it more than 1 move.

I just got done (mostly) reassembling a wardrobe. It's a bit more wobbly around the edges. I'm not sure if it's because I didn't put the shelves back in the exact spots (wasn't thinking and didn't label them during disassembly) or if it's something else, but once we decide it's not good enough for the room upstairs where it now lives, it's getting put in the dumpster.


I tend to assume that IKEA furniture shouldn't be actually taken apart once put together, and so far that's worked out fine for us. There are some pieces that are obviously repeatable (table legs screwed into metal mounting brackets) but with a lot of the steps you can feel as you're doing it the first time that it's not going to work well if you have to undo it.


True. Adding a few 2" screws (into pilot holes) makes an enormous difference to the rigidity of their (e.g.) wardrobes and kitchen units. Even on first assembly, but especially if you have to take apart and rebuild.


IIRC when we wanted to move one of the pretty large IKEA dressers that had to be at least partially disassembled to fit through the door there was no non-destructive way to dismantle it. And that was not about trivial things like the back panel being nailed, but about fasteners of the actual structural parts being inaccessible once you put the whole thing together. One would think that going through the assembly steps in reverse should work, but for some reason it did not. I ended up breaking few structural braces (~18x48mm pieces of fiberboard) at the back of the thing to take it apart and replacing that with wooden beams of the same size.


This "trend" of furniture being made of composite materials makes no sense to me. They're obviously so much weaker. I've had nightstands that sway like a tree in the summer breeze. Furniture today though doesn't feel much cheaper. Even the "luxury" brands these days, who charge big bucks, sneak in composite.


>This "trend" of furniture being made of composite materials makes no sense to me.

Solid wood is expensive, in a lot of the world.

And for furniture, you can't do a good job with cheap wood - if it twists or bows the doors won't close right, or the drawer will be tight. Need a hole in a particular position, but there's a knot? You're going to have a bad time. Wood with loads of knots doesn't look great. And of course, some types of wood cost a lot more than others.

Chipboard with veneer, though? It's super cheap. You can have any colour you like. It machines consistently, with no knots or checks like that. The response to temperature and humidity is even and consistent. If you need more strength, you can just order thicker boards. Sure, you can't leave it outside in the rain - but so what?

The main downside to flat pack furniture is a lot of people don't manage to assemble it right. A nightstand will end up in an awful state if the person who assembled it forgot to nail the back on properly, or used a short screw where a long screw was called for, or put a part in the wrong way around.


It depends, a lot of composite materials are actually stronger than just solid wood, while being lighter and easier to move. Sometimes there are too many shortcuts though.

Wood veneer over cheaper materials has been common for over a century at this point though.


It does make the furniture much lighter and therefore easier to move. I once had to move a plywood dresser and it was an experience i'd rather not repeat. Light furniture on the other hand is a pleasure to work with.


It was actually an order issue. I had ordered a child’s loft bed for pickup and went to go pickup when I got the email to tell me to do so. When I showed up they said they didn’t have it because they sold it. Apparently just because you order something for pickup doesn’t mean they can’t sell it off the floor.


I bought a bed that when built according to instructions would end up broken. I tried to blame my son, then I dug in on the details. Absolute garbage. Through it in the box,sort of, hauled it back in and demanded my money back. While I was waiting in line I was staring at signs exclaiming the policy about no refunds. Dude saw the look on my face and didn't say one word, just gave me money back. I ordered a replacement from Amazon made out of steel.


I made my daughter’s bed from scratch out of anger and spite toward IKEA.

I would have used wood and nails. You must have terrifically strong emotions!


That’s pretty good :)

For the curious I did actually end up using very similar materials to ikea themselves. Pine for wood and melamine particle board. It cost me twice as much and took me 2 days to cut and assemble. Worth it.


IKEA? Thats a surprise, what happened?


Some IKEA furniture is great, some of it is terrible. 10-15 years ago, it was where you'd go when you needed a great-looking nightstand or coffee table for a fair price and didn't overly care how long it would last. These days, you can expect to pay a premium for the "IKEA aesthetic" and shopping experience.

Personally, the main thing I can't stand is that you have only limited ability to "choose your own adventure" and just go straight to the thing you're there to buy. I don't want to spend 25 minutes wandering through their corporate-curated displays to get to the kitchen faucets.

I think they still have a good price on AA NiMH batteries, though.

Edit: I am speaking to the US stores, I have no idea what IKEA is like closer to their homeland.


>Personally, the main thing I can't stand is that you have only limited ability to "choose your own adventure" and just go straight to the thing you're there to buy.

Sure you can, just go down to the basement area where you pick up all the boxes anyway. You only need to browse if you don't know what you want.


Wrote it elsewhere: https://news.ycombinator.com/item?id=41397160

Nothing to do with the furniture itself and everything to do with their cockamamie order pickup system.


They probably noticed the material quality.


Meanwhile they had to fire their DBA because they kept dropping tables.


I love it too but this only becomes worthwhile if you manage to promote this post in social media somewhere. If you don't already have a strong social media presence or don't personally know anyone who does you can forget about it. And here on HN you really have to get lucky, post at the right time and hope the flagging gangs don't get you.


I could not disagree more. This sort of thing is a public service. Even if only a dozen people find it valuable, it can be exceedingly valuable to them. It's worth putting this sort of thing on your website for that reason alone.


In complete agreement, I will add an anecdote from my experience:

I have a tiny hardly updated blog where I post stuff I do and assume nobody at all will ever read it. A month ago I got an email from somebody asking about a detail because her granddaughter's toy has the same problem that my daughter's did. It is so rewarding that some work I did for myself can continue to have value for people across the world.


This is only the case if you blog for social media clicks and likes. Most people who write blogs don't do it for that reason.


I agree in general, but there will always be certain requirements and team structures where stuff like this makes sense.

For me, I work in a small team of 6 devs on an ever growing app and feature set. I 100% will leverage managed services where cost and complexity allow. SQS is one of the most stable and cheapest AWS service, and the ability to just use it and not have to sysops it means we can spend more time building features.


Indeed. I’ve relied heavily on SQS for years and never regretted it. I question the comparison to SQS for this add on — it’s not really in the same ballpark.


I just use copilot for this and bash scripting, which I both do very little of and forget the syntax


I highly recommend strength training. To anyone. But especially us developers.

Big compound lifts like squats, deadlifts, rows etc all hit a lot of muscle and posterior groups and have made my back bullet proof.

It doesn't take a lot of equipment - any commercial gym with a power rack, or BYO home gym with a rack and barbell will do. Start with a simple program like Starting Strength and then pivot to something more intermediate friendly when you get there like 531. You can run these programs for decades.


Even moreso, I'd recommend bodyweight exercises and long hikes. Humans aren't quite built to do repetitive heavy lifting movements. We're built to jog, to climb, to pull ourselves up a tree or wall, and hike long distances.

Best thing is, you can do it pretty much wherever you live!


I didn't quite understand why this was made. We create our local test environments using docker-compose, and so I read:

> Creating reliable and fully-initialized service dependencies using raw Docker commands or using Docker Compose requires good knowledge of Docker internals and how to best run specific technologies in a container

This sounds like a <your programming language> abstraction over docker-compose, which lets you define your docker environment without learning the syntax of docker-compose itself. But then

> port conflicts, containers not being fully initialized or ready for interactions when the tests start, etc.

means you'd still need a good understanding of docker networking, dependencies, healthchecks to know if your test environment is ready to be used.

Am I missing something? Is this basically change what's starting your docker test containers?


Going to the sections for language interactions shows a lot more stuff, e.g., the first full go example: https://testcontainers.com/guides/getting-started-with-testc...

Shows how you can embed the declaration of db for testing in a unit test:

> pgContainer, err := postgres.RunContainer(ctx, > testcontainers.WithImage("postgres:15.3-alpine"), > postgres.WithInitScripts(filepath.Join("..", "testdata", "init-db.sql")), > postgres.WithDatabase("test-db"), > postgres.WithUsername("postgres"), > postgres.WithPassword("postgres"), > testcontainers.WithWaitStrategy( > wait.ForLog("database system is ready to accept connections").

This does look quite neat for setting up test specific database instances instead of spawning one outside of the test context with docker(compose). It should also make it possible to run tests that require their own instance in parallel.


On Hacker News you need to indent code examples with four spaces - like this:

    pgContainer, err := postgres.RunContainer(
        ctx, testcontainers.WithImage("postgres:15.3-alpine"
    ),
    postgres.WithInitScripts(filepath.Join("..", "testdata", "init-db.sql")),
     postgres.WithDatabase("test-db"),
     postgres.WithUsername("postgres"),
     postgres.WithPassword("postgres"),
     testcontainers.WithWaitStrategy(
      wait.ForLog("database system is ready to accept connections").


And, to quote non-code text, you have to do it manually; there is no formatting operator and the code-indent method won’t work (unreadable at many browser widths). I tend to do it like so:

> *Paragraph one.*

> *Paragraph two. Etc.*

Which produces the desired effect:

> Paragraph ‘one’.

> Paragraph two.

(To use a * in a paragraph that’s italic-wrapped, backslash it.)


This seems great but is actually quite slow. This will create a new container, with a new postgres server, and a new database in that server, for each test. You'll then need to run migrations in that database. This ends up being a huge pain in the ass.

A better approach is to create a single postgres server one-time before running all of your tests. Then, create a template database on that server, and run your migrations on that template. Now, for each unit test, you can connect to the same server and create a new database from that template. This is not a pain in the ass and it is very fast: you run your migrations one time, and pay a ~20ms cost for each test to get its own database.

I've implemented this for golang here — considering also implementing this for Django and for Typescript if there is enough interest. https://github.com/peterldowns/pgtestdb


As a user of testcontainers I can tell you they are very powerful yet simple.

Indeed all they do is provide an abstraction for your language, but this is soo useful for unit/integration tests.

At my work we have many microservices in both Java and python, all of which use testcontainers to set up the local env or integration tests. The integration with localstack and the ability to programmatically set it up without fighting with compose files, is somewhat I find very useful.


Testcontainers is great. It's got seamless junit integration and really Just Works. I've never once had to even think about any of the docker aspects of it. There's really not much to it.


It’s not coming across in your comment, but Testcontainers can work with unit tests to start a container, run the unit tests and shutdown. For example, to verify database operations against the actual database, the unit test can start an instance of Postgres run tests and then shut it down. If running tests in parallel, each test can start its own container and shutdown at the end.


Wouldn't that just massively, _massively_ slow down your tests, if each test was spinning up its own Postgres container?

I ask because I really like this and would love to use it, but I'm concerned that that would add just an insane amount of overhead to the point where the convenience isn't worth the immense amount of extra time it would take.


A better approach is to spin up one container and a _template_ database before the tests. Apply migrations to that database. Then, each test creates its own database from the template, runs, and drops the database.

Tests can be run in parallel, and they are fast because the database is prepared just once, tests simply make a copy.

We're doing this in my company, I'm happy how it works.



Testcontainers are for testing individual components, apart from the application.

I built a new service registry recently, its unit tests spins up a zookeeper instance for the duration of the test, and then kills it.

Also very nice with databases. Spin up a clean db, run migrations, then test db code with zero worries about accidentally leaving stuff in a table that poisons other tests.

I guess the killer feature is how well it works.


> Also very nice with databases. Spin up a clean db, run migrations, then test db code with zero worries about accidentally leaving stuff in a table that poisons other tests.

Are you spinning up a new instance between every test case? Because that sounds painfully slow.

I would just define a function which DELETEs all the data and call it between every test.


It supports both patterns (and variations in between). So you get to pick between isolation at a test level or if you want less overhead, rolling back the commit or other ways to cleanup.

Can only speak for the Golang version of the lib, but spinning up new instances was surprisingly quick.


I usually do one per suite with a reset method run before each test.

It's a decent compromise between performance and isolation, since weird interactions can only originate from the same suite, rather than anywhere in any test. Also permits parallel execution of db test suites.


This looks to be like just language specific bindings over the docker compose syntax. You're right that docker compose handles all of the situations they describe.


The major issue I had with docker compose in my CI environment is flaky tests when a port is already used by another job I don't control. With testcontainers, I haven't seen any false positive as I can use whatever port is available and not a hardcoded one hoping it won't conflict with what other people are doing.


Unless I'm mistaken, this is only a problem if you're forwarding ports from the Docker containers to the host machine, which isn't necessary if the test itself is running from inside a Docker container on the same bridge network as your dependencies. (Which compose will set up for you by default.)


We create own DB env for each set of test fixtures to run them parallel. There is no way I can achieve this with this little amount of frictions.


I just started using them specifically to test docker container implementation (Correctness of Dockerfile, entrypoint etc.)


I paid for the UI kit early last year and think it's good value. The amount of time its saved me has more than paid for itself, and it's just nice to have something that isn't a subscription model, or licensed per project.


I think their reasoning is that it's type safe so the compiler complains that you didn't handle something that returns an error.


I've been looking for a personal finance app for a long time. I don't want a Saas that charges me monthly and can shutdown at anytime. Most other homebrewed apps are incomplete or abandoned. Of all things I ended up paying for an Excel sheet to track it all - https://cspersonalfinance.io/

This tracks all my cashflows, investments, net worth etc, and since it's in excel there's no risk of it disappearing after 10 years


This is so good. I've tried so many homebaked spreadsheet trackers and semi-complete side project sites. This one looks like it strikes a good balance between feature completeness and simplicity


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: