14 ms·
How I built a modern website in 2021
- viksit 5y agoCurious - why aren’t simpler frameworks like htmx (https://htmx.org/ https://htmx.org/) more common or gaining traction? It feels unnecessarily complex to have to use so many modules to build a website today. Especially if it doesn’t need dynamic content.
- krall12 5y agoThis video actually does a pretty good job of explaining the state of web today. He goes into why frameworks that stream html as updates are insufficient. The GitHub UI for example does this and its full of inconsistencies. https://youtube.com/watch?v=860d8usGC0o&feature=share https://youtube.com/watch?v=860d8usGC0o&feature=share
- unicornporn 5y agoSorry, this reads like a The Onion piece for developers. It looks like pure nightmare. There's so much complexity that simply doesn't need to be there.
- itake 5y agoJust out of curiosity, how would you design a distributed website like this? How can this be done simpler?
- glutamate 5y agoBy not making it distributed.
- nine_k 5y agoWhat is missing from the description apparently is the SLA for the site's downtime. If it's really low, I can imagine why it was made distributed. Otherwise, I'd see that as a demo and an exercise.
- glutamate 5y agoIt is the author's own website, there is no contractual SLA. In any case, with a distributed architecture there are many parts that can break. Fewer moving parts means fewer broken pieces.
- PragmaticPulp 5y ago> What is missing from the description apparently is the SLA for the site's downtime. > If it's really low, I can imagine why it was made distributed. If an extremely low SLA is the goal, I would not be home-rolling a distributed website technology stack. The more moving pieces you have, the more likely one of them is to fail. The recipe for a high availability, high reliability website is relatively simple in the age of Cloudflare and other cheap hosted services. Introducing a lot of complexity and home-grown solutions is the last thing you want for high availability unless you have scores of engineers to maintain it and you can't solve it through traditional means.
- nine_k 5y agoWhile I agree in principle, a database-driven distributed site would need a bit more than cloudflare. (For a personal informational site I'd take a static site generator.)
- deleted 5y ago[deleted]
- jcoder 5y agoThat “distributed” quality itself is a choice that introduces complexity. There are many sites that deliver the same or greater level of value to users, and use a “boring” architecture and deployment.
- itake 5y agoDo you mind sharing some? Most websites I can think of are either highly distributed (e.g. Facebook, Netflix) or their customer base is geographically limited (Yelp). Uploading media files to (or from) developing countries with weaker internet infra often results in timeouts and dropped connections. I tried uploading a 8GB file to Singapore S3 from Florida and my connection often timed out. I'm trying to imagine how you can deliver a fast website to users around the globe without distributed systems.
- jcoder 5y agoThose are all sites with 1000s of engineers, real-world use, and actual evolutionary pressure driving their features. You want to compare to essentially static sites with some light user statefulness.
- midrus 5y agoThis guy's site is not netflix nor facebook, nor is he 10k developers to support those architectures. If this guy were pragmatic, a Ruby on Rails/django app in heroku would do wonders. If he wants to promote React because that's what he sells, that's a different story. The problem is the people taking what this guy says as "the modern way to do it" and then you find the messes you find at work.
- charles_f 5y agoWell since this looks like a blog, either using a blogging platform, or a static website generator hosted on either a static website platform(1) or something like lambda + a cdn (1): https://azure.microsoft.com/en-us/services/app-service/static/ https://azure.microsoft.com/en-us/services/app-service/stati...
- fullstackchris 5y agoand the login for your users?
- itake 5y agoThe article explicitly mentions needing to support writes with a globally distributed user base. This is not a static website.
- gitgud 5y agoNot everything in a static webapp needs to be static, just push most static things to the CDN and render some things like "user details" on the client... it just works out so much simpler.
- hijodelsol 5y agoAt least half of the gains can probably achieved by just rolling a distributed redis setup and not distributing the PostgreSQL database. This should cover most non-personalized read operations which on this type of site should be most of them. It also seems like the database distribution is an attempt to solve a problem of his own making. He states that each blog posts page view needs 30 database queries in the background. This to me suggests an inefficient data structure or complexity for complexity’s sake. Heck, he could probably even achieve 80% of what he’s trying to do by delivering selected slow but static queries from edge computing KV stores without having any further distributed backend or database servers. But ofc this whole project is a sales pitch and he would get the attention he’s receiving with a simple Django+Postgres+Redis setup in a single region with just basic CI/CD.
- midrus 5y agoRuby On Rails
- manigandham 5y agoIt doesn't need to be distributed. It's a mostly static site with some dynamic parts. A single small server running a typical web framework (anything from django to asp.net to laravel) can easily serve all these pages in milliseconds. Add a CDN in front to cache and serve quickly to users around the world.
- mariogintili 5y agoI have to agree here, this article really goes out to show the perceived state of JavaScript & web development. over-engineered is the key word here
- listenallyall 5y agoOn the other hand, a lot of people on HN promote Kubernetes, even for relatively basic sites/servers/APIs
- manigandham 5y agoKubernetes is a way to handle complexity with infrastructure and operations that is codified and implemented as a single standardized and portable solution. Much of what K8S does is replace what you would be doing manually or by tying together many other tools yourself. That's completely different than taking a simple blogging site and turning it into some distributed monstrosity.
- franciscop 5y ago> Much of what K8S does is replace what you would be doing manually or by tying together many other tools yourself So that's where it's wrong IMO, it replaces simple static site hosting/managers/etc, instead of having a single-click toolchain that takes your commits and CI/CD it properly, you now have to install and maintain that yourself manually.`
- manigandham 5y agoThere are many CI/CD pipelines that deploy to K8S. The "simple static site hosting" isn't magic, it's usually nothing more than a wrapper around putting your code into a nodejs docker container and deploying it to some lambda/serverless platform with a CDN in front. Your post is exactly what I mean about many frontend devs not understanding backend or infrastructure resulting in convoluted architectures.
- midrus 5y ago
- ithrow 5y agoLooks like he is selling courses(have to justify those prices somehow) and simple stable boring stuff doesn't sell ;)
- cratermoon 5y agoHe's selling courses on the technology he used, so the site is both a demonstration of and lesson in what he teaches. It's a functional portfolio that seems intended to demonstrate that the author and instructor understands what he is asking you to pay him to teach.
- manigandham 5y agoUnderstanding when and where to deploy technology is much more important than just using everything. Sadly that's much harder to teach.
- cratermoon 5y agoAgree 100%. By erecting this over-engineered gold-plated edifice the author has demonstrated knowledge, but not wisdom.
- charles_f 5y agoThis was my first reaction. But then I can also understand why you would use your own website as either an exercise or a showcase of all these techs. I used to host my blog on Kubernetes for a while for that specific reason, just practice how to deploy and operate it. Then after I got bored with that simply transfered that to a static hosting solution.
- midrus 5y agoJust imagine all the newbie and junior devs following the ideas this person puts in their heads. That's how you land a new job just to find out the landing has more engineering than the Mars Rover.
- jonwest 5y agoNailed it. The whole time I was reading I had this uncanny valley feeling of like “this is so close to satire but not quite” waiting on the needle to drop that sealed it as satire, but it never came.
- gherkinnn 5y agoTruth be told, I had a chuckle myself. Then I saw this predictable HN whine. A considerable part of the stack is either reasonable or a consequence of one. Example, a usable Tailwind integration always comes with PostCSS. And that with next to zero effort. Same goes with the testing setup. Now, if only I knew why on earth people use Remix.
- alvarlagerlof 5y agoAlways going to end up with a framework for React. Otherwise all you have is an SPA.
- deleted 5y ago[deleted]
- PragmaticPulp 5y agoArticles like this are equal parts fascinating and worrisome. Fascinating because as a developer I love to see elaborate systems built to accomplish a goal. Worrisome because as a manager I have alarm bells going off in my head when I start reading about systems that get so complex that they have to add even more complexity just to tame problems introduced by earlier complexity: > First it determines all content changes that occurred between the commit that's being built and the commit of the last time there was a refresh (that value is stored in redis and my server exposes an endpoint for my action to retrieve it). If any of the changed files were in the ./content directory, then the action makes an authenticated POST request to another endpoint on my server with all the content files that were changed. Then my server retrieves all the content from the GitHub API, recompiles the MDX pages, and pushes the update to the Redis cache which Fly.io automatically propagates to the other regions. > This reduces what used to take 10-25 minutes down to 8 seconds If my team reached the point that simple website deploys were taking 25 minutes or required long chains of API calls between bouncing between various internal and external services, I’d start to worry about what sort of complexity we’ve built into our stack. On one hand their solution is neat, but on the other hand I can’t help but worry about how we got here in the first place. More importantly: Why? What does this complexity give us that we couldn't achieve with a simpler solution? Imagine being asked to take over this project and having to understand the long chain of events required just to get new content into the website. I understand these articles are meant to be a showcase of technologies and how they can be used, but I’ve also seen a lot of otherwise simple webdev projects spiral into unnecessarily complex projects like this. I've also mentored a lot of juniors who think their companies are doing something wrong if they're not building complexity-first web projects or they're not using a long checklist of the hottest webdev tools. These complex projects are fun to work on and learn, but it becomes a huge burden to maintain. The webdev world moves so fast that a project built on 15 different trendy projects will inevitably have some of them fall out of favor or become deprecated each year. Any long-term project like this will inevitably start losing time to constant refactoring and rebuilding around the newest trendy components each year. It’s critically important for these teams to have some oversight in the form of someone asking pointed questions about whether or not each additional layer of complexity is truly necessary. Some times the most elegant solutions are also the most painful maintenance nightmares down the road as the original architects cycle out of the company. Side note: As much as I appreciate all of the great free learning resources made available by authors like this, I can't get past the inherent conflict of interest involved with educators advocating for complex projects and then selling learning materials to understand them. This seems especially common in the webdev world where the popular tooling changes from year to year and can require a lot of learning to get it right. Sure enough, this blog post ends with a call to purchase tickets to learning workshops to understand what's going on here: > It's been a ton of fun and I'm excited to put my learnings into blog posts and workshops to teach you the specifics of how I did this stuff so you can do it too. In fact, I've already scheduled some workshops for you to attend! Pick up tickets now. As always: Caveat emptor. Complex projects are fun, but don't assume that a modern website must be complex.
- spyremeown 5y agoI honestly cannot tell if this is satire or not.
- itake 5y agoHello Poe's law [0]. [0] - https://en.wikipedia.org/wiki/Poe%27s_law https://en.wikipedia.org/wiki/Poe%27s_law
- Pasorrijer 5y agoBoy some days I miss making a webpage with a simple index.html and five pages...
- Raed667 5y agoThat still works! No one is stopping you from opening a text editor and writing an index.html document then drag-and-drop through an FTP client to a production server. However, good-luck building something as complex as kentcdodds.com using that.
- biofox 5y agoThere are some images, text, some fancy JS menus, and some small animations. With the exception of the embedded videos, there's nothing here that can't be done with some static pages.
- coffeefirst 5y agoTrue, but there's also nothing here you couldn't do with a pretty standard Django or Rails setup.
- nine_k 5y ago...except maybe speed. But this is more about Python and Ruby lacking a standard and efficient JIT, unlike JS, and not so much about architecture.
- cratermoon 5y agoWhat's complex about a blogging/marketing/workshop site? Or did you forget a /s? I don't see any content here that couldn't be done with any of half a dozen site hosting platforms, maybe require a couple of plugins. Wix, Squarespace, Weebly, even good ol' Automattic/Wordpress could do this. Perhaps clunkier, less performant, less customized, but functionally sufficient.
- tasogare 5y agoThis so much. How I do "modern website": one HTML file, linking a typescript lib (if required). Optionally said page is generated by ASP.net Core. Database if required. So, ranging from 1 to 4 tech (not counting CSS), only one being compiled.
- mro_name 5y agolol, HTML isn't in the "primary technologies". That must be it's modern.
- fullstackchris 5y agoPlease build a login with just HTML.
- mro_name 5y agoDon't do it without: https://demo.mro.name/shaarligo https://demo.mro.name/shaarligo uid demo pwd demodemodemo
- deleted 5y ago[deleted]
- dreyfan 5y agoThe amount of koolaid around TypeScript is really something
- toastercat 5y agoPro-tip: skip using TypeScript the lang, and use it instead as a static type checker. Define all your types via JSDoc, and write JS normally: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html https://www.typescriptlang.org/docs/handbook/jsdoc-supported... You miss any potential build step slogs.
- zkldi 5y agoGenuine question: what's up with it? Typed Javascript for me personally has been a godsend for maintenance and avoiding stupid bugs.
- vesuvianvenus 5y agoI haven't had trouble with maintenance or avoiding bugs with NodeJS. I don't see justification for putting in 30-40% more time and effort for the same result. To me it seems like an intentional complication of something which can otherwise be simple. Which is unfortunately somewhat common in this industry of software engineering. It seems there might even be an interest for engineers to keep things complicated-- to gatekeep the industry, to make themselves seem more skilled/necessary so as to keep a job for longer. (more time in a project => more money by the hour. More LoC looks like more work was done... even if the same can be accomplished with 60-70% of the code (i.e. without the type system)).
- gherkinnn 5y ago> I don't see justification for putting in 30-40% more time and effort for the same result. Precisely why I refuse to use JS for any piece of work >500loc.
- jahewson 5y agoIf you work by yourself this can be true. But it’s not that different from saying you don’t need to write tests because you don’t have trouble with bugs! That might be true but it doesn’t make it a good idea. I’ve worked with NodeJS for over 10 years now and have ported many codebases from JS to TS and have never found one that didn’t contain a bug that the TS compiler found immediately, even my own carefully crafted solo projects. Plus every type definition and annotation is basically a free self-maintaining unit test!
- duckfruit 5y agoI've been on HN long enough to realize that the majority of comments here are going to inevitably devolve into a discussion of the sheer complexity and breadth of tooling listed here. However, bear in mind that the site is built by a popular JS influencer whose day job is popularizing frameworks and increasing demand for services of the sort he offers.
- nine_k 5y agoYou seem to be pointing at the same problem, just under a different (and reasonably interesting) angle.
- lawwantsin17 5y agoHe also claims several times that he's "making the world better" by teaching all this garbage.
- PragmaticPulp 5y ago> However, bear in mind that the site is built by a popular JS influencer whose day job is popularizing frameworks and increasing demand for services of the sort he offers. His day job is selling workshops and training materials. No matter how you look at it, he has a vested interest in promoting over-engineering because it translates to more sales of courses and workshops. That's why this blog starts and ends with calls to action about signing up and registering for workshops.
- crate_barre 5y agoMany of us have a vested interest in pushing back against this industry because it favors hiring younger, less experienced people who will advocate for these systems in the workplace. For many of our own sanity, we have to push back somewhat. Now I have to literally ask to see a company’s codebase before taking the job so as to avoid this nonsense.
- dzonga 5y agoReact Testing Library and other testing libraries from Kent are a godsend. But Kent is doing a disservice to people that look up to him with this blog post. The JS community already suffers from over-engineering and this is just one latest example from a community leader. now every developer who learns from Kent, will think this is the way to go. not only does it harm newbie developers, it also harms the companies mostly startup thinking this is the way to go. interviews, workflows etc start to be centred around this way of thinking and simply all productivity gains that made startups more nimble than enterprises are lost. maybe some of us are too stupid, to see the gains from all this architecture and wizardry, time will tell!!
- joshribakoff 5y agoEverything RTL does was possible in Enzyme too. It would have been possible for him to make PRs to remove problematic parts of Enzyme, or create a wrapper strictly over it, if he was optimizing for the things you said
- eatonphil 5y agoI've used Enzyme for years. I do have to write some small utility wrappers around but I don't overall have many issues with it. I'm curious what the real/perceived issues are by others.
- PragmaticPulp 5y ago> But Kent is doing a disservice to people that look up to him with this blog post. The JS community already suffers from over-engineering and this is just one latest example from a community leader. now every developer who learns from Kent, will think this is the way to go. With all due respect to the author and the great output he's created, I agree. At minimum, I think the post should have included some context for the decisions instead of simply calling it "a modern website in 2021". The content inside isn't common, normal, or even necessary for 99% of websites, including this one. I think this blog post is an example of the conflict between educators and industry: Industry benefits from keeping things straightforward and getting the job done without unnecessary complexity. Educators benefit by selling more workshops and more training materials. The more they can convince everyone that complexity is necessary, the more they can sell workshops to teach people about that complexity.
- vesuvianvenus 5y ago$600, for a React course, are you serious? I know it's 20 hours of content, but so are many Udemy courses. Many similar courses can be found for $10-$20 on Udemy.com (be sure to reset cookies/create a new account if you see higher prices. Apparently they only show discounted prices to new customer accounts.). For $600, a person could probably buy the majority or even entirety of Udemy.com's React courses -- Maybe somewhere around 500-1000 hours of content (rough estimation). For example, this course has for 48 hours of content for $20. https://www.udemy.com/course/react-tutorial-and-projects-course/ https://www.udemy.com/course/react-tutorial-and-projects-cou... I've found Udemy has great content. Plus there's Youtube. Kent, I understand that you're a solo entrepreneur and that you offer premium knowledge in your content. But I wouldn't pay more than $100. I don't think the knowledge you offer is monopolized by your course, I think it can be found through many other learning resources (books, videos, docs). _____ Edit: just found out via another comment that Kent developed react-testing-library. That's awesome. So, Kent is likely someone who knows a ton about ReactJS, including truly expert, insider knowledge. That said, $600 is still a crazy amount to charge to consumers. Maybe you'd charge that at an in-person seminar/workshop. But to the internet public in general? Seems greedy.
- akthalian 5y agoI don’t know what gives you the impression that course duration somehow equates to course quality. An educational resource existing for less cost and longer duration doesn’t translate into anything real without quality ciriculum and instruction. A lot of content on both YouTube and Udemy is…not great. And even then not necessarily curated in a certain way, etc. Furthermore, courses like this in general often are geared at developers/engineers who are already employed and could even get reimbursement/coverage for from their employer, which offsets or eliminates the cost entirely.
- tweedledee 5y agoI’m getting a 500 error which is not a good sign.
- cratermoon 5y agoWhich is amusing because there's a whole section on how it's deployed across six regions globally for performance and reliability.
- nickreese 5y agoThis seems insanely over-engineered. Yet, look at the source and the first thing that pops out is: // this is a temporary solution until I can figure out a safe way to do this on the server if (window.location.protocol === 'http:') { window.location.href = window.location.href.replace('http:', 'https:'); }
- rubyron 5y agoSurprising that with all that infrastructure he’s not compacting/obfuscating his JS. Also surprising, of course, that an expert isn’t doing that redirect server-side.
- ArlenBales 5y agoTo be fair, doing it client side like this is so much easier than setting up all the rewrite rules server side. It's actually kind of funny he chose the least complex route here considering everything else about his site is overly complicated.
- 5e92cb50239222b 5y agoWhat rewrite rules? Caddy does it for you automatically. With nginx it's a single line in the config file. Or throw your site into HSTS preload (ok, you'll have to add a single header to the config) and any modern browser won't even try HTTP. There are multiple solutions and all of them are even simpler than what he picked.
- Macha 5y agoThe point of redirecting to HTTPS is so someone cannot MITM your traffic. HSTS ensures there's only one chance for that to happen as your browser will remember the HTTPS redirect. This kind of redirect does not provide the same benefit. An attacker could just tamper with the JS to remove that code, and this could happen on any visit, not just the first.
- fullstackchris 5y agoThis is a one liner in NGINX...
- thepill 5y ago> TypeScript: Typed JavaScript (necessary for any project you plan to maintain) If stopped reading at that point :/
- cdeutsch 5y agoI used to feel the way you do (absolutely despised TypeScript). After using it for five years I can confidently say I was wrong. I wouldn't even consider working for a company still using regular Javascript.
- jeroenhd 5y agoThe introduction of Typescript at my job has made developing code so much better. There's probably no need for Typescript in simple projects that are less than a few hundred lines of code, but the immense spider web of dependencies this blog features becomes unmaintainable if you don't use proper type validation. Remembering what properties are in what objects in a Rube Goldberg machine like this are simply impossible. I appreciate languages like Javascript, PHP and Python for their ease of use, but I don't think they're well suited for any complex project.
- hijodelsol 5y agoI wouldn’t add python to that list as it supports decent typing (even though it’s not forced one you by default). When you disallow untyped methods and functions with mypy, the resulting code is quite clean and maintainable imo. And I wouldn’t call a language that’s used by probably the majority of all large web projects, including Instagram for example, in some way or other “not well suited for any complex project”.
- hazza1 5y agoHe's about the launch his TypeScript training course...
- aleksandrh 5y agoI don't understand this sentiment. TypeScript is fantastic, and I can't help but think that all of the people hating on it are frustrated because they haven't taken the time to properly learn it or understand why it's constantly complaining about the code they write. I used to get annoyed by TypeScript too when I first started using it—I felt like it was slowing me down and making me unproductive. But this is only because I tried to use TypeScript without really understanding how to use it effectively (which will make you unproductive with _any_ tool). Once you work long enough with TypeScript, going back to pure JavaScript feels like hell.
- joshribakoff 5y agoReading all the hype for Remix, a paid closed source tool, and still not knowing what it is really makes me jaded. I’d urge the authors to consider the signal to noise ratio they’re creating, and whether they are helping others vs themselves with this hype.
- gherkinnn 5y agoNo usable information on their website either. A wall of text followed by pricing.
- jjenzz 5y agoIt seems most of the concerns in this thread are related to devops which is not something Remix influences. Remix is about making the front-end “use the platform”, progressive enhancement, SSR etc. They really strip things back to basics and it’s taking me back 20 years. I love it, and I can still write React. Keep an eye because they have some interesting news to announce these coming weeks. I don’t work for them, just an early adopter.
- jjenzz 5y agoOh, they announced it just now https://twitter.com/remix_run/status/1447649474038222851 https://twitter.com/remix_run/status/1447649474038222851
- Tepix 5y agoI like the large text on the homepage. The large graphics with the snowboard koala takes a bit too long to load (or render?) for my taste. But then again the colour of the sweater and the snowboard changes every couple of reloads, that's worth waiting for, right? There's way too much empty space between some elements on the iPhone X. If you consider this to be a showcase of (hopefully) cool new frameworks that can be used in a sensible matter on larger customer's websites, then this website is a success.
- arpa 5y ago"helps save the trees" is where i lost it completely. Oh my god, we _deserve_ all of this hellscape.
- GuuD 5y agoThe combination of caching Postgres queries (because you are making over 30 of them per page), but still deploying everything to 6 distributed regions is just perfect chef's kiss
- meowtimemania 5y agoCaching queries makes sense when deploying to distributed regions right? Trying to understand why this is wrong apart from the unneeded complexity.
- mariogintili 5y agoI'm glad to see the hacker news community shitting on this. I deal with far too many developers like the OP on a daily basis, sometimes their crappy over-engineered ideas come to fruition and we end up paying millions to maintain it
- fullstackchris 5y agoAs a bit of a pushback to this - doing the opposite and not considering optimizations and edge cases is perhaps a major source of so many YC startups (and any startups out there that need tech in general) fail when they reach any sort of critical mass - simple is always good, if it actually works at scale. Facebook's now infamous implosion a few days ago harkens to this - their system is clearly NOT simple, but it works extremely well 99.9% of the time.
- jcoder 5y agoCurrently I do not fail the build if the E2E tests fail. So far, I haven't been worried about deploying something that's broken and I didn't want to hold up a deploy because I accidentally busted something for the 0 users who expect things to be working. I’m having trouble forming the words for how I feel about an apparently influential author promoting the sort of Rube Goldbergesque overcomplection in the rest of the article, while downplaying the single piece of value this CI pipeline could be delivering.
- killingtime74 5y agoHey he correctly identifies 0 users 0 problems
- huma 5y agoThis is what overengineering looks like
- tbrock 5y agoAll i humorously get is: 500 - Oh no, something did not go well. "/blog/how-i-built-a-modern-website-in-2021" is currently not working. So sorry.
- dangerwill 5y agoThis guy is a snake oil salesman most likely. This is an utterly contrived and overly complicated setup to run a personal site / signup form for paid lessons. Any experienced engineer worth their salt will eye roll at this but I know junior engineers who would just eat this up. "Hi, I'm Kent C. Dodds. I'm a world renowned speaker, teacher, and trainer ..." - https://kentcdodds.com/info https://kentcdodds.com/info World renowned is an extreme stretch. I have never heard of this guy, so if he is even renowned, it is only in the frontend JS world. https://kentcdodds.com/discord#reasons-to-join https://kentcdodds.com/discord#reasons-to-join While I personally like Discord, I have become extremely wary of people with something to sell advertising a Discord server. You see the same tactic with the crypto and NFT people, where you create what feels like an informal, fun, collaborative space, but really it is an attempt to create a self-sustaining social scene around a specific brand. Then onto his LinkedIn (https://www.linkedin.com/in/kentcdodds/ https://www.linkedin.com/in/kentcdodds/). He worked at Paypal for a while, preceded by a bunch of no names, and has some weird Google developer certification. Not really the resume of someone who can charge $600 (!) for a course in some frontend BS that will be out of date in 6 months. His Github has a ton of activity and to his credit it does look to actually largely be "real" and not just gamifying LOC/# of commit metrics. This guy may well be a react/frontend expert, or at least competent in the space, but this website is just a grift targeting inexperienced engineers.
- snarkypixel 5y agoNo, this isn't it. What he did was basically build a production-ready webapp for his own personal blog. Was this overkill? Maybe. But when you're used to work in that kind of prod environment, you want to reproduce it when building any other projects. So I think this isn't so much a snake oil salesman crap but more about the current lack of good solution to get this kind of environment ready in a few clicks.
- toastercat 5y agoKent C Dodds is well known in the JS community. I've heard great things about his testing libraries, but he has a weird "dev celebrity" thing going on (EDIT: which, btw, is not rare in the JS/React/Node world). I'm sure that's just necessary for marketing himself as an educator since that's his main source of revenue.
- toastercat 5y agoJust for funs, ran this site's package.json through npm.avanka.com: https://npm.anvaka.com/#/view/2d/https%253A%252F%252Fraw.githubusercontent.com%252Fkentcdodds%252Fkentcdodds.com%252Fmain%252Fpackage.json https://npm.anvaka.com/#/view/2d/https%253A%252F%252Fraw.git... Check out the size of that dependency graph for what amounts to (mostly) a personal website.
- Mikushi 5y agoReading stuff like that makes me happy I've left web development behind me, and things like that were a big factor, the inflation in complexity has been insane over the last decade and is absolutely not justified. CV padding developers, big names shilling for their stack, companies pushing their tech, ... The industry is a mess and it's very hard to find a job that doesn't involve dealing with it.
- snarkypixel 5y agoThis is ridiculous that there's no good way to have a production ready environment without all this plumbing. Redwood comes close but still missing many things. On one hand, people underestimate the complexity of building production-ready web applications. So, any "why not just a index.html" comments show a clear lack of understanding. However, it's not /that/ complex that we couldn't have a solution to get started with best practices on an prod-ready environment in just a few clicks.
- fullstackchris 5y agoYes, my feeling exactly - especially when some of the "manager" level comments assume all tech should be infinitely fast when being shipped / released. Releasing to web is usually possible to optimize (in terms of how long it takes) with many strategies, but don't even get me started about mobile... the store approvals take anyway 24-48 hours! I can't really tell the difference in this thread through jealous snide side comments and those which just lack understanding of large production applications. Of course the guy is going to push tools he has courses about, I wouldn't expect different from anybody else.
- jcoder 5y agoI hand-rolled my own authentication on this site. But I had a good reason! Remember all the talk above about making things super fast by collocating the node servers and databases close to users? Well, I'd kinda undo all that work if I used an authentication service. This is a great example of how fundamental architecture decisions limit your subsequent decisions, and it’s your job as a designer to make sure that the final result makes sense and reflects good tradeoffs, not just the state as you go. Hand-rolling auth (a real risk) so you can use this unnecessary distributed deployment scheme (no real value) is a bad decision.
- turtlebits 5y agoOr you could just stand up Keycloak along with your backend services
- andrewingram 5y agoThe auth thing was the main thing I questioned (aside from over-engineering, but my own site is guilty of that too). I thought part of the benefits of auth services like auth0 is that due to them having to provided some kind of trusted token containing an identity payload (eg a JWT), you can get away without having the query the auth service per-request (assuming you can tolerate stale tokens in the event of a permission change). So the performance issue being used to justify hand-rolled auth, seems to be the result of a misunderstanding.
- LordAtlas 5y agoOK, I had no idea who this person was. But then I glanced over the piece, then at the rest of his site, and then I scratched my head over why something simple like Wordpress wouldn't suffice. It seems to be a standard "about us" site and links to the courses go to pages with just a Stripe checkout workflow. What is the point of all this fuckery other than to convince people that all these things are needed and so they should buy his courses?
- floppydiskette 5y agoWordPress? Really? I can think of a thousand reasons not to use WordPress, such as horrible, outdated security practices, constant DDoSing of your site because of the aforementioned, having the overhead of jQuery, not wanting to use PHP because it's not your preferred language, not wanting to use old, outdated spaghetti WordPress code even if it were, etc...
- vgrafe 5y agoOnce again Kent omits to warn his audience that such a codebase has a performative intent, and should be considered a weird exercise of thought rather than a model to follow.
- vgrafe 5y agoEdit - he added a warning shortly after I posted the parent comment: https://twitter.com/kentcdodds/status/1447283294681194496 https://twitter.com/kentcdodds/status/1447283294681194496
- smoe 5y agoIt seems web development devolves more and more from "use the right tool for the job" and KISS (not that it ever fully was either) to "use all the tools you can find for the job" and focus on process instead of product. While I appreciate that a lot of things have gotten more straight forward since I started mid 2000s, the cynic in me can't help but think that the primary reason for many of those tools to exist is to sell SaaS subscriptions, consultancy services, courses and certifications, not to solve a real world users problem. I wonder what the impact of this on the field is going to be long term. The barrier of entry has gotten insanely high with all the tools you supposedly need to know. Yes of course you can still learn it the "old fashioned" way, but that's not what you will find/perceive when you look how to get started. What I see quite a bit in interviews for juniors devs is, that they know a whole lot of different tools and technologies, but often have a very shallow understanding how to solve non tutorial problems with them. Which is not per se a problem, it's something you learn on the job. But I often see a unwillingness to dig deeper, get a more profound understanding instead of immediately trying to solve a problem in one tool by adding yet another. Steadily increasing system complexity and making it harder to maintain.
- gadrev 5y agoI'd like to thank the author of the site for the entertainment (indirectly) provided in the HN comments. The rage is completely understandable. Man it's 21 (direct) dependencies plus six services. Great for demonstration but please don't hang yourself with the dependency rope so easily (in real projects).
- politelemon 5y ago> Yup, that's right... I hand-rolled my own authentication on this site. But I had a good reason! Remember all the talk above about making things super fast by collocating the node servers and databases close to users? Well, I'd kinda undo all that work if I used an authentication service. Every request would have to go to the region that provider supported to verify the user's logged in state. How disappointing would that be? If this is serious I'm horrified that you went down this path. Having requests going to some regions you're not happy with is not a reason to compromise your users' security by handrolling your own flow. What's awful is that there are people who will read this and think it's a perfectly reasonable thing to do. You are not a security expert, that much is clear. Because you wouldn't have uttered those first two sentences in the first place.
- deepfriedrice 5y agoSince I saw almost no positive comments I'll throw my hat in the ring. I love stuff like this. I learned a handful of things to toss in my back pocket for future projects/hacking. Remix looks fascinating, albeit young and closed-source. I've been wanting to play with Prisma & MSW for a while, so it was great to see how he used them. His DX looks top-notch, I love hacks like his "server side HMR" [1] Is it over-engineered? Maybe. Who cares. HN is so worried about juniors taking his architecture as gospel. Does the liquor store clerk have to tell me not to drink too much too fast? Juniors are going to over-engineer something regardless, it's one of the most valuable lessons they'll learn the hard way. The rest of us can read this piece, think critically, and maybe learn some new things. [1] https://github.com/kentcdodds/kentcdodds.com/blob/main/index.js#L88 https://github.com/kentcdodds/kentcdodds.com/blob/main/index...
- toastercat 5y ago> Juniors are going to over-engineer something regardless, it's one of the most valuable lessons they'll learn the hard way. Yes, juniors tend to over-engineer. Kent C. Dodds is not junior -- he is a self-described "world renowned speaker, teacher, and trainer" in this field.
- mark_1994 5y agoPlease don't forget, he is also a SAINT no less. Directly from his github profile: Improving the world w/ quality software · Husband, Father, Latter-day Saint, Teacher, OSS · http://TestingJavaScript.com http://TestingJavaScript.com · http://EpicReact.Dev http://EpicReact.Dev · Be Kind https://github.com/kentcdodds https://github.com/kentcdodds
- floppydiskette 5y agoDownvoted for not conforming to the hive mind, I suppose.
- midrus 5y agoThis is just advertising for a framework you have to pay for if you want to use.
- curtisblaine 5y agoHe added a paragraph in response to the HN comments: "Context Before we get too far into this I want to make my one thing clear. This is not just some developer's blogfolio site. It's a platform with unique constraints and requirements. So before you start claiming that I've over engineered my site, keep in mind that the term "over engineered" is relative and you may not have the context to make that kind of judgement. I was extremely thoughtful about the architectural decisions I've made. Whatever tools or tech you're more familiar with that you think would be better suited for this site I'll bet you that I evaluated and decided it wouldn't work for my use cases. Thank you for coming to my site, Hacker News visitor "
- ricksharp 5y agoI love my overengineered web site / playground. Yes, I hid a text adventure in the site header. Yes, it is full of stuff that no-one will care about. It's my art and my passion. I put all my cool code there and I over engineer it to death. It's awesome - it's fun - it's what you should do if you love coding. Guess what - I also have a table full of electronic projects, I've made unfinished games, I've done hackathons, it's great and we should embrace that. Perhaps Kent Dobbs likes experimenting with new technology and trying new stuff. Perhaps his own personal web site is a place where he can do whatever he wants. If you criticize him for that... well let's just say, I doubt your ability to code - and you are banned from my nerd club. If you don't take joy in an overengineered personal web site - then you are doing it wrong. Seriously, speed runners spend months trying to save milliseconds on a mario speed run and you want to whine about a software engineer taking joy in his craft... Ok, that's my rant. I support freedom, I support the free web, I support the proliferation of code and over-engineered solutions.