here you goThings I’ve made, read and saved — shared here.

Archive

9,685 entries: 91 from X, 8,928 from Pinboard, saved 1998 to 2026.

Browse by tag, site, author, folder or language

Tags

Sites

Authors

Folders

Languages

Showing 3,801–3,850 of 9,685

2020

Zig Programming Language

The Zig Programming Language is an open-source programming language designed for robustness, optimality, and clarity.

Introduction

Code

Learning

Articles

Project Management

FFI

Twitter

Provide or link to a small (50-200 ish lines) idiomatic Go program demonstrating concurrency. (Elegant use of goroutines, channels, etc)

I'll provide the equivalent Zig program using async/await and std.event.Loop for comparison.

My notes

Cross compiling zig

Code

# crosscompile.zig
const warn = @import("std").debug.warn;

pub fn main() void {
    warn("Hello, world!\n");
}

Compiling natively on Mac OSX

$ zig build-exe crosscompile.zig
$ file crosscompile
crosscompile: Mach-O 64-bit executable x86_64

Cross-compiling for Linux

The C ABI tuple of (operating system, architecture, C compiler environment) is defined by --target-os --target-arch --target-environ flags of zig. [ref]

zig build-exe crosscompile.zig --target-os linux --target-arch x86_64

Verify the executable file type created:

$ file crosscompile
crosscompile: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped

Software written in Zig

notes#programming-language#zig

Publishing

See also: 100-page-book

Lulu specific notes

Fixing Embedded fonts error

When you are trying to publish a book via Lulu.com, you might encounter "embed fonts" error. This is the workaround I found on the web that uses ghostscript:

gs -dSAFER -dNOPLATFONTS -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \
 -sPAPERSIZE=letter -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer \
 -dCompatibilityLevel=1.4 -dMaxSubsetPct=100 -dSubsetFonts=true \
 -dEmbedAllFonts=true -sOutputFile=new.pdf -f old.pdf

See also: Embed fonts in a PDF with pdflatex which shows a simpler technique:

pdf2ps doc.pdf
ps2pdf13 -dPDFSETTINGS=/prepress doc.ps doc2.pdf

However, the resulting PDF looks fuzzier than the original one.

Resizing all pages of a PDF to a common size

This can happen if you are combining multiple PDF documents (say using pdftk) to make a compendium. You can resize all the pages to be of the same size using ghostscript -- source:

gs -o /path/to/resized.pdf
   -sDEVICE=pdfwrite
   -dPDFFitPage
   -r300x300
   -g2550x3300
   /path/to/original.pdf

Cropping PDFs

Self publishing tools

Manning

Libraries

  • PrinceXML
  • Speedata Publisher to generate reports. XML->PDF. Uses LuaTeX. AGPL/Commercial license.
  • PreTeXt An authoring and publishing system for authors of textbooks, research articles, and monographs, especially in STEM disciplines. The best of DocBook, LaTeX, and HTML. Outputs: print, PDF, web, EPUB, Jupyter Notebooks, braille,. github; XML based syntax.

Web publishing

Zines

Book covers


See also: pandoc

notes#books#publishing

Pandoc

Pandoc is a program that converts between various text markup formats.

Pandoc allows you to customise the output via extensive command line arguments and by templates.

My projects related to Pandoc

  • Semantic CSS for Pandoc -- an attempt at finding and using various semantic Cascading Style Sheets with Pandoc'd default HTML rendering.
  • Pandoc + Missing.css -- is instructions on how to use missing.css to style pandoc output. Summary: you will have to wrap the $body$ variable in <main> </main> tag.

Writing Papers

Guides on using Pandoc to write books

Editors

Customising pandoc

These are some of the examples of users customising pandoc to output LaTeX, HTML to their taste and requirements.

My own attempts are here:

Templates

Filters

Pandoc filters can be written in Haskell which modify the document structure programmatically. These are some of the user written filters that are instructive:

Exporters

Ox-pandoc is an exporter that translates Org-mode file to various other formats via Pandoc.

