Leave a comment

Linux + Gaming keyboard + Laziness + Neo4j

A long time ago, I bought a gaming keyboard for its embedded leds, to code at night.
Apart from that, it was not supported under Linux. Whatever …

Recently, I tried to find how the Gx keys were detected by the command

showkey –scancodes



Unfortunately, it did not show any key codes … Quite puzzling … I thought I had a keyboard with more keys as there is some with 101, some with 105 why not one with 6 more keys?


So I was thinking about doing some Arduino again to simulate a second keyboard .
And this is where things got clearer. The G keys are probably an embedded second keyboard in the keyboard.

So I installed https://github.com/tolga9009/sidewinderd and now I can “program” my Gx keys.

Hit MR (Macro record I guess), hit the Gx key to program, then input your keys sequence and hit MR again to stop recording.

My current setup is to help with Neohttp://www.neo4j.com4j’s Cypher language (W3C GWL basis)

G1/G2: <– / –>

G3/G4: (:)<-[:{}]-(:) / (:)-[:]->()
G5 : {}

The good thing with that keyboard is that 3 sets can be recorded.

For more and more language, :: –> are getting common.

Why hit many keys when only one is sufficient ?
Join me in the movement against keyboard violence !

To increase the typing speed of that second keyboard, you just need to edit /etc/sidewinderd.conf

By default, it records the delays in your macros.

Set capture_delays = false; and restart service

Leave a comment

Libreoffice 7 crashing on unfocus

On my KUbuntu, I experienced a lot of crashes from libreoffice 7.2 when switching windows.

As per a post on an archforum, the solution is to add

XDG_SESSION_TYPE=x11

at the beginning of the /usr/bin/libreoffice file

Apparently, this is a recurring bug that has been present for a few years.

Leave a comment

Some scifi again.

Had a moment to put some words together.
Tell me what you think of it in the comments

Leave a comment

Fear litany privacy policy

No data is gathered by me.
I wont know who you are, how many times you run the app.

Nothing.

Leave a comment

Mini cours photo

[French only] J’ai retrouvé le support de cours que j’ai créé et utilisé pour faire un petit training à des copains et collègues il y a quelques années.

A l’époque, nous nous étions lancés dans une série “workshop du midi” où chacun apportait ses connaissances.
Ensuite, nous avons aussi fait du plus lourd, sur plusieurs séances lorsque le sujet était refusé par les RH comme formation professionnelle (j’ai fait la prog Android par exemple)

Il s’agit de la version pdf.

Leave a comment

Quel laptop acheter pour la rentrée ?

Ce post s’adresse aux étudiants des établissements où j’enseigne, je ne prétends pas pouvoir conseiller les étudiants de toutes les formations disponibles.

Pour la rentrée, on souhaite être prêt et avoir une machine toute neuve. C’est naturel.

Tout d’abord, n’oubliez pas de penser au marché de l’occasion.
Cela peut être du recyclé suite à un renouvellement de parc informatique d’une société, de l’occasion entre particuliers, etc …

Vous n’avez pas besoin d’une machine de guerre, j’entends par là un pc gamer surpuissant.
Surtout en première année d’info.
Pourtant ce sont parmi les meilleurs laptops pour programmer car l’écran est au-delà des 60hz, les composants sont censés être meilleurs afin de supporter l’overclocking, le clavier rétro-éclairé permet de coder la nuit, etc …

Les problèmes inhérants aux pc gamer sont:

  • le poids, à transporter tous les jours sur votre trajet jusqu’à l’école
  • le besoin de prise électrique, qui entraine des problèmes de placement dans les salles
  • les salles n’ont pas autant de prises électriques que d’étudiants

Autre évidence, vous n’avez pas besoin d’un mac pro/air/M1 etc …
Ces machines sont chères, ce sont des produits de luxe. De fait, plusieurs fois, j’ai eu des étudiants qui ne pouvaient pas travailler parce que leur mac était plein.
Et la RAM a manqué pour des cours big data.
Bref, vous devez vous équiper pour travailler et non pour paraitre.

A minima, votre laptop devrait tenir pour les 3 premières années de cours.

