Table of Contents

Stuff which I have processed, but not sure where it belongs

[2019-08-11] alexmojaki/heartrate: Simple real time visualisation of the execution of a Python program. [[profiling]] [[python]] [[viz]]

[2019-10-11] kivy/kivy: Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS [[android]] [[gui]] [[tui]]

or maybe, that? …

[2019-09-06] Robot Framework

let's start with a real-life example from our web demo project. Here we have a test suite with one test case which tests that login is valid. As you can see, test data syntax is based on keywords.

[2020-03-27] not sure.. looks like cucumber??

[2018-11-18] blitzcode/rust-exp: Software rasterization, N-Body simulation and Game of Life in Rust + Haskell

[2018-12-16] Kobzol/hardware-effects: Demonstration of various hardware effects.

prepare proper template, choose programming language [[hobby]] [[competitive]]

make sure you can generate sceleton easily and run from terminal

fuzzing by injecting random sleeps [[testing]] [[python]]

develop quick prototype and post in blog?

[2019-12-20] 9 best open-source findings, November 2019 - DEV Community 👩‍💻👨‍💻 [[python]] [[js]]

And now I will show you something really unusual!
You can write thread-safe HTML/CSS/Python GUI framework. Wait, what? Yes, you heard it write. You can write your frontend in Python. It even supports Vue.js out of the box.
Written in Python.

[2019-12-20] 9 best open-source findings, November 2019 - DEV Community 👩‍💻👨‍💻 [[pandas]] [[dashboard]]

Linter for pandas. Finds errors and suggests improvements. Very helpful for ones who just start to work with data. Or teach how to work with it.
Written in Python.

Variance [[plt]]

The question: what are the conditions for the function A -> B to be a subtype of C -> D?

1. A is subtype of B means there is a special function castAB :: A -> B
2. Two casts compose into another casts, cast compositions are isomorphic (that is, castBC . castAB is essentially the same thing as castAC)
3. We wanna implement castAfB -> castCfD in order to show (A -> B) <: (C -> D)

  - X :: (A -> B) -> (C -> D)
  - we can only use functions applications and cast
  - X (fab :: A -> B) (c :: C) = ? :: D
  - the only thing we can do is to transform c to some another type, that is, we need castCT :: C -> T
  - now, we have (castCT c) :: T, basically, leaves us in the same situation, so, we actually need castCA :: C -> A
  - now, we have (castCA c) :: A, and (fab $ castCA c) :: B. The only way to get D is to use castBD :: B -> D

5. So, we have (A -> B) <: (C -> D), that is, A -> B is subtype of C -> D if C is subtype of A and B is subtype of D.

The return type (B and D) is covariant, since preserves the direction of <:
The argument type (A and C) is contravariant, since it flips the direction of <:

Container reading: covariant:

: S <: T, then ReadonlyCollection<S> <: ReadonlyCollection<T>

Container writing: contravariant:

: S <: T, then Consumer<T> <: Consumer<S>

- C++ poiners: covariant
- Java
  - arrays: covariant
  - Collection<? extends T>: covariant
  - Collection<? super T>: contravariant

[2018-01-06] Web Scraping With Rust /r/rust [[scrape]]

I have found no exaggeration when people say that Rust, with the right crates, has an experience similar to Python when it comes to a "scripting experience". :) This is why ALL of my new projects have been in Rust for the last year.

[2020-05-22] novoid/orgformat: Utility library for providing functions to generate and modify Org mode syntax elements like links, time-stamps, or date-stamps.

How to Thank Me

Speed up some open source projects via gold?

cleanup empty tags automatically, perhaps with confirmation, release on github [[pinboard]]

[2020-05-28] talk: Ideology | Lobsters [[programming]]

[2016-10-02] distributed system patterns [[distributed]]

[2016-09-15] caching styles [[caching]]

write-through: synchronous writes both to the cache and the backing store
write-back: initially, only in cache, write to backing store postponed until it's about to be modified/replaced

[2016-05-27] Your real job as a software engineer isn’t to write code. It’s to translate hand-wavy business requirements into detailed specs that a computer can

[2020-03-31] circle CI's mac plan is paid (40$/month min) [[circleci]]

[2018-12-09] mre/awesome-static-analysis: Static analysis tools for all programming languages

[2020-11-17] Ubuntu-latest workflows will use Ubuntu-20.04 · Issue 1816 · actions/virtual-environments [[githubci]]

use latest version of act (just download binary from github) [[githubci]]

act -P ubuntu-latest=ubuntu:bionic
you can docker exec -it /bin/bash into the container and debug there

firefox screenshots – element selection UI potentially useful for my auto rss thing [[rss]]

[2020-01-11] qawolf/qawolf: 🐺Create browser tests 10x faster [[testing]] [[promnesia]] [[grasp]]

QA Wolf is an open source node library for creating browser tests 10x faster:
    Skip writing boilerplate. Your browser actions are converted to Puppeteer and Jest code.

[2020-03-27] I mean, ok it looks pretty compact
puppeteer is only available on chrome though??

using tabs (tab stops) is a fairly reasonable way of aligning? [[codestyle]]

[2020-02-12] Dmitry Zuykov on Twitter: "firefox умеет автоматизацию через Marionette, который просто асинхронный tcp/json, для которого есть HTTP-враппер geckodriver, клиент для этой обёртки есть даже в нашем уютненьком и работает. Можно скрэпить через браузер, у меня… [[scrape]]

[2020-04-22] Tools that made you productive or saved you time | Lobsters

ML kit android [[ml]] [[android]]

Vscode? [[ide]]

I switched to NeoVim a few years ago and I'm not entirely sure whether Vim has caught up in features, diverged, or what ratio of the two.
That said, I'm not switching back. The only editor I'm really interested in is VSCode. Not that I use it much, but I am very impressed.

[2019-11-01] Why TDD Isn't Crap • Hillel Wayne [[testing]]

While the first PBT library was Haskell Quickcheck, arguably the most sophisticated is the Hypothesis Python library.

JSONCrush – Compress JSON into URI Friendly Strings | Hacker News [[json]]

[2020-03-30] karan/Projects: A list of practical projects that anyone can solve in any programming language.

[2020-03-31] Debugging with tmate · Actions · GitHub Marketplace [[debug]] [[githubci]]
ok, nice it's like circleci ssh debugging.
less convenient because you have to commit a step, but ok considering you don't need it often

