I wanted to show you the new version of the PC hardware recommender I asked advice for here, a bit less than a year ago in https://news.ycombinator.com/item?id=11618937. Afterwards I continued to work on this sometimes in my spare time, but the last month I took some real time to fully concentrate working on this, after realizing I really wanted to.

Now, this version does not look completely different, but there are some bigger changes. Most important is probably the new database scheme. Instead of having one preferred model per vendor, it now has a big list of recommended models and takes the cheapest from that. That step alone improved the recommendations a lot. It also made it a lot easier to add new hardware and new countries, which I was thankful for when adding Ryzen just now and extending the version for the US with more vendors.

The other big change is the feature to customize the recommendation, to swap one part with another. You probably see how that goes together with prior change of extending the database. Since this is HN: The UI there was a problem for me, but the solution might be interesting for some. I did not want to load a new site, since storing the current recommendation can be confusing, for the user. But the selection list is too big for an overlay. My compromise was then to scroll to the right (using css) and showing the alternatives list there. The user has a lot of space, but is still very close to the recommendation list, without losing state. I wonder how that will work out, thatfeature is all new.

Apart from that there are many smaller changes. I took a round working on the design: Flexbox for the responsive design, Cache-Headers (set to immutable), syntax highlighting for the share codes, adopting Yahoos pure.css for the buttons, fixing pace.js showing longer load times than was true, using a system font stack instead of webfonts. Had some fun reworking how the recommendation process itself works, breaking it in the process, then having too bad of a performance, resorting to memoization and concurrency to fix that. That reworing included lots of added logic to see which parts go together. More vendors for Germany, a version for France, additional vendors for the US-site (again, made possible by the database change, together with detecting EANs as identifier being supported by the APIs I use - well, by most of them).

Some highlights: bflesch pushed thinking about how to proceed in general, edent triggered the thinking about the database design, WA for the recommendation to do the work I want and not more (this indeed was the kind of project for that). sokoloff and some others recommended ignoring the newegg api terms I did not like, at least so far they were right. aharonovich made a comment I really did not want to hear at the time but accepted later, that the german version was only enough to prove that this can work, not more. But basically, I am still impressed, going through that thread now again, how many helpful comments there were - I just don't want to enumerate too many names here. I hope some of them see it anyway.

I did not become a overnight millionaire thanks to this, and there is still a lot that could be done, but when I saw that the improvements of the site you pushed me to finally came together, that made me very happy. Of course, I would love again to listen to your feedback.