Thinkserver: My web-based coding environment
checkmyworking.com
checkmyworking.com
The costs are minimal (they all run on a shared $4/mo instance + $10/yr domain per project) and I get to control where the data lives, the features I want to have, etc.
No need to worry about getting the rug pulled on me because the company got acquired or needs to raise revenue or anything like that. No frustration because a redesign made the UI worse or removed features I cared about.
It obviously takes a bit of time upfront, but I see it as a long term investment in my productivity. I use boring, basic, stable technologies so once something is deployed it keeps on humming with extremely minimal involvement on my behalf.
I’m basically slowly working on replacing pretty much every 3rd party app I use with something I wrote myself (it’s going to take a while but that’s okay). My grandpa was a carpenter and pretty much every piece of furniture in the house was something he or his friends had made. As software craftspeople, we should strive to do the same with our digital houses.
Kudos to the author and anyone else who does this. You don’t hear about these things in the mainstream because there’s no reason for people doing this to shout it from the rooftops, but this is software at its best.
This is the way.
Since Claude 3.5 Sonnet has been released I've been building a lot of "microservices" that are just useful to me, or Chrome Extensions that I've seen that I just recreated using Cursor. Awesome learning experience and now I can customize them as needed.
I mean sure it's just a word and HN especially loves to spit on original definitions, but it is always kinda jarring to hear these technical terms in settings that have pretty much no overlap with the original definition.
[0] https://en.wikipedia.org/wiki/Microapp
having it side by side like that looks really nice if u have the screenspace.
I do the same. Both with software and furniture in my house.
I've built all kinds of little dashboards, a big website software project, a local-only bookkeeping system, etc.
With furniture, I'm not that far that I dare to build a chair or couch, but I've built a bed frame, an over-engineered shoe rack (https://www.youtube.com/watch?v=hXzO8BOIlhk), a weight rack, and now I have some bookshelves in the works.
I don't know if you're Japanese, maybe it's coincidence, but I really get inspired by watching Japanese craftsmen on Youtube. It's not only the techniques or style that I like, but the careful working on something that should last.
Our favorite is "Design Stories" (which used to be "Design Talks Plus") that features many such fantastic Japanese crafspeople. Our family hasn't missed an episode in quite a few years.
And, of course, there is the Canadian resident of Japan, David Bull, who does traditional wood-block prints in the style of the magnificent Hokusai. His attention to detail in his work is inspiring to us as well.
Anyway, the hard part about this is that you need a space and then the tools and some tools are easier/cheaper to build than buy (e.g. bandsaw, router table) but there comes a point at which you have to stop building the shop and start building furniture. Most of the YouTubers I follow haven't gotten this message yet...
Not really surprising, the majority of the cost is the actual work. Especially in high-wage countries like the US. Buying a computer to build a website is also much cheaper than getting a website made by someone else.
You might like my Youtube channel then (see previous link). I work in my living room, using my couch and my Ikea stool for basically everything. A lot of cheap hand tools, but I can't work without my drill press. I pick up 2x3's at the local home depot, start sawing and drilling, and mostly use bolts and nuts for connections. Along the way I pick up new power tools, like a portable drill, a dremel, and my newest - a trim router. I built a bicycle caravan, a portable stove, among others. One of the things that really surprised me is the amount of jigs that come to life out of nowhere, haha.
By the way, nice bandsaw you made!
The stuff in furniture stores has like 5 different stages of companies each taking a cut, increasing the price at every step.
"Japanese Joinery" as a search term yields a near bottomless rabbit-hole of amazingness that hits the perfect intersection of craftsmanship, technology and art for this engineer.
The trick (and somewhat the drawback in many's eyes) is to rent a VPS (or dedicated/bare metal) instead of a "App hosting service" (what Render is). You'd need to know some basics about infrastructure and networking, but not anything too advanced and that's stuff will be useful regardless too, so not too easy to rationalize away :)
https://lowendtalk.com/discussion/199617/hostbrr-bf-storage-...
I'm not a programmer by trade but I write tools for myself all the time. My favorite is a wiki-style knowledge base that I built for myself because I did not like the bulk or design of all the existing solutions. (I am a bit picky.) I use it every day for both work and personal stuff. There are lots of ways I want to improve it, but finding the time is difficult.
Which you can either serve as a WebApp direct from your machine, or tunnel in from another VSCode instance - including a webhosted version from Microsoft[1]
I may not do that much coding these days, but I already have found it handy for when I forgot to do a Git push! Just log back in to the Web Environment and everything is how I left it.
[0] https://code.visualstudio.com/docs/remote/vscode-server [1] https://vscode.dev/
There’s a one-click setup for it in Lunni, a Docker dashboard I’ve been working on (shameless plug): https://lunni.dev/
If you are somewhat nomadic and always moving systems, having a "home" you can dial back to and pick up where you left off from is a massive boon (with a remote system like this, my phone is now powerful enough to do pretty much any development task as now it's just rendering the front end and not doing real heavy lifting)
If you're an enterprise programmer working on locked down networks and devices with more end point protection tools than endpoints, an unencumbered authorized system with access to the right network assets, as well as standardized and project specific tooling is the difference between coding and coding with one arm tied behind your back and a blindfold on. (actually the benefits for enterprise are many and not just DevEx -- think security, network admin, vendor access, governance, AI rollout, reduction in project specific on-boarding documentation....)
I'm sure there are many other use cases, though these are just the immediate ones that spring to mind.
Personally, Docker Swarm works great for me. I was worried about it for a while, too, but Mirantis seems to maintain it pretty well. There are even new features being shipped, like CSI support back in 2023! I’m thinking about adding a Kubernetes backend though, just in case things get worse for Swarm.
We use the standard Docker volumes [1] for persisting data. It’s pretty straightforward – you just define a volume and specify where to mount it:
volumes:
app-data: {}
services:
app:
image: example.com/app/backend:latest
volumes:
- app-data:/data
This should work pretty well for most use cases. (There are some caveats if you decide to run multiple Lunni servers in a cluster – basically, every node would get its own volume by default – which is the main reason we don’t officially support that yet :-)The other takeaway I got from his original blog post is a little bit of that trepidation you get when you put this stuff out there, where it can be a little nerve-wracking, because you don't want folks to rip it apart or file a million bug reports. fwiw I'm glad folks are being mostly chill about it.
This is one of the top applications for LLM-based dev IMO. With things like aider / cline / cursor / windsurf / bolt it's looking like this will be a lot easier to scaffold small-scale projects that make sense for you and not necessarily turn into products. It suits single-dev / small teams for now, and that's OK.
A lot of the reasons I would pull in dependencies for are things I’m either not good at or not fast at writing and in most cases LLMs are good at picking up the slack.
It’s been a joy to write the core logic then have an LLM throw a web GUI frontend together for me so I can iterate faster.
This then leads to a fragmented landscape of such services, and none gets enough traction to grow into seriously sustainable popularity.
I've been working on a similar platform (https://smallweb.run), which allows me to host all my side projects from a single root folder. Each subfolder automatically becomes a subdomain, and I can just use vscode remote ssh or mutagen to live edit my websites.
What is old is new again :) Back when I started development, we did this via git remotes, and some projects even did what you created and created environments mapped from git remotes to apps running with subdomains (like Dokku is probably the first/most memorable FOSS service for this back in the day).
And before that, I'm sure people were doing the same thing with Java WARs or similar, and before that, something else but similar.
The main difference is that smallweb use deno instead of docker for sandboxing apps, and leverages url imports (which can be used to distribute complex apps like VS Code):
```
import { VSCode } from "jsr:@smallweb/vscode@0.1.7"
const vscode = new VSCode({ rootDir: Deno.env.get("SMALLWEB_DIR") });
export default vscode;
```
You can play with a live instance of smallweb at https://demo.smallweb.live
Yeah, a single-runtime (smallweb) instead of any language (dokku) + I'd probably say the avoidance of using git for the delivery would be the two biggest differences I can glance.
I want to "develop in prod", not rely on successives git pushes to see changes.
If I need semantic releases, I publish the dev version as a package on jsr, and I then import it from the "prod" app.
I still uses github as way to store my apps though, you can find them at https://github.smallweb.run
[0]: https://github.com/pomdtr/smallweb-vscode/blob/main/extensio...
[1]: https://github.com/gitpod-io/openvscode-server https://github.com/coder/code-server etc
You can play with it at https://vscode.demo.smallweb.live (the code is located in the `vscode` folder)
This will only work if your websites are in vanilla javascript / html right ?
If you ever interacted with cloudflare workers or https://val.town, it is a similar experience.
Feel free to join our discord at https://discord.smallweb.run if you're curious !
Ex: prose.sh is similar to https://jsr.io/@tayzendev/smallblog, an app created by a member of the smallweb community (we have a server at https://discord.smallweb.run). You can see it running from smallweb at https://blog.tayzen.dev
I even use the underlying lib ssh implementation of pico.sh in smallweb (https://github.com/picosh/pobj), and I plan to introduce a cloud service similar to their (you can subscribe to the waitlist at https://cloud.smallweb.run)
Here's a screenshot with the editor showing a preview when editing itself: https://imgur.com/a/RxMCrlf
With libraries like ace and codemirror available, the hard part is mostly on the server with managing state and integrating tools.
I use C#/.NET for everything, so I'd lean on the Roslyn APIs to handle code completion, reference tracking, workspaces, debugging, etc.
One thing I couldn't unsee: The editor and the preview panels seem to have their bottoms misaligned by 1-2px.
You must know about Ellie, right?
It does not have git integration like your project though.
Anyway, nice project!!
> I've been maintaining a Smalltalk compiler, <URL>
But alas. I wonder how hard it is to get a copy of the spec...
Download and search !Compiler in:
./Cuis7-0-main/CuisImage/Cuis7.0.sources
:and you'll see the commented Compiler class source code:"The compiler accepts Smalltalk source code and compiles it with respect to a given class. The user of the compiler supplies a context so that temporary variables are accessible during compilation."
It would be easier to install Cuis Smalltalk and use the Smalltalk browsers to explore the Compiler code.
Damn names...