[2020-01-19] Home - Mozilla Hacks - the Web developer blog

[2018-03-01] danluu: latency matters [[ux]] [[performance]]

try typing in terminal with 30ms ping

[2015-11-04] inversion of control

Inversion of Control principle, which basically states that the flow of your application depends on the object graph that is built up during program execution, and such a dynamic flow is made possible by object interactions being defined through abstractions.
This run-time binding is achieved by mechanisms such as dependency injection or a service locator.

[2018-06-16] Tweet from Gary Bernhardt (@garybernhardt), at Jun 16, 13:54 [[performance]]

In 2008, I was extremely frustrated by Ruby imposing a constant ~100 ms startup penalty on hello world. In 2018, computers are ~3.5 times faster (4479 vs. 1266 Geekbench for 2007 vs. 2017 MBP). TypeScript imposes a 1600 ms startup penalty on hello world.

pull tweet">

[2017-05-29] gdb tips [[gdb]]

Debugging multiple threads/processes

set follow-fork-mode [parent|child]
set detach-on-fork [on|off]

Attaching to a process in ubuntu:

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

use 'commands' 'end' [[gdb]] [[oldhabit]]

Tweet from Awesome (@awesome_re), at Nov 19, 16:36 awesome fuzzing [[testing]]

Awesome Fuzzing
Automated software testing technique that involves feeding pseudo-randomly generated input data.

pull tweet">

[2019-08-08] Web Colors [[design]]

[2019-08-18] cpuu/awesome-fuzzing: A curated list of awesome Fuzzing(or Fuzz Testing) for software security

Awesome Fuzzing

[2020-02-28] - EmbellishedWanConcentrate
wow, nice

[2017-05-08] gdb notes [[gdb]]

Get the python viewers from SVN

Add the following to your ~/.gdbinit
import sys
sys.path.insert(0, '/path/to/pretty-printers/dir')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)

You have to make sure that you have the package with the libstdc++ library compiled with the debugging flags.

For clang: -fno-limit-debug-info do not limit debug information produced to reduce size of debug binary

[2020-05-21] datalib/libextract: Extract data from websites using basic statistical magic [[scrape]]

Libextract is a statistics-enabled data extraction library that works on HTML and XML documents and written in Python.
Originating from eatiht, the extraction algorithm works by making one simple assumption: data appear as collections of repetitive elements. You can read about the reasoning here.

huh, this is niiice!

open source infromation extraction tools

hasn't updated for 2 years

lots of interesing links…

it's way better to start generalising after implementing at least two almost identical/copypasted things [[programming]] [[thinking]]

[2020-04-22] Will GitHub Actions support pullrequest events fr… - Page 3 - GitHub Community Forum [[githubci]]

Tweet from @EvMill [[julia]]

pull tweet">

@EvMill: "The combination of virtues that Julia offers to the computational scientist expands the universe of things that can be accomplished in a finite time by a normal human. It allows the scientist to imagine things that might not be imagined without it."

[2020-06-02] Where can you use SQLite? Embedded Systems: Yes Raspberry Pi : Yes Mobile … | Hacker News

Browsers: yes

[2018-11-18] mythmon/rust-nbodies: N-Bodies gravity simulation in Rust [[sim]]

[2019-12-18] Software Tools for Hobby-Scale Projects [[vps]]

Vultr - Dirt Cheap VPS Hosting
Since hobby projects rarely see high-volumes of traffic, the main concern is often cost rather than performance.

Vultr is my go-to solution for cheap hosting. As of this writing, the cheapest plan they offer is $2.50 a month. Although their cheapest plan defintely won’t be able to fuel your next high-powered computing project, it is a great solution when you need to host small scale tasks such as cron jobs.

[2020-04-15] pull tweet">(λ. borkdude) on Twitter: "Cool idea! Alternative: $ alias bbjq='bb "(json/parse-stream in true)" | bb' $ curl -s '' | bbjq '(->> input (map (comp :login :author)))' ;;=> ("jr0cket" "borkdude" "rymndhng" "borkdude" "OscarMarshall") babashka" / Twitter

[2020-04-25] Continuous Integration and Deployment

    def get_extension_page_firefox(driver):
        moz_profile = Path(driver.capabilities['moz:profile'])
        prefs_file = moz_profile / 'prefs.js'

        # doesn't appear immediately after installing somehow, so need to wait for a bit..
        for _ in range(10):
            if prefs_file.exists():

        addon_name = 'temporary_addon'
        # TODO ok, apparently I should add it to tips on using or something..
        addon_name = ''

        addon_id = None
        for line in prefs_file.read_text().splitlines():
            # temporary-addon\":\"53104c22-acd0-4d44-904c-22d11d31559a\"}")
            m = + r'.....([0-9a-z-]+)."', line)
            if m is None:
            addon_id =
>       assert addon_id is not None

[2019-12-18] Software Tools for Hobby-Scale Projects [[json]] - Free Cloud Storage for JSON

[2018-06-19] [[network]] [[testing]]

[2020-02-24] doom-emacs/ at develop · hlissner/doom-emacs [[opensource]]

Don’t be that guy who PRs 99 whitespace adjustments around his one-line contribution.

[2020-05-19] Solved: is there expression syntax to do pattern matching … - GitHub Community Forum [[githubci]]

Regex cannot be used in expression for now,

for fucks sake, can't use regexes in github acitons pipelines?

[2019-12-13] Show HN: Happy Hues – Curated colors in context [[design]]

[2019-12-20] Bugjail, a completely new way of debugging [[debug]]

[2020-01-31] basically, debugging database? e.g. you can trace all arguments, callers etc

use instead of ideone? [[ide]]

[2020-06-10] Ask HN: Which tools have made you a much better programmer? | Hacker News

[2019-12-26] awesome-selfhosted/awesome-selfhosted: A list of Free Software network services and web applications which can be hosted locally. Selfhosting is the process of hosting and managing applications instead of renting from Software-as-a-Service providers

API Management

[2013-02-11] Seems like uniqueness encoded not by type system, but by 'attributes', [[lineartypes]]

[2018-06-10] hackers guide to NN [[nn]]

[2020-10-13] Prefer Fakes Over Mocks | Alexey Golub [[testing]]

[2020-09-27] .

