Sign in

skip 🐾

@ski.pe
247 followers 383 following 536 posts

spite-driven development

PostsRepliesMedia
skip 🐾 @ski.pe · 20/09/2026
Sunday nothingburger for you: iPhone 18 Pro Max has a "Prepare to Ship" feature which intentionally discharges the 20 Wh battery. /usr/libexec/BatteryDischargeService handles this by calling [[NSProcessInfo processInfo] activeProcessorCount] and spawning that many NSThreads that spin until stopped
Screenshot of Binary Ninja decompilation output:

void worker_thread_work(void* closure_data @ x20)
{
    void* closure_data_1 = closure_data;
    int64_t closure_data__ofs0 = data_100014f98;

    if (!((uint32_t)*(uint8_t*)((char*)closure_data + closure_data__ofs0) & 1))
        return;

    int64_t iterations = 1;

    while (true)
    {
        if (iterations / 1000000 * 1000000 == iterations)
        {
            id current_thread = [[[NSThread self] currentThread] retain];
            int32_t is_cancelled = [current_thread isCancelled];
            _objc_release_x19(current_thread);

            if (is_cancelled & 1)
                break;
        }

        if (!((uint32_t)*(uint8_t*)((char*)closure_data + closure_data__ofs0) & 1))
            break;

        bool did_overflow = iterations + 1;
        iterations += 1;

        if (did_overflow)
            trap(1);
    }
}
313610
skip 🐾 @ski.pe · 03/09/2026
more samples because i love fonts bluesky please don't destroy the quality
A typographic sample of "#include <linux/skbuff.h>" set in DejaVu Sans Mono at various sizes, rendered by FreeType on macOS, with FT_LOAD_TARGET_MONOA typographic sample of "#include <linux/skbuff.h>" set in Consolas at various sizes, rendered by FreeType on macOS
010
skip 🐾 @ski.pe · 02/09/2026
spent a couple of hours messing with FreeType, it has a pretty nice C API which is nice to work with it seemingly defaults to the v40 interpreter (freetype.org/freetype2/do...), which basically looks identical to Windows in my eyes
A screenshot of a macOS 27 window rendering the pangram "Pack my box with five dozen liquor jugs" in Consolas at various sizes (8px, 9px, 11px, 12px, 14px, 16px, 18px, 22px, 24px, 32px, 48px, and 64px)
110
skip 🐾 @ski.pe · 22/04/2026
ok well i don't think bluesky is enjoying my 4644 × 1416 image so here's a downscaled ver
a massive, inscrutable spaghetti graph generated by graphviz. nothing meaningful can be seen from this zoom level (but downscaled)
110
skip 🐾 @ski.pe · 22/04/2026
also fun fact you can ask AttributeGraph (C++ incremental computation framework [?] that underpins SwiftUI, ala rustc salsa maybe) to dump the graph and pipe into graphviz and you get this shit. yeah idk
a massive, inscrutable spaghetti graph generated by graphviz. nothing meaningful can be seen from this zoom level
150
skip 🐾 @ski.pe · 10/07/2025
mobile
four design mockups of a music player mobile app. songs featured: Local (Girls like us) by underscores & gabby start, Taking over the Dancefloor by Nadia Oh, Infatuation by SOPHIE, and Guilty Pleasure by Chappell Roan.

the album art is prominently featured and its dominant colors spill over the screen. there are lyrics and queue management views that allow other people in the same listening session as you to add comments to lyric lines and queue items. when listening with others, a capsule containing everyone's avatar appears as a sort of "balloon" attached to the playhead in the seek bar.
261
skip 🐾 @ski.pe · 01/06/2025
i'm still writing my text editor (really slowly) today i got tree-sitter queries working and did a lot of boring API design for variable line height support, but now i can make `null` appear in 64pt Zapfino complete with a disgusting shadow
6468
skip 🐾 @ski.pe · 27/05/2025
191
skip 🐾 @ski.pe · 09/05/2025
sidebar
a sidebar to a music player interface, presenting the following navigation options:

Recently Added
Artists
Albums
Songs

within a section named Recent:
- Twin Fantasy (by Car Seat Headrest)
- Gnarly (by KATSEYE)
- Fancy That (by PinkPantheress)

