X Stats

Login Sign Up
@tonyennis

Tony Ennis

@tonyennis

4,360 Tweets
2,743 Following
2,723 Followers

Building software teams & mobile apps Prev: Built a bank in Asia YC S21

Filtered by topic: Tech Philosophy & Takes ✕ Clear filter
Date ↓ Tweet ❤️ 🔄 💬 👁 📝
Dec 06 This is true if… - You are building very highly interactive frontends - You don’t want to spend any time figuring out a playbook/set of patterns (which is completely fair and true of 99% of people) It’s not because of any fundamental difficulty with doing this stuff without js, It’s just that js libs have consumed everything so there’s not as much material out there. Because of this I don’t agree with the “you’ve got to be a masochist” framing. You just want to accept more up front work for lower long term complexity 5 0 1 923 525 .
Nov 09 This is the sweet spot for me when building components with more-than-basic interactivity: A Minijs component that uses preact standalone for templating. - Easy to follow: Very little framework-specific knowledge needed. - I can do simple slot-based composition in the dom. e.g reorder/remove parts. - I can use jsx for templating (technically htm but looks and feels the same. - Super performant - No build step 3 1 0 720 416 .
Nov 02 This is still the best quick-website-builder I've used - really really good and not as well-known as it should be. You should check it out! 7 2 1 882 139 .
Nov 01 For people building software like this, where does design fit in? There’s no way the LLMs are giving smooth ui/ux on the first pass, is there? 1 0 3 534 142 .
Oct 13 I love that the remix guys are popularising web standards again among js folks, but I (currently) feel that the improvements they’ve made are in a dead zone. Marginally better than react, but not a step change in simplicity or functionality yet 2 0 0 849 244 .
Sep 21 1. Get a VM from contabo or hetzner 2. Connect from editor via remote-ssh 3. gem ‘passenger’ & bundle install 4. passenger start —daemonize 5. Add dns record for VM’s ip address 6. One line in Caddyfile 7. ‘service caddy restart’ provisions SSL You now have a “live” rails app 1 0 0 979 283 .
Sep 18 .@RoamResearch is by far the nerdiest product I use and I love it 4 1 0 786 65 .
Sep 15 One week ago: MCP is literally just over complicating a rest API Two days ago: Oh wait, maybe I'm wrong, look at all these cool connectors. Maybe they can do cool stuff Today: MCP is literally just over complicating a rest API... https://t.co/3mG7RYycjW 7 1 0 592 231 .
Sep 11 AI Products that have *stuck* for me so far - @claudeai as daily chat assistant - @WisprFlow for dictation - @codegen for code review - @magicpatterns for interactive prototypes I also use Cursor, but mainly for auto-complete and deep-diving, and it doesn't feel like it has the same delight and consistency as the other four 4 1 0 521 328 .
Sep 10 Nikita’s been good so far but pity he’s dismissing this. If you want a platform everyone posts one you need to give them an incentive. Lack of engagement is a massive issue - only reason I’m still here is because I’ve already built a (tiny) following, no way I’d stick with it if I started today 1 0 2 568 295 .
Sep 04 Got to Rails World, the main area was so quiet, turns out everyone was at the Omarchy talk, which is overflowing https://t.co/Kb4iTkiV7P 10 1 1 635 136 .
Sep 01 Who's coming to Amsterdam this week for @railsworld? 13 0 5 903 52 .
Aug 24 Re: App Mafia hate, as someone who’s skeptical of info products. Myself/gf listened to pod with the same guys, took a shit ton of notes. 10 wks ago launched an app with their exact playbook - now doing avg 1k+/day. To be fair they do know what they’re talking about & it does work 5 0 0 526 284 .
Aug 19 I think I’m gonna have to go build an html first vibe coding platform to avoid people being sucked in by takes like this 12 0 3 665 120 .
Aug 13 The more I've thought about it, the more I think the obsession with avoiding *any* excess kilobytes on first page load is silly for most web apps (excluding maybe e-commerce). Web apps are designed for long running user sessions: A slightly longer-than-usual first request is 1) Not noticed by 99% of users, and 2) A reasonable way to give your browser the code it needs to run the rest of the web app. (Talking about a few hundred kbs of css/js here, not MBs). On a half decent connection with server round-trip you're looking at a few hundred milliseconds. On very slow connections it's a few seconds, which is bad, but in that case the app is going to need all sorts of other optimizations, and even then, front-loading the assets often still comes out as best all-in solution, assuming you're not using a ton of libraries, which you shouldn't be in most cases. 3 0 3 628 867 .
Aug 09 I really need to share my side projects more. I've seen a few people ask for a no-build version of Tailwind recently - I happened to build one a few years ago that still works pretty well - link below 4 0 2 959 202 .
Jun 27 Interest piqued with the first line - “oh wow someone managed to vibe code an app that makes real money” Nope, turns out its a “$1.7m Saas” because that’s what replit told him it would cost to build it 🙃 10 0 1 617 204 .
Jun 16 I wish there were some kind of universal way to measure software developer output for hiring - even if somewhat imperfect Interviewing a lot recently and seeing candidates that look identical on paper but one of them can complete in one day, what takes the other 2 weeks. 0 0 1 619 272 .
Jun 12 Would love to know how many Twitter users have been “Guillermo’d” When the legend slides in your DMs and makes you immediately take your shit more seriously 6 0 1 661 158 .
May 26 The most pessimistic take on AI assisted software development is... There's a fundamental ceiling on how well apps can be built if there is no feedback loop (the coder can see and interact with the results of the code). A feedback loop requires reading and understanding the browser (and/or native apps). This presents 2 problems - The state of the art in browser interpretation even today, is still very low reliability. - Most apps have an obfuscation layer (react/next etc) between what's in the codebase and what the browser renders, making this harder. There is a real possibility that things improve, but don't reach to the point that even mid level developers can be removed. 0 0 0 671 687 .
Apr 29 This is exceptionally dumb. @codeiumdev @cursor_ai @cline will you guys figure this out? First mover gets to define the standard a la MCP https://t.co/yGgYbyw3Gj 6 0 7 673 161 .
Mar 29 Just realised. I've been working on a few UI components for several hours - copy-pasting the entire file into Claude repeatedly because it's faster than using cursor, and there hasn't been a single instance where it's returned broken code or added unwanted code out of 50+ passes 4 0 2 905 279 .
Mar 26 Biggest update to my productivity recently is @foragemail - simple idea, well executed - Sign up with gmail - Now all transactional emails skip your inbox - One email per day with a digest of everything I'm actually responding to emails again. Highly recommended. 3 1 1 583 265 .
Mar 21 It feels like the quality bar for new digital products is in decline. I like to try new stuff, I think at this point I'm averaging one product a week where I have to reach out to support to just get the first run to work. Mostly AI first products which are harder, but still. 3 0 2 908 275 .
Mar 11 Announcing Scout: AI that can do more than just chat. A few months ago a major milestone passed (somewhat) quietly: AIs can now competently control a web browser & reliably complete multi step tasks. Now that the tech is there, there are a few products in the space, but we're still in the extremely early stages of figuring out what's possible and building the right application layer. The best products will come from 1. Great product taste, 2. The ability to combine and deploy the existing technologies (models, libraries), and 3. The ability to ship-iterate-improve to find the right patterns & UI paradigms. We've built a team at @rlygoodsoftware that has all of those characteristics, so rather than wait for someone else to build the product we want, we've begun working on something I'm super excited about. Some things we're focusing on: - Task Focussed (as opposed to chat-centric): With Scout you can quickly fire a task off or run it on a schedule - you don't need to monitor and respond to a chat (but Scout will ping you if it needs you). - Credential Management as a first class citizen: No pasting your password in plain text into a chat. Scout has a built-in password manager that lets you save and pass your credentials safely to the Agent. We also have plans to let you deploy on your own cloud. - Fine grained Control: You can set Scout to be Cautious, Careful, or Confident. In cautious mode, Scout won't proceed without asking for signoff on any PQAs (Potentially Consequential Actions) like making payments or sending messages. Confident mode - if you let it - can buy your groceries and have them delivered without your input. These are just some of the things we're exploring. We've already built a V1 and are testing internally for now, but would like to get more people using the product from April. I'll also be sharing some sneak peeks on here as we build it out If you're interested head over and sign up to the waitlist - link in next tweet. 14 0 1 692 2k .
Mar 08 Have tried all the landing page builders and @pagyco is still the best for quickly throwing something together. So easy to use, great work @hernansartorio 👏 8 3 1 686 156 .
Feb 24 As someone who has opened entities in Asia, Europe and the US, generally speaking the logistical price-of-entry to run a business is very high, regardless of country. People pointing to marginal difference in ease-of-opening-a-business are missing the cost of *ongoing* requirements in accountants, bookkeepers, compliance. Yes EU is bad for startups and US generally has fewer regulations. But for the average business, the tax-on-entrepreneurship of not having a zero-cost way, provided by the government, to stay compliant, is what we should be complaining about, in *every* country. 2 1 1 734 592 .
Jan 20 Looks like no obvious solution in 2025 that does "Sign up, Add Funds, Send SMS reliably, internationally with a single API call." All google-page-one products make you treat each country separately - separate pricing, often have to buy one number for each country. 🤷‍♂️ 0 0 1 773 271 .
Jan 19 Experience with @VonageDev: - Add a card, add credit, confirm payment - Vonage rejects the payment - Try another card (total of $20) - "You have reached your daily Vonage API spending limit" - balance is still 0 If you want to be known as "easy to get started with", this is the most basic stuff. Any other good, simple SMS providers out there? 1 0 1 604 349 .
Jan 18 Whenever I read things like this it reminds me how little CEOs at big companies understand what’s happening in their own company and how unreliable anecdotes are when they go beyond one degree of separation 2 0 0 562 206 .
Nov 10 If you want to build a payments product like this today, your options are: 1. Pay a company like Stripe a percentage fee (anywhere between €100 to €200 *per transaction* for a €10k payment. That's it - there are no more options Online payments are not anywhere near solved https://t.co/sVpT7IpASt 2 0 1 500 299 .
Oct 23 Another data point here: CSS went through a build-time library phase (scss, sass etc), where it was the norm to use a higher level language and a build step because CSS couldn't do things like variables, nesting, calculations Now CSS has those things, and we're removing these build time libraries wholesale. Won't this also be true for js meta-frameworks at some point? If so, when? 5 0 0 729 387 .
Oct 19 K fuck it, gonna also build this in html first rails as a comparison. 8 0 1 542 69 .
Oct 18 What are the arguments that declarative frameworks (React, vue, svelte etc) buck the "Obsoleted by The Platform" trend? 1 0 1 676 119 .
Oct 17 You'll never convince me that this is how we will be writing/extending html in 5 to 10 years time. https://t.co/usiS76zTSM 9 0 3 849 122 .
Oct 11 Put me in the *extremely skeptical* group for this happening. Many other ways AI will disrupt things, but humans mostly want their tools to be predictable, so I don’t think we’ll see shapeshifting software become widespread. 0 0 0 527 225 .
Oct 06 Doing more cursor-coding recently - an observation: It's difficult to switch brain-modes between tell-cursor-what-to-write and write-the-code-yourself, even if the latter is actually quicker than typing out a prompt. Assuming I'm not an outlier, I *think* this will mean people who go the ai-assisted route will tend toward writing less and less code over time, eventually approaching zero. Not sure how I feel about that yet. 7 0 3 865 431 .
Oct 03 For example to build one of the form flows @shl mentioned, the solution didn't really require a lot of custom htmx. It was, roughly speaking: - Add hx-boost to the body and use plain old Rails form helpers. - Use a css snippet and hx-indicator to show loading spinners on link clicks and form submits. - Use hx-preserve to prevent elements being replaced on new page load. But it takes quite a long time to figure those things out. 10 1 2 940 435 .
Sep 30 Unless something has changed in the last year Heroku is still the all round best provider for medium-traffic apps even at those prices. Provided you swap out heroku postgres for RDS and limit addons 4 0 1 657 198 .
Sep 27 Have had multiple interactions in the last few days (on here and at Rails World) that make me think maybe I should do a little htmx-on-rails course - there’d also be heavy overlap with Turbo because it’s ultimately about “thinking in hypertext” as it applies to rails 6 0 1 896 267 .
Sep 23 Watched Caleb's flux demo and had a few thoughts. 1. Wow, we have basically the exact same primitives for our in-house css system (minus the layouts). 2. 95% of the value is in the CSS - coupling it to Laravel/Livewire seems limiting when it could be sold as CSS only and slot into anyone's stack. 3. Maybe I should sell ours too 🤔 4 0 1 530 332 .
Sep 05 You either die a tailwind user, or live long enough to end up building your own css ui kit 🙃 2 0 0 700 92 .
Aug 27 My impression is Rails & Laravel are the most productive full stack, solo-dev frameworks out there, and that Laravel is much farther ahead from an ecosystem/batteries included perspective. Ruby is just a much nicer language (in my subjective opinion) than php 3 0 1 578 264 .
Aug 06 My issue with payments companies (including @stripe) is this exactly. The thinking seems to be “we wired together a dysfunctional system, therefore we deserve a percentage of all transactions” even though today there are systems to transfer value much much cheaper, and one of the things preventing their adoption is the preservation of the old system by the payments companies who built an empire around them. 2 1 0 553 412 .
Jul 16 I work fairly long hours and haven't had a proper holiday in years, but I can decide to go to the cinema with the family at 3pm on a Tuesday or hit the road on a whim, and it's an amazing feeling coming from 10+ years of startup life. Being a business owner is tough for the first few years but if you stick it out the freedom is unmatched. 6 0 0 746 341 .
Jul 14 I generally try to be nice online, but I *despise* these kinds of “You’re not smart enough to sit with us *real* engineers” tweets 16 0 2 928 130 .
May 30 I think @t3dotgg is mostly bad faith, but there is a pretty important point here. The html-over-js-brigade (of which I'm a part) should have better responses and resources to point to when jankiness is raised. In my experience It's 100% possible to make server-rendered apps that *feel* as good/fast as SPAs. But it does require much more intentionality than is involved if you take a declarative js library off the shelf. 1 0 1 913 423 .
May 29 A few weeks ago @RevolutApp started bouncing every payment to our Filipino team, who we’d been paying for months, and blamed it on “an issue on the other side” with no other explanation and no recourse. How can there be so little accountability for something so important 🤯 1 0 2 700 273 .
May 07 Just found out that yc is back to in-person since '22, and now I feel bad for the lukewarm advice I gave to people on whether they should apply (I was in the remote batch and was quite disappointed). If I said this to you you can safely ignore - I'm guessing an in-person yc would https://t.co/uj7WTjQtWo 6 0 1 681 298 .
Apr 24 It's interesting how people can interpret the same thing so differently. My experiences - personal, family, friends - is that it's basically impossible to get half-decent, reasonably affordable therapy - not the thing I'd be calling for *more* regulation on. Personally don't think the AI chat tool is appealing. If it were the case that the alternatives were abundant and affordable then *maybe* would say this kind of thing is harmful. Otherwise this seems like a good example of "It's the worst thing we have, apart from every alternative" 0 0 2 923 546 .
Apr 23 Glad I didn’t see these types of tweets when I was thinking of applying to yc. The one day of prep for runway for 9 months when I was pre revenue at a very generous valuation was one of the highest leverage things I ever did. Most people’s early stage ideas are worthless. 2 0 0 540 272 .
Apr 15 Writing something this polished in this amount of time/code is *so* satisfying. No build step, and full control of the markup. 🤩 https://t.co/qdzgDKWMGf 5 0 1 613 152 .
Apr 10 The optimum amount of conflict in friend/family relationships is not zero - it's being able to get a little cranky at each other and have it not boil over. Seen so many examples now where people have zero conflict for years then something happens and they never talk again 8 0 2 833 272 .
Mar 25 Is there a ruby/rails version of https://t.co/OUtr9ZEFPP? Love the interactivity & gamification, think it could be incredible for getting juniors up to speed. 1 0 1 797 162 .
Mar 19 This is a fascinating exploration of an alternative way to “write code” 3 0 1 678 71 .
Mar 16 Who else is making music (or anything) that gets this kind of reaction, not just from die hard fans it seems, but the *average* fan Feels like the pinnacle of creativity https://t.co/5CB3sktSS6 2 0 2 597 194 .
Feb 02 Another bad faith argument from @cramforce that there's no way to keep a chat app serving ~500 users moderately reliable for less than $90k/year because you have to have a person on call to fix it if it goes down. The main reason Slack needs people on-call is that they serve the same product to 30 million users. They've had 8 outages in the last 12 months - that's *super* impressive at that scale, but even so, much less reliable than the 6 apps I've been hosting on Cloudron for the last 18 months with zero downtime. For the "Clearly he's never done this in real life" crowd - Updates: Handled 100% by Cloudron - all apps are auto updated with new releases. - Dodgy Deploys: We had one for Gitlab - there was an answer on the forum which required rolling back a version - took me 15 minutes & about 2 hours downtime (still less than Slack in the last year). And I wasn't "on call". - Backups: Set up in 15 minutes and about 20 clicks with Snapshooter - Resource Issues: Cloudron tells us when resources are getting low (there's 6 apps on a single VM). It's one click to resize the server with our host. - Storage Issues: It's €14/month for 300GB of storage with our host - even at 500 users your chat database is not growing beyond that for *years*, and when it does, again it's one click to resize. What am I missing here? *Why* would you need someone on call for this? 3 0 0 621 1.4k .
Jan 20 I don't often talk about it because @rails has given me so much, but in my opinion most of what rails does/has done on the frontend doesn't pass this test, and it's why I don't use or recommend using turbo/stimulus/strada etc. 1 0 2 690 226 .
Dec 23 I love that Stripe raised the bar for what a developer product should look like. But if we’re being honest there’s no long term business model for payments companies without eventually rent seeking or racing-to-the-bottom on price. 2 0 1 721 231 .
Dec 23 A nice exploration of the sixth html first principle - Stephen goes even deeper than I did, really enjoying these videos. 3 2 1 717 121 .
Dec 19 Going through a codebase I wrote during my everything-should-be-a-service phase, and my god is it painful to update. Give me a fat controller any day over deeply nested services inside services inside services. 10 0 1 582 210 .
Dec 18 More html-first fun - the interactive bits of this took me about 15 minutes to write. ✅ Type to select using vanilla html (datalist) ✅ Conditional dropdown using the teeniest bit of htmx ✅ Date picker using vanilla html ✅ A dash of mini js for the quantity selector https://t.co/7cKyziLZxT 4 0 2 655 292 .
Dec 04 There's an incredibly grumpy old man going around the internet shouting at people for not using HTML THE WAY IT'S SUPPOSED TO BE USED, and I'm worried he's going to come for html-first next, he's on a *rampage* 5 0 1 815 210 .
Nov 16 The Airbnb search bar is a good example of a "rich interactive UI" that many would say can't/shouldn't be built HTML First. But the whole thing can be achieved with two concepts (attributes which can set state, attributes whose values are linked to that state). (More below ↓) https://t.co/IGDExtsvVN 8 0 1 762 301 .
Nov 14 So @RevolutApp took two factor auth and made it even more infuriating (my devices are right beside each other) Really can’t wait til we have proper self custody and crypto payments - I would happily take the risk of keeping my everyday balance in a hot wallet to avoid the unpredictability and extreme inconvenience of these lowest common denominator security practices. 2 0 2 632 371 .
Nov 06 So many great companies with great founders and great ideals end up in this spot - sacrificing UX & customer experience in the pursuit of extreme profit maximisation at all costs to justify the VC funding they’ve raised. Sad but unsurprising. 2 0 1 567 246 .
Oct 13 With all this talk of no build steps, might be a good time to mention I built a no-build-step version of tailwind. Check it out 👇 https://t.co/XQFOOkI6Y6 2 1 0 741 154 .
Oct 12 This kind of shit is why we have so much complexity in web world. Malte knows that the vast majority of the applications/sites deployed on his platform are not the kind of "high performance websites" that need heaps of javascript (and bundling) to achieve their desired functionality, yet he's asserting that this approach unconditionally doesn't work, as though it's some fundamental law of physics, I'm assuming because he knows that this move back toward a more simple web is bad for business. Vercel's built an incredible reputation but is using it to mislead people into thinking this stuff *has* to be complex. It doesn't 3 0 5 876 628 .
Oct 08 An addendum to this - database as a service businesses are the same thing - a thin layer over commoditised open source technology, where the enormous premium is only justified by very large enterprises. Over a long enough time horizon these are bad business models and a race to the bottom because they provide so little value to the average non-enterprise customer and are (reasonably) easy to replicate/diy. 2 0 2 942 409 .
Aug 27 This 100%. APIs are already abstracted perfectly and super readable on their own. Adding an obfuscation layer just requires that the developer learn a new set of patterns, and most of the time they’ll need to know how the underlying API works anyway 2 0 0 706 249 .
Aug 27 People are the worst man. Got my dream van after planning/building for 2 years. Broken into twice in two weeks now 😞 https://t.co/oouEo4Issj 1 0 5 830 140 .
Aug 25 Been playing with this for a few days now and I'm obviously biased but this is the most fun I've had with a new library since @rails. The time-to-value is so quick because it builds on concepts you already know and doesn't really need any documentation. Built out tabs and an accordion in 5 minutes this morning. Can't wait to share 3 0 0 511 332 .
Jun 21 Reporting back on this - we hired 2 bootcamp grads 6 months ago who are now building full client projects on their own with this stack. And just finished an exercise with two more bootcamp grads (with zero rails experience !) who had a dashboard w/ live search built in a day 🤯 7 1 2 994 277 .
May 25 If you have a Product Hunt account, please go upvote @ConjureSo and try it out. It's an insanely comprehensive behaviour modification tool that has 10x the capabilities of anything else in the space, not a rough MVP you'd normally see on PH. @Whelton has done an incredible job 8 1 3 982 277 .
May 14 Got plugin access this weekend and built a multiplayer game that runs inside ChatGPT (the first ChatGPT game?) Check it out 👇 https://t.co/g0JEkKTve3 4 0 0 574 150 .
Apr 22 This weeks mania: - A friend is replacing a THIRD of his team with ChatGPT agents??? - ChatGPT plug-ins were apparently rendered impotent by AutoGPT already? Who knew - Round sizes will need to come down because the teams will all be “3 guys and a bunch of agents” Unhinged… 2 0 0 663 275 .
Apr 08 McKay’s claim here is that the impact of AI on software dev will continue to grow exponentially along with the underlying intelligence APIs. I think that’s incorrect, because I don’t think access to intelligence is the “final boss” in increasing speed and output when building software. 0 0 1 527 286 .
Mar 28 This is quite big from someone as influential and thoughtful as @Rich_Harris Really hope this is a little nudge for people to actually consider whether they need a build step/typescript versus the current dogmatic "this is how it should be" attitude. https://t.co/tD7jOVE5yO 0 0 0 509 278 .
Mar 22 There was a long period where the difference between assembly-line-style teams (left diagram) and design-process-style teams (right diagram), in terms of output, quality, and return on investment wasn't large enough to be noticeable. My hunch is that the new generation of AI-tool-assisted lean teams (one or two programmers, minimal specialization) is going to make that gap much much larger, potentially too large to justify the cost structure of the team on the left. 1 0 1 696 470 .
Mar 17 TFW you built an almost-identical product as a popular indie hacker, complete with the same name, but 3 months earlier, and now it looks like you're trying to copy them 😂 https://t.co/zfJCBftKEf 3 0 2 788 194 .