Idéalement

Idéalement, vous aurez un pc pour travailler et un pc pour jouer.
Parce que c’est dur de ne pas être tenté ou seulement même déconcentré par les icones de jeux AAA sur le bureau.

Ce qui ne veut pas dire “achetez deux machines”. Encore que si vous avez les moyens et la place, une bonne tour pour jouer …

Pensez au dual boot. Vous aurez deux systèmes d’exploitation.

Un pour jouer. L’autre pour travailler.
Linux Mint ne vous dépaysera pas de windows. Avec firefox et libre office, recherches et rapports se font tout aussi bien. Cerise sur le gateau, vous allez apprendre des choses

Au passage, une machine correcte à but sérieux peut tout à fait être un Raspberry Pi 3 ou 4.
Cela suffit pour travailler dans de nombreuses filières.

Mais si vous êtes là, c’est parce que vous allez coder et là, les besoins ne sont pas les mêmes.

Critères

Parmi les critères qui doivent vous guider pour votre choix

  • 16 GB extensibles (8 c’est insuffisant, l’OS en prends un partie, une autre partie peut être utilisée par la puce graphique intégrée dans certains processeurs). Oh, et des téléphones ont 8 Gb de RAM de nos jours.
  • Evitez la RAM soudée.
  • Une prise réseau RJ45
  • une prise HDMI pour présenter au tableau
  • un clavier discret. Sinon, cela sera une évidence quand vous ne prendrez pas de notes et une génance quand vous en prendrez.
  • Un disque dur suffisant pour faire un dual-boot
  • une webcam, pour le distanciel
  • des possibilités d’évolution (ajout de disque dur, de RAM, changer la puce wifi, remplacer la batterie) (donc pas de mac)
  • 4 coeurs minimum, en amd 4xxx ou 5xxx , qui consomment peu d’énergie
  • un disque SSD, surtout si vous achetez un pc d’occasion

Anecdotes

En dernier recours, lorsque des étudiants n’arrivent vraiment pas à installer Java, un IDE, et le projet alors la solution ultime est d’utiliser une machine virtuelle (avec VirtualBox). Cette VM, je la zippe avant de la transférer, ce qui a donné 7 Go la dernière fois.
Il faut donc 7Go pour stocker le zip en local, et un peu plus pour mettre la version dézippée sur le disque et encore quelques gigas our importer cette VM.
Oui, au final, cela chiffre et les SSD 256Go seront définitivement trop petits. Et cela prends un certain temps.

J’ai eu des cas de “monsieur je ne peux pas installer le logiciel, je n’ai plus de place”.
Symptomatique de l’étudiant qui a pris un mac book air, mais le moins cher.
Résultat, l’étudiant ne peut suivre le cours se dérouler.

Bon, on ne va pas au front avec un canif. Je ne parle pas du front-end 🙂

Conseils

N’oubliez pas d’acheter des cahiers et des stylos, c’est encore ce qui est le plus naturel et efficace pour la prise de notes.

La dure réalité est que les écoles sont souvent mal équipées en wifi et en prises électriques.
Alors, ne comptez pas sur un pc gamer et un drive dans le cloud.

Les marques “professionnelles” sont à privilégier. Ce post et de nombreuses autres choses sont écrites sur un pc d’occasion avec un i5-2540M donc un i5 de 2e génération (en 2021, nous en sommes à la 12e génération) acheté d’occasion 200€ (+100€ de SSD et +100€ pour 16Go de RAM).
Pour les curieux, c’est un HP elitebook 2560p.



Leave a comment

Wake up sounds

Do you know that using a song for waking up makes it sound despicable thereafter.
Even Bohemian Rhapsody. Could you believe that ?

Unless you love to get up

So, HERE IS a trio of files that you can use as ringtones. They are not as repetitive as default ringtones can be.
The multiple signals will wake you up in a state of creative mood

And because I’m generous, they are free for you (for private use of course) else send me money.

Unfortunately, I cant find the name of the online tool I used to create those masterpieces, my three best compositions.


Put them on your phone. Share your impressions

Leave a comment

CPC Memories