within a section named Playlists:
- New Playlist…
- sophie slayage
- Top 50 Most Listened
- RAFIE BUBBLING UN…
- シティ・ポップ

within a section named Friends:
- two gay ass furries are listening to Magic Clock by f5ve together
- BRAT by Charli xcx is displayed with a comment that reads "wtf did she do to the cove…" and 4 other users
- Quote (from Cave Story) posting a review of Evangelic Girl is a Gun by yeule
2120
skip 🐾 @ski.pe · 06/05/2025
i am working on a music app with delightful springs
1101
skip 🐾 @ski.pe · 13/01/2025
apparently i am literally an AirPlay destination now so that's cool i guess
airplay routing popover showing "iPhone", "Skip R.", "Skip's AirPods Pro", and "Skip's Bedroom" as options
280
skip 🐾 @ski.pe · 12/01/2025
enjoying bluesky
screenshot of the bluesky ios app running on an ipad but the app doesn’t properly support ipads so the view is restricted to the size of an iphone
040
skip 🐾 @ski.pe · 02/01/2025
this happened in my first game
screenshot of balatro: 3,621 round score
010
skip 🐾 @ski.pe · 29/12/2024
130
skip 🐾 @ski.pe · 28/12/2024
he requires surgical procedure
also an unbalanced rrb-tree but even worse and in the other direction
020
skip 🐾 @ski.pe · 28/12/2024
this is my child, his name is RRB-tree, he is very sickly and does not know what to do
an unbalanced rrb-tree
240
skip 🐾 @ski.pe · 23/12/2024
i can be trusted with the swift compiler
@discardableResult
@inlinable
@inline(__always)
func measureAsync<T>(
  _ label: String,
  @_inheritActorContext _ operation: @isolated(any) () async throws -> sending T
) async rethrows -> sending T {
2110
skip 🐾 @ski.pe · 23/12/2024
a mysterious looking program that's drawing many copies of sqlite3 amalgamation source code on top of each other in variously colored panes. some nondescript debugging information is present
030
skip 🐾 @ski.pe · 16/12/2024
constraints #macdev
Code:

import {run, useConstraints} from 'capstone';
import {useReducer} from 'react';

function App() {
  const [counter, increment] = useReducer((count) => count + 1, 0);

  function handleClick() {
    console.log(':3');
    increment();
  }

  const views = useConstraints((c) => ({
    container: {width: c.gte(300), height: c.gte(200)},
    button: {},
  }));

  return (
    <window title='hello, capstone'>
      <view ref={views.container}>
        <button ref={views.button} onClick={handleClick}>
          {String(counter)}
        </button>
      </view>

      <constraint let={views.button.centerX} eq={views.container.centerX} />
      <constraint let={views.button.centerY} eq={views.container.centerY} />
    </window>
  );
}

run(<App />);

A native macOS window is shown off to the side, with a button that reads "5".
220
skip 🐾 @ski.pe · 15/12/2024
Cocoa + React = capstone github.com/slice/capstone
3254
skip 🐾 @ski.pe · 15/12/2024
peak
030
skip 🐾 @ski.pe · 12/12/2024
also today i instrumented chrome to find out why it was hanging & found out it spent 100ms on the main thread fetching the name of my display because of lock contention from some other, separate, chrome process that was wrecking havoc on SkyLight. nice
110
skip 🐾 @ski.pe · 08/12/2024
tried my paw at bevy today and i implemented a tree ui view, luckily it was only conveniently possible with features from the newest release (0.15), seems
230
skip 🐾 @ski.pe · 25/11/2024
even as a complete beginner to graphics programming, being able to point to a pixel and seeing the corresponding neighborhood in the sampled texture, ostensibly across all color attachments, is amazing. and it has print debugging
tracing how a fragment was shaded with the metal debugger. when a texture is sampled and incorporated as part of the input, i am able to inspect the neighborhood of values around the sampled pixel, as if i had sampled that area myself. useful!
110
skip 🐾 @ski.pe · 25/11/2024
their debugger is some insane shit, and to my understanding it's state of the art (when it doesn't crash)
metal debugger in action tracing how a vertex was calculated on the GPU. the shader source code is interleaved with each line's actual calculated value. i'm able to inspect the scene geometry in a 3D view
140
skip 🐾 @ski.pe · 25/11/2024
i know my code can be questionable but that's a bit much
macOS alert dialog

Malware Blocked and Moved to Trash

“Goalie.app” was not opened because it contains malware. This action did not harm your Mac.
150
skip 🐾 @ski.pe · 25/11/2024
current status:
xcode metal debugger showing a metric shitton of overdraw occurring (stuff being drawn outside of the view)
010
skip 🐾 @ski.pe · 24/11/2024
@radiatoryang.bsky.social wowow, this section of level design book felt uncannily apt and basically articulated my own feelings to me - why i'm obsessed with source engine and hammer, and why modern FPSes don't appeal to me as much as quake/doom/CS era FPSes
This reality would've been utterly unthinkable back in the golden age of level design. Imagine going back in time to 1993 and telling celebrity rockstar level designer John Romero that the most popular first person game of all time in 2011 does not rely on professional level designers building content in a level editor tool. This genre framing was inconceivable back in the 1990s, but in the 2010s it is the new normal.

The contemporary games as a service (GaaS) model emphasizes huge monolithic landscapes that go through dynamic seasons and demographic changes, instead of streams of static level content. Planning individual rooms is now safely below their concern. Is that still level design, as understood for the past 30-40 years? Obviously no.

This conception of world design, community design, season design -- it's bigger than a video game level, and demands a very different skillset. Thus the postlevel designer is less like an architect, and more like a city planner, festival organizer, TV show runner, or climate engineer.

https://book.leveldesignbook.com/culture/history-level-designer#:~:text=This%20reality%20would%27ve,or%20climate%20engineer.
160
skip 🐾 @ski.pe · 22/11/2024
"white girl save me" meme but it says "5K 27″ 120Hz mini-LED" instead
050
skip 🐾 @ski.pe · 19/11/2024
this is a VERY tired thing to say but it's getting incredibly difficult to ignore the sharp drop in software quality coming out of Apple
screenshot of macOS System Settjngs with "Accessibility" in the search field. it's not showing up in the results despite being a dedicated section in the app
140
skip 🐾 @ski.pe · 19/11/2024
and
a steam deck running NixOS
170
skip 🐾 @ski.pe · 13/11/2024
what if i just keep on posting screenshots of my wip website redesign instead of actually finishing it
a blog post titled "learn some basic rust by trying to cache with a hashmap". the design is cheeky and isn't quite sure what it's trying to evoke. the post body makes heavy use of delicate serifs (Freight), while everything else is set in Myriad (for some reason). a sidebar lists pages and contact links; above it lies a chunky hue slider that lets the user adjust the overall theme. a 2×6 grid of swatches appears to the left side of the article when active, displaying color names and hex codes of the website's new colors. a ton of cute 16x16 icons are littered about
230
skip 🐾 @ski.pe · 03/11/2024
hi
maps app screenshot i am in the netherlands
250
skip 🐾 @ski.pe · 02/11/2024
i guess i shouldn't be surprised this code broke after an Xcode upgrade
private extension OSAllocatedUnfairLock {
  func withLockSending<R>(_ body: (inout sending State) throws -> sending R) rethrows -> sending R {
    try withoutActuallyEscaping(body) { (_ fn: @escaping (inout sending State) throws -> sending R) in
      try withLockUnchecked { try unsafeBitCast(fn, to: ((inout State) throws -> R).self)(&$0) }
    }
  }
}

