Kilometres Davis posted:To each their own I suppose, entertaining and thought provoking works for me. for me that works too
|
|
# ? Jul 15, 2018 12:06 |
|
|
# ? May 23, 2024 17:52 |
|
they’re good posts, I read them, but I understand why not everyone would bother!
|
# ? Jul 15, 2018 12:24 |
|
anthonypants posted:yes, this is why your argument is loving stupid when you're trying to compare it to sql vs nosql. if the user can't decide whether they want the green one or the orange one, or if the nurse hasn't sent the prescription from the doctor's office to the pharmacy yet, that's not what you'd call an inconsistency as it relates to databases. my argument in a nutshell (and non-condescendingly) is this:
In the spirit of conciseness (read this post, skip the rest), here's a reworked list of examples of real systems where non-relational and non-ACID semantics can be important and embracing that fact could yield better experiences to users:
|
# ? Jul 15, 2018 12:51 |
MononcQc posted:my argument in a nutshell (and non-condescendingly) is this: now this is a good read, thanks!
|
|
# ? Jul 15, 2018 13:20 |
|
distributed systems without the possibility of durability are really hard to build and trying to reason through all the edge cases without having had the experience of working on them and watching how and where they can fail is akin to trying to teach a fish how to ride a bike or trying to teach shaggar anything
|
# ? Jul 15, 2018 16:44 |
|
distributed systems are cool but watching people slowly rediscover important tidbits (like cap) is very painful
|
# ? Jul 15, 2018 17:20 |
|
cassandra lets you configure replication on a per-table basis, and consistency on a per-query basis. as a result its docs give pretty good coverage of different behaviors you could get across different configurations in an ACID context: - overview of consistency tuning - list of consistency levels so for example, lets say there was a table ('keyspace') that's configured with replication = 3. the writers can tune their durability, and the readers can tune their consistency: the writer could be configured to wait for 1, 2, or 3 nodes to have the data before a given write operation is considered complete - 1 (high availability, low consistency/durability): the writer could be configured to only write to the nearest node and then return. the data is then replicated to two other nodes in the background. - if the node receiving the data crashes before the data is replicated, the data is silently lost (where the writer is concerned) - if two of the three nodes were down during the write, then the write is still going to succeed, but if that remaining node goes down then the data is again silently lost - 2: the writer writes to two nodes before returning, and then the data is written to the third node in the background - if only one of the two nodes goes down, the replication completes to the third node and the data survives - any writes will automatically fail if two of the three nodes are down at a time - 3 (low availability, high consistency/durability): the writer waits for all three nodes to have the data before returning - if any of the nodes crashes, the writer is notified and can try again - any writes will automatically fail if any of the three target nodes is down the reader can similarly be configured to query 1, 2, or 3 nodes before assuming that the result is correct: - 1 (high availability, low consistency): the reader just checks with one of the three nodes, and returns whatever it said - the result may be out of date depending on the last time that node was updated - 2: the reader returns the result that two of the three nodes agrees is the right answer (quorum) - one of the three nodes can be down, as long as the other two agree on the answer. if they dont agree then the read fails - if two of the three nodes is down then the read fails - 3 (low availability, high consistency): the reader returns the result that all three nodes agree is the right answer - results are only returned if all three nodes agree - if any of the three nodes is down, all reads fail any of the above permutations may make sense depending on the context of what you're doing, and what you want to have happen when nodes fail oh and this is all done in cassandra's sql-like query language disclaimer: its been a while since i looked at cassandra specifically so the above probably has a bunch of inaccuracies but you get the idea
|
# ? Jul 15, 2018 18:16 |
|
Progressive JPEG posted:eh that stuff is v complicated so i think the length is warranted, and its good material despite the condescending start uncommitted code is not valid code. git adds a bunch of uncertain state by giving you no authoritative repo so everyone's repos are both correct and wrong at all times. with subversion there is one authoritative repo and everyone else is wrong. You can make changes to the authoritative repo to change its state, but whatever its state is is always correct. branching is included in the state of the repo.
|
# ? Jul 15, 2018 19:25 |
|
eventual consistency is fine for a lot of stuff as long as the delay is acceptable for the use case. ex: atm withdrawls (or card payments in general) can be eventually consistant because the money going in and out isn't critical and/or the consumer has been informed of the delay. eventual consistency doesn't work at all for something like an inventory system where the delay can and will result in overutilization of inventory during peak usage. At that point delaying the user's ability to access the inventory through apparent application slowness is more acceptable than promising the user an item you don't actually have in inventory.
|
# ? Jul 15, 2018 19:36 |
|
lmaohttps://www.rockpapershotgun.com/2018/07/14/a-single-typo-wrecked-aliens-colonial-marines-and-people-are-handling-it-fine/#more-566113 posted:
who defines AI behaviour in an ini file???
|
# ? Jul 15, 2018 20:58 |
|
Powerful Two-Hander posted:lmao It's not even that AI weights were defined in an ini file, it was some inheritance thing where apparently if you inherit something that doesn't exist everything just carries on without any errors. Good job to the developer who's job it was to program this behaviour and managed to overlook the fact that it was literally never getting executed.
|
# ? Jul 15, 2018 21:03 |
|
Chalks posted:It's not even that AI weights were defined in an ini file, it was some inheritance thing where apparently if you inherit something that doesn't exist everything just carries on without any errors. i guarantee you that somewhere in the actual code base there's something like: code:
|
# ? Jul 15, 2018 21:30 |
|
it's common to define ai behaviors in data files, e.g behavior trees, and you don't really want the whole game to grind to a halt every time someone makes a typo in a single data file. not being attached to a tether might well be a perfectly valid state for xenomorphs or other enemies in some cases, as well it may well have spit out an error message on dev builds for all we know, but from everything I've heard about the development of that game it would have been one of ten thousand different errors they were trying to deal with and shove the game out the door before they got sued
|
# ? Jul 16, 2018 00:32 |
|
Love when the worst programmers in the thread call posts by the best programmers "loving stupid" to excuse themselves from ever learning anything.
|
# ? Jul 16, 2018 02:17 |
|
a guy at work is taking the whole code review thing seriously and is giving me good feedback. i've never had this happen before.
|
# ? Jul 16, 2018 02:25 |
|
akadajet posted:a guy at work is taking the whole code review thing seriously and is giving me good feedback. i've never had this happen before. cherish them. good feedback is real hard to come by.
|
# ? Jul 16, 2018 02:27 |
|
jit bull transpile posted:Love when the worst programmers in the thread call posts by the best programmers "loving stupid" to excuse themselves from ever learning anything. hmm... i don't remember calling any posts "loving stupid"
|
# ? Jul 16, 2018 02:52 |
|
jit bull transpile posted:Love when the worst programmers in the thread call posts by the best programmers "loving stupid" to excuse themselves from ever learning anything.
|
# ? Jul 16, 2018 04:04 |
|
akadajet posted:a guy at work is taking the whole code review thing seriously and is giving me good feedback. i've never had this happen before. always good to have a couple of those around for when youre doing something that feels iffy more likely than not theyll have an idea on how to at least make it less iffy
|
# ? Jul 16, 2018 04:17 |
Fiedler posted:hmm... i don't remember calling any posts "loving stupid"
|
|
# ? Jul 16, 2018 05:33 |
|
jit bull transpile posted:Love when the worst programmers in the thread call posts by the best programmers "loving stupid" to excuse themselves from ever learning anything. But I don't remember you calling any of the posts "loving stupid".
|
# ? Jul 16, 2018 08:16 |
|
kugutsu posted:it's common to define ai behaviors in data files, e.g behavior trees, and you don't really want the whole game to grind to a halt every time someone makes a typo in a single data file. not being attached to a tether might well be a perfectly valid state for xenomorphs or other enemies in some cases, as well Yeah, but it was someone's job to assign this behaviour and not noticing that it did literally nothing at all seems like a pretty big oversight - not to mention the QA process not flagging this behaviour and/or the developers not noticing this problem. It's not like this is one random NPC, it's the behaviour for pretty much every enemy in the game.
|
# ? Jul 16, 2018 08:29 |
|
Chalks posted:Yeah, but it was someone's job to assign this behaviour and not noticing that it did literally nothing at all seems like a pretty big oversight - not to mention the QA process not flagging this behaviour and/or the developers not noticing this problem. what's a qa process?
|
# ? Jul 16, 2018 08:36 |
cjs: im dumping ad hoc tables from our dwh locally to my machine since we apparently have no backups in place for our dwh
|
|
# ? Jul 16, 2018 09:02 |
|
gonadic io posted:what's a qa process? Not much, what's a qa process with you?
|
# ? Jul 16, 2018 15:19 |
|
I really like the discussion about consistency vs. availability and I agree that kneejerk reductive thinking is a bad thing, usually. But jfc mongo is such a loving joke. It's held up as the poster child of NoSQL and there are so many better implementations. Mongo has had issues beyond just inconsistency, and if I was working or interviewing somewhere that was using mongo in production for anything remotely important I would just walk out.
|
# ? Jul 16, 2018 15:38 |
|
MongoDB is to NoSQL what MySQL is to SQL.
|
# ? Jul 16, 2018 15:53 |
|
nah MySQL can be used successfully for basic stuff even if there are better options.
|
# ? Jul 16, 2018 16:02 |
mysql 8 is usable, in the broadest sense of that word, yea. still have no idea why would you use it over postgres
|
|
# ? Jul 16, 2018 16:05 |
|
Stripe uses MongoDB in prod. Mongo can be configured with different storage engines, and while I wouldn't use it anyway, they have made improvements since the first version that used MMAPed files for storage (which is now deprecated) and have moved to an MVCC journaled (checkpointed) storage that can support at-rest encryption and compression. It's still not the safest thing for data integrity, but given enough years, their tech is slowly narrowing the gap with their marketing material. Like it's not great, but it's not as stunningly bad as it used to be. Uber made a definite choice to switch from Postgres to MySQL because the k/v pattern they had with it is better served by the MyISAM storage of MySQL than Postgres' MVCC for what they do with it.
|
# ? Jul 16, 2018 16:20 |
|
Tps: I have a program which reads from a ttyUSB running inside a docker container. I have another docker container which uses pymodbus to write to a tty. How can I get the two to talk to each other? As far as I can tell docker compose's --volumes don't work for /dev and --devices only shows the device to the host which is an issue because osx devices are different from the Linux container devices? Idk my other option is running integration tests with two physical pis
|
# ? Jul 16, 2018 16:21 |
|
run integration tests with two physical pis. especially if it involves their lovely USB ports. sorry
|
# ? Jul 16, 2018 16:25 |
MononcQc posted:Uber made a definite choice to switch from Postgres to MySQL because the k/v pattern they had with it is better served by the MyISAM storage of MySQL than Postgres' MVCC for what they do with it.
|
|
# ? Jul 16, 2018 16:28 |
|
yeah new relic also consciously chose mysql, iirc it was for ease of sharding? there are valid use cases for mysql, it’s just a lousy default choice.
|
# ? Jul 16, 2018 16:35 |
|
cinci zoo sniper posted:interesting I was wrong, they're using InnoDB instead of MyISAM. Uber blog post on the topic: https://eng.uber.com/mysql-migration/ Postgres Response: http://thebuild.com/presentations/uber-perconalive-2017.pdf to be noted that iirc MySQL had [for some use cases] better replication mechanisms than Postgres until its latest stable releases. Postgres would use WAL or physical replication using direct block addresses and couldn't do logical replication (based on primary keys) until the latest release, which meant any Postgres switch between major versions had a mandatory downtime period, since you couldn't just do a master (old version) -> follower (new version) switchover on anything other than point releases given they'd change the physical format between major releases. Version 10 fixes that, which was a major hurdle for people wanting to use postgres in environments with high reliability since SLAs could force you onto older versions unless someone broke a server/instance and you could use that downtime as an excuse to do an upgrade. MononcQc fucked around with this message at 16:48 on Jul 16, 2018 |
# ? Jul 16, 2018 16:39 |
MononcQc posted:I was wrong, they're using InnoDB instead of MyISAM. this is some interesting stuff. need to put some time off to read it proper since all this low level db stuff is not something im too familiar of. thanks for the links!
|
|
# ? Jul 16, 2018 18:01 |
|
Phobeste posted:run integration tests with two physical pis. especially if it involves their lovely USB ports. sorry no but I nearly had it with a third container which ran socat!!! love ending a day with git reset --hard back to the start of the day
|
# ? Jul 16, 2018 18:37 |
|
gonadic io posted:love ending a day with git reset --hard back to the start of the day
|
# ? Jul 16, 2018 18:46 |
anthonypants posted:if it makes you feel any better it looks like github is down right now really hard reset
|
|
# ? Jul 16, 2018 18:47 |
|
|
# ? May 23, 2024 17:52 |
|
ctps: had a breakdown and quit my job because I can't face writing another CRUD api (it's still boring no matter how many monads you unnecessarily involve). I've become very interested in doing systems programming (thanks to rust) and I have enough funds to spend ~ 1 year focusing on reorienting my career. I have no illusions that I'll be able to find a non-dubious rust job, so I'm going to be starting on C++ for the first time -- which I'm pretty excited about. I'm also going to be working through "The Linux Programming Interface" which I own but haven't spent a significant amount of time on. I'm also going to be rigorously studying my algorithms and stuff. Plus working on other goals that I haven't really nailed down yet (part of my motivation for this post). I also really need to work on nailing down exactly what doing "systems programming" means to me. I don't necessarily mean I want to do work on the linux kernel or embedded. I may be happier working on anything that's slightly "closer to the metal," even if I'm still mostly in the web domain. So yeah, need to nail this down.
|
# ? Jul 16, 2018 19:54 |