Skip to content

Instantly share code, notes, and snippets.

@dat-boris
dat-boris / schema_vs_prompt.py
Last active February 9, 2025 07:05
A brief study to compare effectiveness of how to prompt for structured output
"""
So, you can give instruction to structured output (SO) in 3 format:
1. Include in desciription in the field of SO
2. Include the JSON schema in prompt.
3. Include it directly in prompt in Natural langauge
If we are given conflicting instructions between prompt and structured output,
which one will win? This will tell which of the above is the most powerful!
It turns out that:
@dat-boris
dat-boris / lsi_render_mathjax.js
Last active February 9, 2025 06:43
For Label studio rendering of MathJax
/** Label Studio include for MathJax.
*
* https://docs.humansignal.com/guide/scripts
*
* Script src: https://gist.github.com/dat-boris/cc36f2f92fb29d7cb0b00dcabf2d89b6
*/
LSI.import('https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js');
function initMathJax() {
@dat-boris
dat-boris / azure_service.sh
Created January 29, 2025 03:13
A sample CURL command for testing Azure AI service (not to be confused with serverless API)
# Example URL: https://ai-useast2hub770089131882.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview
# - Note the `services.ai.azure.com` domain name, which use `api-key` for auth
# - instead of the `models.ai.azure.com` - which will use `Token bearer`
curl -X POST "${AZURE_SERVICE_URL}" \
-H "Content-Type: application/json" \
-H "api-key: ${AZURE_SERVICE_KEY}" \
-d '{
"messages": [
{
"role": "user",
@dat-boris
dat-boris / opencv_pnp_roundtrip.py
Created November 10, 2024 20:47
OpenCV solvePnP and projectPoints roundtrip test
import cv2
import numpy as np
# Define 3D object points
object_points = np.array([
[0, 0, 0],
[1, 0, 0],
[1, 1, 0],
[0, 1, 0]
], dtype=np.float32)
@dat-boris
dat-boris / extract_keyframe.py
Created October 4, 2024 15:02
Example code for creating keyframe from screen capture
#!/usr/bin/env python3
"""A simple script to capture screen, that then post to the server as websocket
for setting up the messages.
We log these folders to allow for the case for following through the data. The
folder structure works with:
- logs/video/<yyyymmdd-hhmmss>.avi
- logs/keyframes/<yyyymmdd-hhmmss>_<frame>.png
@dat-boris
dat-boris / download_video.py
Created September 7, 2024 16:17
A script for downloading video from https://publicorderemergencycommission.ca
#!/usr/bin/env python
"""A script for downloading video from https://publicorderemergencycommission.ca
Oh my, the site is awful! It streams the mp4 in .ts format that is much slower
than the stream reate. So this script downloads the stream and compress it using
ffmpeg h264 codec.
You will need to find the video link - you can do that by using the developer tool
when playing the video on page
@dat-boris
dat-boris / out_loud.py
Created April 18, 2022 22:19
Script for making sure I read out loud while I am typing text.
#!/usr/bin/env python
"""Ensure that you write out loud when you write your text.
brew install portaudio
pip installl pynput speechrecognition pyaudio pyttsx3
./out_loud.py
WARNING: you might need to hack your security setting following:
https://stackoverflow.com/questions/53088995/pynput-keyboard-listener-does-not-detect-keys-on-mac-os-x
"""
@dat-boris
dat-boris / petting_zoo_tutorial.py
Created October 10, 2021 03:59
Petting Zoo tutorial
"""PettingZoo
Tutorial from: https://nbviewer.org/github/gsverhoeven/gt_rl_course/blob/master/week_8/marl_tictactoe.ipynb
Setup:
pipenv install pettingzoo[classic]
"""
import random
@dat-boris
dat-boris / test_port_listen.go
Last active April 21, 2021 17:17
Looking at difference between port listening with/ without loopback address
package main
import (
"fmt"
"os"
"net"
"log"
"time"
)
func main() {
port := os.Args[1]
@dat-boris
dat-boris / read_gcs.py
Created January 18, 2021 20:06
Quick snippet for reading GCS file
import re
import tempfile
import google.cloud.storage as storage
def analyse_one_logfile(gcs_full_path):
client = storage.Client()
bucket = client.get_bucket(DEV_LOGFILE_BUCKET_NAME)
m = re.match('gs://{}/(.*)'.format(DEV_LOGFILE_BUCKET_NAME), gcs_full_path)