997 karma · joined July 3, 2012
- @-ed in a new thread and channel you've never heard of without context. e.g. '@yourname ^^'
- @-ed in a new thread in a conversation that has long since passed where all the discussion was done at the top level of the channel in a normal stream and you now have to deal with two paths of context.
- responded to in a thread that happened months/years ago with the expectation of immediate reply
- multiple people taking a linear conversation and starting their own threads thinking they are talking about different things which end up being the same conversation and having no way to merge these flows back together, then getting @yourname'd a month later and having to somehow find this adjacent thread where the actual conversation is happening.
- trying to catch up from vacation and having to try and mentally or actively serialize some number of days of communication temporally
Every Slack user in a business setting quickly becomes a power user if you are in orgs of 500+. I have no idea why the UX designers feel like everyone works on one thing at a time instead of being in a constant context switch hell which Slack's current UI does nothing to help. The thread views Slack provides are only the 'side view' and the 'thread list view' but you can't break it out into more windows if you need it. I am constantly in situations where I need to look at channels and two or more threads a the same time when trying to figure something out and I end up having to copy chat out of Slack into text editors just to stash a link/context/system output. Searching is also terrible- are you going to match the head of a thread or are you going to match the message right after it? You also can't look at a channel with 20 threads and see what you haven't read between last time you looked and this time. The best I have been able to do is keep a mental count in my head which only lasts a short while and not days. The thread list view is also terrible because it is a push and pull battle between unfolding threads so you can see what the heck it was about and then having to do it all again because you ended up having to switch contexts to answer a more immediate issue.
There is the restrictive protocol channel where every top-level message is distinct and any related message should be a thread message and that mostly/kind of works. I've seen that work OK as more of an ask-for-help situation, but it tends to also obscure what is happening if it there happens common cause outage. Everyone sees a different effect, but the root cause even if there is a pinned post added becomes not obvious because you can't actually visualize all threads of the conversation at once even if the person with knowledge is leading someone to water. Either way every channel with a restrictive protocol I participate in that uses this style loses a lot of its dynamic culture. You don't see who's regularly asking questions or follow-up questions that are actually of interest to you, you only see the bland post unless you click on every single link. I would enjoy watching channels on IRC because you'd find people who were answering questions and responding to follow-ups where the solid advice ended up being. Instead you can't passively find these things without clicking on every single thread and hoping you somehow infer this instead of it being plain and obvious. To that end even when I see that it is used effectively it is not something I think that helps people.
I lose context for 10% of all threads I end up needing to follow a week minimum (note *need* not want). I rarely lose context for anything that's posted to an actual channel because I can start at the top and scroll to the bottom and ensure I didn't miss anything. I don't want to click on every thread because often these threads have links to other threads and on other/same channels that I also can't quickly read through and find what I need to know. I always know when a channel hasn't been read and now that the Slack UI allows me to group channels in a sane way I now can efficiently loop through all the channel contexts I need to at the appropriate frequency of engagement. I also can't easily copy a block of channel messages and their children threads with just a quick copy and paste- and I end up needing to do that frequently.
After only two days this week of being buried in thread hell I would cry for joy if we went back to linear chat and using a ticketing system for any actual threads you need.
They also had some clear characteristics of their system for their critical query that they could take advantage of: a new message is written to generally once, the messages table scales linearly, and updates and deletes are relatively rare. Using those things they were able to seek out a datastore that helped maximize the thing that's happening the most which is the write, and they were able to engineer a system accordingly. They also know that the messages would grow linearly without bound at a variable rate, so they could plan for that capacity. To me, that makes a lot of sense.
Especially if it is a side project you can't over-engineer capacity but you can do at least the measured math of what actions are actually happening in your system and what are your expectations for those queries. I would suggest that often times you'd want to focus on your critical queries that if slowed down would have the biggest net negative, but you'd have to find those. Every user action in a system should be attributable to some combination of reads or writes that can be reasoned about to try and figure out where there might be problems of contention, linear growth, exponential growth or growth up to a limit for a table, or something else. Either way, once you start classifying some of the critical paths in your system often either an answer or better questions start to come to the top. Without some of this information you can't back of the envelope whether or not your system can take a perceived load.
The next from a design perspective is to leave natural places to shard/split the data up so you could represent the data consistently on multiple systems. Sometimes it's pretty bonehead things like your database tables related to login are affecting your critical path transactions and/or also tied to the referential integrity of your application data in ways that are hard to split apart. It goes back to the IO thing where if you are reading and writing login or UI traffic you sure as heck are not writing some other critical time sensitive transaction especially if it's to the same disk. The other obvious thing is to be trying to run analytic queries (aka look at many records) on a database tuned for mass INSERT/write traffic and having no plan to do that with a different resource.
If you are still worried about it I would suggest just prototyping it using a currently modern API/RPC server in front of whatever datastore you come up with. As systems have gotten more distributed the straight line speed of connecting to the database directly makes less and less sense in my opinion and having an API server you control allows you to be clever later in ways that might not be obvious today (especially keeping application-aware counters so that you can see what your application is actually doing as query-style logs for databases are extremely expensive in performance). Either way if you sit down and consider the performance characteristics of the underlying system, think about each class of transactions are you considering from your application in a write/read context (hopefully from measured data), and using tools like EXPLAIN you'll quickly start finding what pieces of the puzzle might need to move to start scaling.
The answer also might just be some parts of your application would be better served something other than a database like a message queue, a more straightforward ISAM or key-value store, or depending on your situation just flat files written onto the fastest local storage you can get to then be later transformed and loaded into a database sometime later.
If facebook wants this correlating data for outgoing traffic they should be asking to buy it from individual providers instead of assuming consent and scraping it via a side channel on your phone.
I would say that the dev client/server setup you're describing and what TRAMP provides are different things overall as well. TRAMP really just provides a way to get a file from a remote, edit it locally, and on save write it back to the remote system. I would not consider it a valid use case for remote dev especially now with how prevalent things like LSP's are and I don't know of a major mode that is designed around a remote LSP I'd just do X forwarding or some other screen share at that point. I would agree that overall it's a gap for emacs that VS Code does better.
Yes, but in the view of an outsider who at least has some knowledge of what it's trying to accomplish it seems mostly dominated by people running pump and dump schemes, scams, and other activities of ill repute. As such it is hard to see it in a positive light, and in the solution spaces of most businesses blockchain doesn't really fit and is the worst kind of vapourware instead. Worse, a lot of the applications seem to assume a perpetuity of things where there's no clear path of stewardship (decentralized or otherwise) of what happens when people get bored of it or the network stops being able to meet it's intended goals. Most applications of blockchain require people to not be bad actors and exploit the system, unfortunately it seems to have attracted a lot of bad actors.
The only use I've seen that makes any sense is CT (certificate transparency), where it actually fits the model provided by the blockchain concept well. It's my only example of a relatively 'clean' blockchain tied to something useful and practical and helps even people that don't understand it.
People excited around blockchain seem to be excited with the community they created and I don't think that's wrong. However, it is hard for me to see that community worth personally joining when a lot of what you see discussed around blockchain ends up being bots, salespeople, scammers, astroturfers, or the misinformed. It's not inducing the same medium of creativity as lot of other web inventions like forums, flash, mobile apps, etc. It just ends up being about itself which is fine but nets limited interest which makes the negative actors stand out that much more. I'm sure there's pockets of genuine good here and there, but it's hard to see past the dark vile ichor that surrounds everything.
As other people mention it would be assumed that $10*X/year would be billed upfront and that you would be 'paying' yourself out of that sum as each month is invoiced. Are you accounting for your liabilities vs. assets correctly and are still sustainable? Are you profitable month to month? Are you meeting your target income after expenses from whatever $10*X/year was supposed to be? Are you sure you are calculating all your expenses precisely from the prior calculations?
If you have 'yes' to all of the prior questions maybe you need to decide where you want to take your business in other areas. It might make sense to just focus on overall growth and not sweat this signal. It would be good to establish the churn rate individually for annual and monthly customers by activity as well as cancellation.
If any one is 'no' you might just have to raise prices because you have to raise prices because you're not getting out of the business what you expect. Raising prices to ensure that you are not just surviving but getting your piece is OK. At the same time maybe the price point is just a good price point and you could focus on growth.
More philosophically how would you subscribe to your service as a customer? If you'd say annually maybe it's just a service that works better annually. I would say Netflix is better month to month because the moment I stop using it is the moment it stops providing value, while a DNS name I have multi-year agreements on because even if I stop actively using it, it's still worth having the arrangement because I am paying just to have it be there for me.
Right now in a microservice model often you have to remind developers that it just isn't ok to have a ~1ms response in a basic case and a 1 second to infinitely blocking case during errors or slow remote services.
There is certainly also consulting and other groups of people too, but they were not the majority.
Then you have to keep on them forever, and stay apprised of features people would like you to use but aren't FedRAMP appropriate yet or do not have appropriate controls. I think you would be surprised how many SaaS providers really don't meet the muster under scrutiny, or your engineering teams are trying to use features that just haven't been brought into compliance yet. For example, the number of times I have had to use https://aws.amazon.com/compliance/services-in-scope/ (click the FedRAMP tab) as a hammer is extremely high. Then you get on the phone with AWS and you find out that only a certain subset of the service that meets their FedRAMP do not provide adequate controls for your usage of the service. There's a lot of defer to vendor and defer to user games being played by both sides and you have to go line by line and figure out who is responsible for what. More often than not the service's people that are catering to the customer are not appropriately educated too, so there's layers of escalations by a security team just to get someone who can answer security questions accurately.
So no, a security person can only see from most organizations that you tried to attest to some of these random certifications, but that doesn't mean I have an accurate map of how I'm supposed to meet my compliance goals with your stuff.
(This is not aimed at any one provider in particular, just my personal feelings on where this 'internal roadblock' argument falls apart).
This is something that I've seen constantly from the PMP/offering manager/product manager types and have been in the room where it happens. The thing that is utterly baffling is that it's usually a vague intent from an interested but not current user but then the person writing down these imagined requirements asks zero follow-up questions in a complete disservice to the user. So for example 'does your product use AI' or 'do you have a slack integration' open ended questions turn into firm requirements 'to close the deal' internally but with a completely headless goal. When I am usually in the room I at least give the customer the dignity of trying to work out what their idea/perceived benefit is with them so I can accurately transmit the knowledge to the team. Often someone more experienced with the product's offering can solve the real customer use case with existing features that just doesn't have the same label.
My favourite firing of a software company was when they expressed that they were refocusing from clear stability initiatives to machine learning driven analytic dashboards. This was even though this was a customer retention meeting company to company that was spawned over threats to not renew... because of stability issues.
I think a large part of my repulsion to this change is mostly because Chrome has a history of removing options constantly. A weird default with a setting to get to more expected behaviour is fine, but I have no faith in them to not remove the full url visible at all time option at this point.
I put a lot of the blame on YouTube, because people seem more than happy to reward/watch well produced content but YouTube's algorithm rewards daily junk content over polished content produced biweekly or monthly. You can see glimmers of old YouTube from time to time where the video is trimmed precisely to support the actual content even if it's 3 minutes or well edited to be engaging but YouTube keeps creating (and revising) a game where that kind of content loses.
Given that this is where there is just a separate group of people that understands or learns the selection criteria for YouTube/Twitter/TikTok/Twitch whatever and can have more synergy transferring between these outlets. It makes sense that someone who in another setting is popular just seems to land flat when they are having to relearn a new way of presenting themselves and the old tools don't work. Even celebrities that start a YouTube channel that I at least followed in passing end up feeling terrible, and I don't think I've seen a hollywood grade external star stick with their YouTube content long enough to actually start learning what needs to change.