Skip to content

Instantly share code, notes, and snippets.

@tluyben
tluyben / Dockerfile
Created March 25, 2024 10:21
Codel docker-compose start
FROM node:20.11.1-bookworm-slim
ENV NODE_ENV=development
WORKDIR /app
RUN apt update
RUN apt install -y build-essential
RUN apt install -y vim wget lynx curl mariadb-client git bash
RUN npm i -g ts-node
RUN npm i -g jest
@tluyben
tluyben / string-to-list.lisp
Last active July 27, 2023 21:19
unicode handling, basic string to list
(defun string-to-list (string)
(mapcar #'princ-to-string (coerce string 'list)))
;; (string-to-list "123🚘🚃🚅456")
;; > ("1" "2" "3" "🚘" "🚃" "🚅" "4" "5" "6")
;; and
(defun list-to-string (list)
(let ((result ""))
@tluyben
tluyben / json_encode.php
Last active July 24, 2023 07:23
A php json encode that doesn't care about encoding.
function _json_encode($ar) {
$res = "";
if (is_array($ar)) {
if (count($ar)==0) {
return $res;
}
if (is_numeric(array_keys($ar)[0])) {
@tluyben
tluyben / s-expression.ts
Created July 5, 2023 08:57
simple s-expression parser for typescript
export function parse(lisp: string) {
const lexer = /"[^"]*"|\(|\)|[^\s()]+/g;
const ts = lisp.match(lexer)!;
let i = 0
const rec = () => {
let prg: any = undefined
while (i < ts.length) {
if (ts[i] === '(') {
if (!prg) {
@tluyben
tluyben / init.el
Created July 3, 2023 11:27
emacs setup for typescript
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
(add-to-list 'image-types 'svg)
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 6))
@tluyben
tluyben / expect.ts
Last active May 24, 2023 16:35
Expect for TypeScript
import { spawn as expectSpawn } from 'node-pty';
export async function expect(cmd: string, expectations: { expected: string, retort: string }[], dir?: string) {
let cmdSplit = cmd.split(' ')
const p = expectSpawn(cmdSplit.shift()!, cmdSplit, { cwd: dir })
p.onData((data) => {
console.log(data)
const expected = expectations.shift()
@tluyben
tluyben / index.html
Created April 24, 2023 09:21
Pong with Phaser
<div id="gameDiv"></div>
<h1>Pong</h1>
<p>Move the left paddle with W, S</p>
<p>Move the right paddle with the arrow keys</p>
@tluyben
tluyben / gp-init-osx.sh
Created February 28, 2023 15:04
Postgres Mac OS X install from binaries only
#!/bin/bash
wget -O pgsql.zip "https://sbp.enterprisedb.com/getfile.jsp?fileid=1258319"
unzip -dpgsql_binaries pgsql.zip
rm pgsql.zip
cd pgsql_binaries
xattr -d com.apple.quarantine ./bin/*
xattr -d com.apple.quarantine ./lib/*
xattr -d com.apple.quarantine ./lib/postgresql/*
./bin/initdb -D ./pgdata -U postgres -W -E UTF8 -A scram-sha-256
@tluyben
tluyben / backets.js
Created December 9, 2022 12:02
match curly brackets
function getBrackets(str) {
// Initialize the stack to keep track of open braces
const stack = [];
// Initialize the result string
let result = "";
// Iterate over each character in the input string
for (let i = 0; i < str.length; i++) {
const char = str[i];
@tluyben
tluyben / chat.js
Created December 5, 2022 04:10
Simple chatbox in React with Material UI
import React from 'react';
import { useState } from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Paper from '@material-ui/core/Paper';
import Grid from '@material-ui/core/Grid';
import Box from '@material-ui/core/Box';
import Divider from '@material-ui/core/Divider';
import TextField from '@material-ui/core/TextField';
import Typography from '@material-ui/core/Typography';
import List from '@material-ui/core/List';