Markdown to InDesign; Pandoc now ships with a writer able to produce an ICML file from any Pandoc-supported input file format.13 ICML is the document format of Adobe InCopy; Dec 2015.

Books written using pandoc

See also

  • Laika -- Text Markup Transformer for sbt and Scala applications, transforming markdown and reStructuredText to HTML and PDF
  • lise-henry/crowbook -- converts books written in Markdown to HTML, LaTeX/PDF and EPUB.

Styling

Sites built using Pandoc

Book publishing

  • [output.pandoc.profile.pdf] + output-file = "output.pdf" + to = "latex"

Using with weasyprint

From an HN thread:

It's even possible to replace (Xe)LaTeX with weasy, a Python HTML-to-PDF converter. It supports two-colums via CSS, automatic CSS hypens, CSS page counters and embedding SVGs. I just needed an HTML header with CSS in the markdown file.

$ pandoc --filter pandoc-citeproc --csl ieee.csl --bibliography=paper.bib --smart --normalize -f markdown+multiline_tables+inline_notes -t html5 -V margin-top:0.5in -V margin-bottom:0.5in -V margin-left:0.5in -V margin-right:0.5in -o output.html input.md
$ python3 -c "from weasyprint import HTML; HTML('output.html').write_pdf('output.pdf', presentational_hints=True)"

For LaTeX-style math equations I added mathjax-pandoc-filter as filter to the pandoc args:

--filter ~/node_modules/.bin/mathjax-pandoc-filter -Mmathjax.centerDisplayMath -Mmathjax.noInlineSVG

SVG2PDF

^b5a0d2

If you are trying to convert an HTML page to PDF using Pandoc, and the HTML page has svg drawings (e.g.: this excellent post - The Big LLM Architecture Comparison by Sebastian Raschka), pandoc might choke on it unless you have rsvg-convert installed (on macOS: brew install svg2pdf). As you can see from this commit that added passing svg through rsvg-convert command to covnert it into a png file.

also had to install the latex svg package.

even after this the PDF generation failed with:

