← Home Creative Outcomes Archive Photos Replies About Also on Micro.blog
  • Whenever I get down on my job, I need to remember I’ve incorporated command line tools called ‘asdf’ and ‘thefuck’ into my regular life, and that I’m using computers the right way to just think less about the things I don’t want to think about while getting work done.

    → 10:37 AM, Jul 17
  • HTML, CSS, and JavaScript is now punk

    If you’re in a web development job where you find yourself occasionally writing HTML, CSS and Javascript in the style of what may be disparagingly called spaghetti code — code that presumably works on production but is atrocious to read — congratulations: you may actually be invaluable to your clients or organization.

    Hear me out. I hope that 90+% of code anyone anywhere writes is contextualized and normalized within some sort of framework or best practices that makes sense to your team. Ideally, your code gets reviewed by peers and is easy to understand and build upon if you for some reason were severed from your current role. I think most programmers would be happy to know their old code is still regarded as maintainable at the minimum. This is the code that should be driving most of your professional value.

    But… sometimes… shit just has to get done. Fast. I found myself producing a website that turned out to be a little browser-based PDF viewer with a floaty movie background, pre-rendered. Despite being annoyed by the sudden urgency of this request, I was able to cobble together a single index.html file full of HTML, CSS, Javascript, with the only 3rd party dependency being Mozilla’s PDF.js library (because WHOMST wants to even think about browser-based PDF manipulation more than they have to?!). I pushed this to a fresh project on Render.com. I made some changes based on feedback and all my commits were redeployed instantly.

    4 hours* of annoying kludge actually turned out to be exactly what my colleagues needed. I felt dirty putting together a single file monster after years of mentoring and managing a dozen or so Vue-based projects, but as the tired saying goes: the right tool for the right job.

    I can’t help but think that anyone brought up in the Modern School of Web Development would scoff at not using React or some component library as a basis of this project. Can you believe I didn’t even use a CSS reset?

    But going close to the web browser metal in this case let me work fast, and communicate clearly with actual produced work. It felt freeing in a way limiting yourself to a few powerchords and basic rhythms is all you need for punk rock. That, and a lot of learned expertise to make a limited toolset shine.

    * there was quite a bit of debugging to gain parity between desktop/mobile, mostly around events and what turned out to be a memory issue with our PDF and what an iOS device would allow a web worker to take care of in the background.

    → 12:30 PM, May 30
  • Everything is amazing, nobody is happy

    Did you never tell your phone, “Hey Siri, scan a document,” and then watch it pull up the document scanning UI? You didn’t buy an app, you weren’t marketed to or tracked, you didn’t do anything except say “Phone Do Scanner Now.”

    After scanning, did you fail to use your voice to dictate the filename “ThatKid’s Important Document?”

    When you uploaded the thing to the place, did you notice how you didn’t have to search anywhere for that file? That it was in the right place already?

    Did you ask it if David Cronenberg is Canadian, only to get a perfect sentence with attribution from a reputable source showing that yes, the D-Man is indeed Canadian?

    Did you forget we live in an age of miracles?

    Is perfection the only acceptable outcome?

    → 3:04 PM, Feb 22
  • Visionless (a Vision Pro take)

    Behold the Apple Vision Pro. The first new product category from Apple that I haven’t immediately bought into on Day One in many, many years.

    I see the potential. I really do. It may not be for everyone for everything like the iPhone, but I’d love to watch a movie on a giantass floating screen in my comfortable living room every once in a while. Sure.

    I’m just not convinced yet. I don’t think she looks convinced either:

    Apple Vision Pro wearer looking blank

    It’s an oddly blank expression. I don’t remember ever feeling so “nothing” in response to a promotional photo. An uncanny valley effect on my emotional response system.

    On the other hand, that same company released their most groundbreaking product in a decade or more with advertisements that looked like this:

    Image search result of silhouettes of people dancing on vibrant backgrounds with ipods

    The iPod is for dancing. For listening to music. For enjoying oneself through sound in a novel portable device.

    Vision Pro is for blank stillness. For starched button-up shirts. For an isolated existence.

    The journey of time and sentiment around technology between these two promotional campaigns is profound.

    There’s more here than I really want to write about at this time. I’ll be paying attention to how the device is received, but the unease I feel about it all… I wasn’t expecting that from an Apple product.

    → 1:33 PM, Jan 23
  • How to enjoy yourself when you've been conned online

    DISCLAIMER: This is not advice. Don’t do dumb shit on the internet like I do from time to time.

    Sometimes I buy things on the internet that need to be discreet. Sending things too. I’ve done it both ways a few times. NBD. I know the risks. I’m as careful as I can be.

    And I’ve been burned! Once!

    And I’ve accidentally been the burn-er — by mistakenly sending damaged goods which I promptly refunded upon photographic proof.

    And I’ve taken corporate cybersecurity “training” and should know better, but some people out there have really good Telegram game! So I was surprised when this source, one that I’ve used before for small discreet mailings multiple times with great success, outright conned me when the purchase was slightly larger.

    A day or two after the purchase, once I got my tracking, I knew I’d been had:

    Sender: info@worldrankingshipment.com
    Subject: Package on hold for a payment of a refundable insurance fee
    Body:
    
    Worldrankingshipment:
    
    DEAR CLIENT, Mr Troy Gravitt
    
    
    
     Your package registered with us Discreet bearing the tracking number : WPC00466979043804-CARGO has met formal terms and subsequent custom request but having your package under custody while it was scheduled for a 2 days Transit - Delivery quote.To ensure your package keeps it's proper transport and arrival in good state, the package must be INSURED.
    
    
    
    REASONS FOR THE INSURANCE SCHEME:
    
    Customized Packages being transported Within the US STATES  Countries and across any country in the European Union and African continent and the world in general would have to be registered into the US Insurance scheme.
    
    
    
    According to Section 7, Article 11 ( EU-07/11  039746/95) of 13th July 1999, the insurance scheme is 100% refundable and the cost of the refundable insurance would be paid according to the weight of the package in question.
    
    
    
    Cash Usage Details Below;
    
    
    
    Insurance Fee (REFUNDABLE)...........................$410
    
    Stamps Fee (REFUNDABLE)..............................$100 00
    
    Signatures (NON REFUNDABLE)........................$50
    
    
    
    Total.............................................................$560
    
    
    
    Kindly meet up to the aligned fee to help save time as your package is scheduled to be kicking off as your Medical Certificate gets through with Authentification.
    
    
    
    
    
    
    
    Tracking Details: [ REDACTED ]
    
    
    
    
    
    Track here: [worldrankingshipment.com](https://worldrankingshipment.com/)
    
    
    
    
    
    RECEIVED 
    
    
    
    EMAIL:
    
    Info@worldrankingshipment.com
    
    
    
    WEBPAGE: [worldrankingshipment.com](https://worldrankingshipment.com/)
    
    
    CONFIDENTIALITY NOTE:
    
    
    
    THIS ELECTRONIC MESSAGE CONTAINS A CONFIDENTIAL COMMUNICATION SUBJECT TO PROTECTION UNDER THE ATTORNEY CLIENT PRIVILEGE AND/OR THE ATTORNEY WORK- PRODUCT DOCTRINE. THIS MESSAGE IS INTENDED SOLELY FOR THE USE OF THE 
    INDIVIDUAL OR ENTITY TO WHICH IT IS ADDRESSED AND SHOULD NOT BE READ BY ANYONE OTHER THAN THE INTENDED RECIPIENT. IN THE EVENT OF A TRANSMISSION ERROR, PLEASE NOTIFY US IMMEDIATELY BY RETURN AND PROCEED WITH ITS DELETION.
    
    

    There’s 8 million red flags in this email. And I’m posting it so hopefully its easily searchable for someone else in the future.

    The redacted “tracking” number does indeed “work,” but that’s because this website is a Wordpress site that they’ve built to support a post type where they can put in all the data I already gave them. It looks like a real shipping service. But there’s so many sloppy mistakes, if this was where I was told to place my order I would have ran away a few dollars richer.

    From the vantage point of a mobile phone web browser, it looks legit, but no way am I paying more money for something I already paid for, including “shipping,” even if it is REFUNDABLE.

    I ask a couple questions, I get a couple responses, but the grammar and syntax is bad of the responder. I ask how the refund process works. He mentions trusting the process. He says he has my package. I ask for proof. The photo he sends me has the box label covered, and it’s grainy like a jpeg that’s been passed around a few times. He asks if I can hurry up because it’s cold here (Baltimore, Maryland, it is indeed currently cold). I ask him why he has a car with no heat. Back and forth. I call him out on how scammy this all feels and he has no convincing arguments other than “this is the way it works.”

    Whatever — I have a secure day job and can work from anywhere and I know how to use Photoshop. I have time if he has time.

    So I “pay” the insurance. I pay $3.00 through cashapp and make the receipt look like $303.00. Pixels, man… they’re easy. I send the screenshot.

    He’s surprisingly is fine with that, and reminds me I still have the other package and that one is going to be $280 in semi-refundable insurance. OK. $2.80 later gives me another timestamped transaction.

    I’ve spent almost $6 extra dollars on my own lols. He says he’s close to my address with the package. There’s one more checkpoint.

    “Checkpoint,” a completely normal thing normal courier services say when they’re driving a package to you.

    “How much?”

    “Has to be bitcoin. $180 now because you’ve wasted my time.”

    At which point I go ahead and doctor up a BTC transaction. Which are fairly instant, so I’m assuming he’s waiting for a wallet notification. Its a different wallet address than the other day, so I ask him if this is his wallet and he responds with an answer that makes no sense. Then he eventually replies with a screenshot showing the transaction did not go through.

    46 emails later, I’m done with my games. I try to tell him so. I send him screenshots of my photoshop files. When I first called him out in the morning, I told him that he needs to level up his game. 6 hours later, I think I’m still right.

    They’re now ready to take it in Zelle.

    “Get the Zelle done so I’ll be on my way.”


    Anyway, there’s better ways to buy things that are hard to buy, even on the internet. If you really want something that’s hard to get, it’s hard to get for a reason, and while there are always plenty of workarounds, they require some work to establish. Links that fall in your lap, even from trusted sources should be heavily, heavily scrutinized. Ask your sketchiest friend if it looks legit. (IRL friend invited me to the Telegram. We both have made successful purchases from their web presence before).

    As always, if it’s too good to be true, it is. ALWAYS.

    → 5:23 PM, Jan 18
  • How I try to email

    My yearly digital tidy and email hygiene reset

    • everything in the inbox(es) as of Jan. 2: mark as read
    • create folder(s) for previous year (2023), if you haven’t already made one1
    • inbox contents go to year folder
    • you’re now at inbox zero; don’t celebrate anything2
    • in settings, give your inbox list view a good body length, maybe 2-4 lines depending on your needs, so you can skim the email without having to open it. do you need to respond? really?
    • every time you check mail
      • unsubscribe. you know how to resubscribe if you really want it.
      • select all, mark as read

    Eventually I lose momentum with this practice. But I don’t sweat email that much anymore. There are easy ways to bubble up important messages if you need to, but skimming a few times a day and only digging into the obvious ones that need my attention is a good balance for me. I don’t bother archiving until it gets out of control. Or i’ll just make the 2024 folder.

    Red badges drive you crazy? Just disable them. You’ll still have email. How does that badge serve you? Make email work on your time.


    1. i inevitably do this whole process at least one additional time in the year, so i’ve already made the folder in that case. ↩︎

    2. its like counting angels on the head of a pin. are you at inbox zero for a minute? ten minutes? that email train is coming sooner or later. you’re not really in control of your inbox… let it go ↩︎

    → 5:37 PM, Jan 2
  • My next OLED TV probably just gets strapped to my face

    Frankly, I think everyone is so focused on comparing Vision Pro to the Quest 3 that they’re missing the point of what the Vision Pro really is: it’s going to disrupt the TV and projection screens industry. Why would anyone spend $3,000 on a cutting-edge TV when the Vision Pro will give you a resizable screen that’s also portable and can easily display all of your content?

    Raymond Wong gets it.

    I’m not a huge VR booster, but for the last two decades I’ve consumed Apple products while they’ve disrupted consumer electronics and consumer computing again and again. The Vision Pro is not something I yearn to use every day — unless it obsoletes the main screens in my life. I still haven’t bought that second monitor, and the only person in the house that wants to upsize our OLED TV is me.

    I think there’s a real possibility the Vision Pro is the OLED TV upgrade excuse I’ve been waiting for, and it’s pitch over the competition is very, very Apple: if you’re just buying for yourself, the Vision Pro is the simplest way to get a huge OLED TV. You don’t have to compare specs. You don’t have to measure distance from the couch, or be concerned about windows and glare. You don’t need a stud finder or to hire an installation service.

    It still comes down to absolutely nailing viewing comfort and immersiveness, and any doubts I may have harbored about a VR headset not getting there soon may be fading if I keep reading accounts such as Raymond’s above.

    → 3:37 PM, Dec 15
  • chatgpt made an audio processing script for me

    just because you want to be studio boy with logic pro doesn’t mean you take your eye off the ball: batch processing a bunch of stem-based audio projects from a digital mixer (zoom livetrak, tascam models, etc) into something you can listen to for quick reference.

    that’s the goal i wanted to achieve.

    that’s not a job for logic pro, that’s a job for a robot. a software robot. and you write software robot things and can figure out how to do stuff, but these days you have chatgpt.

    just look what me and the robot made in like 30 minutes.

    look at what my virtual robot music wife now does for me:

    Mixed and mastered 170411_190155 and saved as /Volumes/HD1-B/2023/170411_190155/170411_190155-mixed.wav and /Volumes/HD1-B/2023/170411_190155/170411_190155-mixed.mp3
    Mixed and mastered 170411_205828 and saved as /Volumes/HD1-B/2023/170411_205828/170411_205828-mixed.wav and /Volumes/HD1-B/2023/170411_205828/170411_205828-mixed.mp3
    Mixed and mastered 170205_145033 and saved as /Volumes/HD1-B/2023/170205_145033/170205_145033-mixed.wav and /Volumes/HD1-B/2023/170205_145033/170205_145033-mixed.mp3
    Mixed and mastered 210827_070410 and saved as /Volumes/HD1-B/2023/210827_070410/210827_070410-mixed.wav and /Volumes/HD1-B/2023/210827_070410/210827_070410-mixed.mp3
    Mixed and mastered 210830_014732 and saved as /Volumes/HD1-B/2023/210830_014732/210830_014732-mixed.wav and /Volumes/HD1-B/2023/210830_014732/210830_014732-mixed.mp3
    Mixed and mastered 210801_062039 and saved as /Volumes/HD1-B/2023/210801_062039/210801_062039-mixed.wav and /Volumes/HD1-B/2023/210801_062039/210801_062039-mixed.mp3
    Mixed and mastered 170127_125456 and saved as /Volumes/HD1-B/2023/170127_125456/170127_125456-mixed.wav and /Volumes/HD1-B/2023/170127_125456/170127_125456-mixed.mp3
    Mixed and mastered 210904_171356 and saved as /Volumes/HD1-B/2023/210904_171356/210904_171356-mixed.wav and /Volumes/HD1-B/2023/210904_171356/210904_171356-mixed.mp3
    Mixed and mastered 210907_202123 and saved as /Volumes/HD1-B/2023/210907_202123/210907_202123-mixed.wav and /Volumes/HD1-B/2023/210907_202123/210907_202123-mixed.mp3
    Mixed and mastered 210907_202146 and saved as /Volumes/HD1-B/2023/210907_202146/210907_202146-mixed.wav and /Volumes/HD1-B/2023/210907_202146/210907_202146-mixed.mp3
    Mixed and mastered 210830_014758 and saved as /Volumes/HD1-B/2023/210830_014758/210830_014758-mixed.wav and /Volumes/HD1-B/2023/210830_014758/210830_014758-mixed.mp3
    Mixed and mastered 170128_014120 and saved as /Volumes/HD1-B/2023/170128_014120/170128_014120-mixed.wav and /Volumes/HD1-B/2023/170128_014120/170128_014120-mixed.mp3
    Mixed and mastered 210812_043407 and saved as /Volumes/HD1-B/2023/210812_043407/210812_043407-mixed.wav and /Volumes/HD1-B/2023/210812_043407/210812_043407-mixed.mp3
    Mixed and mastered 210815_073303 and saved as /Volumes/HD1-B/2023/210815_073303/210815_073303-mixed.wav and /Volumes/HD1-B/2023/210815_073303/210815_073303-mixed.mp3
    Mixed and mastered 210831_050826 and saved as /Volumes/HD1-B/2023/210831_050826/210831_050826-mixed.wav and /Volumes/HD1-B/2023/210831_050826/210831_050826-mixed.mp3
    Mixed and mastered 210908_223050 and saved as /Volumes/HD1-B/2023/210908_223050/210908_223050-mixed.wav and /Volumes/HD1-B/2023/210908_223050/210908_223050-mixed.mp3
    Mixed and mastered 170203_201843 and saved as /Volumes/HD1-B/2023/170203_201843/170203_201843-mixed.wav and /Volumes/HD1-B/2023/170203_201843/170203_201843-mixed.mp3
    Mixed and mastered 170203_212157 and saved as /Volumes/HD1-B/2023/170203_212157/170203_212157-mixed.wav and /Volumes/HD1-B/2023/170203_212157/170203_212157-mixed.mp3
    Mixed and mastered 210901_051613 and saved as /Volumes/HD1-B/2023/210901_051613/210901_051613-mixed.wav and /Volumes/HD1-B/2023/210901_051613/210901_051613-mixed.mp3
    Mixed and mastered 230304_202248 and saved as /Volumes/HD1-B/2023/230304_202248/230304_202248-mixed.wav and /Volumes/HD1-B/2023/230304_202248/230304_202248-mixed.mp3
    Mixed and mastered 230304_210007 and saved as /Volumes/HD1-B/2023/230304_210007/230304_210007-mixed.wav and /Volumes/HD1-B/2023/230304_210007/230304_210007-mixed.mp3
    Mixed and mastered 210902_233807 and saved as /Volumes/HD1-B/2023/210902_233807/210902_233807-mixed.wav and /Volumes/HD1-B/2023/210902_233807/210902_233807-mixed.mp3
    Mixed and mastered 210904_163656 and saved as /Volumes/HD1-B/2023/210904_163656/210904_163656-mixed.wav and /Volumes/HD1-B/2023/210904_163656/210904_163656-mixed.mp3
    Mixed and mastered 210904_170826 and saved as /Volumes/HD1-B/2023/210904_170826/210904_170826-mixed.wav and /Volumes/HD1-B/2023/210904_170826/210904_170826-mixed.mp3
    Mixed and mastered 230316_023315 and saved as /Volumes/HD1-B/2023/230316_023315/230316_023315-mixed.wav and /Volumes/HD1-B/2023/230316_023315/230316_023315-mixed.mp3
    Mixed and mastered 230316_031805 and saved as /Volumes/HD1-B/2023/230316_031805/230316_031805-mixed.wav and /Volumes/HD1-B/2023/230316_031805/230316_031805-mixed.mp3
    Mixed and mastered 210815_073329 and saved as /Volumes/HD1-B/2023/210815_073329/210815_073329-mixed.wav and /Volumes/HD1-B/2023/210815_073329/210815_073329-mixed.mp3
    Mixed and mastered 230304_210945 and saved as /Volumes/HD1-B/2023/230304_210945/230304_210945-mixed.wav and /Volumes/HD1-B/2023/230304_210945/230304_210945-mixed.mp3
    Mixed and mastered 230304_204217 and saved as /Volumes/HD1-B/2023/230304_204217/230304_204217-mixed.wav and /Volumes/HD1-B/2023/230304_204217/230304_204217-mixed.mp3
    Mixed and mastered 210817_005908 and saved as /Volumes/HD1-B/2023/210817_005908/210817_005908-mixed.wav and /Volumes/HD1-B/2023/210817_005908/210817_005908-mixed.mp3
    Mixed and mastered 230304_205548 and saved as /Volumes/HD1-B/2023/230304_205548/230304_205548-mixed.wav and /Volumes/HD1-B/2023/230304_205548/230304_205548-mixed.mp3
    Mixed and mastered 230304_205751 and saved as /Volumes/HD1-B/2023/230304_205751/230304_205751-mixed.wav and /Volumes/HD1-B/2023/230304_205751/230304_205751-mixed.mp3
    Mixed and mastered 210821_005233 and saved as /Volumes/HD1-B/2023/210821_005233/210821_005233-mixed.wav and /Volumes/HD1-B/2023/210821_005233/210821_005233-mixed.mp3
    

    wow! look — i could have coded something that does this but python is not my first language, nor second nor third, so it would have taken time. i did this just by typing for the length of a friends rerun (with commercials). while high.

    this is a gosh darn tootin' excellent deployment of technology, if you ask me.

    but the copyrights

    to say this takes away a task from an audio engineer or even one who can script logic pro (I assume you can, maybe you can’t) is stupid because i was never going to pay someone to do this. maybe i’d just find time to scrub through some wav files, totally manually.

    this really unlocks a level of DIY audio workstation tooling for anyone, and substitute “audio” for whatever digital ingredients you feel like feeding the robots. when you work with these machines intentionally to generate something specific to your needs — and if you succeed in extracting value from the work — what you’re engaging in is so far refined from its source material (the training dataset), to call any part of it copyright infringement is kinda insane. sorry.

    it’s probably icky and legally dubious what the openAIs of the world do, but genie out of the bottle etc etc, and i could just as easily have generated the above with some heirloom variety, ethically-raised LLM running locally on my mac studio.

    go ahead and use the robots. please don’t be evil (like you’ve been doing all along right?).

    → 4:54 PM, Oct 24
  • the internet is broken and we can fix it

    if people want to make the internet more like the 90s / 00s, let’s do it and let’s do it right this time. Your gonna have to pay a little bit for it. That’s okay. Because this the kind of stuff that you, yes you, actually love about the internet:

    The internet is good things. For me, it’s things I love, like Keyboard Cat and Double Rainbow. It’s personal blogs and LiveJournals; it’s AIM away messages and MySpace top 8s. It’s the distracted-­girlfriend meme and a subreddit for “What is this bug?” It is a famous thread on a bodybuilding forum where meatheads argue about how many days are in a week. For others, it’s Call of Duty memes and the mindless entertainment of YouTubers like Mr. Beast, or a place to find the highly specific kind of ASMR video they never knew they wanted. It’s an anonymous supportive community for abuse victims, or laughing at Black Twitter’s memes about the Montgomery boat brawl, or trying new makeup techniques you learned on TikTok.

    Good shit, @katienotopoulos.bsky.social.

    → 2:12 PM, Oct 17
  • Safari Tab Groups: A Filing Cabinet for Hypermedia

    i figured out safari tab groups. their purpose, how they’re supposed to be used.

    scenario: you open a bunch of tabs loosely tied to the first tab, set A. you’re done with set A and now you do something that would start set B in a new tab, but its completely unrelated.

    this is where you save set A as a tab group with a meaningful name and close that shit. its there if you need it again.

    tab groups manilla folders full of semi-related bits of hypermedia in an infinite filing cabinet. you still have to open the drawer to find it and it maybe gets worse if you let it get too full, but extremely helpful when the need arises to look things up again.

    the goal is to not end the day in multi-tab, multi-window hell.

    its an anti- “just google it” approach, because doing that over and over for the same information throughout your life is insane. its also better than bookmarks because you’re not browsing one website, you’re engaging with a collection of living media. its your focus in tabs, captured as a group. get it?

    ok the UX is atrocious, for sure. its barely discoverable and thus seemingly has minimal utility.

    i think a fun way to do tab groups would be to show 5 placeholder indicators for browser tabs in the toolbar, such as semi-opaque dots in a row. once you fill those 5, reveal a “create tab group” button with a one-time popover explainer. ‘Untitled’ has to go away — use ML to just name the group for me.

    → 11:17 AM, Jun 16
  • Notification management

    Hypothesis: all difficulties in professional relationships stem from a communication imbalance. Not enough questions were asked, or politics prevents a certain kind of communication flow, or someone important didn’t have email for 12 hours.

    In the era of multimodal business comms, where inter-party convos happen across all available channels — in meetings (IRL/virtual), phone calls, emails, SMS, chat apps — what all digitally-connected comms channels have in common is the ability to control notifications: how and how quickly one receives a digital bloop that something might need your attention. Let’s include calendar events here as well.

    I do what works for me: zero email notifications, almost no red badges, and everything else kind of makes its way in, at least to my desktop during work hours.

    But other than the one or two colleagues I may have discussed notifications with, I really can only assume what notifications others receive, and that’s probably not great.

    Notifications are an important part of communicating asynchronously, but we’ve sort of left it up to the individual to decide their own notification hygiene. In the last 15orso years, I don’t recall reading anything influential about notification management on the scale of, for instance, Inbox Zero, bullet journaling or todo list workflows.

    So while I assume everyone with me on Teams gets Teams notifications, it seems that sometimes follow-up emails are necessary. Was that a notification problem or something else?

    Additionally, I’d like to occasionally send an email at 7pm without worrying that someone on my team thinks its urgent; I’ll never send an urgent email at 7pm and expect a response right away. I probably just had something on my mind I want to get out there. I personally assume emails to be non-urgent all of the time. Having realtime notifications for email always seemed kind of maddening to me.

    Lack of notification hygiene can also lead to too many bloops, obviously, and I think having an awareness of notification management — especially disabling as many red badges as you can get away with — can lead to greater mental health. For a newly installed app, assuming that the options are either “receive notifications” or “receive no notifications” could cause the over-notified to simply disable all new notification requests by default, which is fine until it isn’t.

    At the moment, having a team meeting to discuss notification standards seems like a woo-woo silicon valley-inspired business practice, but I’ve really never heard of such a thing. I’d like to hear about it though. Having a set of notification expectations seems very reasonable in 2023.

    → 10:36 AM, Apr 5
  • my bird feeder has been begging me to charge it for weeks.

    the problem is, we don’t need a lot of smart connected things. we each want one or two smart connected things.

    but we each want different connected things.

    that makes for a very large market of connected things. but there aren’t enough manufacturers to make them well, and they all generate knock-on effects that are unique to the user.

    so there’s just a lot of really bad digital crap out there and most of it is disappointing.

    → 11:10 AM, Mar 21
  • How to make a web app in 2023

    If I were to start a new web app in 2023, I’d use whatever full-stack server-side framework I prefer and host it on the service that will get it standing up on a public IP address quickly. That’s my sole criteria.

    Use bare metal JS for as long as you can stand. Dip into htmx or the hotwire stack when you need to get a little more fancy.

    Write your own reusable components. You can even call them partials and they can even work outside of a single file. Datepickers are native now so how complex is that widget you need really?

    Add icons and other assets directly to your app, like a gentleman of yore.

    Just go as long as possible without having to npm install.

    It’s been interesting to see how much folks have come out against the JS Framework-Driven-Development practices of the last 5-7 years, and they have some good reasons. Some of them are just telling on themselves or blaming trends for their bad decision making; I’ve made some mistakes in the name of hype myself. I don’t think React or Angular or any framework is inherently A Bad Way to Do Websites, but it’s been very frustrating for the thought leaders to only recently be waking up to the benefits of server-side generated pages — as if this is a newly discovered performance breakthrough and not the way the web worked forfucking ever.

    For the most part, most web developers aren’t out there trying to move fast and break things all the time. In that environment, new dependencies that immediately solve an issue in a brittle environment are appealing, and a package manager to manage that stack of dependencies even more so. You’ve got lots of new hires to onboard and don’t have time to walk each one of them through homespun code, so why not use as many open source packages as you can.

    No… most web developers are out there trying to make websites that just work, and the more senior ones remember when websites really did just work, and they know the reason was because they weren’t layered with so much shit.

    When you build websites that work and are easy to reason about, and where a little more time and consideration was spent working on code instead of just splat importing functions to make the CI pipeline go brrrr, you’re building durable software. You want to be able to throw a baseball at the reinforced glass window of your code and watch it bounce back, surface unmarred.

    Build something that works, make it sustainable. If you want to grow it, being able to honestly pitch durability in your code is a value-add you can tout to the right investors. Know how everything in your code works. Know where every line of code comes from (mostly your repo). Know that the modern browser environment is no longer a hellscape. Sleep soundly knowing that there are no vulnerabilities down your dependency graph that will break half your packages when you try to move hosting providers.

    It’s 2023. Code like it’s 2013.

    → 2:12 PM, Mar 8
  • It's okay to disengage

    Lately, when a website gives me guff, I just do not engage with the site. I’m glad I’m not the only one.

    Go further than just reading on the web. I have no tolerance for slow checkouts that want me to sign up for a website to order a cool t-shirt. Blame it on Shopfiy.

    I think that whenever a dumb website script is asking you to do something, or you become physiologically agitated by the performance of a digital experience, it’s important to take a step back and assess what value its actually providing to you. Does your attention (or your wallet) deserve better?

    → 1:07 PM, Mar 2
  • RSS
  • JSON Feed
  • Micro.blog