14 ms·
The One-Person Framework in Practice
- connectsnk 1y agoIs there any other framework which can claim that it compares well to Ruby on Rails speed of development? I.e. conventions over configurations? Asking as I don’t want to learn ruby
- kaeland 1y agoPossibly Laravel, but then you’d have to learn PHP! :D All jokes aside, having worked in both languages and frameworks, I’ve enjoyed the Dev experience in either option. Grateful for both dev communities as well.
- deleted 1y ago[deleted]
- gregatragenet3 1y agoI used to code ruby. Now in python land and am using flask. Theres conventions but no scaffolding. Ai code tools make the scaffolding feel redundant anyway.
- eloisius 1y agoComing from Ruby, Flask is much more of a Sinatra than a Rails. It’s very batteries-not-included. You basically just get routing out of the box. DB ORM, forms, auth, mail, background task, etc. are all DIY. That said, there are high quality packages to do all of those things within the ecosystem and I really like that I don’t feel like I have so much unused bloat in the framework when I’m making a small service.
- VWWHFSfQ 1y agoDjango is the closest I can think of. Many unicorns built on Django. Both Rails and Django are horribly slow though, so once you get to some critical scale you gotta start doing some real weird stuff like Instagram did with turning off Python's GC [1], etc. [1] https://instagram-engineering.com/copy-on-write-friendly-python-garbage-collection-ad6ed5233ddf https://instagram-engineering.com/copy-on-write-friendly-pyt...
- rtpg 1y agoRegarding the slowness, I think it's super important when working with slow stuff like Django to have good SLOs in your head. "Home page should load under 2 seconds at P95", "reports should load under 10 seconds at P99", "this background task should take under 30 seconds at P99". Having these targets (and, frankly, remembering in the B2B space is that the status quo is _so slow_) can let you set performance objectives without chasing milliseconds that you don't need to. Django has a lot of intrinsic slowness to it, "easy" DB access patterns often lead to heavy messes, but if at the end of the day most customers are getting served under some benchmark you can reap the advantages of the tooling without sweating perf too much. And when you set these SLOs, you can then push for even tighter ones as you figure out your problem space! In the B2B space companies get away with _so much_ sluggish behavior, if you're better than the median that's already improving things.
- danpalmer 1y agoMy previous company had a sizeable Django monolith and did e-commerce stuff which is fairly latency sensitive. Used well, Django was perfectly capable of hitting 150ms per page which was fine for us. Some optimised pages were under 100ms. Things we did: careful about N+1 queries, caching where obvious, API calls/emails/etc running in background queues. Things we didn’t do: use a fast templating language (we used Django’s built in one and it was often our bottleneck), removing all database queries (we just had Postgres <2ms latency away), renormalising data (we were highly relational for most things). Django is perfectly performant enough for almost all use cases, and insanely fast to develop with.
- 1y ago
- jamauro 1y agoPhoenix or Meteor.js
- tomca32 1y agoI’ve been asking this question for a while since I love Rails but I don’t like Ruby that much. I think only Django comes close, although I haven’t tried it, but I dislike Python much more than Ruby. There are always attempts in every language to replicate the convention over configuration and batteries included approach of Rails, but they all lose steam pretty quickly. I just don’t think there is an alternative to Rails. It’s a giant project that is actively developed for over 2 decades now.
- wavemode 1y agoDjango is more or less Python's equivalent of Rails. Its admin panel is nice, especially for a solo developer trying to manage something they built in a weekend.
- ipsod 1y agoDjango's admin is great. I think iommi is better for a lot of projects. With admin, you basically just write models, and the entire rest of your app is free. Not quite, but, not far off.
- tacker2000 1y agoIs there an equivalent of the Django admin panel in the PHP (Laravel/Symfony) world?
- senordevnyc 1y agoFilament, and it’s fucking awesome. I think it’s way better than Django’s admin panel, and I’ve used it to build out both my Laravel admin panel and basically all of the UI for users.
- j45 1y agoI have heard Laravel is shockingly complete and most others will pale in comparison to in terms of out of the box speed to first feature and the full CI/CD setup for most any kind of product. Speed of iteration rules above all.
- lelanthran 1y agoSpeed of iteration varies within a single projects entire lifetime. My speed of iteration in dynamically typed languages is great at first, but after running in production for 8 years, coded by a team that never wrote the original, dynamic typing hurts iteration speed. If you judge iteration speed by how fast you get to feature #3, I've got a ton of bash programs that will beat any serious language product you have on that metric.
- j45 1y agoSpeed of iteration is for speed of feedback and insight from the business/market into the product. That can be a mix of how you see it, how the business works and how the code does anything. It is important to understand I’m not referring to dynamically vs statically typed languages or not. It’s a distraction. Code runs fast on pretty much anything these days, and dynamically typed languages have pre-compilers. These are sometimes matters of personal experience, interpretation, preference and opinion masquerading as facts. Most languages have to abstract from to the web using a framework and that additional interpretation is where a lot is lost. Featuritis is the disease, solving problems solely based on customer input (who are strangers) is important. Problems are rarely a single feature, but a sequence or group of them. The irony of bash scripts is they can be some of the most durable and well lasting parts of a project while everything around it might change and evolve quicker. So if there’s some bash scripts being called by a language in the beginning.. so what. My original point about Laravel is I have not seen as tightly integrated of any ecosystem to ship solutions and product where so much time is not lost in the product side of it (accounts, billing, migrations, etc). While I’m relatively new to it, at the very least it’s a worth comparison to show the holes in others.
- jonwinstanley 1y agoLaravel is a great way to run apps as a one person team
- rorylaitila 1y agoIt's niche, but check out https://www.boxlang.io/ https://www.boxlang.io/ and https://www.lucee.org/ https://www.lucee.org/ on the JVM. They're rock solid runtimes. I single handedly manage multiple production applications going on 10+ years. They essentially never break, never need major maintenance. Backwards compatibility is great. The runtimes are very batteries included in terms of backend web development.
- mmillin 1y agoI’m curious if .NET can compare here, though I have limited experience with rails or ASP.NET both seem to give you a lot to work with. Though the overlap of rails devs with .NET devs seems minimal.
- sanex 1y agoI learned to code professionally in Ruby but wrote C# .Net for almost 10 years. I've probably forgotten more about .Net than I ever learned about Ruby at this point so take what I say with a grain of salt. .Net has tons of configuration and boilerplate so I can't say that it's exactly the same in that sense, but the more meta theme is that just as there is a Rails way to do things, there is a Microsoft way to do things. Unlike Java where you're relying on lots of third party packages that while well maintained, aren't owned by the same company that does the language, framework, ORM, database, cloud provider, IDE and so on. Having a solid well documented default option that will work for 99% of use cases takes a lot of the load of decision making off your shoulders and also means you'll have plenty of solid documentation and examples you can follow. I've been in JVM land for the past couple years and it just can't compare. I know Java people will come fight with me after this but I just don't think they know any better.
- dullcrisp 1y agoI think the Java people would say that if you want one way to do things, go do it the Microsoft way :) But I guess Spring tried to do that, but probably didn't have the resources that Microsoft does.
- sanex 1y agoI wish I could :)
- throwawax295 1y agoI don't want to fight you, because I don't know .Net well enough to have an opinion. But I just want to say that I have the same feel when I develop using Spring Boot. I am extremely productive and seldom have to pull dependencies outside Spring for 80% of what I make.
- iambateman 1y agoIf we raced, me driving Laravel and another dev driving Rails, we would be neck and neck in terms of speed and quality.
- deleted 1y ago[deleted]
- SchwKatze 1y agoIn Rust we have loco[1], that aims to be a Rails for Rust. I personally have never built anything serious with it, but all the toys projects were pretty enjoyable. 1- https://loco.rs https://loco.rs
- tonyedgecombe 1y agoI'm 15,000 lines into a Rust project at the moment. I like it a lot but I'd never consider it for a web centric app.
- skwee357 1y agoMind to share why? As someone who likes Rust, has one project (web based) in production in Rust, and considering starting another one, I'd be glad to learn from the experience of other people.
- loxs 1y agoI have several apps in production. I employ sqlx, axum, async_graphql, React frontend. So far I don't know any better way of doing it and I have tried all the classic ways like PHP, Django etc. This is way superior. The only downside is that I am the only one who can touch the backend, but I guess if some of the projects grows enough, there will be enough incentives to find another Rust programmer besides me.
- skwee357 1y agoYes, this mirrors my experience as well. It's just every time I see someone who "quits" Rust in order to go back to Ruby/PHP/Python, I'm interested to know what part they were struggling with.
- irf1 1y agoElixir Phoenix https://x.com/whizzaf/status/1916541502408323313 https://x.com/whizzaf/status/1916541502408323313
- wtsnz 1y agoElixir + Phoenix is amazing. It's one self-contained stack. Just Elixir processes (and Postgres) which takes care of everything other ecosystems farm out to extra services. Background jobs, real-time channels, and even hot-code deployments run natively within the same BEAM runtime. Working with this with a small team with one simple stack is a breath of fresh air in today's world.
- chamomeal 1y agoWow that does sound pretty sick. I’ve always heard awesome things about elixir/beam but I only have so much love in my heart for languages without good static types. Right now that love goes to clojure! I’ve been hearing some buzz about static types landing in elixir, and it’s definitely piquing my interest. This comment of yours has fully sold me though!
- cultofmetatron 1y ago> Right now that love goes to clojure! having used both, elixir feels a lot like clojure semantics with a ruby like syntax. the big advantage of elixir is the erlang vm. if you want a vm that heavily prioritizes parallelism and network programming, give elixir a try. otherise, clojure is perfectly adequate.
- GCUMstlyHarmls 1y agoThis was my first impression too but I wasn't sure it covered the OPs convention over configuration stipulation. Elixir/Phoenix is far and away my favorite framework to build with, but it does leave some things up to the user in a way that Rails doesn't, eg: there is no automatic `class name -> db table` mapping, or automatically inferring what partial or form names to use by a variables name. In my mind, this is not a downside and there are still idiomatic ways to write Phoenix code, but just to outline some philosophical differences I guess. In the end I much prefer it because everything's a bit more explicit and flexible when I want it. I think Phoenix also expects read documentation around OTP if you want to really achieve high leverage. This is worth it, and you can sort of drip feed yourself by starting with Phoenix, recognising that Phoenix primitives [sic] are actually Elixir primitives are actually just OTP primitives and you end up with some pretty good examples of how OTP works in a system you're already familiar with. I highly recommend checking out Elixir & Phoenix.
- nomadygnt 1y agoIn elixir -> phoenix, python -> django, php -> laravel. Any other ones are gonna be a little niche but from what I can tell these four (with rails) have the most large and active communities atm.
- lelanthran 1y agoI have a proprietary one that's much faster in terms of dev velocity. When I struck out on my own I realised that I no longer had team consideration as a constraint and went a little bit off the beaten path. Every client I have used it for has had nothing but praise for how maintainable the software is.
- yurishimo 1y agoLaravel. Massive batteries included ecosystem and the mental model for PHP programming fits the web so freaking good. Rails 8 tried to catch up by beginning to shape the first party queue story, while Laravel has been there for a decade and the tools have been vetted at scale. For a skilled developer who knows any of the major MVC web frameworks, they’re all really productive, just in slightly different ways.
- tacker2000 1y agoOne big up for Laravel and also Symfony, the other big PHP framework! And now with InertiaJS, there are no more API endpoints necessary for any UI stuff. The data just gets prepared in the controller in PHP and gets directly loaded as JSON into the React/Vue/Svelte frontend pages, thats it!
- noelwelsh 1y agoIf you value types more than completeness, Krop is a framework for Scala: https://www.creativescala.org/krop/ https://www.creativescala.org/krop/ It's only suitable for very brave developers at this point in time, as it is nowhere near to feature complete.
- sethammons 1y agoIn each of the dynamic frameworks I have worked in, besides lacking types, the biggest problem is domain separation. In 4 out of six large, dynamic code bases I have worked in, everything becomes spaghetti. This joins with that which n+1s with yadda yadda. You end up with dependencies that prevent billing options because you can't separate the billing structure from the user model from the product table. Queries start joining and joining and you get monstrosities of queries. The beefy postgres db gets bogged down at less than 2k rps. Everything gets slower. Then the org spends millions and millions on domain separation and breaking teams away from another. Builds get slower. Competing styles of decomposition litter the codebase. Changes take days to release. It takes Herculean effort and heroics to fix a dynamic code bases that grows, eating at growth when it should be compounding. "But it let us get here, where we can afford to do those changes." Maybe. It is the road less taken's point - you can sell yourself that the dynamic code bases allowed for the success. But that doesn't say the alternative wouldn't work. </insomnia thoughts>
- charlie0 1y agoUgh, the billing thing hits hard. Just know that having types doesn't prevent this issue. The current codebase I'm working on has a tightly coupled billing model with the incoming requests. Someone thought it was a great idea to mix http status codes with billable events in the same table.
- julik 1y agoThis rings true, but I also saw a lot of situations where just as spaghetti was being tangled, the few folks who resisted it were overruled, again and again. This is hardly the property of languages or frameworks - just orgs being orgs and incentives being incentives. I don't see why a codebase in a compiled lang would not have queries that "start joining and joining and you get monstrosities of queries" if the business logic demands that queriage to be queriaged?.. Maybe you could make a case to the business that the speed of rework has to be reduced "because static lang and we do things properly here" - but the same can be done with dynamic langs, just with a bit of rigor.
- gr4vityWall 1y agoMeteor.js offers pretty good iteration speeds and a fairly complete toolbox for the JS world. Fully featured accounts system, RPCs, client/server reactivity, etc.
- Martinsos 1y agoWasp! Still in Beta, but aiming for that RoR / Laravel DX, in JS.
- xoxosc 1y agoHonojs is another good one. No depdancies. Frontend react as well as SSR included as jsx. Faster than fastify. JS/ES/TS runtime agonstic. Native tsx jsx support.
- teg4n_ 1y agoHono doesn’t give you even 25% of what a framework like Rails does
- jokethrowaway 1y agoThose type signatures mismatches on the handler still bring me nightmares. Hono really needs something like axum's debug_handler
- hansworst 1y agoIs it just me or is Hono being astroturfed pretty heavily on HN lately
- ChrisArchitect 1y agoCorrect link: https://bramjetten.dev/articles/the-one-person-framework-in-practice https://bramjetten.dev/articles/the-one-person-framework-in-...
- ilrwbwrkhv 1y agoRails is unmatched. I wish there was just a similar framework in a faster language.
- wtsnz 1y agoElixir + Phoenix?
- andruby 1y agoIndeed. Runtime is typically a lot faster than Rails. Response times in dev mode are <1ms which is fun to see coming from Rails :) My personal dev speed however is a little slower in Phoenix than Rails. And I've been using Rails for almost 20 years and Elixir for 10. There are categories of problems that are much easier in Elixir (High concurrency, low latency, etc) and for those I would always pick Elixir. If you're planning "just" a crud like web application, Ruby will probably get you to product-market-fit faster. There are (well maintained) gems for almost everything.
- bitbasher 1y agoLoco? https://loco.rs/ https://loco.rs/
- deleted 1y ago[deleted]
- deleted 1y ago[deleted]
- tacker2000 1y agoLaravel or Symfony using PHP
- strzibny 1y agoRuby is plenty fast these days (people usually think Ruby didn't get faster but it did). And if we figure out how to switch to async/fibers with let's say Falcon, we are in a good place :)
- xutopia 1y agoI'm currently building an application to launch it soonish. I'm using Rails and doing everything myself (save for the design of the logo, and some input from a friend on UX). What's more is that I'm building mobile applications using Hotwire Native. I'm a solo developer building 2 mobile apps(iOS and Android), supported by a fully functional web application and done with vanilla Rails with Hotwire Native. I'm surprised how well Rails ecosystem is suited to do everything nowadays.
- AstroBen 1y agoI just wish Ruby had something with the widespread adoption of TypeScript. Once a project gets large enough it's really painful not having types Sorbet and RBS are okay but they don't really compare
- xutopia 1y agoI see what you mean but I have never found it to be an issue even in large codebases. Sorbet and RBS have been problematic. Lots of development slows down with these solutions. I wished it had something baked into the language as well but I'm happy without... just following conventions alone has worked really well for me.
- AstroBen 1y agoYeah I just can't go back. How fast you can confidently refactor and the improved tooling is the biggest thing for me You can do fine without them - Basecamp proved that. There's a good reason basically every other Rails company eventually moved to static typing though
- sota_pop 1y agoThe way I describe language types to non-coders inquiring about language selection for a given project is simply “scale matters”… dynamic types provide flexibility at small scale, but can very easily result in chaos at a large scale. Conversely, the structure of static types can feel onerous and restrictive at small scale, but provide robustness and structure at large scale.
- sirnonw 1y ago[dead]
- jhancock 1y agoExcellent write up. I worked with Rails and Phoenix in their early days and got plenty of value from each. If you're building a traditional web 2 app, look no further...similar to choosing Postgres, start there until you have really good reason to venture off. Without taking away anything from these frameworks and as someone that spent over 10 years building app frameworks, sometimes it's not what I want. I'm using Clojure for my current problem space which would stymy me if I tried to use Rails or Phoenix. I spent the past 4 months doing product/domain "shaping". There are no web pages yet..mostly pure server side domain and API calls for data gathering. After this exploration I now have several working subsystems and have figured out the pathway to the mvp which will come together quickly. As a bonus I have a working domain core to leverage for steps after the mvp.
- chamomeal 1y agoIt’s funny you mention clojure, cause I when I saw “one-person framework” I instantly thought of Biff. I haven’t used Biff (clojure web framework, does not sound comparable to rails), but there’s a great episode of The Repl with the dev who created it. It’s one of those interviews that reminds you how fun and creative programming can be
- SatvikBeri 1y agoEpisode 48 for anyone else who's interested: https://www.therepl.net/episodes/48/ https://www.therepl.net/episodes/48/
- jhancock 1y agoJoy was a key reason I chose Clojure.
- graemep 1y agoHad a look at the docs and was immediately put of by a full attack framework where the only built in auth is magic links. I hope this is not as restrictive as it sounds, and you do not have to jump through hoops to do things differently: "The starter project comes with code for sending emails with MailerSend. Until you add API keys for MailerSend and Recaptcha (which is used to protect your signin forms from bots), signin links and codes will be printed to the console instead of being emailed."
- searls 1y agoFor anyone who's ducked out of Rails World over the last decade (or two), I devoted my final conference talk last year to the topic of One-Person Framework with a real-world case study of how Rails 7+ specifically helps developers build ambitious apps, even as a solo developer. https://justin.searls.co/tubes/2024-11-09-11h03m00s/ https://justin.searls.co/tubes/2024-11-09-11h03m00s/
- swyx 1y agofinal as in you're out of talks for now?? i clicked thru but saw no obvious explanation of what change you're making for those a bit out of the loop
- SirSavary 1y agofrom searls' link: > The presentation summarizes a year of my work but it also embeds countless little things life taught me over the 15 years since I started speaking at user groups and regional conferences. > But this chapter of my life has now concluded. I'm excited to be moving on to other things.
- swyx 1y agoyeah i read that but i was hoping more on the why, why did he have to stop speaking when he can still speak + move on to other things
- ndneighbor 1y agoI see a lot of love for Elixir/Phoenix floating around but oft posted is that Ruby is just an easier and more approachable language for many people. I think that aside from Rails, that makes it one of the easiest languages to pick up and have fun with. I do miss my Rails days for that reason.
- jokethrowaway 1y agoI think you're not giving yourself enough credits and you're giving Rails too much. I know a developer who followed a similar approach in PHP. A relative of mine is running his company as a single dev in node.js + react. My company runs on Python. The key skill is being a good generalist willing and capable to do all the roles you need. Every tech stack can be automated for most small business needs, so that you can reduce the time spent on it.
- throwawax295 1y agoI agree. Nothing beats using a well known framework for speed. I think we also need to consider how much experience one has with a language. Most can pickup a new language relatively quickly, but it's not the same as having real experience with it. At work, someone just started a new micro service written in Rust because they were familiar with Rust and thought they would be able to do something "fast". They spent at least half the time struggling with even basic dependencies, how to deploy it, monitor it and make it deployable. If this was a startup, they would have burned a significant amount of time that could have been spent on PMF
- andrewstuart 1y agoLet’s be clear - the success is not because of Ruby on Rails. You could build the same thing with nodes or python or golang or whatever. There’s nothing special about rails, except that the developers speak like it’s special. There’s nothing that can be quantified in any tangible way to indicate it’s actually better in any way. Rails has enthusiastic words, but it’s not actually better.
- dimitrisnl 1y agoIt's part of the success. There's a reason you don't hear similar 1-person stories with Express.
- AstroBen 1y agoReminded me of your comment: https://habr.com/en/articles/905812/ https://habr.com/en/articles/905812/ "I used technologies and tools I was already very well familiar with: Node.js + Express for the backend and React for the frontend."
- hi_hi 1y agoI'm currently building out an app using AdonisJS. Its billed as a Rails like experience but in node. https://adonisjs.com/ https://adonisjs.com/ I did a comparison between Rails, Adonis and Fiber (a Go "framework") before settling on Adonis (mostly due to node ecosystem and type safety). It's been excellent so far, and the creator has an excellent series of tutorial videos that can get you up to speed quickly https://www.youtube.com/watch?app=desktop&v=jf5hHU0KT3Q https://www.youtube.com/watch?app=desktop&v=jf5hHU0KT3Q. The documentation is also good. LLMs can get tripped up by older versions which you need to look out for.
- dimitrisnl 1y agoI found the lack of 1st party auth system annoying. Phoenix, for example gives me a nice starting point (even magic links soon). Adonis for all its features, turns me to what I hate. The JS auth implementations.
- hi_hi 1y agoYeah, dealing with auth can be painful. The adonis provided auth and bouncer do a decent job of abstracting some of that away, but like most js implementations, it's got rough edges (the docs and vids really help). I'm not familiar with Elixir/Phoenix, but from reading other recommendations in this thread and after having a quick look, I need to take a closer look :-)
- dimitrisnl 1y agoIs there a 1st party auth package? I can't remember any - They were guiding you to the adoniscasts videos, which some are paid. Very hard to get traction like this.
- banashark 1y agohttps://docs.adonisjs.com/guides/authentication/introduction https://docs.adonisjs.com/guides/authentication/introduction "AdonisJS ships with a robust and secure authentication system you can use to log in and authenticate users of your application. Be it a server-rendered application, a SPA client, or a mobile app, you can set up authentication for all of them."
- Glyptodon 1y agoHaving worked as a basically one person Rails shop I think one of the things that makes a big difference on productivity is whether you can say no to the big react front end or not. (And I say that having come to like GQL: It's still like 5x the workload to have a react app + Rails back end.)
- julik 1y agoI'd say having the luxury to say "No" to things is underrated, and it does come packaged with small teams.
- hdjrudni 1y agoI don't know if the framework really matters that much? Just choose anything popular and there should be plenty of help available. I've been using Laravel for about 11 years now. I hate it, but it keeps on trucking along so I've resisted the urge to do a complete rewrite. I don't think anything is particularly slow to develop. It's the business side of things that's the hard part.
- Maledictus 1y agoWhen I moved from PHP to Ruby (and Rails), I discovered how much fun programming can be. Ruby just optimizes for the right thing, Developer happiness.
- sethammons 1y agoI have heard that for years and I just don't get it. Magic abounds. The test assertions and testing libraries are whole DSLs that require a separate/additional learning process with inconsistent chaining with inconsistent return types. Being able to overwrite anything in the language gives rise to things like unicode whitespace being misinterpreted as an undefined function. You can define methods by combining method names leading to wholly undiscoverable methods because "my_func_that_is_cool" is actually defined over multiple files, combining my_func and that_is_cool; saw this a lot in our chef cookbooks. Ruby requires mountains of tests (thus the DSLs). Knowing ruby and knowing rails and knowing how to test are different things. I find ruby (and rails) to bring the opposite of joy. I find myself frustrated. On the opposite end of magic is Go. I love Go. Tests are just code; no magic needed, not even mocks. Methods behave and usage is consistent. Code is navigable. Types make everything more explicit and easy to follow and more maintainable. I assert Go leads to org happiness, letting teams work together productively.
- gls2ro 1y agoI am not trying to convince you as you are already decided and your experience and feelings are valid. I think different programming languages can fit to different people and there is no bad choice here. For anyone else reading this and considering Ruby I have to say the followings: 1. No, there is no magic in Ruby but there is flexibility and metaprogramming. Everything that appears magic is allowed by Ruby syntax and can be traced down to a few meta programmimg features. It might be hard to get it when you see it first, but please do make sure you understand Ruby and then you will also get the magic. 2. You can choose to use Minitest (which is Rails default testing framework) instead of RSpec and Minitest is Ruby code with few methods for assertion. 3. Mocking is an important part of testing 4. In any programming language and even agnostic of any programming language knowing how to code is different than knowing how to test. The testing framework is just an abstraction that should translate your test cases into executable tests.
- kukkeliskuu 1y agoI don't have any experience in Rails, but similar experience with Django. I am running several apps on my own, while still working elsewhere full-time. The largest one has around 250 views, of maybe 80 are just basic admin views. It is basically comparable to an ERP of a medium-side company with various levels of permissions etc. I was able to get most of the functionality into production in just one month -- I was not working full-time at that time. I have estimated it with some friends, and such an ERP in the corporate world would normally take a team two years to do -- one to spec and another to implement. It has 1-2M monthly page views depending on the season, and the highest hitting pages are read-only and heavily cached, so the server load is minimal. I am further increasing the performance by making those pages static HTML using django-distill and using Cloudflare to cache/serve them. The key thing is to keep things as simple as possible. I avoid REST/heavy frontend frameworks whenever possible. For most views for most apps, normal HTML form request-response user interface based on Bootstrap is perfectly fine. I started by sprinkling Javascript when it was really needed, for example client side sorting so I can avoid server load. Now I use AlpineJS/HTMX for the interactivity. It has been great, although much slower to implement.
- mrits 1y agoI'm not a huge fan of Ruby, but even if you admit that Rails is superior to Django, it would be a hard sell to invest in Ruby ecosystem instead of Python I'm doing something similar to OP with Django right now
- dismalaf 1y ago> , it would be a hard sell to invest in Ruby ecosystem instead of Python Why? The Ruby ecosystem is great, as good as ever. What do you think it's missing?
- chipsrafferty 1y agoIt's not "cool"
- 1y ago
- alankarmisra 1y agoI would argue that framework isn't the winning component, the people are. A lot of people can say similar things for framework <<X>> and they'd be right given their own experience but I think they give themseleves too little credit. I've written my own frameworks for smaller projects because I didn't want the needless learning curve / cruft of a generalized framework and I can tell you they saved me so much time / effort / cost over the long term and they were tuned to my development style. All built with python and some off-the-shelf libraries. I'm not saying there's no place for generalized frameworks. They do help streamline development efforts and set a standardized model for building out your app/service which would be great with a team of people all tuned in to a specific framework but I would argue that in a single developer environment it doesn't matter much what you use, so long as you have fun with it. Productivity analyses are at best personal opinions in a forum like this. Edit: basic grammar.
- loandbehold 1y agoDating site PlentyOfFish was built and grown to one of the top dating sites in the world by a single developer until he sold it for $100 million to match.com parent company. It was written in C#/.NET. You can do it in any language.
- rambambram 1y ago> Sticking with a well-structured monolith was one of my best decisions. I can't emphasize this enough. Did the same with a monolithic PHP application. David Heinemeier Hanson used the term 'majestic monolith' and it really feels like that, working on some cathedral in code. Congrats on your good choices and results. A programming language that you like is important, but I think you should give your own decision making some more credit.
- sebstefan 1y agoI'd need the opinion of someone who's worked with other acclaimed technologies (his was PHP) to tell me that Rails is indeed that much better
- jonwinstanley 1y agoNot what you asked for. But I could write a very similar article about Laravel. I run multiple apps as single developer and Laravel has a great community. Laravel has a lot of similarities to Rails.
- AstroBen 1y agoDeveloper experience and the choice to keep complexity low make a much bigger difference. The things Rails solves for you are, these days, solved problems in all mature languages that are used in web development (coming from close to a decade of Rails experience on my end)
- sillycube 1y agoI use Django with Vue CDN for the MVP. The framework is similar to RoR. The key is not about the framework IMO, but whether you pick up a good track. If the demand is great, you can feel the pull from the market. Otherwise, whatever framework can't save you from failure.
- em1sar 1y ago[dead]
- elternal_love 1y agoIn large regards, this is basically my dream life. I just do not know where to start/what to write honestly.
- senordevnyc 1y agoBuy then.
- elternal_love 1y agoThis sound interesting - do you have any ideas were there are offers for that?
- bikamonki 1y agoHow does a solo developer/maintainer with a production app and thousands of active users take a "disconnected" long-week vacation?
- onion2k 1y agoBuild something that works and that doesn't need a person to be around to support it. Or just don't offer support. :)
- reassess_blind 1y agoI’m in a similar position, and that’s the fun part, I don’t. I travel a lot, but have to bring a laptop be a few hours from internet access at most, which thankfully is almost anywhere I want to travel to. Even Everest Base Camp trek has internet.
- siliconc0w 1y agoRails is, if I'm being honest, better than Django in a lot of ways. Hotwire, the new SOLID cache/queue, turbo-native, etc.. But I still prefer the overall python ecosystem.
- gwbas1c 1y ago> Every experienced developer knows: never do a full rewrite. > The rewrite took a couple of intense months, during which I maintained the existing application while building its replacement. Having been through a rewrite in the past: You made the right decision. If a rewrite really is only a couple of intense months, it's worth it. Otherwise, when your application gets into the "full of bad practices"; the alternative is to do major refactors. I suspect that the application was small enough that the rewrite made more sense than a refactor.
- gwbas1c 1y ago> Our new partners, while fans of our lean approach, had one non-negotiable requirement: adding another Rails developer to the team. > The code represented not just PlanGo's evolution, but my own journey from a beginner to a more experienced developer. Parts of the codebase contained decisions made by different versions of myself, with varying levels of experience and understanding. I've joined a few companies where the codebase was started by a (cough) inexperienced developer. The hardest thing is always breaking down someone's ego about their code. The most challenging is when a person in power needs rather (cough) forceful convincing that something needs to change. One thing I'd be curious about are situations where Jetten had to let his ego go and learn from his co-worker. Needless to say, in my other comment in this thread, https://news.ycombinator.com/item?id=43836305 https://news.ycombinator.com/item?id=43836305 I didn't "fight" the battle against the rewrite. But I did fight, and win, the battle to remove a very poorly designed ORM.
- znpy 1y agoAs somebody that doesn’t like ruby that much, what are the one-person frameworks in other languages? Does Spring Boot qualify in this sense?