i worked at a FAANG co and managed to make it 3 years focusing on solving problems that widely bothered users. there were several instances where i had to -fight- to ship critical bug fixes because the fixes so-happened to regress an obscure metric someone was baby-sitting…
the first time this happened, i felt like my brain was going to explode -- so wait, you want me to leave the main app feed broken and people pissed off because the comment-notes-experience-home-ex team's weekly comment rate is slightly regressing?
writing this out, not sure how i lasted as long as i did.
This reminds me of when we introduced Yammer at a company. Initially, it worked great, everybody loved it, it was super valuable to share information internally. Then, at some point, the feed broke and it somehow started demoting the most valuable posts, requiring much more time to be sure that you had caught up on everything relevant to you.
Then I read an interview with the CEO where he bragged how they were data-driven and were optimizing for engagement. My guess is that somebody had figured out that hiding important information created more "engagement" because people now had to spend more time searching for the stuff that was relevant to them.
This person probably got a promotion, and we switched to a different system half a year later.
Yes, exactly -- the fixation on "metrics-driven development" created perverse incentives (i.e. cobra effect). People would ship bugs and broken shit because it'd bump engagement, like you're referencing; nevermind the fact that the engagement win was because people were clearly flummoxed by a meaningfully worse user experience and it took them longer to do shit. I saw this happen many times, gaming metrics by doing backwards things would definitely get rewarded.
I think his original statement is still correct -- Threads only requests device permissions for notifications, it isn't collecting "location, health data, or financial data" from your device.
The App Store disclosure you're referencing means these data can be aggregated and associated with your identity, but that's just the nature of using any social media app that serves ads these days.
> The App Store disclosure you're referencing means these data can be aggregated and associated with your identity, but that's just the nature of using any social media app that serves ads these days.
I looked at the playstore and the information there is the same. I looked at Reddit's app and it doesn't say anything about financial info or health data like this one does. Also it looks like the play store doesn't let you see what permissions an app needs anymore.
On iOS you can easily check what permissions an app has in Settings. For instance I can see I have granted Instagram access to location, microphone, camera, photo album. Threads has none of those. I don't use Health and I'm not sure what financial data would mean, Apple Pay? That's approved per each use.
If threads has figured out a way to collect those things without having permissions, then yes, that would be the darkest of dark patterns.
So instagram has access to view, collect, and analyze the photos you take of yourself and your environment as well as the ability to access your other photos, your location and your microphone. That alone could let them collect vast amounts of information about your health and your finances.
Your location data for example tells them where you live. Possibly the single best predictor of how long you'll live is your zip code. Your health could be readily apparent from your location and your physical appearance (insta knows what you look like before filters too).
It can give them a huge amount of data concerning your finances as well. The location and info gathered from photos you take of your food and drinks in expensive restaurants or on vacation for example. The person who spends 40 hours a week in a server room is probably making more money than someone who spends 35 hours a week at a McDonalds.
Your location data can be used to show things like how many sexual partners you have, how many friends you have, if you have parents that are still alive, how often you visit the dentist.
If IOS is like Android there will be a lot of sensor data that is freely handed out to any app that is curious without a permission or a prompt. Thinks like if your phone is upright or flat. The magnetic fields around you. etc. All of that data can also be leveraged to learn the most intimate details of you and your life.
When you start thinking about how much you reveal about yourself from nothing but a bunch of seemingly random data points it can really surprise you.
And then they'll point out that they promise to aggregate and anonymize the dataset, but i recall the when Netflix said something similar only to latet realize how wrong they actually were.
Take note of the date on that article. This was before we really knew much abouy big data in the mainstream, but look how little data it takes to fingerprint an individual.
I remember this as the moment i knew how much trouble we were headed for.
from my experience, acquiring the self-awareness you need in order to articulate this problem is the biggest hurdle to solving it -- you're on your way!
early in my career, i shared this hangup and because i was so emotionally invested in the products that i worked on, i considered criticism of my work == criticism of me personally.
i think the next step is evaluating how effectively you are separating your work and personal life. when i have struggled with this issue the most, it has correlated with me being too emotionally invested in what i'm working on.
make sure that you have projects and interests outside of work that fulfill you so that you don't rely an outsize amount on your work for fulfillment. often this means having better guardrails about work-life-balance -- do you clearly define when you are and aren't available for work, for example?
the other thing is simply reminding yourself that your work isn't you, and it doesn't define your value. working with complex systems, we are going to screw up at times, it's an inevitability. if you aim to not make mistakes, ever, and bristle when they are pointed out or criticized, you're going to struggle over the longterm to get along with the people you collaborate with.
ironically, i have found that being more open and accepting of the "dumb" shit i do leads others to think more highly of me as an engineer. i think most of us can think of "that person" we've worked with who can't take criticism and recoils when questioned -- when you do, how did that you feel when you experienced that behavior firsthand? if i had to guess, it probably wasn't positive. we can do better!
as i recall, they devised their own scripting language, and they relied solely on flatfiles to track world-state… then every day at a given time, each server would have an off-hours save where the flatfiles would be persisted. players caught on to this, and would take advantage by having "server wars" during these save windows, when changes wouldn't be persisted, and would all equip their best kit and battle at certain locations. all that said, it's not too surprising lots of creativity and ingenuity was required, given in 1997 the world had really seen nothing like it.
i remember getting it right after it came out -- i had just turned 11. when i tried to explain to people that it was a massive, detailed fantasy world where you could go on adventures with people in real-time, they'd look at me like i had two heads.
this got me into scripting and mods and was a big influence on why i became interested in software and hacking, and have had a career in it since.
UO:Renaissance was the best era of UO. Two worlds separated by moonstones to separate open-pvp with non-pvp. My younger brother and I would hang out in Briton in Felucia (open-pvp) and kill anyone trying to cross over with loot or anyone coming over with gear.
No, the best time period was before this, when there was only one unified open-pvp world and people could kill you and even burglarize your house if they stole the key and knew where you lived, or even just killed you right at your front doorstep before you get a chance to close the door and lock it.
Casual players forced to live in a truly dangerous world with thieves and blood thirsty killers, we’ll never see these dynamics in an MMO again.
When Renaissance was introduced, what happened was most people lived purely in the non-pvp world and horded massive wealth and resources safely (which would have made you a big target in the old world), while the pvp side just became an arena for people to fight all the time. Boring.
In my experience most of the people who say this were exactly the sort of people that ruined it for everyone else by taking things too far. Turns out people didn't find it fun to be slaughtered by a horde of 15 teenagers with names like "frogsmasha"
Yes, I did a lot of that stuff too. That's not my point. There has been a very strong correlation to the people who lament things using the sort of terminology you did and the crowd that caused the changes they lament.
Someone like Xavori on Lake Superior was a good counterexample. He was a well role-played villain. Meanwhile there were hordes of troglodytes with borderline (or sometimes not at all borderline) offensive names going around and straight up griefing people. And that latter crowd ruined it for everyone.
A big delimiter I use when talking to people about those days was to what extent they view the largest issue being there not being enough unwilling participants in their PvP/griefing. A lot of people liked Siege Perilous, which was awesome. But a lot of the problem players didn't - because what they really enjoyed was griefing other players.
I was there for that. While the gameplay was indeed more fun, the separation and “hoarding of wealth” made it popular. I had a castle on either side. My feluca stronghold was only to stash ill gotten goods until I could move them to trammel. I had more fun playing dodge the pain train and get to bank than I ever did pre-separation. Pre-separation was more natural feeling but the split gave a risk vs reward buff.
You could try playing Tibia, it has exactly what you're describing, save for being able to enter other player's houses uninvited. It's kinda dead though
Thank you, anyone claiming otherwise is fucking sheltered. They never bothered to opened up a regular shard other than seige perilous which had extra difficulties cranked up so nobody bothered, and other games filled the gap (until those too were banned).
agreed, the introduction of safe zones ruined what made the game special. while the old way was brutal and could be outright toxic to new players, the pure lawlessness and unpredictability of open PVP was unique -- you could even murder players in town if you managed to do it without witnesses! the thrills i had in that game i haven't had since
Oh this brings back so many good memories. The Britain graveyard was where shit went DOWN during these non-persistence windows. I remember there was a large Japanese player base on my server and there were Japan vs USA fights every day.
best system design interview advice i got (and put to successful use in loops with goog and fb) was to not try to give the "right" answer -- it's like a professor grading papers on a topic they've taught countless times, you have more of an opportunity to fail than you do to succeed. instead, be decisive and give answers or approximations for any questions that arise, and bring your unique perspective to the problem -- in my case i have a background in mobile app development, so i spent a lot of time speaking to those use-cases.
if you try to cover every base and fret about everything being optimal, you're going to barely have time to get started.
"I am looking for explanations that will help me build a conceptual understanding of macos UI development."
it depends on your learning style of course, but if you like lecture / course-style learning, i highly recommend paul hegarty's CS193P, it will definitely give you the in-depth, conceptual explanations you're describing.
while it is an iOS dev course (taught at stanford, lectures are freely offered online), the newest lectures are using swiftUI for UI, so pretty much all of it will translate to doing macOS dev.
paul is a cs prof at stanford and worked at NeXT and then on the objc lang many, many years ago, so he's been doing this a while and knows a thing or two :)
> while it is an iOS dev course (taught at stanford, lectures are freely offered online), the newest lectures are using swiftUI for UI, so pretty much all of it will translate to doing macOS dev.
They absolutely will not. SwiftUI on macOS and SwiftUI on iOS are very different beasts. For the latter, it is at the point where you can actually kind of make a good app in it with the majority of your code only using the framework. On the other hand making a good macOS app using only SwiftUI is pretty much impossible. There’s a lot of stuff that is broken, or looks wrong, or there’s controls missing or customization that’s not exposed. I would go as far as to say that you should ignore SwiftUI’s existence if you want to learn how to write a Mac app today, get familiar with the platform, then dip your toe in by trying some of the limited situations in which it actually works.
> On the other hand making a good macOS app using only SwiftUI is pretty much impossible.
How recent was your experience with it? I'm assuming your characterization is accurate, but since SwiftUI is being used for notable bits of Ventura, I'm curious what OS version it reflects. https://troz.net/post/2022/swiftui-mac-2022/
Apple has always the joker card of being allowed to use private APIs. They have also a lot of money an can waste developer time on rewriting their SwiftUI applets constantly.
If you don’t have that kind of resources it would be wise to use the tried and true stack and switch over to the shiny new thing once it’s actually stable.
Pretty recent, I check it every once in a while to see what’s going on. Of course, with macOS generally most of the changes happen around WWDC ;)
SwiftUI on macOS is currently ok for a few usecases. One is little document apps. Emphasis on little, this is going to be things that wrap an image or a text file or something. The API is reactive so it’s not really designed for complex/partial file formats. Another good usecase is just pure drawing/animation. This code will look identical on macOS and iOS and is very easy to write with SwiftUI. Finally, the last thing that mostly works is just lists of content. Not table views, those aren’t very good yet. I’m talking about Twitter-like content, as in a media viewer in list form.
What doesn’t work well is anything that has to do with controls (either they look very ugly, the control doesn’t exist, or SwiftUI has no concept of some significant portion of the control). If you want to do like focus loops or right clicks or anything complicated, forget it. (Some of these are getting fixed piecemeal, but AppKit has like a thousand little things that make good apps and it’ll be a while before they are all fixed.)
By way of example, I actually have some small apps that show this off well. https://github.com/saagarjha/EffectivePower is a little view-only document shoebox style app. It’s 100% SwiftUI, has one main screen that is a hand-drawn graph, and some auxiliary UI. This makes it about as good as it could be for using the framework. Making the graph was a delight. Making it perform well was a little bit of work but not too bad. The document abstraction mostly works except SwiftUI expects me to be able to create new documents and I’m just a viewer app so I need to crash if you try to make a new document. The sidebar is a List, which is fine, but I actually wanted it to be a Table. However Table selection asserts right now if you update its selection faster than the NSTableView that backs it animated. Of course in SwiftUI there is no concept of animation duration so you can’t really stop this from happening. You can also zoom the graph in the app. On Monterey if you tried to zoom a couple of times the system magnification gesture just stopped working silently. On Ventura I believe they have fixed this, or at least it isn’t trivially broken anymore. This is common for SwiftUI.
By way of contrast, https://github.com/saagarjha/VirtualApple is also pretty simple but it’s 100% AppKit. I had originally written it in SwiftUI but it’s just not possible to make it be a good Mac citizen. It is “document based” but because it deals with multi-gigabyte VMs I can’t actually let it do the default document based behavior, which includes making hidden revisions whenever the files update (which means you get a dozen secret copies of the VM). In AppKit I can just turn this all off and still look identical to any other system app. (Caveat: if I want the recent files menu and don’t want to use a storyboard, this is actually not available even in AppKit without SPI). Also, I have a little configuration screen which is all buttons and checkboxes. AppKit lets me align it precisely how I want so it looks nice. In SwiftUI it would look pretty awful.
I can't vouch for any of the more recent versions of CS193P, but the original incarnation on iTunes U in ~2008 was my introduction to Objective-C and C, and I found it invaluable. I remember Loren Brichter's guest lecture on the development of Tweetie being really insightful.
Personally, I'd skip Swift / SwiftUI until you have a decent understanding of the Objective-C frameworks underpinning the vast majority of the macOS/iOS SDKs.
+1. I just finished up going through this course, and found it very well-taught. Bonus points, the projects are actually pretty fun and cover quite a lot of ground.
+1 as well. This helped me finally build my first app, and things learned translated very easily between apple platforms. Although, I don’t agree with dismissing Electron. It’s what I eventually pivoted to in order to create a desktop software business. For me, electron is the best of all worlds, literally.
Emphasis on “for me” aka, the indie developer, and in terms of sales (a measure of value) for this particular use case, electron was the foundational enabling technology.
i agree that this is delusional and i see it repeated a lot -- homelessness isn't just a byproduct of a lack of housing or a lack of affordable housing.
i remember having a conversation with a LICSW who did a tremendous amount of work with drug addicted and homeless populations; she explained that when she really needed to, she could "beg, borrow, or steal" a way to find better housing for someone, but that really wasn't the crux of solving the individual's problems, it's only one facet.
even if someone who has untreated mental illness or drug addiction suddenly has a great new place to live, they're not going to stay at that address long if their other needs aren't treated.
i'm not saying there shouldn't be more affordable housing ASAP, or that it wouldn't radically improve some lives, but i get the impression that a lot of folks think homelessness is mainly a housing problem when it's really not so simple, and i think that needs to change if the problems have any chance at getting improved.
pros:
there is no shortage of roles, my experience has been (especially now) that skilled ios devs are always in demand.
it’s fun to work on mobile software, imo —- you get to live in a cool space where good software and good UX are both essential. hopefully you like doing lots of UI debugging and thinking about performance.
you get to work a lot with product and design on almost any consumer mobile app you dev for. fun if you like collaboration
cons:
for the same reasons a niche is a good thing, there’s an eventual ceiling. you could probably sell your mobile experience and jump into an android or maybe front end web dev, but it’s easy to get “stuck” which is bad if you like versatility
there are definitely some annoyances in dealing with the “walled garden” or whatever you want to call it.
app store can arbitrarily decide you can’t visually style your app a certain way anymore (had this happen)
provisioning devices is annoying though has gotten less bad
i could go on… i’ve done it a long time and made a career out of it and really enjoyed it! if you like the idea of making products that are in people’s hands day to day it’s the right way to go.
there is an essay on this (available as a book) by sam harris that i really enjoyed; it changed my perspective on lying/the truth.
since, i have decided to abandon even "white lies" and i find it very freeing. in the long trail i think it makes life a lot simpler, even if situations arise where you feel as though you need to "spare someone's feelings," i've found that they're navigable in a considerate way that doesn't necessitate dishonesty.
the first time this happened, i felt like my brain was going to explode -- so wait, you want me to leave the main app feed broken and people pissed off because the comment-notes-experience-home-ex team's weekly comment rate is slightly regressing?
writing this out, not sure how i lasted as long as i did.
reply