I don’t know if kids notice, but I can smell the air pollution every time I drive into outer London from outside London. It’s how I know I’m entering London.
I agree with you. The idea that ULEZ means people must give up driving is ridiculous and overblown. It does not affect the vast majority of people at all.
Ah, so _that’s_ why the ente photos app feels so “off” - it’s using flutter.
I’ve tried the app a few times over the last couple of years and had a dislike of the UI because it did not _feel_ right, like it was slow or something. I can’t say exactly what.
It is almost certainly because it is using flutter rather than native DOM elements.
(I’ve been keeping track of ente but never quite made the jump - not solely due to the UI though!)
This is what self-hosted software should be. An app, self-contained, (essentially) a single file with minimal dependencies.
Not something so complex that it requires docker. Not something that requires you to install a separate database. Not something that depends on redis and other external services.
I’ve turned down many self-hosted options due to the complexity of the setup and maintenance.
It's an interesting difference in backgrounds, maybe? I tried to build this on OpenBSD where we don't have docker and we use 'make' instead of random shell scripts.
For what it's worth, this is from the build log:
error code 1
error path /home/holsta/3rdparty/fusion/frontend/node_modules/@sveltejs/kit
error command failed
error command sh -c node postinstall.js
error /home/holsta/3rdparty/fusion/frontend/node_modules/rollup/dist/native.js:84
error throw new Error(
error ^
error
error Error: Your current platform "openbsd" and architecture "x64" combination is not yet supported by the native Rollup build. Please use the WASM build "@rollup/wasm-node" instead.
Looks good! I am curious on why you recommend to deploy using docker, being a single binary with no external dependencies I find the deployment simple enough.
I write all my personal projects using Go and one of the things I most like is that it compiles to a binary without external dependencies.
The SQLite driver uses cgo, so we use both Ubuntu and Windows Server in CI to avoid cross-compiling. However, we still can't confirm that it's 100% ok on Windows. If any weird bugs occur on Windows, we don't have much experience or energy to deal with them.
The Docker image is based on Debian, we are more familary with it.
it's still easier to manage docker containers if they're 50 MB instead of 300MB and if the rest of the fleet is being managed via docker-(whichever) then there's something to be said about consistency. managing everything through one interface is easier than remembering all the special cases. but to each their own.
I don't even like docker, but it still doesn't sound that terrible to me. It's an option. Use docker or use the single binary, but presumably if you like docker and have it set up for other things, you'll just use that rather than rolling your own startup scripts etc.
I do something a bit similar for my own project - it's a single binary REST server, but I still package it up with dpkg-deb and deploy that to a private apt repo so I can update it easily on the servers with "apt-get update && apt-get install blah" and that fits nicely with my existing processes and I can just add the repo and dependency to my cloud-init setup. If I used docker, I'm sure I'd find his docker image the easiest path to getting it installed and updated.
Consistency is key. it's easier if you're using docker to run all the things, then docker ps shows all the things running, instead of having to check docker, and then also check this other thing over here that's different
Encountered the same problem last year. My tech stack was React Native as I was mostly building stuff that has few interactions and it was easy to get something good on both platforms. Then, I got a notice from Google about API version. Updating the project was such a nightmare due to compatibility issue. Some libraries were abandoned. Some had breaking changes. It was easier to write the two native versions than to deal with npm mess.
For any project that you depend on that has opted into the NPM quagmire, you really should be running `git add --force ./node_modules` and periodically pushing a copy of this to a branch/repo that you control instead of depending on upstream, since most projects that ostensibly use Git tend to thwart its entire raison d'etre—hobbling its ability to do effective version control by abusing .gitignore for their overlay VCS of choice (i.e. the "package manager").
The issue was not finding the libraries code. The issue was the churn. So one day, you have a (in my case, small) set of libraries to get things going. Then 2 years after, compilation issues as they all have different requirements. So you have to find another common intersection between them and the node/react-native versions. I should have vendored some in the project.
In Android, libraries are much stabler. Deprecated functions are picked by the IDE and an alternative is often presented in the comments. I'd much prefer to have big libraries (as we have tree-shaking) especially when dealing with frameworks instead of the bazillion packages when trying to do anything with npm.
> So one day, you have a (in my case, small) set of libraries to get things going. Then 2 years after, compilation issues as they all have different requirements. So you have to find another common intersection between them and the node/react-native versions.
That's what the whole version control thing that I mentioned is good for. Check out a two-year old copy that resolves to a faithful reproduction of whatever it was you were able to use successfully when you first checked it in.
It explicitly states small VPS as a target, so - yes - Linux. I realize you can deploy non-Linux image on VPS, but hosting docker containers on Linux is the default
Agreed. Lately I'm coming across self-hosted services that not only require docker, they essentially require a docker-compose file full of many other dependencies.
The other thing that blows my mind is how many of these self-hosted applications require mysql/postgres instead of just using sqlite.
I've been thinking about doing this myself, so it's fantastic to see a project.
I find a files-centric (and more broadly filesystem-centric) approach easier to grapple with than one that focuses on apps (and hiding away the data). It makes it much easier to access my own data for other purposes outside of what the app provides. In particular when the files are in plain-text or otherwise human-editable. I can reuse all of the existing tool that I'm familiar with to search, modify or re-purpose the data.
I can do away with files if the app provides scripting capabilities (IPC, plugins,...). I know the average users won't use it, but if you've nailed down your workflow, it's liberating to be able to speed up parts of it.
Super confusing! Through different reasoning I get different answers:
1. More likely to be red because the urn has a greater chance of having more red balls
2. Equally likely by considering all remaining urn possibilities to be equally likely
3. More likely to be green because obviously there is one less red ball than before
I wrote a Python program to simulate the problem. It tells me that the correct answer is (2) - it's equally likely that the next ball is red or green.
I wonder if I've made a mistake, or if that's really the real answer!
#!/usr/bin/python
import random
from collections import Counter
def experiment():
urn = random.choices(["R", "G"], k=100)
if urn.pop() != "R":
return
return urn.pop()
results = (experiment() for i in range(1_000_000))
results = (result for result in results if result is not None)
print(Counter(results))
EDIT: I did make a mistake! The above produces a binomial distribution of urns with red/green. As in, the most common urn is one with an equal number of reds and greens, and the least common is all reds or all greens. Whereas they should have equal probability. To actually match the question:
#!/usr/bin/python
import random
from collections import Counter
def experiment():
num_red = random.randint(1, 100)
num_green = 100 - num_red
urn = ["R"] * num_red + ["G"] * num_green
random.shuffle(urn)
if urn.pop() != "R":
return
return urn.pop()
results = (experiment() for i in range(1_000_000))
results = (result for result in results if result is not None)
print(Counter(results))
That’s not right because it implies that only new cars since 2015 can drive inside the ULEZ.
The ULEZ standard requires diesel cars to conform to Euro 6, available since 2015 - the diesel emissions scandal notwithstanding. (The in-practice standards for diesel cars are much much more lenient than for petrol cars.)
The ULEZ standard requires petrol cars to conform to only Euro 4, required since 2005 but some cars manufactured as early as 2001 meet the standard including my 2002 MINI.
This means relatively few people are actually affected by ULEZ, compared to the implication that you need a car manufactured from 2015 onwards.
Do you really think someone is going to read that, start ignoring their doctors, throw all their medicine in the bin, and become some kind of natto evangelist?
It’s a common Japanese food and he just said give it a go.
Do you really think someone is going to read that, start ignoring their doctors, throw all their medicine in the bin, and become some kind of natto evangelist?
Most folks don't become an evangelist! The rest, though - yeah, it happens. People get sold sham cures and diets all the time and dismiss proven treatments. Even when folks do not dismiss modern medicine and are doing things that aren't actively harmful, alternatives tend to delay proven treatments.
Additionally, if you cannot afford medical treatment and you are presented with some "cure" that seems be a small fraction of the cost, it gets easier to justify whatever sham cure the person is trying to push.
'just try it out' comes with responsibility when you are talking medicine as it can snowball into something else.
I think what's funnier is that statins have become so cheap through generics, but they are demonized because of their purported side effects, so people are spending way more money for e.g. red rice yeast, which is just an unregulated statin.
Yeah actually, that would be an unsurprising (but clearly bad) layperson's reading.
If the last two years should have taught us anything, it's that even otherwise intelligent people will interpret perfectly reasonable, specific and precise health advice in the worst possible way.