sources for e1e0 website
git clone https://git.e1e0.net/e1e0.net.git
Log | Files | Refs

commit deee9459072bee80f75499108d6a471982251a6c
Author: Paco Esteban <paco@onna.be>
Date:   Wed, 24 Apr 2019 18:58:41 +0200

New web page organization and build script

A.gitignore | 2++
Acontent/.cvsignore | 2++
Acontent/blocking-abusers.md | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/brymen869s-serial-cable.md | 70++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/free-cetus.md | 218+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/gopher.md | 106+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/ipv6-config-he.md | 170+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/nfs-performance-improvements-openbsd.md | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/partkeepr-barcodes-and-TME.md | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/pass-terminal.md | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/raidz-disk-change.md | 94+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/self-hosted-xmpp-server.md | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontent/teensy-midi-controller.md | 92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adeploy.sh | 174+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aphlog/.#gophermap.1.3 | 16++++++++++++++++
Aphlog/20181113-1342_entry.txt | 11+++++++++++
Aphlog/20181113-1844_entry.txt | 41+++++++++++++++++++++++++++++++++++++++++
Aphlog/20181115-1906_entry.txt | 37+++++++++++++++++++++++++++++++++++++
Aphlog/20181116-2245_entry.txt | 44++++++++++++++++++++++++++++++++++++++++++++
Aphlog/20181117-1934_entry.txt | 26++++++++++++++++++++++++++
Aphlog/20181118-2212_entry.txt | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Aphlog/20181123-1914_entry.txt | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aphlog/20190107-1400_entry.txt | 32++++++++++++++++++++++++++++++++
Aphlog/20190115-1519_entry.txt | 39+++++++++++++++++++++++++++++++++++++++
Aphlog/20190214-0808_entry.txt | 47+++++++++++++++++++++++++++++++++++++++++++++++
Aphlog/20190330-2151_entry.txt | 43+++++++++++++++++++++++++++++++++++++++++++
Aphlog/20190402-0824_entry.txt | 29+++++++++++++++++++++++++++++
Aphlog/20190414-1728_entry.txt | 53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Astatic/44CA735E.asc | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Astatic/authorized_keys | 2++
Astatic/authorized_keys.asc | 16++++++++++++++++
Astatic/contact.txt | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astatic/files/brymen_cable_attachemnt_v2.stl | 0
Astatic/files/brymen_cable_schematic.png | 0
Astatic/files/cetus_config.diff | 102+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astatic/files/cetus_limit_switch.tar.gz | 0
Astatic/files/cetus_zprobe_holder.stl | 0
Astatic/files/vcvrack_test.mp3 | 0
Astatic/gpg_keys_transition.txt | 48++++++++++++++++++++++++++++++++++++++++++++++++
Astatic/gpgkey.asc | 109+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astatic/keybase.txt | 87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astatic/style.css | 25+++++++++++++++++++++++++
Atemplates/gophermap | 35+++++++++++++++++++++++++++++++++++
Atemplates/index.html | 27+++++++++++++++++++++++++++
Atemplates/menu_template.html | 1+
Atemplates/phlogmap | 13+++++++++++++
46 files changed, 2373 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1,2 @@ +htmlOut +gopherOut diff --git a/content/.cvsignore b/content/.cvsignore @@ -0,0 +1,2 @@ +*.html +*.md.txt diff --git a/content/blocking-abusers.md b/content/blocking-abusers.md @@ -0,0 +1,90 @@ +title: Blocking abusers on personal servers (OpenBSD PF) +author: paco +date: 2018-09-07 +css: style.css + +XXmenuXX + +--------- +# Blocking abusers on personal servers (OpenBSD PF) +2018-09-07 + +Inspired by Jordan Geoghegan's article about [pf-badhost][1] I wanted to +create my own list based on the "attack attempts" I get on my personal +servers. This was tested on OpenBSD 6.3. + +I just put together a small shell script that parses the httpd(8) logs +and creates 2 files. One to load into a PF table and another one with +entries I'm not sure about and had to be checked manually (either to add +them to the patterns to search for or to discard them as legit). + +It's all really simple. The script is this one: + + + #!/bin/sh + + FILE=$1 + BLOCK=$2 + BAD="" + UNKNOWN="" + + patterns="login.cgi + admin + php + webdav + iframe" + + [ -z "$FILE" ] && echo "Need a log file" && exit 1 + + while IFS= read -r line + do + # ignore first line (rotation) + echo "$line" | grep -q newsyslog && continue + + #gather some info + IP=$(echo "$line" | awk '{print $2}') + REQ=$(echo "$line" | awk -F'"' '{print $2}' | awk '{print $2}') + + # if you're behind a NAT and want to remove your network segment ... + # is not really needed if you just filter on egress, but still. + # echo "$IP" | grep -q "^10\\.42" && continue + + # sort things into unknown and bad folks + if echo "$REQ" | grep -q -e "$patterns" ; then + BAD="${BAD}${IP} + " + else + UNKNOWN="${UNKNOWN}${IP} ($REQ) + " + fi + done < "$FILE" + + echo "$BAD" | sort -uV > /tmp/bad_folks.txt + echo "$UNKNOWN" | sort -uV >> /tmp/to_check.txt + + # and now we clean for duplicates and stuff ... + cat /etc/pf_tables/bad_folks.txt >> /tmp/bad_folks.txt + sort -uV /tmp/bad_folks.txt > /etc/pf_tables/bad_folks.txt + + # and clean + rm /tmp/bad_folks.txt + + if [ "$BLOCK" = "block" ]; then + doas pfctl -t bad_folks -T replace -f /etc/pf_tables/bad_folks.txt + fi + +Just fill the `patterns` variable with one grep pattern per line. + +Of course you'll have to add some rules to `pf.conf`: + + + table <bad_folks> persist file "/etc/pf_tables/bad_folks.txt" + block in quick on egress from <bad_folks> to any + +Remember to add the necessary permissions on `doas.conf` to the user that runs +the script. + +---- +[1]: https://www.geoghegan.ca/pfbadhost.html + +$Id: blocking-abusers.md,v 1.4 2019/03/25 19:15:00 paco Exp $ diff --git a/content/brymen869s-serial-cable.md b/content/brymen869s-serial-cable.md @@ -0,0 +1,70 @@ +title: Brymen 869s Serial cable build. +author: paco +date: 2018-12-08 +css: style.css + +XXmenuXX + +--------- +# Brymen 869s Serial cable build. +2018-12-08 + +The Brymen 869s is a fantastic multimeter. Among a lot of other +functionalities it has serial communication to a PC. The problem is +the cable for this is hugely overpriced. Luckily building one is not so +complicated. Besides, some clever folks on the [EEVBlog Forum][1] have +already decoded the protocol the cable uses. + +Well, the usb protocol the cable uses is public, but the protocol used +between the meter and the serial adapter is not. + +This is a infrared communication (so it keeps isolated the pc and the +meter), so some infrared LED and photodiode (or a phototransistor) are +needed. The parts list for all the circuit are small. + + * One micro controller (ATTiny85 in my case, use what you're + comfortable with). + * One infrared diode. + * One current limiting resistor for it. + * (In my case) one NPN BJT, as the micro could not output enough + current for the LED I used. But this is optional if your LED is + directly driven by the micro. + * One photodiode or phototransistor. + * One suitable limiting resistor for that one too. + * A usb to serial adapter if your micro cannot talk usb directly. + +I've attached the [schematic][2] of what I did come up with with the parts +I had lying around at home. + +The [code][3] is just adapted from what user 'jesuscf' did on the EEVBlog +Forum for arduino. I "ported" it to work with AVR C on the ATTiny85. + +The interesting part is how it works. The 'cable' (ATTiny85 driving the +IR LED in this case), sends a 10ms pulse to the meter, it then waits for +the signal from the meter to go high. After that the cable starts +sending a clock signal and the meter starts sending data synced with +that clock. + +One complete "packet" are 20 bytes. Sixteen of them are data and the +last four are fix. The description of each byte can be seen on bm869s.h + +Once we got data, is just a matter of deciding what and how to send it +to the pc via serial. + +I've also designed a small 3D printed case for it, similar to the +original cable attachment, so the circuit can be easily attached to the +meter and the LEDs are well placed, pointing in the right direction and +with almost no interference from other sources. The design is on the +repo. It's a FreeCAD file. I've also uploaded an [STL file][4] in case +somebody wants to use it without installing FreeCAD. + +All and all a small but pretty fun project to do on a weekend. And now I +have data logging on my meter for almost no cost. + +----- +[1]: https://www.eevblog.com/forum/testgear/brymen-ir-connection-protocol-anyone-sniffed-it-yet/ +[2]: https://onna.be/files/brymen_cable_schematic.png +[3]: https://git.onna.be/brymen_bm869s_ir_cable.git +[4]: https://onna.be/files/brymen_cable_attachemnt_v2.stl + +$Id: brymen869s-serial-cable.md,v 1.4 2019/03/25 19:15:00 paco Exp $ diff --git a/content/free-cetus.md b/content/free-cetus.md @@ -0,0 +1,218 @@ +title: Cetus3D printer mods (free cetus !) +author: paco +date: 2019-01-16 +css: style.css + +XXmenuXX + +--------- +# Cetus3D printer mods (free cetus !) +2019-01-16 + +The Cetus is a 3D printer by [Tiertime][1]. +It's small and affordable (although not on the super cheap range of the +Chinese printers). Also the quality of the build and hardware components +is quite good, featuring linear rails and a 32bit cpu. + +The downside to this printer is that the firmware on the printer is not +open source, and it does not work with gcode as the vast majority of the +other printers on the market do. Once you buy it, you're stuck with the +slicer that Tiertime provides which, of course, only works for Mac and +Windows ... and although it is super simple and "it just works", it's +really annoying in some aspects. + +So, there's the reason on trying to fix something that's not broken. + +There's a [company][2] that has developed a drop-in replacement of the +original cpu board, but that runs with an open source firmware +([smoothieware][3]). + +The main goal is to use open source software on all the steps of the +process, from design to print, so I won't have nasty surprises in the +future (when Tiertime discontinues the printer, or stops giving support +for it, or any of the fun stuff companies like to do, so they try to +force you to buy new products) and use the OS that I want, and also a +better control of the print settings for some 3D models that need more +than the basics. + +The model I own is a MKII. This model does not have end stop switches. +The homing is done when the cpu detects that the motors are stuck +because they have reached end of travel. A bit crude, but I guess it +saves cost on production. + +So, the first step for this conversion is to install limit switches. +This is called "downgrade to MKI by Tinyfab". This needs to be done +because the new cpu does not support that kind of brute homing. Also, I +prefer the switch homing, as is less aggressive with the hardware, +specially the motors and some small printed parts + +[Here][4] and [here][5] you can find a tarball with the files needed to print +the adapters for the limit switches. They are the same files provided by +Tinyfab, but renamed so it's clear which ones do you need to use. + +You'll need both X and Y axis pieces and one of the Z axis pieces +depending on the model you have (standard or extended). + +If you plan to use a capacitive bed sensor, print also the piece to fix it to +the hot end carriage. [Here][6] and [here][7] you can find a 3D model I did for +that, as the one Tinyfab provides was broken for me. + +Print this before any disassemble of the machine of course ! + +You can check the installation process on Tinyfab website. For me it was +a little bit different than the pictures they show. So I'll try to +describe it. + +* Remove the X motor (the one for the bed). That will set the belt + loose. Insert the small X axis piece on the aluminium profile, put + together the other part and the limit switch and secure that with + screws to the piece you just inserted on the profile. Put then back + the motor in place. You can push the tension mechanism for the belt + from the other side of the track to make your life easier when putting + back the belt on the pulley. + +* This one is the tricky one. The Y axis. Remove the motor too. In my + case I had to remove the motor mount too, as you have to reach the + screw that secures the belt to the hot end carriage. Be careful, as + this will set the tension belt mechanism loose and the spring is quite + strong. Pull out (but not entirely) the carriage, so the mentioned + screw is visible. Take it out and replace it for the longer piece you + printed. This is the one that will activate the limit switch. Put all + back together carefully. Now remove the small cable routing piece that + is attached to the motor, and replace it with the bigger Y axis piece + you printed. The limit switch goes inside it. + +* The last one, Z, is the easy one. Just take out the first 2 screws on + the vertical linear rail and pull out the whole cap (oh, you should + remove the filament if you have any and the plastic tube). The limit + switch goes inside the new cap. It can be a bit difficult to see, but + there are a couple of holes for screws inside the piece so you can + secure the switch to it. The switch bearing faces up. The pictures on + the website may give you a hint. + +Now it's time to open the main printer case and access the motherboard. + +Remove the current _"limit switches"_, in case of the MKII those are some +extensions to the cables that come from the motors. Connect the new ones +in place and route the cables so they are not in the way and all axis +can move freely. I routed mine below the Z axis motor. + +In case you also want to use the bed capacitive probe, you'll have to +solder a connector to the "case open" slot and put the X axis limit +switch there (and the bed probe where the X limit is supposed to be). +This is needed because the case open slot does not provide the power +needed by the capacitive sensor. Also, some changes will be needed on +the config later. + +Remove the stock cpu and replace it by the tinyfab one. Simplest step in +the whole process. + +Get the last firmware file from Tinyfab website. It comes with an +example config file already. + +Connect the printer via USB to a computer. It will appear as an external +drive. That's the SD card on the printer board. + +At this point, if you just copy the config file as the Tinyfab docs say +and reboot the printer, you're almost good to go. Put there the firmware +and rename it to 'firmware.bin' so it gets upgraded on next boot, just +in case the cpu did not have the last version installed already. + +Set up the `gamma_max`, which is the max travel on the Z axis. I did +this manually with the _"paper"_ method. So connect with a Gcode sender +program like Repetier-Host or UGS. Then: + +* Home all axis with `G28` (be prepared to turn the printer off in case of + failure, one axis going to the other side, ....) +* Set coordinates to absolute with G90 +* Go to 0,0 on XY with `G0 X0 Y0` +* Lower Z until the nozle traps the paper. Take a look at Z position. + That's your new `gamma_max`. + +Now, enjoy your free 3D printing experience ! + +I did some config tweaks though. [Here][8] and [here][9] they are for +reference. + +Basically, I removed the section for the second hotend, as it was +bothering me and I'll never have one on this printer. + +Changed the X axis limit switch pin, as there is now the capacitive bed +sensor, so `alpha_max_endstop` is now `2.13^` + +I also enabled the zprobe, set up the good pin number `1.24!^` and did the +bed level process. It's a bit tricky, but it works in the end (mind that +I use the "Rectangular grid compensation" method as described on +smoothieware [website][10], maybe the easier triangular method is enough) + +* Home all axis with `G28` +* Start the probe process with `G32` +* Save the results and the calibration file with `M500` and `M374` +* Home again and you're good to go. + +This calibration will be read on power up by the printer, so no need to +do it again unless you change something related to the bed plate. + +Some things to take into consideration, I cheated a bit to be able to +perform the process. The way it works is, you define a bed size and an +odd number to be the size of the probing grid, in my case 7 (so 7x7 +points will be probed). You al so need to enter the offset of the nozle +and the probe. The problem is that that offset gets added to the bed +dimensions for probing, so in my case the offset would be +40 for the X +and -10 for the Y, that means that the probing would start at -40 on the +X and will end on 190 on the Y. Maybe for other printers that makes +sense, but the Cetus has its travel limited to the size of the bed. + +So what I end up doing, was set up a bed grid size of 140 on the X by +170 on the Y and setting up only the Y offset. It's not perfect, but is +close enough and it works kind of right. + +Also I did a pid temperature auto test. You can get more info about +this [here][11]. It can easily be done with the command: + + M303 E0 S210 + +`M303` is the actual command, `E0` is the heater (0 as is the first and +only), and `Sxxx` is the target temperature. Use a temperature you're +going to use in real prints. + +At the end you'll get a message like: + + Cycle 4: max: 246.189, min: 227.627, avg separation: 0.418274 + Ku: 34.9838, Pu: 39.85 + Trying: + Kp: 21.0 + Ki: 1.053 + Kd: 105 + PID Autotune Complete! The settings above have been loaded into memory, but not written to your config file. + +So there you have your pid values you can put on the config file. Mine +won't be probably good for you, although default ones may work. + +And finally I modified the max PWM value for the hot end control. The +default was 160 and I could not get the hot end to temperature ... it +fell always short. Maybe 255 is too much and a little lower is ok, I +still have to try that. I hope is not too much and I don't fry +something. + +With all this, the Cetus is now a normal printer you can use in +combination with the open source slicer and gcode sender of your choice. +I personally prefer [Slic3r][12] and [Octoprint][13] (so the printer is not +right next to me). + +----- +[1]: https://www.cetus3d.com/ +[2]: https://www.tinyfab.xyz/ +[3]: http://smoothieware.org/ +[4]: https://onna.be/files/cetus_limit_switch.tar.gz +[5]: gopher://onna.be:70/0/files/cetus_limit_switch.tar.gz +[6]: https://onna.be/files/cetus_zprobe_holder.stl +[7]: gopher://onna.be:70/0/files/cetus_zprobe_holder.stl +[8]: https://onna.be/files/cetus_config.diff +[9]: gopher://onna.be:70/0/files/cetus_config.diff +[10]: http://smoothieware.org/zprobe#probing-for-cartesian-machines +[11]: http://smoothieware.org/temperaturecontrol#pid-autotuning +[12]: https://slic3r.org/ +[13]: https://octoprint.org/ + +$Id: free-cetus.md,v 1.5 2019/03/25 19:15:00 paco Exp $ diff --git a/content/gopher.md b/content/gopher.md @@ -0,0 +1,106 @@ +title: Gopher ! +author: paco +date: 2018-08-04 +css: style.css + +XXmenuXX + +--------- +# Gopher ! +2018-08-04 + +It came to my attention that [gopher][1] is still active. And I could not +anticipate how active ! + +I like it's simplicity, and the lack of ads/tracking/otherevils so I +though that I would put the content of this site (for what is worth) +available on port 70 too. + +Here's how, so I don't forget immediately. + +This is tested on OpenBSD 6.3 and 6.4. + +First, install a gopher server. In this case [gophernicus][2] + + $ doas pkg_add gophernicus + +I used inetd(8) to expose gophernicus to the world, adding this line to +/etc/inetd.conf: + + gopher stream tcp nowait _gophernicus /usr/local/libexec/in.gophernicus in.gophernicus -h "onna.be" -nv + +`-h` is hostname, and should be a valid one (the hostname of the +machine). `-nv` is disable virtual hosting, which I don't use. There's +more options in it's help or github, but with `-h` you're good to go. + +By default gophernicus will server content on `/var/gopher`. So once +inetd is (re)started, you can take your gopher client of choice and take +a look. You should see something like + + Welcome to Gophernicus! + _______ __ __ + | __|.-----.-----.| |--.-----.----.-----.|__|.----.--.--.-----. + | | || _ | _ || | -__| _| || || __| | |__ --| + |_______||_____| __||__|__|_____|__| |__|__||__||____|_____|_____| + |__| + + If you can see this, it means that the installation of Gophernicus + on this system was successful. You may now add content to this + directory and replace this page. + + ... + + +That's the default "gophermap". You can start adding content to the +default folder at this time, but modifying the gophermap to look better +and link to some content is better. + +For some instructions on how this gopher protocol works, take a look at +this [readme][3] from gophernicus. + +Mine is the same content served on http. I decided not so long ago to +just write everything in plain text and create index.html/gophermaps as +needed. So simplicity to the max. + + o--o-- Articles + + 0Barcodes, Partkeepr and parts providers(TME) partkeepr_barcodes_and_TME.txt onna.be 70 + 0Password management in the terminal done right. pass_terminal.txt onna.be 70 + +As the readme pointed earlier explains, first line is just text (you can +write or put fancy ASCII banners or whatever). Then the links have this +syntax: + + Xname<TAB>selector<TAB>host<TAB>port + +Where `selector` is the path to the resource and `X` is one of: + + Valid filetypes include: + 0 text file + 1 directory + 3 error message + 5 archive file (zip, tar etc) + 7 search query + 8 telnet session + 9 binary file + g GIF image + h HTML file + i info text + I generic image file (other than GIF) + d document file (ps, pdf, doc etc) + s sound file + ; video file + c calendar file + M MIME file (mbox, emails etc) + +There are a couple more special chars for that first line character. +Take a look at docs. + +So now the terminal lovers can find this site at gopher://onna.be/ + +--- +[1]: https://en.wikipedia.org/wiki/Gopher_(protocol) +[2]: https://github.com/kimholviala/gophernicus +[3]: https://github.com/kimholviala/gophernicus/blob/master/README.Gophermap + +$Id: gopher.md,v 1.4 2019/03/25 19:15:00 paco Exp $ diff --git a/content/ipv6-config-he.md b/content/ipv6-config-he.md @@ -0,0 +1,170 @@ +title: IPv6 setup when your provider doesn't give a shit. +author: paco +date: 2018-11-09 +css: style.css + +XXmenuXX + +--------- +# IPv6 setup when your provider doesn't give a shit. +2018-11-09 + +This is a small guide to set up IPv6 via [HE][1] tunnel on a mostly +"unixy" environment. + +I've been thinking to play with the new IP version for a while, but +never really get into it until a couple of months ago. + +Sadly most internet providers out there (at least the ones serving +residential buildings) don't give a shit about IPv4 exhaustion or IPv6 +implementation. My provider is one of those. And I could not find in my +area one that provides native IPv6. + +There are other options. The one that came to mind (I've read about it +some time ago) was using [Tunnelbroker][2]. + +That's a 6-in-4 tunnel operated by Hurricane Electric. There are more +companies/projects offering this, here's a [list][3]. + +The process with HE is pretty simple. First one has to register on their +website and then create a tunnel. +This process involves choosing a endpoint server to tunnel your v6 +traffic. Choose one that's "close" to you in internet terms (that +basically means few hops, low latency. `traceroute(8)` and `ping(8)` are +your friends). + +You'll be then assigned a `/64`. Two really, one is for the tunnel itself. +But I won't be using them really (well, just for the tunnel). More on +that later + +On their website they have lots of example configurations. Just choose +your poison and they will provide basic instructions on how to set it +up. + +I wanted to set up this for my entire home/office network. I have a +small fanless OpenBSD machine acting as a router, so the instructions +are super simple: + + ifconfig gif0 tunnel + ifconfig gif0 inet6 alias 2001:470:aaa:aaa::2 2001:470:aaa:aaa::1 prefixlen 128 + route -n add -inet6 default 2001:470:aaa:aaa::1 + +With just this, my router has IPv6 connection to the world ! +In this example `` is my real IPv4 and `2001:470:aaa:aaa/64` is the +range assigned for the tunnel. As said earlier they assign another `/64` +so you can use it on your internal network. + +But, they also offer `/48` just in case you want to create different +subnets and do proper IPv6 auto configuration. You can ask for it once +you complete the registration and successfully establish the tunnel. + +It's still shocking to me that they deliver that prefix ... that means +they just route to you 65536 (+2) /64s ... nuts ! + +Anyway, the goal then is having the tunnel set up permanently, assign a +`/64` to every internal vlan and enable router advertisement for those +too. + +On my OpenBSD machine goes like this: + +Create `/etc/hostname.gif0` (the tunnel interface): + + tunnel + !ifconfig gif0 inet6 alias 2001:470:aaa:aaa::2 2001:470:aaa:aaa::1 prefixlen 128 + !route -n add -inet6 default 2001:470:aaa:aaa::1 + +Add IPv6 config for the vlans. Here is the full config of one of mine, +at `/etc/hostname.vlan10` + + inet NONE vnetid 10 parent em1 description "cable" up + inet6 2001:470:bbb:cab::1 64 + group internal + +Note that I'm using now part of the `/48` +I'll configure a `/64` for every other vlan in my net. + +Now we'll use `rad(8)` so all the devices on the net have IPv6 +connectivity too. +Here's part of my `/etc/rad.conf` Have a look at `rad.conf(5)` for more info. + + interface vlan10 { + prefix 2001:470:bbb:cab::/64 + dns { + nameserver 2001:470:bbb:cab::1 + search home.my.domain + } + } + +That's nice because we can set up `AAAA` records on a real domain, and HE +provides reverse DNS too ! + +Remember to enable IPv6 forwarding in your router. On OpenBSD is done +via `sysctl(8)/sysctl.conf(5)` + + net.inet6.ip6.forwarding=1 + +Also, check your pf(4) configuration. Most likely you'll need to adjust +it. + +At this point most of the devices in your network will be negotiating +IPv6 auto configuration. I found out that Android and iOS phones do that +automatically, and prefer v6 if present. All linux boxes using dhcpcd(8) +will work automatically too. +On Macs I found out that some were configured to take v6 config if +possible and others have it disabled, so just "switch it on" and you're +good to go. + +I have a couple of machines that act like servers, so I needed to set up +ip configuration manually there. Check your OS documentation on any +case. + +My main workstation runs OpenBSD too, so that was simple to set up. +On my /etc/hostname.em0 + + dhcp + inet6 autoconf + +Also, tell the system resolver to prefer v6 over v4 if you want. On +/etc/resolv.conf.tail + + nameserver 2001:470:bbb:cab::1 + lookup file bind + family inet6 inet4 + +And that's it ! It was easier than expected ! + +A couple of caveats, though. + +Network latency could be a bit higher, depending on how packets get +routed to your tunnel server, etc. In my case, oddly enough, most times +latency is better through the tunnel ... which does not speak so well +about my internet provider right ? + +Also, speed may be an issue depending on your current connection. In +theory there's no speed limit on the tunnel. I have 200/200 Mbps here, +and I get about 65/65 Mbps through the tunnel easily. Which is more than +ok for my tests. But it varies in time. I guess they could have load +issues at some point. + +Besides, Netflix and other streaming services are not happy with you +using those ip ranges. You'll see the same error you get when you try to +use most vpns on the market ... So basically you may have problems with +any service that controls you to the extreme and cares about where you +connect from. The lesson here, don't use those services :-P + +And that's all folks ! +With some kind-of-simple steps one can have billions of public routable +ip addresses to play with at home/office/whatever for free. + +Another cool thing. HE has this [IPv6 Certification][4]. Is not that hard +if you take some time to do it and you'll learn a lot in the process. +Besides, they will send you a super nerd t-shirt when you complete all +levels ;-) + +----- +[1]: http://he.net/ +[2]: https://tunnelbroker.net +[3]: https://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers +[4]: https://ipv6.he.net/certification/ + +$Id: ipv6-config-he.md,v 1.5 2019/03/25 19:15:00 paco Exp $ diff --git a/content/nfs-performance-improvements-openbsd.md b/content/nfs-performance-improvements-openbsd.md @@ -0,0 +1,53 @@ +title: Performance improvements on NFS mounts on OpenBSD +author: paco +date: 2018-11-18 +css: style.css + +XXmenuXX + +--------- +# Performance improvements on NFS mounts on OpenBSD +2018-11-18 + +Those are simple notes on how to increase performance (read basically) +on my OpenBSD desktop again my NAS at home. + +The NAS exports a set of folders via various protocols. AFP for the +Macs, NFS for OpenBSD and maybe Linux and Samba for everything else +(basically one Ubuntu I use as media center). + +It runs FreeBSD, and the performance is generally good on all protocols, +limited more or less by the speed of the link 1Gbps but OpenBSD was +reporting some low values, in the order of 390Mbps read and 60 Mbps +write. + +A quick look at the OpenBSD list archives gives me a nice [thread][1] that +explains a lot. + +After some playing around, I applied the following options to the NFS +mount points: + + -T/-U To force TCP or UDP respectively, see below + -3 To force NFSv3 (this is unnecessary as is the default) + -a 4 readahead value set to the max. See mount_nfs(8) + -r 32768 readsize. Again see mount_nfs(8) + -w 32768 writesize. same thing. + noatime I set this up always on network resources. + +Oddly enough, I get more stable results (specially on writes) using TCP +instead of UDP ... + +On TCP that read speed is almost saturating the link, ad 890Mbps and +write speed is way better (enough for me anyway) at 410Mbps + +On UDP read speed is even better around 905Mbps but write speed is poor +and inconsistent at about 128Mbps + +So in the end I end up using TCP. Maybe I'll take a closer look in the +future to see if I can improve write a little bit, but it's OK for me at +this stage. + +----- +[1]: https://marc.info/?l=openbsd-misc&m=146130062830832&w=2 + +$Id: nfs-performance-improvements-openbsd.md,v 1.5 2019/03/29 17:17:44 paco Exp $ diff --git a/content/partkeepr-barcodes-and-TME.md b/content/partkeepr-barcodes-and-TME.md @@ -0,0 +1,83 @@ +title: Barcodes, Partkeepr and parts providers(TME) +author: paco +date: 2018-03-08 +css: style.css + +XXmenuXX + +--------- +# Barcodes, Partkeepr and parts providers(TME) +2018-03-08 + +Electronic parts are small ... and they get smaller and smaller when you +go down the rabbit hole of SMD components. They are also really difficult +to organize and catalogue. There are useful tools like [Partkeepr][1] to +help you keep things tidy and, most importantly, don't buy things twice +because you can't find them or you don't remember where the hell they +are (or even don't remember that you have them). + +The only drawback to that is that you have to manually insert all the +parts that you buy ... which is tedious. + +I basically get my parts for 4 places: + +* The _slow boat from China_, when piece is important and time is not. +* Ebay, basically same thing, although sometimes there are sellers in + Europe, which is nice ! +* [TME][2], a polish distributor with fairly good prices and good catalogue + that I tend to use when I need to be sure what I'm buying. +* And [Farnell/Element14][3], when I need something that I cannot find + anywhere else ... + +It turns out that the last 2 have good APIs to query their catalogue. And +specifically TME adds a little iQR code to all their packages with some +info. + +With any old webcam you can find, and [zbar][4], you can extract the info +on that iQR code easily, and dump it to `stdout`. It looks something +like this (this is a little 12V fan): + + QTY:1 PN:HA50151V4 MFR:SUNON MPN:HA50151V4-000U-999 PO:xxxxxx/x https://www.tme.eu/details/HA50151V4 + + where: + + FIELD NAME Desc + 0 QTY Quantity + 1 PN Part Number + 2 MFR Manufacturer + 3 MPN Manufacturer part number + 4 PO Order Number (at TME) + 5 Url of the product at vendor(TME) + + +That's easy to parse, and contact TME's API for more info. + +I've put together a little python3 script that takes that from `stdin` +and makes all the necessary calls (to TME and then to Partkeepr), so I +don't have to enter my TME orders by hand anymore. You can find it +[here][5] + +You'll need a token and secret from the distributor. So go to their +developer's [page][6] and sing in. + +It downloads the datasheets too (if they have any) and uploads them to +Partkeepr. If the item is already in the db, it just increments the +stock. + +On the git page you can find more info, but it's really easy to use, +just pipe the output of zbar to the script like this: + + zbarcam --raw /dev/video0 | ./parteye.py + +If I order something from Farnell I'll check if they do something +similar, so I can adapt the script. + +----- +[1]: https://www.partkeepr.org/ +[2]: https://www.tme.eu/ +[3]: http://farnell.com +[4]: http://zbar.sourceforge.net +[5]: https://git.onna.be/parteye/ +[6]: https://developers.tme.eu + +$Id: partkeepr-barcodes-and-TME.md,v 1.4 2019/03/25 19:15:00 paco Exp $ diff --git a/content/pass-terminal.md b/content/pass-terminal.md @@ -0,0 +1,58 @@ +title: Password management in the terminal done right. +author: paco +date: 2017-10-10 +css: style.css + +XXmenuXX + +--------- + +# Password management in the terminal done right. +2017 + +I spend most of my time in front a computer in the terminal ... I'm used +to it, and I like it a lot. There's nothing (well, almost nothing) a +terminal app or a combination of apps can't do (way better some times +that its graphical counterparts). + +One of those apps that's particularly useful is [pass][1]. A password +manager for the terminal. + +Is quite simple. It creates a hierarchy of folders and files in +`$PASSWORD_STORE_DIR` (`~/.password-store` by default) and encrypts them with +your GPG key. + +It can copy the recovered passwords to the clipboard, has `bash` and +`zsh` completion. Can generate random passwords for you and more ... + +You can also create multi-line _stores_ with extra information, but just +the first line will be copied to the clipboard when you use `-c`. + +They have a great web page explaining all that, and a really good man +page, so there's no excuse to have ugly methods for managing your +passwords ... or no methods at all ! + +The things I use the most: + + pass -c site/foo.com/username + +This one gets the password for `username@foo.com` and puts it on your +clipboard. + + pass generate -c email/me@foo.com + +This one generates a random password, stores it on `email/me@foo.com` +and copies it to the clipboard. Pretty useful when you're singing in to +a new service. + + pass edit foo/bar/baz + +This one edits one of your entries. Mind that generate won't ask for +password, as you're encrypting to your GPG public key, but edit or show +will. It's a good idea to have GPG agent setup, so you can control +how/when passwords are requested. + +----- +[1]: https://www.passwordstore.org/ + +$Id: pass-terminal.md,v 1.4 2019/03/25 19:15:00 paco Exp $ diff --git a/content/raidz-disk-change.md b/content/raidz-disk-change.md @@ -0,0 +1,94 @@ +title: ZFS RAIDZ disk change +author: paco +date: 2018-11-13 +css: style.css + +XXmenuXX + +--------- +# ZFS RAIDZ disk change +2018-11-13 + +Here are some notes in order to change a failing disk on a RAIDZ pool. +This has been tested on FreeBSD 11.2. It may work with other versions, +but check `gpart(8)`, `zpool(8)` and the handbook to be sure. + +My NAS runs FreeBSD 11.2 with zroot, 4x3TB disks in raidz1. +Some days ago 1 of those disks started to report quite a few _smart_ +errors. ZFS itself did not report any errors, but I prefer to change the +disk while it still works. It's probably faster (copy over re-build) +and safer, as one does not face the possibility of a failing disk while +rebuilding the RAID. + +In this particular case `ada2` was failing, and ada4 was the new disk. +This will change once the failing disk is removed, but I don't care as I +use gtp labels. + +I don't like GPT GUID labels nor DiskID labels (although I see the point +on this latter ones when you have a bunch of disks ...). So, I have this +on `/boot/loader.conf` + + kern.geom.label.gptid.enable="0" + kern.geom.label.disk_ident.enable="0" + +First thing is to create thg GPT partition table: + + gpart create -s GPT ada4 + +And replicate the same partition scheme on the new disk (in my +particular case replacement disk and replaced disk are the same model): + + gpart backup ada2 | gpart restore -F ada4 + +This only replicates the partition scheme, but not the labels. So that +has to be done manually: + + gpart modify -i 3 -l zfs4 ada4 + gpart modify -i 2 -l swap4 ada4 + gpart modify -i 1 -l gptboot4 ada4 + +As you can see on my schema I have a boot partition on each disk, a swap +partition an another partition which is part of the zpool. + +At this time, we're ready to replace the disk: + + zpool replace zroot gpt/zfs2 gpt/zfs4 + +This can take a lot of time. It all depends on your hardware. In my case +it took over 10h. + +Is a good idea to setup now the bootloader in place on the new disk: + + gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada4 + +Once finished everything is back to normal: + + pool: zroot + state: ONLINE + scan: resilvered 2.15T in 10h23m with 0 errors on Tue Nov 13 04:31:35 2018 + config: + + NAME STATE READ WRITE CKSUM + zroot ONLINE 0 0 0 + raidz1-0 ONLINE 0 0 0 + gpt/zfs0 ONLINE 0 0 0 + gpt/zfs1 ONLINE 0 0 0 + gpt/zfs4 ONLINE 0 0 0 + gpt/zfs3 ONLINE 0 0 0 + + errors: No known data errors + +As a bonus, those commends can help a lot getting information about the +disks, partitions and status: + + zpool status + gpart show + gpart backup <provider> + camcontrol devlist + +Take a look at the respective man pages before executing anything on +your machine ! + +----- + +$Id: raidz-disk-change.md,v 1.4 2019/03/25 19:15:00 paco Exp $ diff --git a/content/self-hosted-xmpp-server.md b/content/self-hosted-xmpp-server.md @@ -0,0 +1,65 @@ +title: Self hosted XMPP server (on OpenBSD) +author: paco +date: 2019-04-22 +css: style.css + +XXmenuXX + +--------- +# Self hosted XMPP server (on OpenBSD) +2019-04-22 + +_TODO: change pub date to match obsd release, and check for potential changes_ +Tested on OpenBSD 6.5 + +## Intro + +Build a self-hosted messaging service is quite simple. This guide shows how to +do it using OpenBSD as a base system and XMPP as the messaging protocol. + +The end result is an End-to-End encrypted chat system for 1:1 or multi-user +conversations. + +The software used for the server is [prosody][1], and it's all based on +[this guide][2]. + +For the clients, I've tried [Gajim][3] for the desktop (works for Windows, +Linux and *BSD), [Conversations][4] on the phone (Android) and [profanity][5] +on the terminal (works almost everywhere). + +## Rationale + +I used to host my messaging services back in the day. People stopped using this +for some reason, and then came all the Whatsapp and co. So all that was +forgoten. + +Although I never used whatsapp, on recent times I've been testing some instant +messaging systems, but none of them were good enough. In the end, all rely on +central systems, often owned by companies that have to make money from +somwhere. Most of the times is you (one way or another) even if they say the +service is free. + +XMPP is federated, just like email is. And with recent extensions like easy to +use End-to-End encryption and http file sharing it's a viable solution for +resilient and secure instant messaging system, that does not spy on you (no +more than encrypted email for instance). + +## Previous steps (DNS) + +## Server install + +## Server config + +## OMEMO + +## Client(s) config examples + +--- + +[1]: https://prosody.im +[2]: https://homebrewserver.club/configuring-a-modern-xmpp-server.html +[3]: https://gajim.org/ +[4]: https://conversations.im/ +[5]: http://www.profanity.im/ + +$Id: ipv6-config-he.md,v 1.5 2019/03/25 19:15:00 paco Exp $ diff --git a/content/teensy-midi-controller.md b/content/teensy-midi-controller.md @@ -0,0 +1,92 @@ +title: Teensy MIDI controller +author: paco +date: 2019-03-16 +css: style.css + +XXmenuXX + +--------- +# Teensy MIDI controller +2019-03-16 + +I recently discovered, and been playing with [VCV Rack][1]. This software +is just awesome. + +I knew about modular synthesizers because a friend of mine (dj and +musician) told me about it some years ago, but I never really got it. +With vcv rack you can understand how modular synthesis works, play with +it and learn a thing or two about music in general and analog signals. +It is pretty fun. Not to mention that real hardware modular is extremely +expensive and with this software option you can add as many modules as +your CPU can handle before start "glitching". + +One thing I do not like about software synths is the "abstraction". I +mean, you are point and click, so the experience is poor really, so I +thought to make a device to control some of the parameters of the +patches (that's modular jargon for a particular modular setup). + +Such devices do exist, they are called MIDI controllers, but I did not +want to spend much money on this, as I know nothing about music and they +are not super cheap. + +They send MIDI [commands][2], which is the industry standard for digital +music communication. In this case over USB instead of the traditional +serial over midi DIN cable. + +There are some easy ways to make such a device. Some Arduino compatible +development boards out there (like the [Teensy][3], LC in my case) can act +as a USB MIDI device and programming them to do basic stuff is really +easy. + +So, I got a Teensy LC (the cheapest I could find), 8 potentiometers and +4 buttons and connected them together. With a bit of [code][4] I had a +MIDI device sending MIDI CC (control) commands to the computer. Then I +just had to configure the MIDI-CC core module on vcvrack, and start +patching! + +This device is not limited to vcvrack. It can be used with any software +that accepts midi commands. + +The midi channel can be changed modifying this line on the code + + #define MIDI_CHANNEL 2 + +Same for the control commands on the pots and buttons: + + static const uint8_t potCC[NUM_POTS] = {1, 2, 3, 4, 5, 6, 7, 8}; + static const uint8_t btnCC[NUM_BUTTONS] = {11, 12, 13, 14}; + +The mode of the buttons can be one of momentary, latch or trigger and +can also be adjusted here: + + uint8_t btnMode[NUM_BUTTONS] = {MOMENTARY, TRIGGER, TRIGGER, LATCH}; + +Now I can pair real pots and buttons with some of my patch parameters +and play with it. Here's an [example][5] (yeah, I'm definitely not a +musician) + +I also designed a case for it using FreeCAD and printed it on my 3D +printer. The end result is not bad at all. I'll upload some pictures +when I have the time [here][6] + +The only problem with all this is that is highly addictive ... + +Let's see how it goes. + +Here you have more references for [Teensy USB MIDI][7] and VCV Rack +"howto's" ([1][8] and [2][9]) + +Have fun ! + +---- +[1]: https://vcvrack.com/ +[2]: https://en.wikipedia.org/wiki/MIDI +[3]: https://www.pjrc.com/teensy/ +[4]: https://git.onna.be/midi_controller/ +[5]: https://onna.be/files/vcvrack_test.mp3 +[6]: https://onna.be/files/midi_controller_pictures/ +[7]: https://www.pjrc.com/teensy/td_midi.html +[8]: https://www.youtube.com/channel/UCuWKHSHTHMV_nVSeNH4gYAg +[9]: https://www.youtube.com/channel/UCnZEv3hADF9ELOIwUNu6RVg + +$Id: teensy-midi-controller.md,v 1.3 2019/03/25 19:15:00 paco Exp $ diff --git a/deploy.sh b/deploy.sh @@ -0,0 +1,174 @@ +#!/bin/sh + +set -eu + +htmlDir="./htmlOut" +gopherDir="./gopherOut" +htmlChanged=0 +gopherChanged=0 +phlogChanged=0 +force=0 + +if ! command -v lowdown > /dev/null; then + echo "Lowdown not found!" + exit 1 +fi + +usage() { + echo "$0 -d htmldir -g gopherdir" +} + +generate_html() { + orig=$1 + dest=$2 + menu=$(sed 's/"/\\"/g' templates/menu_template.html) + echo " - generating $dest" + lowdown -s -D html-skiphtml "$orig" > "$dest" + sed -i'' "s!XXmenuXX!${menu}!" "$dest" + test "$3" = "1" && touch generate_index_html.flag +} + +generate_html_index() { + articleList="" + last=$(TZ=UTC date) + date=$(TZ=UTC date '+%F') + menu=$(cat templates/menu_template.html) + for f in $1; do + mdFile=$(basename "$f") + file="${mdFile%%.md}.html" + title=$(grep -E '^title: ' "content/$mdFile" | sed 's/title: //') + item="<li><a href=\"$file\">$title</a></li>\\n" + articleList="$articleList$item" + done + eval "echo \"$(sed 's/"/\\"/g' templates/index.html)\"" \ + 2> /dev/null \ + 1> "$htmlDir/index.html" +} + +generate_gopher() { + orig=$1 + dest=$2 + echo " - generating $dest" + sed '1,/---------/d' "$orig" > "$dest" + test "$3" = "1" && touch generate_gophermap.flag +} + +generate_gophermap() { + articleList="" + last=$(TZ=UTC date) + for f in $1; do + mdFile=$(basename "$f") + file="${mdFile}.txt" + title=$(grep -E '^title: ' "content/$mdFile" | sed 's/title: //') + item="0$title /$file onna.be 70 +" + articleList="$articleList$item" + done + export last + export articleList + envsubst < templates/gophermap > "$gopherDir/gophermap" +} + +copy_phlog_entry() { + cp "$1" "$gopherDir/phlog/" + test "$2" = "1" && touch generate_phlogmap.flag +} + +generate_phlogmap() { + entryList="" + last=$(TZ=UTC date) + for f in $1; do + file=$(basename "$f") + title=$(echo "$file" | sed 's/_entry\.txt//') + item="0$title /phlog/$file onna.be 70\\n" + entryList="$entryList$item" + done + eval "echo \"$(cat templates/phlogmap)\"" \ + 2> /dev/null \ + 1> "$gopherDir/phlog/gophermap" +} + +while getopts d:g:f opt; do + case $opt in + d) htmlDir="$OPTARG";; + g) gopherDir="$OPTARG";; + f) force=1;; + *) usage ; exit 2;; + esac +done + +mkdir -p "$htmlDir" "$gopherDir" + +# copy static content to both output dirs +echo "* sync static content" +rsync -a static/ "$htmlDir" +rsync -a static/ "$gopherDir" + +# generate html and gopher content from md +echo "* generate new content" +sortedArticles=$(grep -E '^date: ' content/*md | \ + sed 's/date: //' | sort -t: -k2 -r | cut -d':' -f1) +echo "$sortedArticles" | while read -r f; do + mdFile=$(basename "$f") + filename=${mdFile%%.md} + fileMtime=$(stat -f %c "$f") + if [ ! -f "$htmlDir/$filename.html" ] || [ "$force" = "1" ]; then + echo " - $htmlDir/$filename.html does not exist" + generate_html "$f" "$htmlDir/$filename.html" 1 + else + htmlMtime=$(stat -f %c "$htmlDir/$filename.html") + if [ "$fileMtime" -gt "$htmlMtime" ]; then + echo " - $f newer than $htmlDir/$filename.html" + generate_html "$f" "$htmlDir/$filename.html" 0 + fi + fi + if [ ! -f "$gopherDir/$mdFile.txt" ] || [ "$force" = "1" ]; then + echo " - $gopherDir/$mdFile.txt does not exist" + generate_gopher "$f" "$gopherDir/$mdFile.txt" 1 + else + gopherMtime=$(stat -f %c "$gopherDir/$mdFile.txt") + if [ "$fileMtime" -gt "$gopherMtime" ]; then + echo " - $f newer than $gopherDir/$mdFile.txt" + generate_gopher "$f" "$gopherDir/$mdFile.txt" 0 + fi + fi +done + +# handle phlog entries +mkdir -p "$gopherDir/phlog" +sortedEntries=$(find ./phlog -name "*txt" | sort -r) +echo "$sortedEntries" | while read -r f; do + file=$(basename "$f") + fileMtime=$(stat -f %c "$f") + if [ ! -f "$gopherDir/phlog/$file" ] || [ "$force" = "1" ]; then + echo " - $gopherDir/phlog/$file does not exist" + copy_phlog_entry "$f" 1 + else + phlogMtime=$(stat -f %c "$gopherDir/phlog/$file") + if [ "$fileMtime" -gt "$phlogMtime" ]; then + echo " - $f newer than $gopherDir/phlog/$file" + copy_phlog_entry "$f" 0 + fi + fi +done + +# generate html index +if [ -f generate_index_html.flag ] || [ "$force" = "1" ]; then + echo " - generate html index" + generate_html_index "$sortedArticles" + rm generate_index_html.flag +fi + +# generate gophermap +if [ "$gopherChanged" -gt 0 ] || [ "$force" = "1" ]; then + echo " - generate gopher map" + generate_gophermap "$sortedArticles" + rm generate_gophermap.flag +fi + +# generate phlog map +if [ "$phlogChanged" -gt 0 ] || [ "$force" = "1" ]; then + echo " - generate phlog map" + generate_phlogmap "$sortedEntries" + rm generate_phlogmap.flag +fi diff --git a/phlog/.#gophermap.1.3 b/phlog/.#gophermap.1.3 @@ -0,0 +1,16 @@ +# vim:set noet tw=100: +i----------------------------------------------------------------------- onna.be 70 +i __ __ onna.be 70 +i .-----.| |--.| |.-----.-----. onna.be 70 +i | _ || || || _ | _ | __ __ __ onna.be 70 +i | __||__|__||__||_____|___ | |__|__|__| onna.be 70 +i |__| |_____| onna.be 70 +i onna.be 70 +i----------------------------------------------------------------------- onna.be 70 + +020181115-0901 /phlog/20181115-0901_entry.txt onna.be 70 +020181113-1844 /phlog/20181113-1844_entry.txt onna.be 70 +020181113-1342 /phlog/20181113-1342_entry.txt onna.be 70 + +----------------------------------------------------------------------- +# $Id: phlog_footer.txt,v 1.1 2018/11/13 12:45:46 paco Exp $ diff --git a/phlog/20181113-1342_entry.txt b/phlog/20181113-1342_entry.txt @@ -0,0 +1,11 @@ +------------------------------------------------------------------------ + 13-Nov-2018, 13:42 +------------------------------------------------------------------------ + +This is an experiment ... +I'll try to phlog for a while. Mainly writting notes about what have I +done or what I plan to do in the short term. But kind of public so maybe +it helps somebody ... + +------------------------------------------------------------------------ +$Id: 20181113-1342_entry.txt,v 1.1 2018/11/13 12:47:18 paco Exp $ diff --git a/phlog/20181113-1844_entry.txt b/phlog/20181113-1844_entry.txt @@ -0,0 +1,41 @@ +------------------------------------------------------------------------ + 13-Nov-2018, 18:44 +------------------------------------------------------------------------ + +So, first entry of this experiment ! + +Yesterday I changed a disk on my NAS, which was giving bad signs as per +smartctl data report. I've written something about it here[1] + +Also, I'm setting up a proper UPS installation for the machines I care +the most. I've always thought about it ... but never actually did it. +The other day a thunderstorm fried one of the NICs on my firewall, so I +thought it was about time to do something. I already had a small chep +UPS, I bought another one and now comes the "cable fight". I'll have to +deal with cables for some hours to set all up nicely :-( + +One thing I already tried and struggled with is get data from the small +UPS (via USB) to my NAS. At this time is not working at all, and it +seems a permissions issue I cannot find. I may write somthing about it +if I find the solution. + +At work, as usual, I'm updating and migrating old services to more +"modern" solutions (aka other's people's computers). GCSQL (postgres) we +use finally has the possibility of a private ip inside the GCP range, so +I'm migrating all on the stg environment to this setup so we can get +ride of cloudsql_proxy, at least internally. + +Also, I'm delaying the setup of an openldap server and the pam config +for ssh authetication against it on some machines ... just because I +find LDAP unnecessarily complicated and utterly boring ... but I'll have +to do it sonner rather than later. I hope I can find a good Ansible +playbook I can modify so I don't have to deal with the whole thing :-/ + +And I think that's it for today ! +Not bad, not bad ... + +I'm going to dive into some cables now and then have a gigantic beer ! + +[1] - gopher://onna.be:70/0/raidz_disk_change.txt +------------------------------------------------------------------------ +$Id: 20181113-1844_entry.txt,v 1.1 2018/11/13 17:59:08 paco Exp $ diff --git a/phlog/20181115-1906_entry.txt b/phlog/20181115-1906_entry.txt @@ -0,0 +1,37 @@ +------------------------------------------------------------------------ + 15-Nov-2018, 19:06 (UTC) +------------------------------------------------------------------------ + +And right after I finish installing my new UPS a thunderstorm begins ! +I call that perfect timing. + +I'll enjoy my Stout while it rains outside :-) + +So, obviously the cable messing and UPS installing is done. + +Now comes the fun part of dealing with the USB interface to the thing so +equipment connected can shut down properly in case of battery going low. +I did not have much success with the small one on FreeBSD, but I think I +have a good idea to control both with raspberrys ... + +Also, I've been playing with weechat scripts. My idea is to have XMPP +push notifications on private messages and hightlights. I have it +working now, but in a nasty way. The script is written in Perl and, for +some reason I think weechat messes a bit with @INC, so the XMPP call +part does not work from inside weechat, but the same code on a saparate +script from the command line works flawlessly ... I want to publish it, +so I'll give it another try maybe next week, who knows. + +At work I made some progress with the openldap setup, but I have some +issues with an ansible task getting stuck. I have to debug a bit. This +goes slow because I don't really want to do it and because I'm +constantly interrupted with production and devs support stuff ... + +I'm not complaining. I prefer 20 prod deployments to this shit hehehe. +and It's a "nice to have" anyway, so no big deal. + +Ok, the bottle is almost empty now. Time to take a look at RSS and +phlogroll. + +------------------------------------------------------------------------ +$Id: 20181115-1906_entry.txt,v 1.1 2018/11/15 19:20:29 paco Exp $ diff --git a/phlog/20181116-2245_entry.txt b/phlog/20181116-2245_entry.txt @@ -0,0 +1,44 @@ +------------------------------------------------------------------------ + 16-Nov-2018, 22:45 (UTC) +------------------------------------------------------------------------ + +So, there goes the (work) week. Today the log goes in reverse, first +work. +I finally set up the ldap server the way I wanted it, with SSH keys and +all. Configuring the clients I need is an easy task. It can be done on +monday before the second coffee ... + +Also I've been fighting with prometheus. We have it working on Google +Kubernetes Engine at work, and my boss asked me to reduce the capacity +of the monitoring node pool (we have it isolated) to reduce some cost, +well in fact reduce the size of the nodes in the pool. I did, but that +caused it to be evicted (OOMemory). Long story short, after a while the +end result has been the TSDB corrupted beyond repair, so I got the node +pool to it's former size and made all work again, but we lost the data. +Is not the end of the world, but is useful to have those 15 days of +monitoring data all the time to see trends and changes. + +At personal geek level today has been quiet. I just messed around a bit +on IRC and I started to look at OpenBSD outdated ports to see if I can +update some and contribute in some way to the project. So far I have a +couple of candidates. I may start to work on them this weekend. + +Finding something I can contribute to it's always been hard in itself. +I'm not a great developer or have the patience to help in translations +or documentations. But I'm stubborn and keep looking ! + +On the UPS stuff, a friend of mine can get me 2 raspberrys for free +(model 2 I think), so that will be a perfect platform to test. I have +also in mind building some sort of service with one of them now that I +have tons of public IPv6 addresses to use. I'm still not sure what I'll +put in there. + +so, that's it ! + +p.s.: I was going to end with "That's it, another day !" but that +reminded me of some lyrics, "... another day, another death ..." by The +Mob (Let the tribe increase - 1983) and I found it a little gloomy to +end this post. I totally recommend the band by the way. + +------------------------------------------------------------------------ +$Id: 20181116-2245_entry.txt,v 1.1 2018/11/16 23:26:46 paco Exp $ diff --git a/phlog/20181117-1934_entry.txt b/phlog/20181117-1934_entry.txt @@ -0,0 +1,26 @@ +------------------------------------------------------------------------ + 17-Nov-2018, 19:34 (UTC) +------------------------------------------------------------------------ + +Rainy day, but kind of productive in a way. +I was just messing around on IRC after watching my Mr.Robot episode +(yes, I haven't seen it until now, I'm not at season 2) when I thought, +well I published a small perl module to wrap around Rargb torrentapi +some time ago ... I could make an OpenBSD port of that ! + +So, I take a look and some things had to be fixed first, which means +releasing a new version of the module. I thought, well let's do it and +then I'll create the port. It turns out I needed some modules not +available as ports/packages, so I ended up making 2 ports for 2 +different perl modules. Maybe that would be useful to somebody. I just +submitted them to ports@ let's see what people over there think. + +Once that is done (and cpan mirror servers get the copy of my new +version) I'll be able to continue with my original idea. + +Tomorrow I'll try to work on the raspberry/UPS stuff maybe. And +definitely do some exercise ... I've been not working out lately and I'm +starting to feel it :-/ + +------------------------------------------------------------------------ +$Id: 20181117-1934_entry.txt,v 1.1 2018/11/17 19:54:28 paco Exp $ diff --git a/phlog/20181118-2212_entry.txt b/phlog/20181118-2212_entry.txt @@ -0,0 +1,52 @@ +------------------------------------------------------------------------ + 18-Nov-2018, 22:12 (UTC) +------------------------------------------------------------------------ + +I've finally set up one raspberry to check on one of the UPSs. +Docs are not the best for nut[1] and all the articles on the internet +are either old or wrong. I've taken some notes and will probably write +something about it this week. + +I've managed to set up my wife's synology to take data from the pi, so +it will shut down properly in the event of a power outage. + +The idea is to do the same on the other UPS and connect the router and +the NAS to it. Almost done ! + +On another note, I think I may have found some dependency issue on +devel/git port for OpenBSD. I've sent the silliest of diffs to ports@ +I'm not sure it's a problem really, so they may not answer my emails +anymore (and I can't blame them hehehe), between that and the facepalm +moment some weeks ago when I sent the package instead of the port for +the new addition I was trying to make on solderpunk's VF-1[2] ... + +On my Mr. Robot episode today, what a surprise, Alf ! it made me smile, +really ! I like this show, it's entertaining and keeps the right amount +of tension, black humor, references ... + +What did not make me laugh, in fact made me quite angry was Apple and +their friking "big brother" way of things. You buy them stuff and you +don't own it, same goes for Google/Android on my phone. I'm seriously +thinking in not buying any other smartphone when this one crashes. And +in this regard Apple is to me what windows was in the 90s, I'm givnig +support (to my wife in this case) as I did to friends and family back +then ... for a thign you've paid and all the problems come from the +walled garden, the lack of freedom and the obscure closed environment +... I'm sick of these companies. + +Not talking about privacy (there's none, and you should treat those +devices as compromised at all times), I'm talking about how they laugh +at your fucking face, owning your device and treating you like a 3 year +old ... + +grrrr, did not want this to be a rant, but is kind of one ... Anyway. + +It's getting late, and it's rainig again. Going to sleep with the sound +of rain does not sound like a bad plan :-) + +----- +[1] https://networkupstools.org +[2] https://github.com/solderpunk/VF-1 + +------------------------------------------------------------------------ +$Id: 20181118-2212_entry.txt,v 1.1 2018/11/18 22:31:25 paco Exp $ diff --git a/phlog/20181123-1914_entry.txt b/phlog/20181123-1914_entry.txt @@ -0,0 +1,56 @@ +------------------------------------------------------------------------ + 23-Nov-2018, 19:14 (UTC) +------------------------------------------------------------------------ + +Busy days, busy days ... + +Lots of stuff at work, basically related to kubernetes and fighting +ingress configuration. I think is the weakest point on this container +orquestration software. + +On the personal side, I think I don't advance so much in my touch +typing, althoug it helps quite a bit with the finger pain and I'm maybe +a little bit more confortable with it. For sure it's worth to continue +with the "experiment". + +On the geek side (the good side !!), I did something I had in my todo +list for long time. I have a smal laser engraver (2500mW), the kind one +can easily find on ebay or china. The quality of the thing is not the +best in some areas, for instance, the system is based on some acrylic +plates with ball bearings that "ride" on aluminum extrusions. The +problem is that they just put metal against metal and also the +tolerances are a little bit loose. Months ago I bought a set of ball +bearings with a plastic wheel around them in order to replace them. They +are slightly bigger in diameter and my idea was tighten the tolerances +and remove the annoying metal to metal contact. + +I succeeded in that, but the rails are now a little bit too tight. So +tight in fact that the Y axis (wich drives 2 carriages with one stepper +motor) was unable to move the gantry. So CAD/3D printing to the resque. +I cloned the acrylic plates with just a bit more distance between the +screws that support the bearings, so now it goes smoothly, more quiet +and with virtually no play ! + +From that I get a couple more ideas about things I wanted to do ... so +the small Cetus3D is pretty busy these days ! + +I may put a couple of photos and write something about the process I +follow for this. I'm not an expert on mechanical design (not by a long +shot), but it fascinates me. + +Of course I try to use free software as much as possible. I think the +only piece that's not free is the slicer, as Tiertime (the company that +produces the Cetus3D) is kind of special and don't use Gcode as the +rest. + +That's good when you're starting, as the thing just works. You send it a +model and you get a part with a pretty good quality. But when you want +to do more advanced or peculiar stuff, it falls short. One of my todo +list projects involves modifying the printer to work with regular +firmware (like marlin for instance) and be able to use gcode and play +with the traditional slicers. + +Now I'll have a big beer and read some rss feeds. Geek weekend ahead ! + +------------------------------------------------------------------------ +$Id: 20181123-1914_entry.txt,v 1.1 2018/11/23 19:36:24 paco Exp $ diff --git a/phlog/20190107-1400_entry.txt b/phlog/20190107-1400_entry.txt @@ -0,0 +1,32 @@ +------------------------------------------------------------------------ + 07-Jan-2019, 18:20 (UTC) +------------------------------------------------------------------------ + +New keyboard !! + +Today, the Ergodox EZ I ordered one week ago arrived. +I'm writing this on it. First sensation is like I've never used a +keyboard before ... The new form factor combined with the ortholinear +layout makes me feel slow on my typing. + +It gets better as I write though, I think that the adaptation curve +won't be that steep. + +It really feels comfortable, but I guess I'll be playing a bit with the +positioning. For now, I've slightly changed the layout. Here it is for +reference[1] (media is just my custom cwm[1] bindings). + +Of course this will evolve a lot ! I guess I'll get bored of this in the +end, but for now, trying to optimize my layout is even addictive ! + +One of the great features of the keyboard is the tap/hold thing. Being +able to assign two different actions or keys. + +Well, I think is enough for today ... I've created like 5 versions of +the layout already while I was writing this ... + +---- +[1] https://configure.ergodox-ez.com/layouts/GyPj + +------------------------------------------------------------------------ +$Id: 20190107-1400_entry.txt,v 1.1 2019/01/15 15:13:20 paco Exp $ diff --git a/phlog/20190115-1519_entry.txt b/phlog/20190115-1519_entry.txt @@ -0,0 +1,39 @@ +------------------------------------------------------------------------ + 15-Jan-2019, 15:19 (UTC) +------------------------------------------------------------------------ + +So it's been a week with the new keyboard. +I've started to feel more and more comfortable with it and the error +rate is dropping steadily. + +The amount of tweaking and layout version has also dropped, in face it's +been 3 days without any change. My layout at the moment is this[1]. + +On another note, I've been installing a tinyfab cpu[2] on my Cetus 3D +printer. Just finished the whole thing yesterday afternoon, and now I'm +testing first prints. + +Results are quite good ! I think there's still a bit of room for +improvement, but it prints close (or maybe just exactly the same) +quality as with the stock cpu+uptime slicer. + +The big big difference is that now I'm using free software for the +controller[3] and I can use any slicer I want, and the machine speaks +gcode, as 99% of the cnc machines of the world. Also I have a lot more +control over the whole process, well all the control that the slicer I +choose provides. For now I've only tried Slic3r. I may try Cura in the +future. + +I'm collecting notes to write a more in depth article about the whole +process, as I found the instructions at tinyfab website are ... not so +good so to speak. + +It's all for today, I guess. + +---- +[1] - https://configure.ergodox-ez.com/layouts/XOXM/latest/0 +[2] - https://www.tinyfab.xyz/ +[3] - https://smoothieware.org/ + +------------------------------------------------------------------------ +$Id: 20190115-1519_entry.txt,v 1.2 2019/01/15 15:34:05 paco Exp $ diff --git a/phlog/20190214-0808_entry.txt b/phlog/20190214-0808_entry.txt @@ -0,0 +1,47 @@ +------------------------------------------------------------------------ + 14-Feb-2019, 08:08 (UTC) +------------------------------------------------------------------------ + +So, long time without writing here. That was expected, I've never been a +blogger, phlogger or whatever of any kind. + +I just want to keep here for the record that I'm now working on a MIDI +controller. It is based on a Teensy LC[1]. Usually I use Atmel micros, +but this one can be used as any kind of USB device, from the typical +serial interface to a ray HID, MIDI, and a lot more. Also this is a +32bit micro running at 48Mhz so there's a lot that can be done with it. +It is not cheap though (at least compared to the Atmel 8bit family). + +All this comes because I discovered VCV Rack[2]. This is an open source +software modular synthesizer. It is simply fantastic. There's lots of +modules and is really easy to get started. + +It's been some time since I wanted to get into synthesis, modular +synthesis in particular, as I think is really fun to play with and the +possibilities to build DIY modules and other stuff is great, and that +combines perfectly with my electronics hobby. + +I would like to get into RF too some day ... but I live in the worst +place for radio reception ever, so that will have to wait. I'll be +playing with sound signals for a while ;-) + +For now, I have some button matrix working and an array of +potentiometers. I plan to build a hardware sequencer and some multi +function controllers on the MIDI board that I can use in conjunction +with VCV Rack. + +If that works as I want, I'm already thinking in a lot of features to +add to it ... and also, start building my own modules and combine them +with the software stuff ... Possibilities are endless. + +That's all for now. My idea is write something when I have something that +can be shown. + +Over and out. + +----- +[1] https://www.pjrc.com/teensy/teensyLC.html +[2] https://vcvrack.com/ + +------------------------------------------------------------------------ +$Id: 20190214-0808_entry.txt,v 1.1 2019/02/14 08:25:53 paco Exp $ diff --git a/phlog/20190330-2151_entry.txt b/phlog/20190330-2151_entry.txt @@ -0,0 +1,43 @@ +------------------------------------------------------------------------ + 30-Mar-2019, 21:51 (CET) +------------------------------------------------------------------------ + +So, [tomasino][1] added me to his phlogroll at gopher.black. And knowing +that he has some audience on port 70, it automatically made me want to +write something. Too much pressure tomasino !! :-P + +I guess I'll write about what I've been doing, and what comes next. + +I completed the basic version of the MIDI controller, and wrote about it +[here][2]. I did not have much time to play with it (not that it +matters, my "music" is nothing really worth listening anyway hehe). The +photos I like to publish about the 3d printed case and the construction +are still not there ... Laziness always wins. + +I also had the idea of writing some docs about GnuPG for beginners, +something to encourage the not-so-technical users on the different +tildes to use mail encryption. + +So far I only have a rough idea of what I want to do. I'll be asking on +the mailing lists and other places about what do folks use to handle +their email. I've been a happy mutt user for so long that I don't really +know what other people use. + +All this is because I think that, to be somehow effective, those docs +should include up to date examples of mail agent configuration, so +people with no special knowledge can configure and use it. + +And well, at work I've been really busy migrating kubernetes clusters +and introducing [linkerd][3] to the mix. Nothing really exciting or fun, +but way better than what 99.9% of the population of the world have to do +for a living, so I can't complain. Not a tiny bit. + +And that's all for now. + +---- +[1]: gopher://gopher.black +[2]: gopher://onna.be/0/teensy-midi-controller.md.txt +[3]: https://linkerd.io + +------------------------------------------------------------------------ +$Id: 20190330-2151_entry.txt,v 1.2 2019/03/30 21:44:33 paco Exp $ diff --git a/phlog/20190402-0824_entry.txt b/phlog/20190402-0824_entry.txt @@ -0,0 +1,29 @@ +------------------------------------------------------------------------ + 02-Apr-2019, 08:24 (UTC) +------------------------------------------------------------------------ + +Answering [tomasino's questions][1] in my own way and being unable to +stick to just one answer per category ... + +1. Film to watch at least once: + Two french movies (just a coincidence, they came to mind) on the end + of the spectrum from each other. + La Haine (1995) + Le Fabuleux Destin d'Amélie Poulain (2001) + +2. Book to read at least twice: + '1984' from George Orwell. It will change your life. + 'Animal Farm' from the same author could come next ;-) + Another good one is 'Born on a Blue Day' from Daniel Tammet if you + like to know how a non conventional mind works. + +3. Song to listen to at least once a year: + I am the light (The White Buffalo) + Ship to wreck (Florence + The Machine) + But here the recommendations would never end, from Laurel Aitken to + Banda Bassoti, from Sorkun to Santana ... Music is life ! + +[1]: gopher://gopher.black:70/1/phlog/20190330-fun-questions + +------------------------------------------------------------------------ +$Id: 20190402-0824_entry.txt,v 1.1 2019/04/02 09:24:08 paco Exp $ diff --git a/phlog/20190414-1728_entry.txt b/phlog/20190414-1728_entry.txt @@ -0,0 +1,53 @@ +------------------------------------------------------------------------ + 14-Apr-2019, 17:28 (UTC) +------------------------------------------------------------------------ + +This is a small rant about the different implementations of the most +common shell tools I use everyday at work and on my free time. So sorry +if you're reading this. You may be better spending your time somewhere +else... + +My main workstation is OpenBSD. I used some linux flavours in the past +(mostly debian and arch), but I have to admit I'm a *BSD fanboy. + +I have a laptop I barely use given to me by my current employer, a +MacBook Air. I only use it occasionally at home, and of course when I +have to travel for work. It serves me well, as it's small and light, +although I would prefer to stay away from MacOSX ... + +And then there are all servers and containers at work. They are almost +100% Debian. + +I got used to differences on the BSD vs GNU implementations of some +tools, and I've been trying to stick to POSIX when writing scripts for +my own sanity. + +Long time ago I stopped fightint the `date` command for instance and +their plethora of ways of specifying the timezone (POSIX says `-u` for +UTC and define `TZ` for the rest). + +That's only an example, then there are more complicated tools like +`sed`. You can be in a lot of pain if you rely on any of the +implementations and try to run your script on 2 different OSs. `POSIX +sed` is quite basic, and lacks some features you may expect to be there. + +One of those features is in-place editing. And you may think, "hey, +almost all implementations know about in-place editing, use `-i` man !". +Well, as usual, devil is in the detail. Although that is (almost) true, +the way it's implemented differs in ways that may give you one or two +headaches. `GNU sed` uses simply `-i` with an optional extension for +backup, OpenBSD does the same, but if you do not want to create a +backup, you have to provide an empty string and it has to be in the form +`-i''` (note, not space), the MacOS implementation (taken from FreeBSD) +does mostly the same as the OpenBSD one BUT you need a space between the +`i` and the empty string ... you get the idea ... + +So, stick to [POSIX][1], even if you think you'll never use that script +on any other machine/OS. + +You're welcome. + +[1]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html + +------------------------------------------------------------------------ +$Id: 20190414-1728_entry.txt,v 1.2 2019/04/14 18:05:29 paco Exp $ diff --git a/static/44CA735E.asc b/static/44CA735E.asc @@ -0,0 +1,51 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.12 (GNU/Linux) + +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 +=GwJ/ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/static/authorized_keys b/static/authorized_keys @@ -0,0 +1,2 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIArhkA/HuOrauKGk2ksFdZ0IW2AdLlPshcKdRMDTlpWY u0_a132@localhost +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQComE8k46SN744na47KJCxcJDd27CXVE2/5ucgoN6P4teTGhCIJMVSRUhbt3PXWOfkwZgVeU7bJnqExTIDaqWlz85Rbp++Ct4JSJlDIaN2Pb/aUzC29epiZIx1a8vQqeIfsi/EcvPxI47Wt6zHt3nd/nHomX33VJ1y530R0tvF3MsaX6rmnhFBp+aPLMLmo9yPQMofr4e6X5ylU4t87oRNpOFCMcnTAXZZOunFal8Dvi2K2wO6htmee2QyjtBbDQNt3+XenasOu694J70PGU9Q721oR8kDHB16BT0OW8WD/Qo4CzzqhFryLE507qbUjwv/a95Ht5MVeYOfCIcFU1AUVdTG1KuVqQo0KA5nPI6Kzb5UQno60TYaRKVxa8rxuRHDZ9YGcHbkuuUPAq6dmHZOR6vmuikVK7Ft1cn0iGow/yyNCOK+048Y3AynAmTatUbTeU7zLw8cN30gdkw3WTXI5sPJx2bL+h6qyIUHuwaNQ6VF481p8vR7D+8N1GMV4wdrY0PzK5Fa4n5sR0HicEiRomVSy4Iff+nmaDpN2JogVTg94/EYtVyB3uQ4+aGDZjMq4kHBZBbP3Fmq5dSLOaB2R5o/wm57oEU6KZjlAc/8F5YEswRjBNrOJLfsx0DG1EOpgWPpvOYUnfbfJFDIjiigP/aVZNf8dIUxhLqdA5tEw6Q== cardno:000608115828 diff --git a/static/authorized_keys.asc b/static/authorized_keys.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEkqGkOMZXd5l7+g1cHmbYF4i7v8kFAlzALQ8ACgkQHmbYF4i7 +v8n27A//VFPk1goLRe3zh1XcwrRvKa0EWjL/+l0W2olXFzoNvsADyxCaw+F8sB7g +bcRU+aiGUtPPPtujjr+Mxeu+Xtpb6bl8vZyb6toRa8esufPWxhaMpkHv6khuWfEO +ZB4GvmSTFntmMxcZQqwHDUkxhXEc8RpSkR6VNVLE4dauYE35ApauiVCOSIQgYIhc +f2WXnmb5fmo5JKQmOIublwMteBoSEka2OhkTkLnvBI5zBknEmMyUFQX/MYYsTlbD +GJQWzFIQA0YKdJ0DsdTu3PDC6VM2IAy/rTKkm7tg+4zReyu+MUKmjJ8TZit/J2bh +ez+T/L34b+8GU9lu4DLnmh0fQqgwATY6II7Z26kPJ4EWj4kfEBghsovR9d8m/Y+K +pJp+nlZ6irkAL0UOwrK7Z60O5/Qgbbu+lcG8/j8EZFURU6JDtwO5DSTjrpDloPiw +RKfW4EHbQAuxD+o4mbpkiglTm1RDL+O9swNOhiLE19x68lNgzUOyST2pWNzzFWSO +h9SCrLT623STg5vFSng/BjXLA7LiX6gGVYCcJJltZEEGRAE6SuUIU/eu7ZzbNw59 +ll5q0rxiZluiLhoCQjCEGDCBaUXVF+HOnCmSe08bLXA7DzyUvUmVzjNEuAoTnK/2 +LNB4dE2GMHPM7Zj5/WvEy5UmE22D9EnmhEFtf+Kcke9qwWuN3G4= +=Tx+E +-----END PGP SIGNATURE----- diff --git a/static/contact.txt b/static/contact.txt @@ -0,0 +1,54 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +# Contact Information + +* Email: paco@onna.be +* XMPP: paco@onna.be +* Website: https://onna.be +* Keybase: https://keybase.io/pacoeb +* IRC: + - freenode.net: erxeto + - tilde.chat: erxeto + +# Public Keys + +## RSA OpenPGP key + + uid Paco Esteban <paco@onna.be> + pub rsa4096/0x5818130B8A6DBC03 2018-10-05 [SC] + sub rsa4096/0x1E66D81788BBBFC9 2018-10-05 [S] + sub rsa4096/0x33CD96EDBEB94446 2018-10-05 [E] + sub rsa4096/0x342F0B09ACBDF39C 2018-10-05 [A] + fingerprint = 9A6B 6083 AD9E FDC2 0EAF 5CB3 5818 130B 8A6D BC03 + +## XMPP OMEMO Public Fingerprints + +Desktop (2019-04-22) + FCF33121 E8CB7A37 9829F248 1CFD5C98 + ADBBFF22 F3479F24 9E2539D2 9206FA49 + +Laptop (2019-04-22) + 6BE97481 D63AC4B6 9D822D6A CE7C6CC5 + 7D8E2971 D0CE5192 C54A9EA3 D3181878 + +Mobile (2019-04-22) + 9455A787 5C41B3D5 67B638F6 2DF2326E + 0DBED3F7 CF3EA1AB 598E8C31 3E6BFD4D + +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCgAdFiEEkqGkOMZXd5l7+g1cHmbYF4i7v8kFAly98fEACgkQHmbYF4i7 +v8mEQA//Uj+qDnIpwZJqSp0R3UEx6CAmsuhIIj+bYTjXZx4JnL81Mpoh8a/MR/s1 +KM1dc/VlhscCJAwHkq19YVIleFpvE/kR1jDhFYsbZ2zJjza8bnfFG5oXbqY4Kegj +DBPjdQJVIkV8dUEcGXS68D+g+PqUfEdgCkHuzOqLNrdBbj4uM/bRor61H1/X3SgJ +oYdMhElAGwTazLIMwN5up7Q+mkQUBkEpWbHo6safkpRHaQa5uykcX/jtGY8JWmKu +I4Rs4lcZN1VE8ob1g2FCZJYbvzV4uTsl4RyblJg5FMd0e8hpaBTlJPskfFkpexO6 +/nOOBKF043SmecM9vEGw5nLuTX1xiW3FPlZDhCWhxAJg97L+Qb+gkeYUcfwDT7eD +41oxfCUNIzyaTYN+cNKjOvt11M7gsOLuL8uhZkUglm7fgspdhR3/pL3A2edfyc61 +GlTt75YIZ+A/n30SQ0AgY6DXnt6nE2LxgOPdvbYqOgdP7jE8Kc5NqioDzbbbwfTF +q+hDA8KojY1ASue+MwQwG2njSefMi0//UWTxIxleQxO5KeiXDOY0Nc2zbgVEXK0P +baeW1hKIKinyJIQiUoxYQ50hx2FMGJrEFs1e4PDbGnHgMHBDf3z7dW2/Ue8QLN0a +WXASQQJpWIHsqOcfKMKQSwmiMj3QAt6kPsgYY1t7nKlnqLmGRwM= +=kj7O +-----END PGP SIGNATURE----- diff --git a/static/files/brymen_cable_attachemnt_v2.stl b/static/files/brymen_cable_attachemnt_v2.stl Binary files differ. diff --git a/static/files/brymen_cable_schematic.png b/static/files/brymen_cable_schematic.png Binary files differ. diff --git a/static/files/cetus_config.diff b/static/files/cetus_config.diff @@ -0,0 +1,102 @@ +--- cetus_v6_config Fri Jan 18 12:40:17 2019 ++++ config Fri Jan 18 13:04:03 2019 +@@ -163,41 +163,12 @@ + + ## PID configuration + ## See http://smoothieware.org/temperaturecontrol#pid +-temperature_control.hotend.p_factor 22 #23.0 +-temperature_control.hotend.i_factor 1.047 #1.104 +-temperature_control.hotend.d_factor 115 #120 ++temperature_control.hotend.p_factor 30.7 ++temperature_control.hotend.i_factor 1.477 ++temperature_control.hotend.d_factor 160 + +-temperature_control.hotend.max_pwm 160 # max pwm, 64 is a good value if driving a 12v resistor with 24v. ++temperature_control.hotend.max_pwm 255 + +-####################################### optional use underside port as 2nd extruder +-# second hotend configuration +-temperature_control.hotend2.enable false # Whether to activate this ( "hotend" ) module at all. +-temperature_control.hotend2.thermistor_pin 0.26 # Pin for the thermistor to read +-temperature_control.hotend2.heater_pin 0.4 # Pin that controls the heater, set to nc if a readonly thermistor is being defined +-#temperature_control.hotend2.thermistor EPCOS100K # see http://smoothieware.org/temperaturecontrol#toc5 +-temperature_control.hotend2.beta 3950 # or set the beta value +-temperature_control.hotend2.set_m_code 104 # +-temperature_control.hotend2.set_and_wait_m_code 109 # +-temperature_control.hotend2.designator T1 # +-temperature_control.hotend2.max_temp 300 # Set maximum temperature - Will prevent heating above 300 by default +-temperature_control.hotend2.min_temp 20 # Set minimum temperature - Will prevent heating below if set +- +-# Safety control is enabled by default and can be overidden here, the values show the defaults +-# See http://smoothieware.org/temperaturecontrol#runaway +-temperature_control.hotend2.runaway_heating_timeout 900 # How long it can take to heat up, max is 2040 seconds. +-#temperature_control.hotend2.runaway_cooling_timeout 0 # How long it can take to cool down if temp is set lower, max is 2040 seconds +-temperature_control.hotend2.runaway_range 50 # How far from the set temperature it can wander, max setting is 63°C +- +-# PID configuration +-# See http://smoothieware.org/temperaturecontrol#pid +-#temperature_control.hotend2.p_factor 30 # P ( proportional ) factor +-#temperature_control.hotend2.i_factor 0.3 # I ( integral ) factor +-#temperature_control.hotend2.d_factor 300 # D ( derivative ) factor +- +-##temperature_control.hotend2.max_pwm 64 # max pwm, 64 is a good value if driving a 12v resistor with 24v. +-####################################### +- +- + ###################################### Cetus use the underside port as bed control enable for tinyfab heatbed driver + temperature_control.bed.enable false # Whether to activate this ( "hotend" ) module at all. + temperature_control.bed.thermistor_pin 0.26 # Pin for the thermistor to read +@@ -283,7 +254,7 @@ + endstops_enable true # The endstop module is enabled by default and can be disabled here + #corexy_homing false # Set to true if homing on a hbot or corexy + #alpha_min_endstop 1.25^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground +-alpha_max_endstop 1.24^ # Pin to read max endstop, uncomment this and comment the above if using max endstops ++alpha_max_endstop 2.13^ # Pin to read max endstop, uncomment this and comment the above if using max endstops + alpha_homing_direction home_to_max # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop + alpha_min 0 # This gets loaded as the current position after homing when home_to_min is set + alpha_max 180 # This gets loaded as the current position after homing when home_to_max is set +@@ -296,7 +267,7 @@ + gamma_max_endstop 1.28^ # Pin to read max endstop, uncomment this and comment the above if using max endstops + gamma_homing_direction home_to_max # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop + gamma_min 0 # This gets loaded as the current position after homing when home_to_min is set +-gamma_max 190 # This gets loaded as the current position after homing when home_to_max is set ++gamma_max 180.7 # This gets loaded as the current position after homing when home_to_max is set + + alpha_max_travel 190 # Max travel in mm for alpha/X axis when homing + beta_max_travel 190 # Max travel in mm for beta/Y axis when homing +@@ -339,13 +310,13 @@ + + ## Z-probe + # See http://smoothieware.org/zprobe +-zprobe.enable false # Set to true to enable a zprobe +-zprobe.probe_pin 2.13 #2.13!^ # Pin probe is attached to, if NC remove the ! (2.13 = door check port) ++zprobe.enable true # Set to true to enable a zprobe ++zprobe.probe_pin 1.24!^ #2.13!^ # Pin probe is attached to, if NC remove the ! (2.13 = door check port) + zprobe.slow_feedrate 5 # Mm/sec probe feed rate + #zprobe.debounce_count 100 # Set if noisy + zprobe.fast_feedrate 100 # Move feedrate mm/sec + zprobe.probe_height 10 # How much above bed to start probe +-#gamma_min_endstop nc # Normally 1.28. Change to nc to prevent conflict, ++gamma_min_endstop nc # Normally 1.28. Change to nc to prevent conflict, + + # Levelling strategy + # Example for 3-point levelling strategy, see wiki documentation for other strategies +@@ -358,6 +329,18 @@ + #leveling-strategy.three-point-leveling.probe_offsets 0,0,0 # the probe offsets from nozzle, must be x,y,z, default is no offset + #leveling-strategy.three-point-leveling.save_plane false # set to true to allow the bed plane to be saved with M500 default is false + ++leveling-strategy.rectangular-grid.enable true # The strategy must be enabled in the config, as well as the zprobe module. ++leveling-strategy.rectangular-grid.x_size 140 # size of bed in the X axis ++leveling-strategy.rectangular-grid.y_size 170 # size of bed in the Y axis ++leveling-strategy.rectangular-grid.size 7 # The size of the grid, for example, 7 causes a 7x7 grid with 49 points. ++ # Must be an odd number. ++leveling-strategy.rectangular-grid.do_home true ++leveling-strategy.rectangular-grid.probe_offsets 0,-10,0 # Optional probe offsets from the nozzle or tool head ++leveling-strategy.rectangular-grid.save true # If the saved grid is to be loaded on boot then this must be set to true ++leveling-strategy.rectangular-grid.initial_height 10 # will move to Z10 before the first probe ++#leveling-strategy.rectangular-grid.dampening_start 0.5 # compensation decrease point (optional) ++#leveling-strategy.rectangular-grid.height_limit 1 # no compensation to apply after this point (optional) ++mm_per_line_segment 1 # necessary for cartesians using rectangular-grid + + ## + # Panel See http://smoothieware.org/panel diff --git a/static/files/cetus_limit_switch.tar.gz b/static/files/cetus_limit_switch.tar.gz Binary files differ. diff --git a/static/files/cetus_zprobe_holder.stl b/static/files/cetus_zprobe_holder.stl Binary files differ. diff --git a/static/files/vcvrack_test.mp3 b/static/files/vcvrack_test.mp3 Binary files differ. diff --git a/static/gpg_keys_transition.txt b/static/gpg_keys_transition.txt @@ -0,0 +1,48 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +I'm retiring my OpenPGP key rsa4096/0xD4ACD2B244CA735E and transisioning to a +new one rsa4096/0x5818130B8A6DBC03 +The old key will expire on January the 3rd 2019. + +The old key: + +pub rsa4096/0xD4ACD2B244CA735E 2014-06-02 [SC] [expires: 2019-01-03] + Key fingerprint = 64F3 97F1 7FF5 11A4 80C2 1D26 D4AC D2B2 44CA 735E + +while the fingerprint of the new key is: + +pub rsa4096/0x5818130B8A6DBC03 2018-10-05 [SC] + Key fingerprint = 9A6B 6083 AD9E FDC2 0EAF 5CB3 5818 130B 8A6D BC03 + +Please, use the new key from now on. + +This transition statement is signed by both the old and the new key. +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCgAdFiEEkqGkOMZXd5l7+g1cHmbYF4i7v8kFAlu41y0ACgkQHmbYF4i7 +v8nUHRAAzlPR0PcZu14jwI2DotU+vKCRlgVQSBqaoLQnsrNmUyjDEi8sgbhSBhCu +34/svrjbtd0SWtI/OqL8XmPxVLcAIbvWQLXIMTyHNeD0zHIpW6fkdRAf9xzUXEuX +R69RGoOI8T1ERNpSaU7ddxpJYii491gSdKzBRSp0R0RD9B6oSrFYEXr1XW9eXUPg +T9cw/t7WM+7HwMqr5vebu8UMWDlnTL/dK2J08Mar3gd4hwBwLIfAtb7thekw0czr +5HuQs4CuEKJClhbVMC7TcBwPFlG0OLmI7CppfWeGj/nZmOBtDHDU5VREULiTJsAV +/j883bcB8EZBpY7AJdnGRWfLyJF5c/YTUqto69elBUFWHnmFFYqHb3BRViBVIMz1 ++SHx8+4waXZBAX6x3NYxXqOMvAFfjlnQfiM4Led6N2Gv8nUzWIFispcuQBnxtTO7 +B0eyykkm3RMlOWY/qQAuJiNhspeCliWKxBAdrXBlW6tkotNIxinpM4xX84HG7KPi +D8gD/c8aMJspveXwyBx2MzwvPiaV1KSdn8kuaHqdAGrkRpHtl1hZwuLxJBrc0C2F +N2QEglfG3wyx/h6xhQmlQCrt+jHKRuFI4/eZYVLFI+RYWCZGV6BoQPPrKdHQpgIB +jiLGPMB5+O9ZWT2qQUBnd4M50NbnaqTPIZbr6o4bZ4pFBiHLXQaJAjMEAQEKAB0W +IQRk85fxf/URpIDCHSbUrNKyRMpzXgUCW7jXLgAKCRDUrNKyRMpzXo3sD/9wvQFq ++GGdSqKR5NSX1qdOaDtYZVISeJ0OXN/HQlIAthVcjsuuYekmBUVF1ccsDCswDGJu +XvstlZbQjQk4J/Z9Oehow4INlj50/CthPHR3+FnsKPH2tViwqKZSDwtFUMSz8BYn +VsExCxWH2y0PonlcofKyEktMzo7RoajnI9dUtnJ2/5sQV8H7HuonX7QWkmL0CWNq +us729nMq6dkFBDhkv+MPIWaZRrTmDf4KVnC60sY4edkNhUGZPBDVor71q3buJrvo +qoQ2qnLnSwzWojBZm//aAOZa4uYqTfpg0LHQmvTrQLVaewSmCfBenwYImJsDH0R/ +vmcLoDwMhuZMh0P3pxPCH0vgsO8TLbj/JxJIt+2k6CyJJL/E4k+d41+Ym4ChzLfj +eJ0Vwi1MeDC7gASjvzC0+AqzaUX6TMP5Ns1Zj5+qY56xPgy9Nd85yyFvqN816B++ +r1bVQMfu2wUhQEgAhR53Sccr3PxOA/E0IejJxlkQc7mWadtgkCzrqG791eNAvrDr +cGPZM2K9PXu+Uh3xPLe6WpbAjFHK+vuHt6I6cN/9I9WPrYDyG8Mp8jUlacphDBaU +tqGAf/HA/lP0P4O8L0QKC7L4DmhBaU4iLUNpKMuu93CAnyLY2w6Zl6EcV7HLaUGi +Sn8gvjyNbmqv4kSWPqBwVqNZW3BrWCRo9WxE0A== +=Rm3O +-----END PGP SIGNATURE----- diff --git a/static/gpgkey.asc b/static/gpgkey.asc @@ -0,0 +1,109 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +jhOl4/+7Ys+zag+F3KdL +=U/29 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/static/keybase.txt b/static/keybase.txt @@ -0,0 +1,87 @@ + +================================================================== +https://keybase.io/pacoeb +-------------------------------------------------------------------- + +I hereby claim: + + * I am an admin of https://onna.be + * I am pacoeb (https://keybase.io/pacoeb) on keybase. + * I have a public key with fingerprint 9A6B 6083 AD9E FDC2 0EAF 5CB3 5818 130B 8A6D BC03 + +To do so, I am signing this object: + +{ + "body": { + "key": { + "eldest_kid": "01010f0ddcde264e0c23abfe602b13df367df87fa25e1fde121605f9a152b31253e40a", + "fingerprint": "9a6b6083ad9efdc20eaf5cb35818130b8a6dbc03", + "host": "keybase.io", + "key_id": "5818130b8a6dbc03", + "kid": "0101c41b41928c43d0dfb091f1389b10c8506c3f126e25869c54d4fe6b12102e0fbd0a", + "uid": "995e56082f4a56c5c519271d04023119", + "username": "pacoeb" + }, + "merkle_root": { + "ctime": 1553699307, + "hash_meta": "4152d5632109fb1219c8a25ec21665ca89c60da77905731553ebe0f996aae7fa", + "seqno": 5033576 + }, + "revoke": { + "sig_ids": [ + "a9fcfa64c831de37cda117bfbe573d2e92e9f1c1fe9be704427f6f5cadbbf27f0f" + ] + }, + "service": { + "hostname": "onna.be", + "protocol": "https:" + }, + "type": "web_service_binding", + "version": 1 + }, + "ctime": 1553699308, + "expire_in": 157680000, + "prev": "40d66b19cb2dd439285e3f9f868cb567b3d0d5c0b6344b66ab291ee0dadb8156", + "seqno": 42, + "tag": "signature" +} + +which yields the signature: + +-----BEGIN PGP MESSAGE----- + +owJ4nG1TC0wUVxRdBExZs1UjosXUyhhMLBTffN6bmbVWa7G0qd+qmBZ0eb+RFdhZ +dxdQKdbaWoUaFcUqmn6wNn4SaFChVUStgvUbmlaNX1o/iRU/qQZLNVT7hmhMms6b +ZObdnHvuuee+t8oT7XJHDbbODljWuP9o1PEbxJW9seJuiURsNl/ylkh5vPvD8xkP +R3x5fiZ5JSCLZQHGKOMK0jigioqJxRFQiKwyS0U6swzdwgrkssW4rMgIQMvEMlSI +KitQ5RrAUqpk+QOzeSgY8gcigtbEiCBgqJiZ3GJUARxbkBIVGrIhq4AYGDFCgSoS +c+2wkyHEERzmaX5bxMTG1y3vf/DPdFNNJppsKgbVVAaYRYApW7JqmEQG1IAAUdWS +FcQVaCCTQo1poi8iOgAKBxZh3boLu+lME3IoBCuWhiGikELBq8sMaEBRZdl0gGEe +CuACLtBBTG1OpNJUqYCH8vK5L2TbEcdaGvE7ABlCFZmmCnTRHg7n+gp4BIs8TZjG +IFKFAtNyhJjUcIylwlQEKTZMigDDum4CqKsOCydCqWkijLmYgVAR5nMDtuSFQFWh +joSCEC+y87hTPOyfLUwLS94sCZsWtfCBINKoocqMqzplWJZ1YhEumJnCTfFaMpUt +bhKuA01TdAuJEWFGiCX+gSXNLHXKhYr8tJvemdOT/u1AAKcRLuQEQ3bEpna+COZG +IsGw1zElMj/ooIo58T3J9xF/gIkDIjKKeCjstwPCJIH8r19GqsTnBf0h7vM7CNGh +AcTj1OFFjoGAITFBkxKFMU0Vo4dctUzLQAYlEOnEOQeQAoJUTSMIYaKYMufCU0YM +GaJnBmqK0IlnC05hWwBHCkNcKnWX9VBjXFFu14sJSTGrqzcbh2cUV5U89GQ/vVSx +PZwb5XLH9XkaOT+pj6syakfKhqzgGE/PhUreqN/GPs44s33QiJnDbulSZRbrtWZO +xcOMHudOugbVzW1c3adu+si8+PXZ8RNA2YFx0bX1Q9o76r39y/W25S83r0srS/qb +Puh7+GRUa2X14Kvfj9lyKfHE0HXagLFDOu/egcM3fb55a0d907phk2Pit73WfGXB +jEBLJDqh6/L4ppNt6TPUEzm8tfjVTxtGZb4XSF6YgZKSvntz8Sl2pHbqicfHs+b/ +0Dv5zLgl9zKH9tx774+XWqa2JLsHXos7eMHjvdK0ZkXKrMoHu1Z+kbNjT1bKRzeq +bskz322+NHlje8vGjwunlODRRvzgCVP2qUmHOreMcd9s5SsOm0q/+7UjMn6pmdY2 +LfH07YkdD5OP+WpeCFaxpbDgwl9VhdsffRvnGrW46K3m/V/FpfzzCp5U/2vfNFze +efrMwdq9mbXlnmkXz8X0G/t2RfWU21fLk5fuyiz/+RPfZ/oHDdXpHbGuO2UXux6X +vjNnffqiTc+f11blfL38yLH2hvKtxePb1q4tWmSVFSfkxs67OPr3uusbananfonn +xdZl3t/dpdwcCs7n928c+X7GGwun7+xMRz+dlZZMrTrQpLWWTax3b79zffif+9ob +Y1IbHvX23Nt2ataenImecTRl58pekaPxxc9d35W27Mo3CQMWbB2duLzrEK/40F6t +7Mwe2bXs9csXfrxWMRAm3loR3VxzOmXvv/71CTk= +=18jx +-----END PGP MESSAGE----- + +And finally, I am proving ownership of this host by posting or +appending to this document. + +View my publicly-auditable identity here: https://keybase.io/pacoeb + +================================================================== diff --git a/static/style.css b/static/style.css @@ -0,0 +1,25 @@ +body { + margin: 15px auto; + color: #111; + background-color: #fff; + padding: 0 10px; +} + +@media (min-width: 800px) { + body { + max-width: 85%; + } +} + +tt { + white-space: pre; +} + +pre { + background: #f5f5f5; + border: 1px solid #aaa; + overflow: auto; + padding: 10px; +} + +/* $Id: style.css,v 1.1 2019/03/24 12:30:24 paco Exp $ */ diff --git a/templates/gophermap b/templates/gophermap @@ -0,0 +1,35 @@ + __ + /\ \ + ___ ___ ___ __ \ \ \____ __ + / __`\ /' _ `\ /' _ `\ /'__`\ \ \ '__`\ /'__`\ + /\ \L\ \/\ \/\ \/\ \/\ \/\ \L\.\_ __\ \ \L\ \/\ __/ + \ \____/\ \_\ \_\ \_\ \_\ \__/.\_\/\_\\ \_,__/\ \____\ + \/___/ \/_/\/_/\/_/\/_/\/__/\/_/\/_/ \/___/ \/____/ + +o--o-- ---------------------------------------------- gopherhole -- o -- + +Sometimes I write things so I do not forget ... + +o--o-- Random (usually tech) stuff + +${articleList} + +o--o-- Ramblings + +1Phlog /phlog onna.be 70 + +o--o-- More Info + +hCode URL:https://git.onna.be/ +0Contact /contact.txt onna.be 70 +0GnuPG key /gpgkey.asc onna.be 70 +0GnuPG Keys transition statement /gpg_keys_transition.txt onna.be 70 + +o--o-- Sometimes I read ... + +1Phlogroll /phlogroll onna.be 70 +hTilde News URL:https://tilde.news/ + +o- o -- -------------------------------------------------------- -- o -- +Last updated: ${last} +o- o -- -------------------------------------------------------- -- o -- diff --git a/templates/index.html b/templates/index.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8" /> +<meta name="viewport" content="width=device-width,initial-scale=1" /> +<meta name="date" content="${date}" scheme="YYYY-MM-DD" /> +<meta name="author" content="paco" /> +<link rel="stylesheet" href="style.css" /> +<title>onna.be</title> +</head> +<body> + +<p>${menu}</p> + +<hr/> + +<ul> +${articleList} +</ul> + +<hr/> + +<p>© 2018-2019 <a href="http://www.wtfpl.net/">WTFPL</a></p> + +<p>Last updated: ${last}</p> +</body> +</html> diff --git a/templates/menu_template.html b/templates/menu_template.html @@ -0,0 +1 @@ +<a href="/">home</a> / <a href="https://git.onna.be/">code</a> / <a href="contact.txt">contact</a> / <a href="gpgkey.asc">GnuPG Key</a> / <a href="gpg_keys_transition.txt">Keys transition statement</a> diff --git a/templates/phlogmap b/templates/phlogmap @@ -0,0 +1,13 @@ +i----------------------------------------------------------------------- onna.be 70 +i __ __ onna.be 70 +i .-----.| |--.| |.-----.-----. onna.be 70 +i | _ || || || _ | _ | __ __ __ onna.be 70 +i | __||__|__||__||_____|___ | |__|__|__| onna.be 70 +i |__| |_____| onna.be 70 +i onna.be 70 +i----------------------------------------------------------------------- onna.be 70 +i onna.be 70 +${entryList} +i onna.be 70 +i----------------------------------------------------------------------- onna.be 70 +iLast updated: ${last} onna.be 70