Last week I got my 1.2MB 5.25″ drive. And tested it with the fluxengine. Now i can read old 5.25″ disks again. And convert these to disk images. Amiga/Atari ST/C64 (single side) and my old MSDos disks. (That’s what I’m using, the fluxengine can read many more)
Why single side C64? you ask? Those are flippy disks, that means they are single sided and you flip the disk in the drive to read the other side.
Why can’t the fluxengine read those?
There is only one sensor in my drive.
Reading side 2 without turning the disk won’t work, the sectors are in reverse! (Maybe there is a trick to read in reverse? Fluxengine is reading and decoding raw disk sectors, but i have to read into this)
Note: The 1541 Drive for the commodore’s is a complete 6502 computer with 2x 6522 VIA and ram/rom chips! (2016-15 2K x 8 bit Static RAM / 27128 16kb x 8)
I started printing the bottom, no problem there. But because of the large size of bottom and top. (Both about a day of printing) I had to change the filament. But I didn’t have a good look at what I took! Below is what you get when printing PLA and switch to PETG!
Temperatures for PLA: Tool: 200 and bed 50 Temperatures for PETG: Tool: 240 and bed 70
So 12 hours printing and I had to start again.
I could not remove the knob, else I would have removed the beige front and spray painted this black.
A MOINK Ball is a beef meatball wrapped in pork bacon, sprinkled with rub, smoked, and sauced .. so beef and pork .. hence the name Moo – oink balls.
Made this today .. but forgot to take some pictures. Picture is from another date
Ingredients
500 grams of ground beef
40 grams Parmesan cheese grated
1 egg beaten
40 grams of breadcrumbs
100 ml of milk
1 tablespoon garlic finely chopped
1 teaspoon dried parsley
1/4 teaspoon sea salt
2/3 teaspoon dried oregano
2 packs of (smoked) breakfast bacon
barbecue rub
barbecue sauce
For the balls
ONE of the following
1/2 teaspoon cayenne pepper
1/2 teaspoon crushed red pepper flakes
1/4 teaspoon chili powder
1 jalapeƱo pepper, seeded and finely chopped
Recipe
Mix the ingredients of the balls , except for the rub and sauce. Sprinkle the meatballs with the rub. Cool in the fridge. Wrap a slice of bacon around the balls and secure with a cocktail stick. Put your MOINK Balls in the fridge for half an hour to stiffen.
I try to get my smoker at 110C. Using Cherry wood (or apple), I let the balls hit a core temperature of 55C. Brush the balls with barbecue sauce. Remove from the smoker when 70C.
My work document for my Mikrotiks (Also for my friend Vincent, with a similar setup.)
I’m going to collect information on this page for below changes.
WIFI
Access list connections only
Default forward – only certain clients
Guest network – better setup. I’ve got a folkband guest network right now and a captive portal AP on my internet router. (Outside my network) This is for colleagues of Coline.
Vlan for certain clients
Zerotier
Network routing
Security
IOT
Move all clients to own vlan New or better VLAN setup
Using a mqtt server with websockets and a website with the Eclipse Paho JavaScript Client
Above video: Joystick sends movement through the internet to my mqtt server, laptop is fetching a webpage from one of my webservers. A piece of javascript connects via websockets to the mqtt server and realtime changes the displayed image.
I intend to display maps and views into a maze you can walk through. like: (shamelessly stolen image from the internet)
I already have written another piece of code which generates a maze, and tells you using samples which way to go.
CODE
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js" type="text/javascript"></script>
<script type = "text/javascript"
src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type = "text/javascript">
var connected_flag=0
var mqtt;
var reconnectTimeout = 2000;
var host="MQTTSERVER";
var port=8084;
var sub_topic="web/#";
function onConnectionLost(){
connected_flag=0;
document.getElementById("status").innerHTML = "Connection to HQ Lost";
}
function onFailure(message) {
console.log("Failed");
setTimeout(MQTTconnect, reconnectTimeout);
}
function onMessageArrived(r_message){
var topic=r_message.destinationName;
document.getElementById("status").innerHTML = "";
if(topic=="web/mapviewer")
{
$(".deze").attr("src","tiles/" + r_message.payloadString + ".png");
}
}
function onConnected(recon,url){
console.log(" in onConnected " +reconn);
}
function onConnect() {
// Once a connection has been made, make a subscription and send a message.
connected_flag=1
document.getElementById("status").innerHTML = "Connection made to HQ";
mqtt.subscribe(sub_topic);
}
function MQTTconnect() {
console.log("connecting to "+ host +" "+ port);
var x=Math.floor(Math.random() * 10000);
var cname="controlform-"+x;
//var cname="escape1";
mqtt = new Paho.MQTT.Client(host,port,cname);
var options = {
useSSL:true,
timeout: 3,
onSuccess: onConnect,
onFailure: onFailure,
};
mqtt.onConnectionLost = onConnectionLost;
mqtt.onMessageArrived = onMessageArrived;
mqtt.connect(options);
return false;
}
function sub_topics(){
document.getElementById("messages").innerHTML ="";
if (connected_flag==0){
out_msg="<b>Not Connected so can't subscribe</b>"
console.log(out_msg);
document.getElementById("messages").innerHTML = out_msg;
return false;
}
var stopic= document.forms["subs"]["Stopic"].value;
console.log("Subscribing to topic ="+stopic);
mqtt.subscribe(stopic);
return false;
}
function send_message(msg,topic){
if (connected_flag==0){
out_msg="<b>Not Connected so can't send</b>"
console.log(out_msg);
document.getElementById("messages").innerHTML = out_msg;
return false;
}
var value=msg.value;
console.log("value= "+value);
console.log("topic= "+topic);
message = new Paho.MQTT.Message(value);
message.destinationName = "web/"+topic;
mqtt.send(message);
return false;
}
</script>
<style>
@media only screen and (max-width: 600px) {
div {
max-width: 320px;
}
img {
max-width: 320px;
}
}
div.imageview {
color: white;
background: gray;
padding: 15px;
position: absolute;
top: 50%;
left: 50%;
-ms-transform: translateX(-50%) translateY(-50%);
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
</style>
</head>
<body onload="MQTTconnect()">
<div class=imageview>
<img class="deze" src="tiles/00.png">
<div id="status">Connection Status: Not Connected</div>
</div>
</body>
</html>
While working on a harmony for Irmgard and me in Musescore, i tought it would be nice to have it also in another notation.
Above a Musescore screenshot.
When using below button assignment, we can easily rewrite above into another notation.
Write musescore as MusicML/mxl Music xml.
Install xml2abc from https://wim.vree.org/svgParse/xml2abc.html
python xml2abc.py INPUTFILE.mxl output.abc
My abc file
X:1
T:Planxty Irwin
C:OCarolan
L:1/4
M:3/4
I:
K:G
V:1 treble nm="Henri" snm="H"
V:1
|: d | B2 d | c2 A | F2 A | G3/2 d/ B | A G F | G3/2 A/ B | D2 E | F2 d | B2 d | c2 A | F2 A |
G3/2 d/ B | A G F | G3/2 A/ B | e d c | B2 d | B3/2 c/ B | B G B | c3/2 d/ c | c A F | G d e |
c d e | d3/2 c/ A | d c A | B c d | c B A | F G A | G3/2 d/ B | A G F | G3/2 A/ B | e d c | B2 :|
Using below bash script you can convert this to PDF WITH concertina notations.
WARNING: I didn't include all keys (yet).
NOTE: Easy to adjust to other notations.
#!/bin/bash
if [ $# -lt 2 ]; then
print "script orgname convertname"
exit 1
fi
: > parced
org=$1
abc=$2
cat $1 | awk '/^\|/ {exit} {print}' > header
cat $1 | grep "|" | tr -d '[0-9]:/'> parse
(
cat parse | while read ; do
echo $REPLY
echo -n "w: "
for word in $(echo $REPLY) ; do
if [ "$word" == "|" ] ; then echo -n " | "
elif [ "$word" == "D" ] ; then echo -n " 2 ";
elif [ "$word" == "G" ] ; then echo -n " 3 ";
elif [ "$word" == "B" ] ; then echo -n " 4 ";
elif [ "$word" == "d" ] ; then echo -n " 5 ";
elif [ "$word" == "g" ] ; then echo -n " 6 ";
elif [ "$word" == "b" ] ; then echo -n " 7 ";
else echo -n " * "
fi
done
echo ""
echo -n "w: "
for word in $(echo $REPLY) ; do
if [ "$word" == "|" ] ; then echo -n " | "
elif [ "$word" == "F" ] ; then echo -n " 2 ";
elif [ "$word" == "A" ] ; then echo -n " 3 ";
elif [ "$word" == "c" ] ; then echo -n " 4 ";
elif [ "$word" == "e" ] ; then echo -n " 5 ";
elif [ "$word" == "f" ] ; then echo -n " 6 ";
elif [ "$word" == "a" ] ; then echo -n " 7 ";
elif [ "$word" == "E" ] ; then echo -n " 4' "; # <============ example 2nd row
else echo -n " * "
fi
done
echo ""
done
) >> parced
cat header parced > $abc
abcm2ps -x -O - "$abc" | ps2pdf -sPAPERSIZE=a4 - "$(echo $abc | cut -f2 -d/ | sed 's/abc/pdf/g')"
Sometimes you forget you ordered something from Ali Express, it takes too long to arrive.
Today i’ve got this in my mailbox
These are HLK-LD2401B motion/presence detectors ⬠2,91 a piece.
While PIR sensors are slow and doing only motion sensing, these nice small and cheap devices are fast and have more outputs.
Bluetooth (can be used using home assistant integration)
Motion and presence
60 degrees detection angle
Measurements to moving/static objects (while the datasheet mentions till 5 meter, i’ve got measurements well above that.
Fast updates, and i mean really fast
Only 7mm x 35mm
mmWave – 24GHz
GPIO Uart
According to the bad translation it can also measure if you ‘devour’ something. Dutch ‘vreten’ means wild fast eating something. Setting the language to English gives me the word ‘fretting’
Right screenshot shows Coline sitting at a distance of 5.5 meters
Above, the update speed in HA
To try: connect Uart to remote ESP and tweaking the device https://www.youtube.com/watch?v=dAzHXpP3FcI and distance gates
Maybe i can use some Triangulation go find the precise location of a person.
PlatformIO tested ( install StackArray.h in lib/StackArray/StackArray.h )
Reset button and dipswitches for below options
Visited pathmode ( dip switch 1)
Preview maze generation ( dip switch 3)
Hard mode – starts at first position when hitting a wall ( dip 2 )
Longest path mode (longest stackarray before stack.pop (dip 4 )
Prints serial info, like a drawn maze
Pixel remapping for other displays ( Below mapping i had to use, see source sketch )
How is the maze generated?
It is generated using recursive backtracking:
Start at 0,0 mark visited, select a random direction from unvisited neighbours, push current on the stack, goto new location, and mark this visited. Repeat until no possible directions. pop from the stack a previous location, another direction possible? Take that path and repeat. Repeat popping from stack, until stack empty .. now all cells are visited
I’ve gone back and front using Visual Code. For work and now with platformio. (I’ve been using platformio on the commandline only, until recently.)
While i have some private github/gitlab accounts, I alway had some local git repositories. Using in the past GiTea, and a ssh based one.
Below: This own hosted SSH setup allows me to use Visual Code to use as git repository
========== On you ssh server
adduser git
su - git
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
chsh git -s $(which git-shell)
# Note .. there is no interactive shell!
== locate git-shell-commands
locate git-shell-commands
cp -r /usr/share/doc/git/contrib/git-shell-commands /home/git/
chmod +x /home/git/git-shell-commands/*
== Make sure git-shell is in /etc/shells
== Make a git repo destination
mkdir -p /mygitstuff/git
cd /mygitstuff/git
mkdir project.git
cd project.git
git init --bare
========== On your workstation
== copy ssh public key in .ssh/authorized_keys on the server
cd myproject
git init
git add .
git commit -m 'Initial commit'
git remote add origin git@gitserver:/mygitstuff/git/project.git
git push origin master
"If something is worth doing, it's worth overdoing."