Something that I’m surprised a lot of devs don’t know; there are official domains you’re supposed to use for documentation, testing, etc. They are specifically reserved by IANA for these purposes. Originally I think it was just, but they now have a list of all them:

[2020-04-07] Show HN: A curated set of colour combinations [[design]]

[2020-05-17] Fragile narrow laggy asynchronous mismatched pipes kill productivity - Tristan Hume [[distributed]]

[2020-05-22] Scrapism - Scrapism scraping tutorial [[scrape]]

[2020-01-25] fpereiro/backendlore: How I write backends

[2020-03-31] nektos/act: Run your GitHub Actions locally [[githubci]]

ok it works with CI now…

[2019-11-17] Top 50 matplotlib Visualizations - The Master Plots (w/ Full Python Code) | ML+ [[viz]]

[2019-10-18] About GitHub Actions - GitHub Help [[githubci]]

[2020-05-20] pull tweet">Lukas Eder on Twitter: "Still one of the best explanations of covariance vs contravariance, or consumers vs producers" / Twitter

Still one of the best explanations of covariance vs contravariance, or consumers vs producers

[2020-05-28] javascript - Is localStorage under The Cookie Law? - Software Engineering Stack Exchange [[privacy]]

The cookie law is not actually about cookies (and its not actually called the cookie law). Its about tracking users, storing and sharing the information with third parties. Cookies are just the most popular method to track users.
If you don't want to show the "cookie warning" then just don't track the users beyond the session and don't share traffic data with third parties.
The actual directive.

[2020-09-29] on windows [[ci]] [[circleci]]

[2020-11-08] I want to know how to block IP addresses via Digitalocean? | DigitalOcean [[hosting]]

The simplest way to block specific IP address or ranges of them would be to set up a basic firewall using UFW. It is included with Ubuntu by default.
You can then block a specific IP address by running:
    sudo ufw deny from XXX.XXX.XX.XX

[2016-06-12] mutation testing [[testing]]

[2020-05-05] pull tweet">Robert O'Callahan on Twitter: "Prolific rr contributor Keno Fischer has a great writeup of how the Julia project is integrating rr to capture user bugs." / Twitter [[julia]] [[debug]]

Prolific rr contributor Keno Fischer has a great writeup of how the Julia project is integrating rr to capture user bugs.

[2019-12-08] Coroutines, exceptions, time-traveling search, generators and threads: Continuations by example

Tweet from @yoshikischmitz filtering data accept/reject [[ml]]

pull tweet">

@yoshikischmitz: Are there any apps out there for quickly filtering arbitrary lists of data w/ a simple "reject" and "accept" gesture? Thinking of something like Tinder but I make the cards, and can get a list of the accepted ones.

[2020-01-01] pavelfatin/toyide: Modern IDE plus custom programming languages with interpreters and compilers

[2020-02-16] Elastic tabstops - a better way to indent and align code [[codestyle]]

[2020-02-19] Open Source Design

[2019-11-05] Web Scraping With Rust - codeburst [[scrape]] [[scrapyroo]]

[2019-11-18] A great tool for this is the Chrome extension Selector Gadget

[2020-07-07] against testing | Lobsters [[testing]]

I don’t write tests to avoid bugs. I write tests to avoid regressions.

Guide to Web Automation - By

[2019-05-06] A Guide to Rust Graphics Libraries as of 2019 /r/rust

[2019-12-19] Discovering Hard Disk Physical Geometry through Microbenchmarking « Blog [[hardware]] [[performance]]
very impressive and thorough analysis
lots of detailed plots and pretty clear explanations

[2018-12-15] Tweet from Steve Canon (@stephentyrone), at Dec 15, 16:56 [[testing]]

I bring this up every time someone thinks “full code coverage” means anything at all, but:

