

I thought it wasn’t a secret that votes were somewhat public. If they aren’t, ok, but that’s news to me.
I thought it wasn’t a secret that votes were somewhat public. If they aren’t, ok, but that’s news to me.
Java isn’t exactly hard, and it’s not particularly fundamental. It’s just bureaucratic, and Python will be both more enjoyable and more useful. Java was trendy in the 1990s and lingers on because so much Java code is still around. If your goal is to use a serious type system (Lisp and Python don’t have that), Haskell will be far more enlightening than Java. If you want to use the JVM for some reason, Clojure (a Lisp dialect that run in it) might interest you.
For low level fundamentals, you want assembly language! That gives you almost no assistance and you have to do EVERYTHING yourself, organizing the program in your own head. For old fashioned imperative programming with lots of organizational assistance, try Ada.
You will probably have to learn C at some point, but save it for later when it will be easier for you to spot the weaknesses.
I don’t remember being that impressed with HTDP but it’s been a while and I didn’t look much. I’d say read SICP first in either case.
The Java thing sounds totally uninteresting and if your next language after Lisp isn’t a a mainstream one, I’d say try Haskell.
Regarding math: it can help but it’s not that important for pure programming. If you’re good at languages and writing, that’s helpful in the same way. If you’re good at music, that is at least a helpful mindset.
What? Problems like this usually come down to some missing indexes. Can you view the query plan for your slow queries? See how long they are taking? IDK about SQL Server but usually there is a command called something like ANALYZE, that breaks down a query into the different parts of its execution plan, executes it, and measures how long each part takes. If you see something like “FULL TABLE SCAN” taking a long time, that can usually be fixed with an index.
If this doesn’t make any sense to you, ask if there are any database gurus at your company, or book a few hours with a consultant. If you go the paid consultant route, say you want someone good at SQL Server query optimization.
By the way I think some people in this thread are overestimating the complexity of this type of problem or are maybe unintentionally spreading FUD. I’m not a DB guru but I would say that by now I’m somewhat clueful, and I got that way mostly by reading the SQLlite docs including the implementation manuals over a few evenings. That’s probably a few hundred pages but not 2000 or anything like that.
First question: how many separate tables does your DB have? If less than say 20, you are probably in simple territory.
Also, look at your slowest queries. They likely say SELECT something FROM this JOIN that JOIN otherthing bla bla bla. How many different JOINs are in that query? If just one, you probably need an index; if two or three, it might take a bit of head scratching; and if 4 or more, something is possibly wrong with your schema or how the queries are written and you have to straighten that out.
Basically from having seen this type of thing many times before, there is about a 50% chance that it can be solved with very little effort, by adding indexes based on studying the slow query executions.
50GB of flac = maybe 20GB of Vorbis amirite? Is that 450GB of flac in your screen shot? It would fit on a 256gb phone even without an SD card. A 512GB card is quite affordable these days. Just make sure to buy a phone with a slot, and think of it as next level degoogling ;).
Yeah I know there’s lots of music in the world but who wants to listen to all of it on a moment’s notice anyway?
Can’t understand why this is interesting, as phones now have a lot of storage space, even the ones that don’t have SD card slots. Just store the music that interests you directly on the phone.
I use Thunderbird and hate it. Full of bugs and cramdowns (not sure what the right term is) where they make a bad setting that you can’t undo. Also too difficult to find too many things. And way too many non-mail features. I haven’t bothered seeking a good alternative but Thunderbird leaves a lot to be desired. Forking isn’t likely to help much. It needs total replacement.
Oh I see. The Linux kernel has been doing fine with mailing lists (LKML) for decades, if that helps.
What does that even mean? If it’s a service, it’s a program running on some computer somewhere. Is that not hosting?
You can self host it.
Isn’t the main issue with it that you’re not forced to be functional? It’s supposed to be pretty good at it with the correct libraries.
I’d say CL’s main issue is that it’s anachronistic by now, and when used idiomatically it’s an imperative language (think of LOOP). You can use some functional idioms in it, but it gets painful to do so.
Look at the article “Why Functional Programming Matters” and imagine rewriting the code examples in Scheme (confusing but straightforward) and then in CL (ouch).
Haskell doesn’t have impure functions. What you’re calling impure functions (functions that produce values in the notorious I/O monad) are actually pure functions, that produce what you could think of as programs that run in an impure interpreter that’s outside of Haskell itself. Don’t worry about understanding that in detail until you’re deeper into learning Haskell, but at that point it will help demystify what the I/O monad (a traditional stumbling block) actually is.
The first few pages of learnyouahaskell.com will give you some sample code to show how clean the language can be.
Gerrit still exists for that. Whether it’s currently best, idk.
Your crossposted question was a choice between Clojure and Common Lisp. Between the two I would say Clojure is more functional, but it comes with the baggage of the JVM. Common Lisp on the other hand is more of a 1980s language where you can use a functional style some of the time, and with some pain.
If you want a Lisp-like language, the usual starting point is Scheme, and if you want something with more creature comforts, try Racket. Either way, you’d start by reading SICP (fulltext here). But I think that whole approach misses out on an important aspect of FP, which is how type systems classify values.
So I’d say go with a typed functional language. OCaml is something like what you are used to, while Haskell is more “drinking from the fire hose” (steeper learning curve, but I think you will get more from it).
For Haskell, learnyouahaskell.com is a good place to start. I don’t know if there is something similar for OCaml. Haskell can be seen as a gateway drug to even more pointy headed languages like Idris.
Yet another thing to look at as a possible migration point from Ruby is Elixir. It’s not really so FP, but it’s very practical if you’re mostly interested in web development rather than programming languages per se. It’s dynamically typed like Ruby and uses Ruby-like syntax, so you should be able to switch to it fairly easily.
Are you familiar with git hooks? See
https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
Scroll to the part about server side hooks. The idea is to automatically propagate updates when you receive them. So git-level replication instead of rsync.
I see, fair enough. Replication is never instantaneous, so do you have definite bounds on how much latency you’ll accept? Do you really want independent git servers online? Most HA systems have a primary and a failover, so users only see one server. If you want to use Ceph, in practice all servers would be in the same DC. Is that ok?
I think I’d look in one of the many git books out there to see what they say about replication schemes. This sounds like something that must have been done before.
Why do you want 5 git servers instead of, say, 2? Are you after something more than high availability? Are you trying to run something like GitHub where some repos might have stupendous concurrent read traffic? What about update traffic?
What happens if the servers sometimes get out of sync for 0.5 sec or whatever, as long as each is in a consistent state at all times?
Anyway my first idea isn’t rsync, but rather, use update hooks to replicate pushes to the other servers, so the updates will still look atomic to clients. Alternatively, use a replicated file system under Ceph or the like, so you can quickly migrate failed servers. That’s a standard cloud hosting setup.
What real world workload do you have, that appeared suddenly enough that your devs couldn’t stay in top of it, and you find yourself seeking advice from us relatively clueless dweebs on Lemmy? It’s not a problem most git users deal with. Git is pretty fast and most users are ok with a single server and a backup.
I wonder if you could use HAProxy for that. It’s usually used with web servers. This is a pretty surprising request though, since git is pretty fast. Do you have an actual real world workload that needs such a setup? Otherwise why not just have a normal setup with one server being mirrored, and a failover IP as lots of VPS hosts can supply?
And, can you use round robin DNS instead of a load balancer?
You really have to see what the db is doing to understand where the bottlenecks are, i.e. find the query plans. It’s ok if it’s just single selects. Look for stuff like table scans that shouldn’t happen. How many queries per second are there? Remember that SSD’s have been a common thing for maybe 10 years. Before that it was HDD’s everywhere, and people still ran systems with very high throughput. They had much less ram then than now too.