When working conditions worsen, and those at the previous margins leave, does that mean there’s now new people in the margins who were “safe” before?
4,752 karma · joined March 3, 2014
When working conditions worsen, and those at the previous margins leave, does that mean there’s now new people in the margins who were “safe” before?
I wonder - there’s probably something similar in the history of cars and gas stations?
Also build more community spaces.
Basically - we had some custom framework-ish code to do things like general error handling, reference/relationship/ORM stuff, and turning things into a React hook.
I rewrote what we had to use function passing, so that you could define your API endpoint as the simple Axios call (making it much easier to pass in options, like caching config, on a per-endpoint basis).
So you’d define your resource nice and simple, then under the hood it’d wrap in the middleware, and you’d get back a function to make the request (or a React hooks doohickey, if you wanted).
But typescript doesn’t really play nice with function currying, so it took some doing to wrap my head around enough of the type system to allow the template type to itself be a template-typed function. That nut cracked when I remembered that experience with C++ typing; in the end it actually came out pretty clean, although I definitely got Clever(TM) in some of the guts.
IMHO - “class” definitions are really just a data structure (abstractly, a possibly-nested hash) with associated functions, and that’s it.
This is extremely apparent in Perl, where that’s literally what a “class” is - a hash data structure “blessed” with a class name. JS is almost identical (a class is a hash where some of the values are functions), and “under the hood” both Ruby and Python are similar (although in very different ways - consider that the first arg in a member function in Python is the instance).
Database schema is (usually/mostly) just that structure without those functions; then you maybe use an ORM to provide them again.
So, IMO, on a theory and design level, both the database table and the data part of a class definition are “data structures” (note that you should include in considerations the relationships between data structures)
Waaaay back when in my C++ days, starting to get into template metaprogramming, the “aha!” moment that made it all much easier was that the type definition could be thought of as a function, with types as input parameters and types as output parameters
Recentlyish, this same perspective really helped with some TS typing problems I ran into (around something like middleware wrapping Axios calls).
It’s definitely a “sharp knife” if you overuse it, you screw yourself, but when you use it carefully and in the right places it’s a super power.
But yes, definitely - working in a typed language encourages that mindset, and it’s the application of that mindset that yields the benefits (imo).
+1 spicy!
> Make a fun space, and make people's work schedules be loose enough to where they can actually relax in the space, and some people will show up!
I've tried to tell this to a couple of places that wanted me to work in a office. The conversations didn't go anywhere - perhaps because of your prior quote? :)
In other words: turning Taylor Swift into a software product should be a different legal situation than raising a digital consciousness.
It starts as one thing, but by the middle it's much more clear that it's a therapy exercise for the author that got wonderfully out of hand. There's a lot more talking through issues and emotions as you get deeper in. The author's next major work ("this used to be about dungeons") is same-same-but-different; it's lighter-hearted, almost FRIENDS.
MoL is great and pretty consistent in vibe all the way through; IMO the protag goes from kind of insufferable to a stand-up guy. Quite a good romp to scratch that "creative solutions with magic" itch.
And, if you like those… I’ll also recommend Practical Guide to Evil (and that author’s next and in-progress work, Pale Lights)
I’m immediately re-reading them and they’re just as good - if not better - the second time.
Quickly became my favorite books of all time, which you’ll have to trust me is saying something.
Open core, Royal Road / Patreon pipeline, Linux itself…
...unless you still do the same thing I'm advocating for when considering microservices: defining, and treating, each chunk as a discrete product.
If you can do that, great! MM or MS will both work, and you can probably decide between them based on the other factors you're dealing with.
If you can't, I would expect you to end up with a regular old monolith, so you might as well lean into it.
You can also do shim servers to translate between protocols - a long time ago, I had to interface with a Rails app (by another team, so I couldn't modify it) with an Emerson (the industrial giant) SOAP API, and what turned out to be effective was a Sinatra shim server that only converted JSON to SOAP. Now I could plug the two together without worry.
So - I'm guessing you could have a Java Smooks applet that translates from a JSON API to the EDIFACT protocol, and then you can write your main app in anything you want.
PS - Seconding the "don't go microservices", even though I'm advocating for one here - IMO, you only want microservices if they can be fully defined, independent products; a JSON/EDIFACT translation service would probably qualify.
something-something "Life is short to deal with problems we didn't have to have"
You have a greenfield development project with a very well understood set of business needs and requirements, and you have the budget (I'm guessing) to run some small-scale experiments without the usual sort of time pressures; to a certain kind of developer (hi!) this is super attractive.
I would spend a few weeks getting to know big chunks of the core use cases, and then architect a system designed from the beginning to handle those needs, and the prototype a bunch of that system over a couple of months.
Although these time estimates are totally armchair bullshit, what I'd actually do is timebox both steps to something like "two weeks" and "two months" - that'll help mitigate scope creep that'll come from not having the usual sort of time pressure. It's not about getting it done, it's about finding out what it would take to get it done, and seeing how much can be accomplished in a set amount of time is a good way to do that.
The key bit in all cases is (1) hiring good people (2) getting out of their way except for (3) keeping them on track. (One trick for #3 is to have them propose plans, and then always ask "okay but is there a simpler way to do it?", 2-3 times, kinda like 5-why's).
For #1, I'd look at talks people give at conferences, and then either try to hire those people, or ask those people for referrals.
For #2, that's your executive-level corporate culture. Unfortunately, from what I've seen, you either already have it or you don't, and that's probably not something you can change because if you don't have it, you also don't have the psychological safety necessary to find out that you don't have it - although, you can look for where you've got high employee churn, and that's where your problems are.
For #3, I'd use a combination of what I call the "wine trick" with "ELI5". The "wine trick" is that you don't actually need to know anything about wine to find out if someone else does: just get them talking about the details of their special interest, and if they can, they know a lot about their subject. Combine that with "Explain It Like I'm Five" to find out if they're actually just bullshitting, and because the other way to find out if someone knows a lot about something is if they can teach it. (Plus, they'd need those communication skills during the rest of this process anyway).
I’m about to try the same, any tips? (Can I email you for advice?)
> But Alexander wondered: is this about the drug or might it be related to the setting they were in? To test his hypothesis, he put rats in “rat parks,” where they were among others and free to roam and play, to socialize and to have sex. And they were given the same access to the same two types of drug laced bottles. When inhabiting a “rat park,” they remarkably preferred the plain water. Even when they did imbibe from the drug-filled bottle, they did so intermittently, not obsessively, and never overdosed. A social community beat the power of drugs.
The upstream cause of this is, essentially, "the rent is too damn high". Not necessarily in a sense of housing prices, but -
In order to have a community, that community needs a space. (The early 'net was interesting in that "space" was cheap/nearly free - IRC, forums, etc, which might be one reason it took over as a social space to begin with)
Extremely consistently, I see efforts at forming communities fail simply due to a lack of regular space in which to have them, and from what little I know talking to organizers, it pretty much always comes down to the cost of the space - the rent. This remains true even if the space itself wants to be cheap/free - it has to pay it's own rent, which means it needs dollars from everyone using it.
AFAIK, religious institutions get around this through (1) advantageous tax laws and (2) long-term ownership.
How do you handle on-call / customer support, particularly around vacations?
(In other words, if you want to go away for awhile, how do you make sure any outages get resolved?)
There’s an interesting economic science paper from awhile ago where the researchers examined an economic simulation as wealth inequality increased, and their finding was that it’s like temperature in that it causes phase transitions. At some level of wealth inequality, agents stopped being able to trade (most agents didn’t have the funds to trade most goods), causing a “freeze” - going from liquid(ity) to solid.
100% agree. The nuance I find is that a lot times, people want to draw the lines of the module along something that's more immediately intuitive, but results in longer-term complexity.