If we have met, you saw I am an older geek.
I’m from the Amstrad CPC Generation, I was blessed with a 6128 as my dad thought it was wasted time to watch a game load on 464 (from K7 tape).

While looking for vids of the Technimusique speech synthetizer to evaluate the gap with actual solutions, I found this video about Multiface II (which I hadnt). At 16:16 , I recognize a long forgotten familiar syntax

So here it is :

first : out &bc00, REGISTER

second out &bd00,VALUE

With the register being from this list , taken from https://cpcrulez.fr/coding_src-list-graphic-crtc-on-screen_effects_on_the_CPC464_POPU.htm


Register Function
0 Horizontal Total
1 Horizontal Displayed
2 Horizontal Sync Position
3 Sync Widths
4 Vertical Total
5 Vertical Total Adjust Vertical Displayed
7 Vertical Sync Position
8 Interlace and Skew
9 Maximum Raster Address
12 Start Address (high)
13 Start Address (low)

Messing with the registers I did two programs : a hacks and a “demo” which I share here from memory

HACK: Making sprites taller in Horizontal Beat’em up game (double dragon, vigilante, …)

How, messing with the interlacing so that there is an empty line between each real horizontal line. Needed to tweak the knob of “vertical something” at the back of the monitor.
Made my Amstrad less ridiculous compared to my friend’s Amiga

Demo: A fullscreen starfield (one layer only, no parallax) scrolling horizontally

Steps were
Paint it black : border 0, paper 0
Mode 0 ?
Draw random white dots on the screen
Mess with video register so that lines are not aligned but take full Horizontal space
Mess with video register so that lines take full Vertical space
Make a simple loop on register ?, from ? to ? and it simuletes movement

Extra layer: Add a logo to starfield.
1/ with drawing software make a logo with your nickname save it and close software
2/ Mess the video
3/Reopen drawing software load pic + ?nothing? + save it again

4/ restart computer for video reset, display pic. Must be messed, with lines shifted. Its the expected result

5/ Modify main prog to load pic

6/ Admire you name in full screen, moving indefinitely


I wonder if it would work as well on an emulator.
If you code it, capture video and share it !
Have fun.


Leave a comment

Some Bash magic, graph, csv

Unix shells are powerful. Scripts are useful.

I am working on a project for which I want to know if the master data is already present in my graph as I’ll process CSV files.

So, the idea is to get all the distinct unique values from a given column in all the csv file and count the

From this list, I then create an array that I use in a Cypher query like

MATCH (n:Label) 
WHERE n.property IN [The Array I created with the values]
RETURN count(n)

Here is the script, in Bash, the trick is to create an awk command for each file. It take an integer as parameter, 1 for the first column and so on (not 0, 0 is for the whole line for awk)

#!/bin/bash
#Get the unique values in a given csv file by providing a column number (starts at 1 in awk)
#$1 means first param value of this script, should be an integer
# will form with the $ in the string the column number for awk (again $1 = first column, because $0 is whole line)
# awk 'BEGIN {FS=';'}{print $3}END{}' $file >> sumFile.txt
theline="BEGIN{FS=\";\"}{print $"$1"}END{}"
filename=/tmp/getUniqueValues_sh.date +%F
touch $filename
for file in *_*.csv;
do
   command="/usr/bin/awk '"$theline"' "$file" >>"$filename
   eval $command
done
# display unique values
cat $filename |sort|uniq|more
rm $filename

The script writes in a temp file in /tmp that is removed after use.

Find the file in https://drive.google.com/file/d/1Jo5tY7IaEek4NFRTZWea4TvSw8KdKC45/view?usp=sharing

The column separator is ; you can change it easily

Execute it like this “getUniqueValues.sh 2” for the second column

Leave a comment

Neo4j Favorites

You certainly already know that you can add a Cypher statement as a favorite by hitting the star button next to the input box

A very useful trick is to start it with a comment, so that the comment appears as the title of the favorite in the favorites tab.

// Isolated nodes - count by label
MATCH (n)
WHERE NOT ((n)--())
RETURN DISTINCT (labels(n)), count(n)

Will be listed as “Isolated nodes – count by labels”

Useful isnt it ?