error: returning a task-isolated '@callee_guaranteed @substituted <τ_0_0, τ_0_1> (@sil_sending @inout τ_0_0) -> (@sil_sending @out τ_0_1, @error any Error) for <State, R>' value as a 'sending' result risks causing data races
note: returning a task-isolated '@callee_guaranteed @substituted <τ_0_0, τ_0_1> (@sil_sending @inout τ_0_0) -> (@sil_sending @out τ_0_1, @error any Error) for <State, R>' value risks causing races since the caller assumes the value can be safely sent to other isolation domains
note: '@callee_guaranteed @substituted <τ_0_0, τ_0_1> (@sil_sending @inout τ_0_0) -> (@sil_sending @out τ_0_1, @error any Error) for <State, R>' is a non-Sendable type
220
skip 🐾 @ski.pe · 31/10/2024
currently dual wielding magic trackpads
magic keyboard with touch id and numeric keypad flanked by two magic trackpads
190
skip 🐾 @ski.pe · 27/10/2024
color names (probably not going to go with this design though, someone helpfully pointed out that the wrapping can make it look worse because it doesn't follow a unambiguous sequence)
110
skip 🐾 @ski.pe · 27/10/2024
trying to channel this
the colored circles on the wrappers that snacks are packaged in, which are used to help color match printers
130
skip 🐾 @ski.pe · 27/10/2024
1133
skip 🐾 @ski.pe · 26/10/2024
yeah ykw idgaf anymore
next.js config with basically all of the experimental stuff turned on

experimental: {
	optimizePackageImports: ["@slicey/silk"],
	reactCompiler: true,
	serverComponentsHmrCache: true,
	dynamicIO: true,
	ppr: true,
	typedRoutes: true,
	typedEnv: true,
},
100
skip 🐾 @ski.pe · 20/10/2024
i am making a colorscheme
210
skip 🐾 @ski.pe · 12/10/2024
current status
120
skip 🐾 @ski.pe · 09/06/2024
this isn't even a "haha horny" thing my cursor just flies to the show button and clicks it before i even have time to think for some reason
"monkey sees action neuron activation" meme but with the bluesky "adult content" disclosure widget
14011
skip 🐾 @ski.pe · 24/09/2023
i caved this color combination is super cute, i was worried it would look strange
photo of a S9 aluminum apple watch (GPS) box, with light pink sport loop band box
210
skip 🐾 @ski.pe · 30/08/2023
it's still mindboggling to me how dense haskell is, the rust equivalent of this program is ~twice as large in terms of raw line count
a screenshot of some haskell code that makes heavy use of infix operators. there are various functions to make http requests to some scheduling-related service - a lot of the code is related to plumbing, transforming, and moving data around
120
skip 🐾 @ski.pe · 30/08/2023
well i wanted to write haskell so now i'm writing haskell. having "fun" by making it as unreadable as possible. sickosyes.jpg
computeDestination :: (HttpResponse r, MonadThrow m) => r -> m (Url 'Https, Option scheme)
  computeDestination resp = (liftMaybe MalformedResponse <=< runMaybeT) $ do
    location <- MaybeT . pure . (decodeUtf8Lenient <$>) $ responseHeader resp "Location"
    let correctedLocation = "/hs/login.hs" <> T.dropWhile ('?' /=) location
    uri <- MaybeT . pure . mkURI $ renderUrl root <> correctedLocation
    MaybeT . pure . useHttpsURI $ uri
110
skip 🐾 @ski.pe · 26/08/2023
macOS's character viewer is simply OP as hell. oh my god
a screenshot of the macOS character viewer, viewing the Unicode block for Katakana. a table sits above the character grid listing every (?) block in Unicode, and which category they belong to. the inspector off to the side shows the currently selected character, its Unicode codepoint, UTF-8 encoding, related characters, and all glyphs of the character across all installed system fonts. the sidebar off to the side delineates frequently used symbols, emojis, and other favorited categories of character. "Unicode" is the currently selected.
120
skip 🐾 @ski.pe · 31/07/2023
idk if this is a problem anymore in 2023 (hopefully not) but i have made a rating of every file dialog in windows
020
skip 🐾 @ski.pe · 29/07/2023
i love beige keycaps
my keyboard, which is a keychron k2 (version 2), without backlighting and equipped with an aluminum frame, with cannonkeys nicepbt classic beige keycaps installed

the accompanying wooden wrist rest is also from keychron

in the background is a gateron switch tester from mechanicalkeyboards.coma macro shot of the right side of the keyboard near the enter key. the keycaps are cherry profile, with a pleasant dip in the middle of each key. the legends are crisp and bold. the key material is matte and appears nicely brushed/texturedanother macro shot, this time beginning from the left edge. the escape key is visible at the top left
010
skip 🐾 @ski.pe · 24/07/2023
the client i use has a realtime feed of my following's likes lol
a screensht of skyfeed, showing the likes column
100