double sin(double x) {
  return x;

void testSin() {
  assert( sin(0) == 0 );

pull tweet">

[2018-03-19] CIERRORTAG in comment, and then grep it [[testing]]

[2020-02-05] Working example of sub · Issue 694 · stedolan/jq [[jq]]

You have fallen in the main trap in jq: the comma IS NOT an arguments separator in function calls.
Allways use the semi-colon!

[2019-12-29] Web scraping in 2018 — forget HTML, use XHRs, metadata or JavaScript variables [[scrape]]

This approach can be used for scraping data from Airbnb. You don’t even need to open the page in a headless browser, you just need to get the token first and then use their API:

[2019-09-01] scrapinghub/portia: Visual scraping for Scrapy [[scrapy]]

Portia is a tool that allows you to visually scrape websites without any programming knowledge required. With Portia you can annotate a web page to identify the data you wish to extract, and Portia will understand based on these annotations how to scrape data from similar pages.

[2019-02-14] splash couldn't handle deliveroo main page. maybe should have waited longer though?? [[scrape]] [[scrapy]]

[2019-02-13] Self-contained minimum example script to run scrapy [[scrapy]]

[2018-12-09] spaCy · Industrial-strength Natural Language Processing in Python [[nlp]] [[parsing]]

[2019-02-21] ok, pretty interesting, but suitable for proper natural language, not my kind of logging…

[2019-08-17] public-apis/public-apis: A collective list of free APIs for use in software and web development.

[2019-04-08] Syntactor [[json]] [[ide]]

[2019-03-06] Mobile-Friendly Test - Google Search Console [[web]]

[2019-06-13] C++Now 2019: Kris Jusiak “Dependency Injection - a 25-dollar term for a 5-cent concept” /r/cpp [[programming]]

[2019-04-27] Rust cheat sheet [[rust]]

[2019-08-11] dariusk/corpora: A collection of small corpuses of interesting data for the creation of bots and similar stuff.

This project is a collection of static corpora (plural of "corpus") that are potentially useful in the creation of weird internet stuff. I've found that, as a creator, sometimes I am making something that needs access to a lot of adjectives, but not necessarily every adjective in the English language. So for the last year I've been copy/pasting an adjs.json file from project to project. This is kind of awful, so I'm hoping that this project will at least help me keep everything in one place.

Nullable strings Vs unset column in databade [[db]]

Most of this advice is stuff they tell you in school that doesn’t matter at all in reality.
Real advice:
- Normalize until it hurts, denormalize until it works. (I.e. prefer normal forms but denormal will have better performance.)
- You need nullable dates and nullable numbers. You never need a nullable string. If you must distinguish blank string from unset, add a column called “unset”. Using null for this will just result in bad data entry.
- Names should be stored as display_name, first_name, and last_name. A display name is not the same as just first plus last. They have different purposes, so don’t shove them together.
- When in doubt, just have a column full of JSON and figure it out later.
- Offset pagination is bad for performance. Avoid it at all costs unless you want some spider indexing page 10,432 of your archives to eat all your CPU.

[2019-12-11] A guide to Web Scraping without getting blocked [[scrape]]

[2020-03-09] sqldiff can generate diff [[sqlite]]

[2018-08-27] A Road to Common Lisp / Steve Losh /r/lisp

I've always liked this example, from _Practical Common Lisp_ (2007).
> `DOLIST` is similar to Perl's `foreach` or Python's `for`. Java added a similar kind of loop construct with the "enhanced" `for` loop in Java 1.5, as part of JSR-201. Notice what a difference macros make. A Lisp programmer who notices a common pattern in their code can write a macro to give themselves a source-level abstraction of that pattern. A Java programmer who notices the same pattern has to convince Sun that this particular abstraction is worth adding to the language. Then Sun has to publish a JSR and convene an industry-wide "expert group" to hash everything out. That process--according to Sun--takes an average of 18 months. After that, the compiler writers all have to go upgrade their compilers to support the new feature. And even once the Java programmer's favorite compiler supports the new version of Java, they probably still can't use the new feature until they're allowed to break source compatibility with older versions of Java. So an annoyance that Common Lisp programmers can resolve for themselves within five minutes plagues Java programmers for years.

Good summary on ML inerpretability [[ml]]

[2020-12-11] Monads and GATs in Nightly Rust | Hacker News

We don't need new languages without features: it has already been proven that you only need exactly one feature in your programming language to write any program possible. Look up single instruction languages for proof that it is possible and such single features languages exist.
What we need are languages with many features that are easy to use to create complex programs that are still easy to understand.

[2018-12-23] solveset is pretty useful!! [[sympy]]

[2019-06-23] Automate the Boring Stuff with Python [[automation]]
I guess it's good for other people who are not that good in programming, but I know all of it already

[2019-01-27] Give me 15 minutes & I'll change your view of GDB [[gdb]]

Sure, the thing that first showed me that gdb is more than just a console debugger you can use over ssh was this video few years ago:
CppCon 2015: Greg Law " Give me 15 minutes & I'll change your view of GDB"

[2019-02-01] meh seriously?? people on cppcon don't know that gdb has got tui mode? that's pretty mad.

[2020-07-27] Apache Arrow 1.0 | Hacker News [[ffi]] [[cachew]]

Apache Arrow is a nice in-memory data structure finding its usage in wide variety of projects; especially in data science due to its feather format which can be used to save data frame from memory to the disk.

[2020-05-16] JS Snippets — MacroPy3 1.1.0 documentation [[ffi]]

[2021-01-19] IPFS Support in Brave | Hacker News

[2020-12-07] Command Line Interface Guidelines [[cli]]

[2020-10-13] pull tweet">Kate (but spooky) on Twitter: "💡FAQ about displaying stuff in a terminal" / Twitter [[cli]]

FAQ about displaying stuff in a terminal

[2020-12-27] tinysearch/tinysearch: 🔍 Tiny, full-text search engine for static websites built with Rust and Wasm [[search]]

[2020-11-02] pull tweet">Tim Yao on Twitter: "@karlicoss I messed around with awk and came up with this script: ``` NR > 1 { printf (DEBUG && hiding) ? "\r" : "\n" } { printf "%s", $0; hiding=/DEBUG/ } END { printf "\n" } ``` It advances to a new line only if the current and previous lines didn't have DEBUG." / Twitter [[logging]]

 messed around with awk and came up with this script:

NR > 1 { printf (/DEBUG/ && hiding) ? "\r" : "\n" }
{ printf "%s", $0; hiding=/DEBUG/ }
END { printf "\n" }

It advances to a new line only if the current and previous lines didn't have DEBUG.

[2020-12-29] Top 10 Python libraries of 2020 you should know about | Tryolabs Blog [[hpi]]

PrettyErrors does only one thing and does it well. In terminals that support colored output, it transforms the cryptic stack traces into something that is much better suited for parsing with our puny human eyes. No more scanning the entire screen to find the culprit of your exception… You can now find it at a glance!

[2020-06-10] Create diagrams with code using Graphviz | Hacker News [[graphviz]] [[viz]]

1. For manual editing, dot -Tx11 displays the graph in a window and updates it automatically whenever you save. So you can have an editor window open and the dot window and see the results of every tweak.

[2021-02-09] eh, I mean ok, but it's not very interactive. although probably works better than entr for dot -> png?

[2020-01-20] A Totally Polished and not-at-all half-baked Take on Static vs Dynamic Typing • Buttondown [[mypy]]

[2020-01-20] A Totally Polished and not-at-all half-baked Take on Static vs Dynamic Typing • Buttondown

No, dynamic type systems are not inherently more open, by Alexis King. King is a PLT (programming language theory) researcher and an expert in both static and dynamic languages,

[2020-12-05] Launch HN: Deepnote (YC S19) – A better data science notebook | Hacker News [[notebook]]

Quick summary: - real time collaboration - integrations (databases, S3 buckets, environment variables) - persistent (and much much faster) filesystem - hardware doesn't shut off - many more features like variable explorer or automatic visualizations - much nicer interface so you can share with non-technical people - paid plan so you can build your data science team around it - no GPU/TPU machines yet, but that's coming

deepnote vs google colab

[2020-12-10] Implementing Rust's dbg! in Python [[python]] [[rust]]

Implementing Rust's dbg! in Python

[2020-10-30] Manually running a workflow - GitHub Docs

In this article
    Running a workflow on GitHub
    Running a workflow using the REST API
To run a workflow manually, the workflow must be configured to run on the workflow_dispatch event. For more information, see "Events that trigger workflows."

[2020-11-13] The Shape of Code » Evidence-based software engineering: book released

[2019-05-27] Tweet from Виталий Брагилевский (@bravit) [[fun]]

Виталий Брагилевский (@_bravit) Tweeted:
@SrgGrch У программистов одна проблема — они тупые. Цель разработчиков языков программирования в том, чтобы этот факт не сильно мешал. ?s=17

[2019-10-19] Empathy and subjective experience in programming languages /r/haskell [[empathy]]

[2019-01-27] Daibhi O Domhnaill on Twitter: "Лайфхак: если во время собеседования на вопрос "какова сложность этого алгоритма?" ответить "а что, тормозит что ли? да перенесите на SSD и все дела", то сразу возьмут техническим директором" / Twitter

pull tweet">

add favoriting with javascript? [[hackernews]]

crudini whitespace around option

kina like in MC?

[2019-08-31] circleci SSH debugging [[circleci]]

rant: fucking hell, github actions are impossible to configure [[webext]] [[githubci]]

there is no easy way to self distribute extensions

users have to do it manually

write a blog post of all the different kinds of testing I was ever doing? [[testing]] [[toblog]]

steps are isolated so I can't use pipenv properly… [[githubci]] [[configs]]

actions/setup-python@v1 – didn't work with act, failed at finding python versions [[githubci]] [[configs]]

debugging is impossible, it's some typescript shit that's unclear how to debug

can anyone explain why does it have to be this declarative bullshit and not a DSK or a subset of a real language like skylark? [[toblog]] [[ci]] [[githubci]]

I'm sure I'm missing out some imortant context, so please point me

[2019-10-13] Similar Subreddits To r/fossdroid By User Overlap [[reddit]]
build a tool that collects all your subreddits (bookmarklet??) oe just ask to copy list, queries them and shows new ones

update about 'ci' is tedious, but maybe deserves a separate post [[toblog]] [[ci]] [[grasp]]

usecase I can't do [[githubci]]

run build on matrix, then deploy artifacts.

I want for all builds to succeed, then deploy

adding directory to path to have effect for the rest of pipeline [[githubci]] [[toblog]]

# fuck me.
- run:
    echo "::add-path::$HOME/.local/bin"

at least now I can use pip install –user!

[2019-09-04] shell - Usage of dash (-) in place of a filename - Unix & Linux Stack Exchange [[cli]]

Using - as a filename to mean stdin/stdout is a convention that a lot of programs use. It is not a special property of the filename. The kernel does not recognise - as special so any system calls referring to - as a filename will use - literally as the filename.

hmm. observable notebooks are reactive? wonder if jupyter can be too [[jypyter]] [[observable]] [[notebooks]]

can embed calculations directly in MD [[observable]]

Bridge setup with Docker · tulir/mautrix-facebook Wiki · GitHub

pull tweet"> community maintained scrapers? [[wildcard]] [[promnesia]]

@Glench: @karlicoss Don't forget that this already exists in Gmail.js!

Tweet from @tryolabs [[dashboard]] [[hpi]] [[viz]]

pull tweet">

This library helps discover correlations and patterns in high-dimensional data using parallel plots and other graphical ways to represent information. [[scraping]]

A Smart, Automatic, Fast and Lightweight Web Scraper for Python [[emacs]] [[js]]

Tweet from @rsnous

pull tweet">

@rsnous: i think people overrate the difficulty of doing a FUSE filesystem because it's exotic; it might not actually be that much harder than making a usable CLI or a reliable file-tree-watching thing. when you make a filesystem, you don't have to design a frontend, for instance [[python]] [[caching]]

Extensible memoizing collections and decorators

A scraping command line tool for the modern web 

(seems that not updated)

[2018-11-09] about syntactically sharing code with JS [[toblog]]

[2021-01-15] A tour of Self | Lobsters [[smalltalk]]

[2021-01-26] - is a collaborative, community activity with a mission to create, maintain, and promote schemas for structured data on the Internet, on web pages, in email messages, and beyond.

[2020-12-22] Kaitai Struct: declarative binary format parsing language

A new way to develop parsers for binary structures.
Declarative: describe the very structure of the data, not how you read or write it
Language-neutral: write once, use in all supported languages:

[2021-01-18] Firemoon777/tgfs: telegram attachments in FUSE filesystem

[2021-01-01] Dashboard - Build Integrations 10x-100x Faster [[graphql]]

graphql api explorer?

[2020-07-11] CRDTs: The Hard Parts [video] | Hacker News

[2020-04-06] Ask HN: What are your favorite low-coding apps / tools as a developer? | Hacker News

[2020-06-21] Development with Nix: Python - Thomaz Leite [[python]] [[nix]]

[2020-03-07] gitsec — gitsec documentation

[2019-12-30] tiangolo/fastapi: FastAPI framework, high performance, easy to learn, fast to code, ready for production [[hpi]]

Interactive API docs
Now go to

You will see the automatic interactive API documentation (provided by Swagger UI):

[2019-12-30] tiangolo/fastapi: FastAPI framework, high performance, easy to learn, fast to code, ready for production

Conversion of output data: converting from Python data and types to network data (as JSON):
Convert Python types (str, int, float, bool, list, etc).
datetime objects.
UUID objects.
Database models.
...and many more.

[2019-10-05] Siderus - decentralized storage

[2019-11-21] eh, not very popular anywhere, unclear what are they doing

[2020-01-16] Hypermodeling Hyperproperties • Hillel Wayne

[2020-01-08] Write less code

Write less code
The most important metric you're not paying attention to

[2020-02-12] codelucas/newspaper: News, full-text, and article metadata extraction in Python 3. Advanced docs:

News, full-text, and article metadata extraction in Python 3

[2019-12-29] danistefanovic/build-your-own-x: 🤓 Build your own (insert technology here)

[2019-02-04] stanfordnlp/stanfordnlp: Official Stanford NLP Python Library for Many Human Languages [[nlp]]

[2019-02-11] FunctionalPlus/ at master · Dobiasd/FunctionalPlus

[2019-05-30] Roman Elizarov on Twitter: "I really wish all languages move to suspend instead of async/await. The advantage is clear. It is disturbing to see that some languages are still adding async/await even as a better way was already obviously discovered.…"

pull tweet">

[2019-06-20] PyCharm 2019.1 EAP 5 | PyCharm Blog

All-new Jupyter Notebooks

[2019-06-20] The Mypy Blog: Mypy 0.710 Released: New Semantic Analyzer

[2019-07-03] Color Selector - Random and Unique Colors [[design]]

[2019-07-07] Pull requests not triggering build - Build Environment - CircleCI Discuss [[circleci]]

[2019-07-07] Show test results for prospective merge of a Github | CircleCI Ideas [[circleci]]

[2019-10-06] Host Your Site Under Your Domain on IPFS

Set up DNS

[2019-09-20] Modern C

[2019-10-09] Railway Oriented Programming | F# for fun and profit

[2019-07-30] mahmoud/boltons: 🔩 Like builtins, but boltons. 230+ constructs, recipes, and snippets which extend (and rely on nothing but) the Python standard library. Nothing like Michael Bolton.


[2019-09-10] Is this project dead? · Issue 883 · scrapinghub/portia [[scraping]]

Provided Portia is no longer been offered by Scrapinghub, I think the company is no longer funding the maintenance of this project.

[2019-08-27] Should small Rust structs be passed by-copy or by-borrow?

Next I decided to crack open VTune. Here the difference was revealed plain as day!

[2020-02-11] Event-Driven Architecture | Hacker News

snovv_crash 4 minutes ago [-]
Event driven architecture is like GOTOs but with data instead of execution flow. Throw your data to the wind, someone somewhere will handle it (I hope).

[2019-08-17] JSON Blob | create, edit, view, format, and share JSON

[2019-05-26] The whole web at maximum FPS: How WebRender gets rid of jank - Mozilla Hacks - the Web developer blog

[2018-11-27] StackExchange/blackbox: Safely store secrets in Git/Mercurial/Subversion

[2018-11-26] thma/LtuPatternFactory at 1be9521591f8a7f06b35a7ae5929e7beaf0b8e43

[2019-12-02] avinassh/haxor: Unofficial Python wrapper for official Hacker News API [[hackernews]]

[2019-12-02] mvanveen/hncrawl: A scrapy-based Hacker News crawler. [[hackernews]]

[2019-12-02] donnemartin/haxor-news: Browse Hacker News like a haxor: A Hacker News command line interface (CLI). [[hackernews]]

[2019-11-23] optimization - Step-by-step example of reverse-mode automatic differentiation - Cross Validated

Step-by-step example of reverse-mode automatic differentiation

good explanation of automatic differentiation

[2020-01-06] crev-dev/cargo-crev: A cryptographically verifiable code review system for the cargo (Rust) package manager.

[2020-02-12] The First Time SICP Blew My Mind | Lobsters

"When will you learn? Closures are a poor man's object."

[2019-09-21] vasanthv/jsonbox: A Free HTTP based JSON storage. [[json]]

[2019-11-22] CppCon/CppCon2018: Slides and other materials from CppCon 2018

[2019-12-07] W3C Recommends WebAssembly to push the limits for speed, efficiency and responsiveness | Lobsters

[2019-12-20] Other examples of “standing-on-the-shoulders-of-giants” tools? | Lobsters

This was a tool written by three of the smartest people in the field at the time (Aho, Weinberger, Kernighan) to solve a problem they had often.
awk is still an excellent tool for exploring unstructured, semi-structured, and record-based data, and can be abused for lots of other use cases. Despite it’s age, it still includes many features that people expect from modern languages (hash tables, not having to pre-declare variables, easy use of regexes). If you know awk, you can throw out a lot of other shell tools, such as grep, cut, head, tail, and many more. Where I might have reached for a dozen or two line Python script, I often just write a dozen or two characters of awk.
“The AWK Programming Language” is one of the clearest and most concise technical books I’ve ever read, and definitely the best ROI I’ve gotten from reading any book.

[2019-12-21] elasticsearch-formal-models/ZenWithTerms.tla at master · elastic/elasticsearch-formal-models

[2021-01-01] Omar Rizwan

[2020-04-06] Old CSS, new CSS / fuzzy notepad

[2019-07-29] aqLists: unobtrusive DHTML and the power of unordered lists

[2019-09-06] Node-RED

[2019-09-21] Explanations - Introduction & Table of Contents (about X server)

[2019-09-10] Hugo and IPFS: how this blog works (and scales to serve 5,000% spikes instantly!) | With Blue Ink [[ipfs]]

Fun fact: if you’re reading this article, you’re using the distributed web. Since mid-February 2019, this blog, With Blue Ink, has been served through IPFS and the Cloudflare Distributed Web Gateway.

[2020-01-19] Kieran McHugh on Twitter: "Things I did but don’t do any more… - Say “guys” - Call things “crazy” or “mad” - Call myself “OCD” - Use “master/slave” technical terminology - Use “whitelist/blacklist” I don’t miss any of them and it actually feels good. Words matter!" / Twitter

pull tweet">

Not a native speaker here. What’s an alternative for whitelist/blacklist?
Allow list and block list
Which is also more descriptive than white/black list. It tells you what it does!

[2020-01-19] Kieran McHugh on Twitter: "Things I did but don’t do any more… - Say “guys” - Call things “crazy” or “mad” - Call myself “OCD” - Use “master/slave” technical terminology - Use “whitelist/blacklist” I don’t miss any of them and it actually feels good. Words matter!" / Twitter

pull tweet">

Interested to know what you use rather than master/slave and black/white list
Kieran McHugh
Depends on context, but Primary/Replica is an example. Instead of saying “merchant whitelist” I would say “allowed merchant list”.

[2020-01-14] CC2650STK SimpleLink™ Bluetooth low energy/Multi-standard SensorTag |

[2020-01-07] ignore - Rust

The ignore crate provides a fast recursive directory iterator that respects various filters such as globs, file types and .gitignore files. The precise matching rules and precedence is explained in the documentation for WalkBuilder.

[2020-04-07] linux - Moving a directory atomically - Stack Overflow

Since Linux 3.15, the new renameat2 system call can atomically exchange two paths on the same file system. However, there’s not even a glibc wrapper for it yet, let alone a coreutils way to access it.

[2020-04-08] Molecular Flipbook

Molecular FLipbook is a free and open-source molecular animation program. The animation toolkit is based on the GPL-license Blender Game Engine.

[2020-04-12] start [the libarynth]

The ever-growing Libarynth is almost exactly what its name implies – a hybrid between a library and a labyrinth, a maze of pages in various stages of completion.

[2020-05-12] Writing Python inside your Rust code — Part 3 - Mara's Blog

Writing Python inside your Rust code

[2020-05-19] Test coverage only matters if it's at 100% |

[2020-05-28] Tab Completion

Strings Shouldn't Be Iterable By Default

[2020-07-06] arrays - Merging Yaml arrarys nested - Stack Overflow [[configs]]

fucking yaml..

[2020-12-14] moreutils

ts: timestamp standard input

[2020-11-30] I am an 80 column purist | Lobsters

The solution is to use tabs for indentation but spaces for alignment. So for the second line of your code example, tabs would be used up to the indentation level of int, and spaces would be used from that point on to align float.

[2019-11-23] 1/(1 - 1/(1 - 1/(1 - Dan Piponi))) on Twitter: "@RAnachro There is a sense in which automatic integration has been completely solved. There's a program J s.t. if you write a program F that computes your f to any specified number of digits, J(F) can compute ∫f(x)dx (over [0,1] say) to as many digits as you like." / Twitter

pull tweet">

There is a sense in which automatic integration has been completely solved.

[2019-11-20] 🔎Julia Evans🔍 on Twitter: "thinking about what makes programming exercises good. So far I have: * I can easily see how it relates to my life * I learn something new * I can do the exercise in less than 3 hours * No complicated setup required" / Twitter

pull tweet">

hinking about what makes programming exercises good. So far I have:
** I can easily see how it relates to my life
** I learn something new
** I can do the exercise in less than 3 hours
** No complicated setup required

[2020-06-01] Testing CSS3 pseudo-classes on SVG elements [[svg]]

[2020-06-08] Interactive map of Linux kernel

[2020-06-14] Performance/Avoid SQLite In Your Next Firefox Feature - MozillaWiki

[2020-04-07] Hillel on Twitter: "@JYCabello All of them" / Twitter

pull tweet">

What testing/checking strategy SQLite follows?
All of them

[2020-04-16] Guix: A most advanced operating system [[configs]]

“Rolling out one’s own programming language” is a very common fallacy in software development. It struck hard many projects where the configuration or programming language was:

    limited in expressiveness and features;
    yet another language to learn (but not something very useful and reusable) which requires some effort on the user end and thus creates an entry barrier;
    harder to read (at least at the beginning);
    and often with poor performance.

relevant to configs-suck

[2019-12-24] Operators – Liquid template language [[huginn]]

[2020-09-12] From Rust to TypeScript | Hacker News [[errors]]

The fundamental difference between Rust's approach and Java-style checked exceptions arises when those three functions have different error types. In Java, you would annotate the function with every possible exception that the function can throw. In Rust, a library (or module with a library) would normally design its own Result type to encompass every error that the library/module can throw, and use that type on every error-producing function (you could reproduce the Java approach by defining a new Result type for each function, but I've never seen anyone bother with that).

[2020-06-18] Why is there a “V” in SIGSEGV Segmentation Fault? | Hacker News

And by using LD_PRELOAD magic, this can even be retrofitted onto existing applications without changing or recompiling them.

[2020-06-17] pull tweet">👩‍💻 DynamicWebPaige @ 🏠 on Twitter: ""We announce the release of a @ProjectJupyter kernel for SQLite, which supports the complete SQLite syntax as well as some extra operations such as opening or closing database files, or visualizing the data in different ways using Jupyter magics."" / Twitter

"We announce the release of a @ProjectJupyter
 kernel for SQLite, which supports the complete SQLite syntax as well as some extra operations such as opening or closing database files, or visualizing the data in different ways using Jupyter magics."

[2020-05-21] pull tweet">(2) Jared Forsyth on Twitter: "Here's a visual comparison of the data structures underlying three different "collaborative text editing" algorithms. - yjs uses a doubly-linked list of nodes - mine uses a tree - automerge uses a transaction log (and has in-memory caches for perf)" / Twitter

Here's a visual comparison of the data structures underlying three different "collaborative text editing" algorithms.
- yjs uses a doubly-linked list of nodes
- mine uses a tree
- automerge uses a transaction log (and has in-memory caches for perf)

[2021-01-07] PixiJS

[2021-01-03] REPL-Based Development Demo on Vimeo [[towatch]] [[repl]]

good examples of vertical alignment in myinfra [[codestyle]]

join pharo discord (later) [[smalltalk]]

arranging code in grid would be very convenient at times (e.g. typeclass/data type axis) [[programming]]

pull status"> - Subtyping is good, state is fine when used with care, inheritance is a Bad Plan, composition is a Good Plan, algebraic datatypes are objectively morally correct. I can't think of any more takes

developing under windows… [[windows]]

[2021-02-16] always use TEXT; STRING does implicit type conversions [[sqlite]]

[2021-01-31] jamalex/notion-py: Unofficial Python API client for

[2021-02-03] Apache Arrow 3.0 | Hacker News [[ffi]]

[2021-02-16] #🧠-learning [[opensource]]

Not an Athens developer, but hopefully can give some general advice..
Generally open source projects welcome contributions, especially if the contribution complies with project guidelines, covered with tests, doesn't contain unrelated changes, etc.. However there are some things to consider:

One of the biggest factors is maintainer's time, and often guiding a person to improve their code takes more time & energy than implementing the same from scratch.
I guess for this the only advice is to read guides carefully, search stuff & ask elsewhere if possible, so you would ideally only ask the maintainers for things specific for the project.
Basically whatever you would do in general when you're doing independent learning. Although of course the author might be happy to guide you for small things -- which is great too. But good to keep this in mind.

Another factor to keep in mind is that the developers might want to keep the project compact and minimal in terms of features.
The reason is that generally the more features you have, the more code you have ===> the more likely it would break which is a burden on the maintainer.
Plus depending on the project features that maintainer isn't using themselves would end up poorly tested (yet another reason to make sure you have tests with your contribution if possible).
To avoid this it's best to ask the maintainers whether the feature would be welcome in advance. It's very sad to work on something for a week to find out they don't want to merge it. In some cases you can work off a fork, but not always.

Apart from this, I can't imagine the cases when bugfixes or extra test coverage won't be welcome. Which could also be a great way to get familiar with a new project (or even programming language!).

[2021-02-16] LambdaP/opensource-challenges: A list of resources to think about free software and open source challenges [[opensource]]

[2021-02-11] Observable’s not JavaScript / Observable / Observable

[2021-02-11] Introduction to require / Observable / Observable

hmm, not clear how sliding average works for influx… I guess it sort of 'smoothens' stuff a bit [[influxdb]]

Cambria adversarial interop

E.g. integrate with guthub, but use custom software for it

[2021-02-06] Show HN: LibreTranslate – Open-source neural machine translation API | Hacker News

[2021-02-22] Cross-Database Queries in SQLite | Hacker News

[2021-02-19] Glamorous Toolkit [[smalltalk]]

[2021-02-17] Events that trigger workflows - GitHub Docs [[ci]] [[promnesia]] [[hpi]]

[2021-02-11] KDAB/hotspot: The Linux perf GUI for performance analysis. [[performance]]

[2020-09-09] lets-plot/ at master · JetBrains/lets-plot [[dataviz]] [[python]]

[2020-11-14] Write once. Deploy everywhere.— BeeWare [[python]] [[android]]

Write your apps in Python and release them on iOS, Android, Windows, MacOS, Linux, Web, and tvOS using rich, native user interfaces

[2020-06-11] sourcehut hub

[2020-07-23] Inside a Collaborative Text Editor — Caolan McMahon [[crdt]]

some nice CRDT illustrations

[2020-07-22] Write code that is easy to delete, not easy to… — programming is terrible [[programming]]

new link

[2020-12-10] CI for performance: Reliable benchmarking in noisy environments [[performance]]

[2020-06-19] pull tweet">Conor White-Sullivan on Twitter: "Accidentally stayed up until 7am on a videocall with @girba learning about Pharoah Smalltalk and #gtoolkit Have not been this excited about a new programming paradigm since I learned Clojure. Amazing amazing tool they have, with almost no on-boarding yet. Just how I like it!!" / Twitter [[smalltalk]]

Accidentally stayed up until 7am on a videocall with @girba
 learning about Pharoah Smalltalk and #gtoolkit
Have not been this excited about a new programming paradigm since I learned Clojure.
Amazing amazing tool they have, with almost no on-boarding yet.

[2016-08-11] volatile memory? [[java]]

acquire/release синхронизированные доступы, частичные гарантии на ordering, без sequential consistency, средне тяжелые на железе
volatile сигхронизированные доступы, полные гарантии ordering, sequential consistency, очень тяжелые на железе

[2016-10-02] Bridge: composition + pointer to the implementation passed in the constructor

class Car {
  public Car(Engine *engine) {

class SportCar extends Car {
  public SportCar() {
    super(new SuperSportEngine());

essentially Pimpl, but implementations might be different

[2016-05-14] Annotations vs marker interfaces [[java]]

Annotations can be allowed to only live in compile time
Annotations are not inherited (e.g. if A is Serializable and B extends A, B is automatically Serializable, which might not be the case)
Annotations have to be checked with reflection, whereas marker interfaces can be checked by compiler

[2015-11-09] kill -QUIT <pid> to dump threads state [[debugging]] [[java]] [[jvm]]

[2016-08-07] java 9 features [[java]]

Jigsaw: modules
Immutable collections
new HTTP module (+websockets?)
process control

[2016-09-22] Getters can be used in method references (whereas fields can't)

[2015-11-28] wildcard generics [[java]]

B extends A
C extends B

List<? extends A> could be a List or List or List<C>

void consumer(List list);

if we want to pass List to consumer, we have to create a new list since lists are not covariant on the argument type

solution: void consumer(List<? extends A> List)

[2016-04-01] static constructor vs regular constructor [[oop]]

  • can be named

  • you can cache objects

  • extra validation:
    no simple way to validate input before delegating this call

    DeleteMessagesTask(@NonNull AccountComponent accountComponent, @NonNull Bundle bundle) { final SolidList<Message> messages = bundle.getParcelable(KEY_MESSAGES); // TODO throw if null? maybe something specific, not just NPE? assert messages != null; this(accountComponent, messages);

[2016-10-30] Java: good and bad [[java]]


  • JVM
    • interop with other JVM languages
    • portable
  • well defined standard:
    • safe semantics
    • concurrency
  • community
  • libraries


  • super call goes first
    • use static method which takes the parameters? Problem with two arguments, although we could make a private constructor for that…
  • no real notion of immutability
  • no nullable types
  • no generics declaration site variance (producers/consumers)
    • example: immutable Stream<T>, method which returns Stream<R>. If we override it as List in java, there is no way to return List<R>
  • no sum tupes/closed classes (enums are the closest alternative but have no states)
    • if we make interface private, it is hidden from outside
    • alternative: factory methods, enum methods take 'state' as argument
  • no type synonims
  • no 'const' keyword


  • lack of operators overloading (but sometimes it makes sense)
  • GC: both good and bad

[2021-03-06] actions on forked repository: [[githubci]]

go to your fork, click "I understand my workflows, go ahead and enable them"
ok, pypi would fail presumably…

[2021-03-06] right

Pull request events for forked repositories
Note: Workflows do not run on private base repositories when you open a pull request from a forked repository.
When you create a pull request from a forked repository to the base repository, GitHub sends the pull_request event to the base repository and no pull request events occur on the forked repository.
Workflows don't run on forked repositories by default. You must enable GitHub Actions in the Actions tab of the forked repository.

would be nice to have a tool to explore someone's pinboard bookmarks… maybe in gephi or something [[pinboard]]

or lightweight promnesia marks?

[2021-03-06] X

In my opinion, one killer feature of VSCode is the ability to connect to WSL, remote server and Docker container.
As someone mainly developing on WSL2, I use this feature everyday. I only use Idea when I need to use Java or Kotlin, because its language support is really good.

[2021-03-06] echo '' | fzf –print-query –preview 'jq {q} input.json' This was posted t… | Hacker News [[jq]] [[json]]

    echo '' | fzf --print-query --preview 'jq {q} input.json'
This was posted the last time this came up.

[2021-04-08] text processing - Can grep output only specified groupings that match? - Unix & Linux Stack Exchange [[grep]]

grep -oP 'foobar \K\w+' test.txt

extract match only with grep

[2021-04-04] Write-Ahead Logging [[sqlite]]

Beginning with version 3.22.0 (2018-01-22), a read-only WAL-mode database file can be opened if the -shm and -wal files already exists or those files can be created or the database is immutable.

[2021-02-16] Building Rich Terminal Dashboards | Hacker News [[cli]]

[2020-08-01] jamiebuilds/tinykeys: A tiny (~400 B) & modern library for keybindings.

[2020-05-18] cookiengineer/stealth: Stealth - Secure, Peer-to-Peer, Private and Automateable Web Browser/Scraper/Proxy

[2021-04-30] Introduction to Computational Thinking [[julia]]