I've played in bar bands (doing covers) for 12 years now. My current project is going on hiatus due to some members leaving and us having to find new ones. We played our last show very recently and were talking about how we have an actual fanbase that's grown through friends, spontaneous discovery, and social media primarily through my bandmates' doing. Before the show and between sets I'm always going out of my way to do something in service of the performance instead of talking to people in the crowd that are watching us.
It then occurred to me that a decent part of the reason that I perform live is a selfish one - on some level I'd rather demonstrate social utility by being a human jukebox than have to interact with people normally. Apparently I'd rather chug water and double-check the setlist after getting off stage than drink a beer and introduce myself to people. As ironic as it sounds there's a certain security to being on stage that insulates you from having to hang out with people while still scratching the itch to go out.
Maybe I'm psychologizing myself too much but it's a thought. Definitely something I'm going to work on regardless.
“ As ironic as it sounds there's a certain security to being on stage that insulates you from having to hang out with people while still scratching the itch to go out.”
It does not sound ironic to me, and it reminded me of “To know them” by Eric’s Trip. If you don’t know the song, I think you’d feel at least partially identified by the short lyrics, regardless of what you make of the music.
I celebrated my 25th year on stage almost three years ago. Mostly playing covers in bars.
There was a time when we were hoping to “make it” and we did release an album but it wasn’t very successful, of course. That band broke up a few years later but I kept going with different bands.
I can’t do it every week anymore, let alone every night. It’s very physically demanding, so once a month is plenty in my age.
But it’s still fun. A lot of fun. I can’t imagine ever stopping it until I can’t physically do it. It’s part of who I am. Long live rock’n roll \m/
It might be just me, but I just like to be surrounded by human energy. I don't need to talk to anyone, and actually that can make it worse. But to be onstage, playing live music, in the zone, surrounded by positive energy: Really there's nothing better in this world.
I knew someone who played guitar in the band at their daughter's wedding, and at least part of it was getting out of having to socialize after dinner— and in particular to participate in a father-daughter dance.
> and in particular to participate in a father-daughter dance.
part of being a parent is puttying your kid first. if you don't like to dance but your daughter really wants/needs this as part of the ritual, then you put on your big boy pants and do it. if your daughter really is okay with it fine, but you're an asshat for not. you may not like ballet, but you show up to the recitals. you might not like sportsball, but you show up to the events. you might cringe at the beginner band's abilities on stage, but you show up. it's not for you. it's for the kid.
Ah yes, and every consumer should just do this in a while (true) loop as producers write to it. Very efficient and simple with no possibility of lock contention or hot spots. Genius, really.
I've implemented a distributed worker system on top of this paradigm.
I used ZMQ to connect nodes and the worker nodes would connect to an indexer/coordinator node that effectively did a `SELECT FROM ORDER BY ASC`.
It's easier than you may think and the bits here ended up with probably < 1000 SLOC all told.
- Coordinator node ingests from a SQL table
- There is a discriminator key for each row in the table for ordering by stacking into an in-memory list-of-lists
- Worker nodes are started with _n_ threads
- Each thread sends a "ready" message to the coordinator and coordinator replies with a "work" message
- On each cycle, the coordinator advances the pointer on the list, locks the list, and marks the first item in the child list as "pending"
- When worker thread finishes, it sends a "completed" message to the coordinator and coordinator replies with another "work" message
- Coordinator unlocks the list the work item originated from and dequeues the finished item.
- When it reaches the end of the list, it cycles to the beginning of the list and starts over, skipping over any child lists marked as locked (has a pending work item)
Effectively a distributed event loop with the events queued up via a simple SQL query.
Dead simple design, extremely robust, very high throughput, very easy to scale workers both horizontally (more nodes) and vertically (more threads). ZMQ made it easy to connect the remote threads to the centralized coordinator. It was effectively "self balancing" because the workers would only re-queue their thread once it finished work. Very easy to manage, but did not have hot failovers since we kept the materialized, "2D" work queue in memory. Though very rarely did we have issues with this.
Yeah, but that's like doing actual engineering. Instead you should just point to Kafka and say that it's going to make your horrible architecture scale magically. That's how the pros do it.
Kafka isn't magic, but it's close. If a single-node solution like an SQL database can handle your load then why shouldn't you stick with SQL? Kafka is not for you. Kafka is for workloads that would DDoS Postgres.
Kafka is really not intended to improve on this. Instead, it's intended for very high-volume ETL processing, where a classical message queue delivering records would spend too much time on locking. Kafka is hot-rodding the message queue design and removing guard rails to get more messages thru faster.
Generally I say, "Message queues are for tasks, Kafka is for data." But in the latter case, if your data volume is not huge, a message queue for async ETL will do just fine and give better guarantees as FIFO goes.
In essence, Kafka is a very specialized version of much more general-purpose message queues, which should be your default starting point. It's similar to replacing a SQL RDBMS with some kind of special NoSQL system - if you need it, okay, but otherwise the general-purpose default is usually the better option.
Of course this is not the same as Kafka, but the comment I'm replying to:
> Ah yes, and every consumer should just do this in a while (true) loop as producers write to it. Very efficient and simple with no possibility of lock contention or hot spots. Genius, really.
Seemed to imply that it's not possible to build a high performance pub/sub system using a simple SQL select. I do not think that is true and it is in fact fairly easy to build a high performance pub/sub system with a simple SQL select. Clearly, this design as proposed is not the same as Kafka.
No, I implied that implementing pub/sub with just a select statement is silly because it is. Your implementation accounts for the downfalls of this approach with smart design using a message queue and intelligent locking semantics. Parent of my comment was glib and included none of this.
It's one of my favorite patterns, because it's the highest-impact, lowest-hanging fruit to fix in many systems that have hit serious scaling bottlenecks.
I used to meow back to my cat when he was younger for vocal modulation and pitch practice (lots of minor seconds and perfect fourths). This might have been a mistake as he's now very talkative, particularly when I'm on the phone.
For those interested Deep Purple apparently originated the term "Space Truckin'" with their identically-titled song [1]. I'd be astounded if there weren't a copy of "Made in Japan" lying around somebody's apartment when they made "Aliens".
I sat down and divided my own life into thematic epochs not long ago. Mine are split differently and more specifically to my own lived experience but I, too, arrived at the fact that I'm entering #5 in my mid-30s. Interesting coincidence!
I suppose that constantly changing and revising the language we use to refer to everything at least has the upside of allowing us to use the latest frontend frameworks every year.
I think you meant to reply to a different comment. I talked about dividing one's life up into periods based on experience and themes, not about linguistic revisionism or Javascript frameworks.
> We will have to infantilize people until their 30s now?
People already pick and choose who they feel sympathy for and give a pass to on the basis of their personal experiences, belief system, and social proximity. Think of how many, for instance, ridicule politicians for being too saintly and enabling or mean and without empathy then give their friends and family a pass for the exact same behavior. They'll get angry with celebrities for things that they allegedly did then shrug off a driver running a red light and nearly killing them because they "don't take things personally". Addicts are a blight on society until it's somebody's child or brother or sister in which case they just need help. Et cetera ad infinitum.
People (you and I included) are fickle. This changes nothing.
As a layperson I have a feeling that's not going to happen. The working class has too much wealth tied up in their homes because US society and the government have encouraged people to treat it as a store of wealth instead of a box that shields them from the weather. People talk constantly about "getting on the property ladder", "buying more land because they aren't making more of it", "having a landlord side hustle", etc. A house is a lot more tangible than stocks so people without knowledge of finance feel much better about investing in one (understandably so - also forget about Social Security). Combine this with associated government tax subsidies and mortgage underwriting programs and you've basically created a situation where home prices can't do anything but go up.
Look at the amortization table for the proposed 50 year mortgage: borrowers wouldn't be making a dent in the principal for a good 10 or 15 years. The underlying assumption here is that people would make money via home price appreciation, i.e. speculation, not from creating an actual store of value. We already kicked this can once when the 30-year mortgage became a thing 60 years ago.
Of course one can't draw the current trend line into infinity because of affordability but I highly doubt it'll go down appreciably. I also don't know enough to have a solution to this problem - any ideas?
The uneven demographic curve shows that many elderly current homeowners will have to sell over the next couple decades due to death or moving into assisted living facilities. That will increase supply and reduce demand, although the impact will vary widely by region. Don't expect any major price reductions in popular areas but there may be further collapses in certain rural and economically stagnant areas. You can look at Japan for a preview of how that plays out.
Tax planning can help here. By converting the house to ownership by a tax-advantaged trust , a family absolutely can continue to extract rent from a former property without selling. Doubly so if the mortgage is paid off.
Sure, that can help affluent families in some cases. But many elderly people will be forced to sell (or reverse mortgage) their real estate holdings in order to pay for long-term care. Fees at decent assisted living facilities are often in the $8K per month range now so the only way to afford it is to sell the family home.
"Hard" by whose definition? I had to implement those in MIPS assembly and write a hash table in x86 assembly in school but I don't think I could do that today without a good deal of refresh. I'd venture to say that most software developers today wouldn't even know where to begin because most software written today targets a VM that doesn't expose pointer arithmetic.
Years ago some enterprising individual made a Flash version of the non-existent computer game in "Big" [1]. It's just a single room but the fact that somebody went to such lengths is amazing.
It then occurred to me that a decent part of the reason that I perform live is a selfish one - on some level I'd rather demonstrate social utility by being a human jukebox than have to interact with people normally. Apparently I'd rather chug water and double-check the setlist after getting off stage than drink a beer and introduce myself to people. As ironic as it sounds there's a certain security to being on stage that insulates you from having to hang out with people while still scratching the itch to go out.
Maybe I'm psychologizing myself too much but it's a thought. Definitely something I'm going to work on regardless.
reply