pdflatex: major issue: User/administrator updates are out-of-sync.                                                                                                    Error producing PDF.
! Package svg Error: File `1e7afdcc9b596b58d739c7d01b66c47cb52f6c23_svg-tex.pdf                                                                                       ' is missing.
                                                                                                                                                                      See the svg package documentation for explanation.
Type  H <return>  for immediate help.                                                                                                                                  ...
                                                                                                                                                                      l.140 ...dcc9b596b58d739c7d01b66c47cb52f6c23.svg}}

notes#markdown#pandoc

NixOS

Why NixOS

Via this HN Comment Maintaining your system configuration is an exercise in software development like any other - if you lack rigor or discipline, your codebase will become painful to work with. Nothing is ever one shell incantation away - it has to be carefully architected into the existing system.

That being said, once you get the hang of things, you reap amazing benefits:

  • You can clone your system to any machine, and immediately have an identical environment
  • You can share system configurations as code (declare the means for hosting a website in its repository, for example)
  • You can use a fully-fledged programming language to configure any part of your system
  • You can make use of an extensive ecosystem of easily composable, prebuilt NixOS modules
  • You can seamlessly integrate with Nix, allowing for ephemeral development environments and shells with packages, eliminating much of the need for imperative package management
  • Everything in a Nix-based system must be derived strictly from (lockfiled) inputs, making the reproducibility guarantees incredibly strong (barring any network errors or resources being taken down)
  • The declarative nature of anything Nix-based means that every change is documented - your system never shifts from the source of truth, compared to other distros where discipline is required to maintain reproducibility
  • Nix is so robust that you could even nuke your filesystems on every log out, if you'd like

Quick Reference


nix-env -iA nixpkgs.octave # to install octave
nix-env -e octave # to uninstlal octave
nix-env --delete generations # to delete old generations
# See [GC](https://nixos.org/manual/nix/stable/package-management/garbage-collection.html)
nix-storage --gc # for collecting garbage and actually removing files from HDD

See MyNixOS site -- home.sessionVariables - MyNixOS

Nix Language

Nix Flakes

Tutorials

NixOps

Nix land

via domenkozar:

Nix + Rust

Articles

Blogs

  • Computing - Shen's Essays has many nixos articles including how to setup home manager, sway, wayland, FDE, latex on linux friendly laptop like Purism Librem.

Running log

2022-11-27 MyNixOS (selfnote: account using github.) - Build and share reproducible software environments with Nix and NixOS.

2022-10-24 Blog posts on Nix at ianthehenry.com; and Using Nix on macOS

2018-06-05

2019-02-24 Static Nix: a command-line swiss army knife.. looks promising to use even on systems where creating -nix is not an option. Can run nix as an unprivileged user.

2019-10-14 bauer: an Emacs+Nix IDE

2019-11-11 Package a Django website -- acelpb/acelpb: Configuration for acelpb.com 2019-11-11 Nix for Python developers | Asko Soukka

2019-11-26 Nix recipes for Haskellers — Sridhar Ratnakumar

2020-02-29 Edit /etc/configuration.nix to add default packages. Run nixos-rebuild switch to update the system to match the configuration.

cron is not installed by default (because nix uses systemd timersand users not allowed to have crontab by default too! quelle surprise. To do that you have to edit the /etc/configuration.nix file do any thing.

2023-03-06 Nix-powered development with OCaml - Dimitrije's Website

2023-09-25 Fast, Declarative, Reproducible, and Composable Developer Environments - devenv

2024-03-28 Flakes aren't real and cannot hurt you: a guide to using Nix flakes the non-flake way - jade's www site

notes#devops#nixos

Docker

Docker is an open-source engine which automates the deployment of applications as highly portable, self-sufficient containers which are independent of hardware, language, framework, packaging system and hosting provider.

See also:

Building docker from scratch

Articles

Software related to docker:

It is essentially Docker, but you can boot bare-metal with it. It even uses Docker under the hood. Every boot is a fresh boot. You can read-write during boot, but all changes are made to ram. You mount with fstab things you want persisted, like home. It uses very simply primitives, which makes it easy to use. Squashfs/grub-mkconfig/overlayfs/etc. Docker isn't exactly a "primitive", but it is easily reasoned with. reply -- creator comment

# You prepare /bin/your_executable here...

ADD https://github.com/coord-e/magicpak/releases/latest/download/magicpak-x86_64-unknown-linux-musl /usr/bin/magicpak
RUN chmod +x /usr/bin/magicpak

RUN /usr/bin/magicpak -v /bin/your_executable /bundle

FROM scratch
COPY --from=0 /bundle /.

CMD ["/bin/your_executable"]

BuildKit in depth: Docker's build engine explained | Hacker News

Building container images - using no tools · Ravikanth Chaganti

More Articles

Dockerizing applications

Nix and Docker

notes#containers#docker#linux

D Programming Language

Why D?

Show off D

Semantics

Garbage Collection

Example code showing GCStats:

import std.stdio;

extern (C)
{
	void gc_stats(GCStats* stats) nothrow;
}

struct GCStats
{
    size_t poolsize;        // total size of pool
    size_t usedsize;        // bytes allocated
    size_t freeblocks;      // number of blocks marked FREE
    size_t freelistsize;    // total of memory on free lists
    size_t pageblocks;      // number of blocks marked PAGE
}

void main()
{
	GCStats stats;
	gc_stats(&stats);
	writeln(stats);
	auto p = new byte[200];
	gc_stats(&stats);
	writeln(stats);
	p = new byte[1000];
	gc_stats(&stats);
	writeln(stats);
	p = new byte[10000];
	gc_stats(&stats);
	writeln(stats);
}

To turn on garbage collection profiling

$ max_column_sum_by_key_v1 --DRT-gcopt=profile:1 ngrams.tsv 1 2
max_key: 2006 sum: 22569013
        Number of collections:  132
        Grand total GC time:  246 milliseconds
GC summary:   35 MB,  132 GC  246 ms

Summary of GC discussion

See June 2016 discussion on the Garbage collector

  • Precise GC is in the works. (todo: summarise progress)
  • "Only a few language features forces you to use the GC." (which ones?)
  • "For most uses you are not forced to use the GC in any form especially with the help of std.experimental.allocator." (How?)
  • Current GC is based on a forked version of Boehm GC. So, not easy to upgrade to current version without deep understanding of how D does Thread Local Storage etc.,
  • "we can disable the GC so it won't go ahead and scan upon allocation (only time it does)" (how?)

Memory allocations are /always/ expensive. Higher level languages like Java have the benefit of using pools and optimizing for this usage pattern, D does and will never have this. Keep in mind an allocation = usage of malloc + write to returned pointer. -- rikki c.

The point is, D doesn't have to have a GC. Not using it is way easier than in most other languages because all the tools to help you profile it and avoid it are provided by the compiler. Go without a good GC is a dead language. D without a good GC is just not as good as it could be. And btw we're generally faster than Go ;-) The point is: while a better GC is a work in progress we'll never have a GC that can fit all needs, but it's not as critical as it is in Go or in C# because we provide other ways to manage memory when limitations arise. -- cym13

"Has anyone thought about taking GC from .NET and reusing it in D?"

One significant point has been already mentioned: cost of write barriers. I'd like to mention another factor: .NET GC is a copying one, it moves data around. One good feature of current D is it never moves data, so you can very easily call C and C++ code and pass pointers to your buffers and stuff and C/C++ code just takes these pointers and works with them as usual. No pinning, no marshaling, zero overhead. If you take a moving GC like .NET's, you immediately make all C/C++ interaction much harder, now you need to worry about pinning stuff or copying "managed" data to "unmanaged" memory and back. This is all costly both in terms of CPU cycles and of programmer cycles. You'll need "FFI", what most other GC-ed languages have to have, and D doesn't. --thedeemon

Precise Garbage Collector

GSoC project

It is essentially in a similar state that it was when Rainer presented it at DConf2013. The version in the pull request is not different from the one Rainer presented at all. It's actually the same one, just updated with what has been changed in druntime recently and my attempts at making the marking phase faster.

Meta programming3

Debugging

Building

  • To build projects using ldc2 instead of dmd2 with dub, use the --compiler switch, thus: dub build --compiler=ldc2
  • To build the release version of the software, use the -b switch, thus: dub build -b release

Cross Compiling

Serialization

  • Orange library for serialization.

Concurrency

Range based programming

  • poita.org has couple of articles on range based programming.

Profiling / performance

D run time

Testing

C/C++ binding

Lexing and parsing

Another option is to use a lexer/state machine generator. Ragel supports D and Rust (as of the not-quite-released v7) as target languages. HN

Memory safety

Documenting D code

  • harbored-mod A documentation generator for D with support for both DDoc and Markdown in documentation comments.

Higher level programming

Resources

Introduction

Intermediary

Articles

Tutorials

Presentations

Editor

  • IntelliJ plugin for D language -- look at the screenshots. It is a fairly complete IDE with syntax highlighting, auto completion, compile checking, code linting (via Dscanner), navigate to classes etc.,

  • DDT -- the Eclipse based D IDE works as advertised. Use the 3.7(Indigo) version. [In Oct 2012, DDT did not work with the latest version of Eclipse: Juno].

  • Setting up TextAdept to autocomplete D code using DCD

Blogs

Talks

Read code

Discussions

Contributing to D development

Software written in D

Developing and distributing D software

Misc

User experience

Libraries

For some reason, many D programmers have this "collection of D libraries", which is interesting in the sense that more than one developer has found it just easy to write their own library to do X...

In addition to those of CWEB:

  • Markdown based -- very easy to read and write Literate source.
  • Generates readable and commented code in the target language (the generated code is usable by others)
  • Reports syntax errors back from the compiler to the right line in the literate source
  • Supports any language including syntax highlighting and pretty printing in HTML
  • Compatible with Vim (literate.vim)
  • Highly customizable (you can add your own HTML or CSS)
  • Runs fast -- wc.lit compiled for me in 7ms for both code and HTML output
  • Supports TeX equations with $ notation.

Inspired from CWEB:

  • Automatically generates hyperlinks between code sections
  • Formatted output similar to CWEB

Interop

The power of reflection | Átila on Code

import autowrap;
mixin(
    wrapDlang!(
        LibraryName("mylib"),
        Modules(
            Module("mymodule"),
            Module("myothermodule"),
        )
    )
);

The code above, when compiled, will generate a Python extension (shared library) that exposes every D function marked as “export” in the modules “mymodule” and “myothermodule” as Python functions. It’ll even convert their names from camelCase to snake_case. Any D exceptions thrown will become Python exceptions. D structs and classes become Python classses. If the original D functions take a D string, you’ll be able to pass Python strings to them in user code. Modulo bugs, this… works! The code shown above is the only code that needs to be written. Setting up the build system takes more work!

notes#dlang#programming-language

Dyalog APL

dfns.dyalog.com

I am really liking the aesthetics of the APL Dyalog documentation:

They also have their o…

dfns.dyalog.comPinboardPermalink

Sanskrit

Padyapaana channel on youtube contains tutorial series by Sri R Ganesh on samskRta chandas.

Grammar

Learning

  • https://prakrit.info/vrddhi/ -- Sanskrit at the University of Chicago has lesons with video lectures with exercises, readings; survey of skt grammar, readings of sanskrit texts, annotated and categorized by grammatical features; meters; resources -textbooks, grammars and dictionaries. Via @suhasm.
  • Vyoma labs
  • Sanskrit Chanting --The purpose of this free course is to help aspirants learn correct pronunciation of Sanskrit


The Sounds of Sanskrit


Scholars

Articles

Online Radio

Newspaper

Books

  • The Mahābhārata -- The critical edition of the mahabharata available as electronic text by the Bhandarkar Oriental Institute. I is a good resource for Sanksrit learners. The text is formatted like this:
01001000a नारायणं नमस्कृत्य नरं चैव नरोत्तमम्
01001000c देवीं सरस्वतीं चैव ततो जयमुदीरयेत्
01001001A लोमहर्षणपुत्र उग्रश्रवाः सूतः पौराणिको नैमिषारण्ये शौनकस्य कुलपतेर्द्वादशवार्षिके सत्रे
01001002a समासीनानभ्यगच्छद्ब्रह्मर्षीन्संशितव्रतान्
01001002c विनयावनतो भूत्वा कदाचित्सूतनन्दनः

which makes it easy to read short sentences slowly and progressively build speed. Also available in Roman and ASCII transliteration.


Poems From The Sanskrit : John Brough via this neat thread about John Brough by Srivatsa.


“Sunāma: Beautiful Sanskrit Names” by Nityānanda Miśra.

Tools


Misc Collection


दशकूपसमा वापी दशवापीसमो ह्रदः।
दशह्रदसमः पुत्रो दशपुत्र समो द्रुमः ॥

Ten wells equal a pond.
Ten ponds equal a lake.
Ten lakes equal a child.
Ten children equal a tree.

Via @KS1729


Definition


जननी जन्मभूमिश्च स्वर्गादपि गरीयसी


Interesting and amazing creations in Sanskrit -- on "adhamakavyas", and "varnacitras".

notes#sanskrit

Forth

History

Chuck Moore -- inventor of FORTH. I saw Chuck at Strange Loop 2013. The picture on his home page is from his talk at that Event.

Articles

Presentations

Books

Implementations

See also: Factor

Discussions

Interesting take:

Forth is the language that taught me (among other things) that its possible to break problems into pieces that are too small to understand the whole. I'm not sure really what to call this other than something along the lines of can't see the forest for the trees. Its the opposite of having functions so large it takes hours to figure out what they do. In this case you have words that you can't figure out what they do for days because the call graphs step across 300 different modules and 10k other words all of which are like "update-pie-with-apples" and comprise two other words "dup pie, apple-pie-update" or something. -- via

notes#forth#programming-language

PHP Programming Language

25 years of PHP history a chronological story of PHP by JetBrains.

Jan 2019 Notes:

Success stories

Facebook’s backups were written in PHP. Well, the second version was, anyway. (T... | Hacker News

Multiprocess, forking, long-lived, server-side, I/O intensive PHP. And it worked brilliantly. Over the following years, it scaled from a backup set of a few hundred TB to many, many petabytes.

Alternatives

alekcz/pcp: PCP: Clojure Processor -- Like drugs but better

Just use it like PHP on a webserver (say nginx):

    #new pcp config => change .php to .clj
    index index.clj index.html index.htm;
    #new pcp config => change .php to .clj
    location ~ \.clj$ {
        #default nginx config on digital ocean lemp image
        #include snippets/fastcgi-php.conf;
        #fastcgi_pass unix:/run/php/php7.0-fpm.sock;

        include scgi_params;
        scgi_intercept_errors on;
        scgi_pass   127.0.0.1:9000;
    }

PCP has following libraries built in:

(require  '[cheshire.core :as json]
      '[clostache.parser :as clo]
      '[selmer.parser :as parser]
      '[selmer.filters :as filters]
      '[clj-http.lite.client :as client]
      '[next.jdbc :as jdbc]
      '[honeysql.core :as sql]
      '[honeysql.helpers :as helpers]
      '[postal.core :as email]
      '[clojurewerkz.scrypt.core :as sc])

FrankenPHP: the modern PHP app server "Uses the official PHP executor embedded in a state-of-the-art web server: Caddy"; written in golang

notes#programming-language

Clojure programming language

Clojure is a Lisp that runs on the Java Virtual Machine (JVM).

Learning resources

Clojure as a Lisp

Courseware

Presentations

Clojure like languages

IDE and infrastructure

  • Lightmod -- Lightmod is a tightly integrated tool for making full stack Clojure and ClojureScript web apps. It is fully self-contained -- no need to install the JDK or any build tool. It hot reloads both client and server code automatically with zero setup.

  • Nightlight is an editor you run inside your Clojure projects. Instead of being a separate application like traditional editors and IDEs, it's just a library that you add to your project. It spins up a web server and provides a completely browser-based interface to edit your code.

  • CIDER is the successor to nrepl.

  • Cursive Clojure IDE -- is an IDE built on IntelliJ

  • Parinfer

REPL

online playgrounds

Getting started with Lighttable

Via

Basic instructions. I use cmd for the shortcuts below, substitute ctrl on non-mac platforms.

  1. Install Leiningen http://leiningen.org/ you do not need to install clojure, lein will grab clojure for you.
  2. lein new playground from the command line to create a 'playground' project
  3. Open Light Table
  4. ctrl-space woto for "Toggle Workspace tree"
  5. Add the playground project folder you just created
  6. cmd-o core.clj to open the main clojure file for the project
  7. On an empty line type (+ 1 1) and hit cmd-enter

Things will grind away for a while as all the dependencies are downloaded and the JVM starts up. Get a cup of coffee or something. Eventually you'll see a green 2 show up.

You can then type anything in the tutorial and hit cmd-enter to evaluate it or cmd-shift-enter to evaluate the entire file. Think of the file as a shell with an editable history instead of something you'd want to commit to source control.

Documentation is searchable via ctrl-shift-d or moving your cursor on top of a function name and hitting ctrl-d. Autocomplete is available on tab, you can jump to definition with cmd-. and back with cmd-,

TODO: Explore CIDER + AC(autocomplete) + ritz.

Applications

Libraries

Spec

the biggest win from spec has been with parsing. This completely changes how you'd write a library that takes a data structure and parses it into something meaningful (for example, what hiccup does for html or what honeysql does for sql). In the past, this required a lot of very ugly parsing code and manual error-checking. With spec, you write specs and call s/conform. If it failed, you get a nice error, especially if you pair it with expound. If it succeeded, you get a destructured value that is really easy to pull data out of. I've done this in a half dozen different libraries and i'm pretty sure i wouldn't have even written them without spec.

Mallimalli and specmonstahspecmonstah are my favourite Clojure(Script) libraries built on top of Clojure Spec.

Clojure books

The first chapter, Names, explains why names define the structure of our software, and how to judge whether a name is any good.

The second chapter, Idioms, provides specific, syntactic advice for writing Clojure which is clean and readable.

The third chapter, Indirection, looks at how code can made simpler and more robust through separation.

The final chapter, Composition, explores how the constituent pieces of our code can be combined into an effective whole.

Clojurescript books

Experience reports and discussions

Articles

Talks and presentations

Tips and tricks

Cool projects / Read Code

Visualization / Notebook

Web development

Big data

Blogs

ClojureScript

Graal

  • This nextjournal notebook has a recipe for building Babashka "executing Clojure snippets or scripts in the same space where you would use Bash."

Web development

PCP

alekcz/pcp: PCP: Clojure Processor -- Like drugs but better

Just use it like PHP on a webserver (say nginx):

    #new pcp config => change .php to .clj
    index index.clj index.html index.htm;
    #new pcp config => change .php to .clj
    location ~ \.clj$ {
        #default nginx config on digital ocean lemp image
        #include snippets/fastcgi-php.conf;
        #fastcgi_pass unix:/run/php/php7.0-fpm.sock;

        include scgi_params;
        scgi_intercept_errors on;
        scgi_pass   127.0.0.1:9000;
    }

PCP has following libraries built in:

(require  '[cheshire.core :as json]
      '[clostache.parser :as clo]
      '[selmer.parser :as parser]
      '[selmer.filters :as filters]
      '[clj-http.lite.client :as client]
      '[next.jdbc :as jdbc]
      '[honeysql.core :as sql]
      '[honeysql.helpers :as helpers]
      '[postal.core :as email]
      '[clojurewerkz.scrypt.core :as sc])

Learning Journal

  • this is a good demo of how to use Clojure's -Sdeps at the command line to execute a script (even one hosted remotely on git):
clojure -Sdeps '{:deps
    {hello-clojure
        {:git/url "https://gist.github.com/athos/b68b15b08efedffaf14d8c020b125202"
        :sha "1c9a05106171f97f9b8e8ac8f58c7bd8dbe021f9"}}}'
    -m hello-clojure

See also: lisp, scheme.

notes#clojure#jvm#lisp#programming-language

Mint

mint-lang.com

@puffybsd Mint - (written in Crystal, a front end oriented language a la Elm).

mint-lang.comPinboardPermalink

Javascript

News

Learning

WAT

JS Alternatives

--

Reading

Functional programming

Tooling

Libraries

Visualization

  • Fabric.js Javascript Canvas Library -- via
  • Two.js -- two-dimensional drawing api geared towards modern web browsers. It is renderer agnostic enabling the same api to draw in multiple contexts: svg, canvas, and webgl. Jul 2015.

Frameworks

It is similar to JavaScript frameworks such as React and Vue, which share a goal of making it easy to build slick interactive user interfaces. But there's a crucial difference: Svelte converts your app into ideal JavaScript at build time, rather than interpreting your application code at run time. This means you don't pay the performance cost of the framework's abstractions, and you don't incur a penalty when your app first loads. You can build your entire app with Svelte, or you can add it incrementally to an existing codebase. You can also ship components as standalone packages that work anywhere, without the overhead of a dependency on a conventional framework.


The Bandolier: A Learn JavaScript the Hard Way Project by Zed Shaw. A fresh approach, and since it was built to teach JS programming, it should be easy to grok.

Links

Apps

Books

Talks


See also: webpack

notes#javascript#programming-language