Hacker News new | past | comments | ask | show | jobs | submit | jsiepkes's comments login

LGTM!

There is an Android Syncthing fork [1] which is active and 1.3K stars (for whatever that's worth).

[1] https://github.com/Catfriend1/syncthing-android


Good to know, although the Readme says:

"Planning to close my Google Play Developer Account. Please say hi if you are interested in obtaining the latest gplay release files from me to help in publishing this app."


It's on f-droid rather than google play.

I think for the people interested in using Syncthing rather than Dropbox or Google's syncing option, that's not _that_ much of a problem.


I'm always happy to see F-Droid exclusive apps. Gives Google less power over what they can do.


It's going to be much less of a problem for everyone, with these draconian Play policies, as I imagine more and more people will be installing F-droid.


F-Droid is not allowed if you use Google Advanced Security on your account. :( You have to side-load.


as far as i know f-droid is using the same mechanism to install apps as would any other app (though i remember reading that this wasn't always the case and that it switched to the standard mechanism at some point), like a filemanager. either an app can invoke the installation or it can't. there should be nothing in f-droid that would make installation any different.


Hmm, what's GAS?


I've been using that one for a long time now. I recall that when I got started with Syncthing (some months to a year or two ago?), it seemed to have been the folk wisdom to use Syncthing-Fork, but I don't recall what the reason was.


For me, I'm pretty sure it had something to do with better and more granular run conditions on folders.


Weirdly enough, I cannot find either on Play right now..even though I have it (the original, I believe) installed through Play.


> Head to the "releases" section or F-Droid for builds.

It's in the description on GitHub. Get F-Droid.


Seems to work. Exported the config of the other one and imported it in this one. Seems all the settings are there. Sync seems to work too. Kudos to the devs.


Yep, that's what I use. Very happy with it for years!


Java has JSR 354 for money [1]. There is also a reference implementation [2]. So there is official support for money in Java.

[1] https://jcp.org/en/jsr/detail?id=354 [2] https://javamoney.github.io/


Would be cool to hook this up as a manifold unit[1]. This way you could write code like:

Money ask = 2.1M USD;

What I don't see with the Java JSR is how exchange rate services are integrated (if at all?). In the best of worlds, as with manifold's units I could write.

Money deposit = 300 USD + 500 EUR;

Where internally the deposit automatically maintains the amounts separately and uses exchange rates only for spot display/calc, transfer, etc.

1. https://github.com/manifold-systems/manifold/tree/master/man...


> Money ask = 2.1M USD;

Feels like it should be

  Money<USD> ask = 2.1M USD;
Then methods like .plus() wouldn't even be defined for incompatible currencies. Of course that doesn't work for .equals(), so you'd still have to fall back to exceptions in that case.


Generally, the idea is that there is no incompatibility between units. Money is a bit exotic given its abstract nature wrt units / exchange rates.

For instance, physical dimensions store values as SI units, regardless of supplied unit, but retain the supplied unit type as a display hint.

Here, the Length dimension illustrates working with amounts of any unit.

Length orbit = 250 mi;

Length moon = 238000 km;

Length landing = moon + orbit;

display(landing); // prints 148,136.344 mi

display(landing.to(km)); // prints 238,402.336 km

// where

display(landing.to(mi) == landing.to(km)); // prints true

// perhaps a better example

Rate rate = 1.41 km/s;

Time duration = 76 hours;

Length distance = rate * duration;

// make your own unit constants

RateUnit kps = km/s;

rate = 1.41 kps;

You can play with the manifold-science[1] project, it implements the complete SI physical dimensions and many derived dimensions along with comprehensive operator overloading[2] support etc. to make working with and reading code using quantities more productive in Java.

1. https://github.com/manifold-systems/manifold/tree/master/man...

2. https://github.com/manifold-systems/manifold/tree/master/man...


The JSR 354 API can provide access to exchange rate services via the ExchangeRateProvider interface. The reference implementation (Moneta) includes a few implementations of ExchangeRateProviders that connect to online services to look up exchange rates.


I'd like types for all the currencies.

USD rent = 2000

EUR salary = 6000.53

USD disposableIncome = salary - rent

Then:

disposableIncome.toDecimal()

disposableIncome.toInteger()

disposableIncome.toString()

USD interest = disposableIncome.compoundInterest(startDate, endDate, apy)

USD tip = billTotal.tip(percentage)

USD and EUR would inherit from Money

Not sure how to implement it, might be a JVM magic thing.


What you want is Money, currency is a _unit_ type of a Money quantity, just as meter is a unit type of Length.

Money cost = 25M USD;

cost += 12M EUR;

display(cost.to(EUR));


I don't think this makes sense? You need to specify an exchange rate somewhere.

> just as meter is a unit type of Length

The difference is that length units are fixed, but exchange rates are constantly changing.


> You need to specify an exchange rate somewhere.

Right. As I mentioned earlier exchange rate services would need to be integrated into the API.

Also, exchange rate services would not be needed until a conversion is necessary. For instance, when adding money of different currencies internally the Money type maintains currencies separately, subtotals for USD, EUR, etc. are managed. If at a later time the sum of Money should be displayed, deposited, etc. as a single currency, only then is an exchange service involved.


Except Kotlin is a multiplatform language now thanks to Jetbrains efforts (kmp project), it's not anymore intertwined with JVM.

Using Java library will limit your program only to jvm platform. Using a kotlin library like this one (given it's written in pure kotlin and doesn't uses any jvm platforms specifics) will allow you to build it to whatever target kmp supports (macosx, ios, android, js, mingw...)


> to build it to whatever target kmp supports (macosx, ios, android, js, mingw...)

Plenty of languages (also Java with Graal, TeaVM, J2CL, etc.) can also target these platforms.

But as with all these languages targeting these platforms (including Kotlin) you are going to have to call platform specific API if you want to do anything useful. There are also platforms specific limitations which means certain stuff which you can do in the language doesn't work on those platforms.


Not yet to Android (in the case of the library). Need to revamp some internal things.


It will never not be funny to me how Java language designs have such a hatred for operator overloading yet will happily accept .multiply(2).add(something) as a substitute.


If Pluto isn't a planet, can it even have a moon?

Or is it just a piece of rock in orbit of a piece of rock in orbit of a star?


Not much money to be with it made probably. In the end scale advantage will ensure only a couple of suppliers remain.

Hospitals could prevent this by making rules like a single supplier of these generic things can't supply more than X%.


But then you just make subsidiaries?


They should also require that the subsidiaries be geographically distributed.


He has a stage, not a pedestal. As with most things people say you should keep an open mind and decide for yourself what the value is of what they are saying.

There are plenty of well known figures which have only created closed source stuff. Take Dave Cutler for example of Windows NT fame.


You'll have to admit it's easier to grasp/grok someone's philosophy when they show code as examples. Kevlin Henney for instance is not as known as Martin Fowler, but illustrates clearly his points with code examples. I don't say Martin Fowler and Dave Cutler are not worth recognition, but the abstraction level needed to comprehend them from the bottom up is too high that you can't clearly see what they are talking about _unless you've been there_ That's the feeling I get when I hear them


You would be surprised to see how many people try to bypass safety measures just because they think it's tedious and too much work.

I've seen people do unsafe things which were against company regulations even though there was plenty of time to do it "the right way". If the company would have found out they would at the very least have received a written warning.


That's still on the company and for good reason.

Lets say a job realistically takes an hour with safety equipment and a half hour without, then management verbally says they want 10 jobs completed per 8 hour shift, making some vague threats of lays offs or firings.

Places that have these incidents will have and enforce policies around cell phone use for example, they will write someone up for taking too many breaks or who isn't productive enough but they can't possibly check to see if the safety equipment is being used? Nonsense. They don't want to see what would cost them money, but have eyes wide open when they can save some.


ZFS on Linux is not really usable for most users because every kernel update can break your ZFS compatibility.

Meaning unless you want to put in the time to manually test every kernel update and ensure your kernel version stays in-sync with OpenZFS you can very likely end up with an unbootable system.


Ubuntu supports ZFS, so if you can track Ubuntu's kernel, you get ZFS without risking unbootable system.


This is one of the main reasons Void Linux is "stuck" on kernel 6.6.


You mean apart from 6.6 being the current latest longterm kernel?

https://kernel.org/


The 'linux' package on Void is just a meta package. Install whatever kernel series you want. I'm running 6.10.11, with ZFS 2.2.6 on my Void workstation.


FreeBSD has pretty good Java support? Sure if there is a new LTS release it takes a couple of months before it is ported to FreeBSD but that's about it?


For a long time they didn't have any. I recall from mid 90s version 4+? They were still trying to port.. or was it early 2000s lol either way it's ancient history


Yeah I started around 4.something until 6 I believe. After that it was all Debian.

My lesson was to just use what moet people use. But then again, I always used PostgreSQL even though most were on MySQL


> I always used PostgreSQL even though most were on MySQL

That far back mysql and postgres were not even close to being a like-for-like comparison. One was a proper database, with things like referential integrity and a type system that didn't count the 31st of February to be a valid date, and the other was a glorified ndbm with some structure, a SQL interface, and was very very fast at running simple single-table SELECT statements.


Yet for most users none of that mattered.

Because they would just use a SQL library or ORM which hid all of these details.


Correct. I said it was not a valid comparison if talking about proper databases, not that mysql was irredeemably bad and no use to anyone back then.

There were though a lot of people who probably should have used a better DB but used mysql through knowing no better or nothing else being available on cheap shared hosts. Many got lucky and got by but more than a few ended up running into problems or spending time implementing things (complete with bugs for later joy) in their BLL that really belong in the data layer. Similarly using ORMs away from their areas of core advantage is asking for problems later (though one of their core advantages _is_ to help with a quick turnaround on an MVP or other PoC, especially if you aren't much knowledgeable about DB design considerations at the time, so I can't criticise that much).


> My lesson was to just use what moet people use.

Funny, my lesson was nearly the opposite: Don't try to use something that's popular but that meets my needs the best.

I used Mac for a long time but i got allergic to opinionated software. Tried Ubuntu for a while but hated the "not invented here" and commercial motives (eg even distributing small console stuff in snaps). I'm now very happy with FreeBSD on my primary desktop.

But of course my needs and things I care about are different.


You don't have to use what "most people use" if what you're using is fully compatible, or at least compatible enough that it does everything you need it to do. PostgreSQL and MySQL are both SQL databases, so depending on what exactly you're doing, there's likely not that much difference in use. (Plus, these days, PostgreSQL seems to have become more popular.)

So if you're just editing text, it doesn't matter if most people are using emacs, because you can use vim too. But I guess for running an OS, FreeBSD has had too many pain points for many people compared to just going with the Linux crowd.


You would think so, but you'd be surprised what how people (mis)use stuff and how they enjoy using vendor specific features / extensions. This is also, imo, what kind of killed the adoption of J2EE and even J2ME. I'm not talking about J2EE/JEE + Spring*, or using an embedded tomcat. I'm talking about basically what everybody's trying to create for the last 20 years in terms of deployment etc. Sun had it pretty much figured out back then

For editing text, I only use vi.. It's available everywhere and I know my way around it.

I'm glad postgres became popular :). The reasoning around using what many people use is that software is generally more available..

Maybe I'll give FreeBSD another swing in the future, but I'm not sure what the state of containers is. I used jails back in the days, but I'll have to do some research on that.


There was Java, but only green threads were supported. I was running Java/J2EE apps (on resin).

I also recall a problem with mmap() but I’m not sure if it was related to Java or something else


Just search for "glasshole" online and you get the articles from 2014.


Heh, I should have been clearer. I meant citation needed on the other sentence.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: