Skip to content

Instantly share code, notes, and snippets.

View mackuba's full-sized avatar
🌤️
Playing with Bluesky API

Kuba Suder mackuba

🌤️
Playing with Bluesky API
View GitHub Profile
@mackuba
mackuba / bluesky_events
Last active January 28, 2024 22:09
Munin configuration files
View bluesky_events
#!/bin/sh
if [ "$1" = "config" ]; then
echo "graph_title Bluesky firehose events"
echo "graph_category bluesky"
echo "graph_vlabel Events per second"
echo "graph_args --base 1000 -l 0"
echo "events.label Events"
echo "events.type DERIVE"
echo "events.min 0"
@mackuba
mackuba / firehose.rake
Created January 4, 2024 15:46
Downloading bsky firehose events to a file and streaming them from a mock server
View firehose.rake
require 'skyfall'
AVG_EVENTS_PER_SEC = 50
desc "Download a part of the firehose cache to a file"
task :fetch do
current_head = nil
sky = Skyfall::Stream.new(ENV['FIREHOSE'] || 'bsky.network', :subscribe_repos)
sky.on_message do |m|
@mackuba
mackuba / proper_way.rb
Created November 11, 2023 23:45
Bluesky login with federation
View proper_way.rb
# "proper" way, more future- and federation-proof
handle = form.get('handle')
password = form.get('password')
if dns_record = lookup_dns("_atproto.#{handle}")
did = did_from_dns(dns_record)
elsif res = open_url("https://#{handle}/.well-known/atproto-did")
did = did_from_well_known(res)
else
@mackuba
mackuba / bsky-hashtags.json
Last active September 8, 2023 15:33
Statistics of most popular hashtags on Bluesky in the last 30 days (2.6% of all posts include a hashtag)
View bsky-hashtags.json
{
"#art": 31687,
"#furryart": 21517,
"#furry": 20375,
"#nsfw": 12831,
"#1": 4572,
"#ListenToBlackVoices": 4341,
"#fursuit": 3950,
"#FogosPT": 3921,
"#ttrpg": 3378,
@mackuba
mackuba / bluesky_loader.rb
Last active July 3, 2023 23:01
Ruby script which loads posts from your Bluesky home feed and saves them to a local file
View bluesky_loader.rb
#!/usr/bin/env ruby
# Created by Kuba Suder on 25/04/2023
# Licensed under WTFPL License
require 'json'
require 'net/http'
require 'open-uri'
require 'set'
require 'time'
@mackuba
mackuba / Bluesky.swift
Created April 24, 2023 14:58
Basic Swift code to log in and send a post to Bluesky
View Bluesky.swift
//
// Bluesky.swift
// Created by Kuba Suder on 24/04/2023.
// Licensed under WTFPL License
//
import Foundation
struct LoginData: Encodable {
let identifier: String
@mackuba
mackuba / core_data_wwdc.json
Last active January 26, 2024 11:41
List of all WWDC talks about Core Data since 2010
View core_data_wwdc.json
[
{
"id": "wwdc2010-118",
"title": "Mastering Core Data",
"description": "Core Data contains a vast set of advanced features to help you better manage your data and evolve your application over time. Master the techniques for working with data in your application, from being more efficient to doing more in the database and changing how you store your data over time. Take your Core Data knowledge to the next level.",
"links": [
[
"HD",
"https://developer.apple.com/devcenter/download.action?path=/videos/wwdc_2010__hd/session_118__mastering_core_data.mov"
],
@mackuba
mackuba / creating_toolbar_buttons.md
Last active January 21, 2024 13:36
How to create toolbar buttons in AppKit
View creating_toolbar_buttons.md

Creating toolbar buttons

Recently I was writing a post about NSButton styles on my blog, and when I got to the part about toolbar buttons (Textured Rounded), I realized that I actually had no idea how to create a toolbar in AppKit, so I had to do some research first. I found some help in this sample project from Apple and this project on GitHub, and then I did some experiments with different combinations of things to see what works where.

This could probably be a whole separate blog post on its own (and maybe I'll make this into one), but for now I've put it here to not make that main article even longer.

Here's what I've found:

There are a few different kinds of buttons you can put in the toolbar:

@mackuba
mackuba / download_wwdc.rb
Last active January 21, 2024 13:36
Script for downloading all WWDC videos from a JSON feed
View download_wwdc.rb
#!/usr/bin/env ruby
# 06/2021: https://devimages-cdn.apple.com/wwdc-services/pb9e2d31/0CF104D6-F0B3-4AE8-B9F0-6F2D9F54A502/contents.json
# 11/2020: https://devimages-cdn.apple.com/wwdc-services/n233a99f/5D23F1E9-9551-4768-ACF3-E3920F9C572D/contents.json
# 5/2019: https://devimages-cdn.apple.com/wwdc-services/j06970e2/296E57DA-8CE8-4526-9A3E-F0D0E8BD6543/contents.json
# 8/2017: https://devimages-cdn.apple.com/wwdc-services/h8a19f8f/049CCC2F-0D8A-4F7D-BAB9-2D8F5BAA7030/contents.json
# 5/2016: http://devimages.apple.com.edgekey.net/wwdc-services/g7tk3guq/xhgbpyutb6wvn2xcrbcz/videos.json
require 'fileutils'
require 'json'
@mackuba
mackuba / fix_deezer.sh
Created November 2, 2020 14:39
Script to hide cookier banner in Deezer's Electron app
View fix_deezer.sh
#!/bin/bash
set -e
set -x
ARCHIVE="app.asar"
WORKDIR="deezer_unpacked"
TMPFILE="/tmp/deezerupdate.txt"
cd /Applications/Deezer.app/Contents/Resources/