write@moxnet

Reader

Read the latest posts from write@moxnet.

from Kemal's Braindump

#smarthome #selfhosting

WriteFreely, which I self-host for this blog, cannot natively serve images. It is designed so that you combine it with a photo serving platform like e.g. snap.as.

I found the solution for this problem by using NGINX and Nextcloud:

  • I use a Nextcloud folder to upload the images I want to use.
  • Then using NGINX reverse proxy I expose that folder.
  # Serve images                                                                        
        location /images/ {                                                                   
                 alias /home/nc_data/Kemal/files/Public/;                                     
                 autoindex off;                                                               
                 access_log off;                                                              
                 expires 30d;                                                                 
                 add_header Cache-Control "public";                                           
                 } 
  • After that I can link images in the blog posts using this
![Name](https://write.moxnet.eu/images/Name.jpg)

Hope this helps someone else also.

Keep on hacking!

 
Read more...

from Kemal's Braindump

#emacs #brainiac #productivity #systems

Hello everyone!

I have been using the Brainiac intensively over the last months and made some changes to the configuration along the way. Get your update here or from Codeberg.

Improvements:

  • Added journal.org to the list of refile targets.
  • Reduced the width of comment, source, etc. boxes in brainiac.css.
  • The attached items are now visibly listed in the drawer of the headline.
  • Minor changes in the configuration, e.g. increase of idle time etc.

New things:

  • Added org-crypt to the config, so that sensitive information can be encrypted if storing files on public servers.
  • To integrate Brainiac into your system menu, I propose the following: copy brainiac.desktop to ~/.local/share/applications and brainiac.svg to ~/.local/share/icons.
  • I added basic AI support by using a customized ollama-buddy-mini and running models locally with ollama. Although I previously stated that Brainiac would not have AI, the chosen combination presents a nice compromise between functionality and privacy.
  • I also introduced the abbrev-mode as a template storage for some useful org templates and as a mechanism for storing AI prompts for future usage.
  • In order to consolidate important functions and keystrokes, I configured a menu which can be reached by pressing C-c b using transient.
 
Read more...

from Kemal's Braindump

#linux #sound

This setup was done on an HP EliteBook 840 with Intel Tiger Lake hardware, running Ubuntu 24.04 LTS, but I used tips from Arch Wiki as well. So I presume most of it is transferable to other distributions.

Ubuntu ships with PipeWire and WirePlumber by default, which is a solid audio foundation—but getting microphone with noise suppression and sane device naming requires some manual tuning.

Enable Pro Audio Mode for the microphone to work

To be able to use the microphone, the audio card must run in pro-audio profile, which can be done with pactl. Now open alsamixer and set all relevant channels to 100%. Then test the mic.

When the mic starts working we need some noise suppression, in order to use it for calls. Install RNNoise for PipeWire from here:

👉 https://github.com/werman/noise-suppression-for-voice

Once installed, we need to set the RNNoise source as your default microphone. For that, and other tweaks, I recommend to take the code below, put it in a script and run it on every reboot.

pactl set-card-profile alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic pro-audio
pactl set-default-sink alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.pro-output-0
amixer -c 0 set Master 100%
pactl set-default-source rnnoise_source

WirePlumber Configuration

WirePlumber allows fine-grained control over audio devices using Lua scripts.

Default ALSA device names are long and unreadable. This rule renames the main audio device to something human-friendly.

rule = {
  matches = {
    {
      { "device.name", "matches", "alsa_card.pci-0000_00_1f.3-platform-skl_hda_dsp_generic" },
    },
  },
  apply_properties = {
    ["device.description"] = "Laptop Audio"
  },
}

table.insert(alsa_monitor.rules, rule)

Pro-audio mode exposes many unused nodes. Disabling them keeps the device list clean and avoids accidental routing.

rule = {
  matches = {
    { { "node.name", "equals", "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.pro-output-3" } },
    { { "node.name", "equals", "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.pro-output-4" } },
    { { "node.name", "equals", "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.pro-output-5" } },
    { { "node.name", "equals", "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.pro-output-31" } },
    { { "node.name", "equals", "alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.pro-input-0" } },
    { { "node.name", "equals", "alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.pro-input-6" } },
  },
  apply_properties = {
    ["node.disabled"] = true,
  },
}

table.insert(alsa_monitor.rules, rule)

Faster audio source/sink switching in GNOME

For this install the GNOME extension:

Quick Settings Audio Panel

This makes switching audio sources and sinks fast and practical during daily work.

Enjoy!

 
Read more...

from Kemal's Braindump

#technology #leadership

Because “... each tiny “I don't care” iteration to tech products is a small step closer to Star Trek's promised land of holodecks, abundance, and hot aliens ...“, and I want that future!

Note to leaders.

Have a look at what your team is working on, are you producing real future proof value for the company or just chasing another tech trend trying to show that you are „on the bleeding edge“?

Producing real value doesn’t just help your company keep the business in long term, it gives your team purpose and enables them to optimize their contribution.

 
Read more...

from Kemal's Braindump

#health #leadership

A couple of days ago I was going to the office. It was Friday, I had some meetings scheduled and some light office tasks to do. All in all, it should be an easy day as it was the first working week of the year.

As I was walking from the car park to the office, I noticed a guy walking in front of me. He was strolling along, with a coffee in his hand and looking kind of dreamy. Unintentionally I set off to overtake him and hurry along my way. Then it hit me: “Why am I in a hurry?”. As I wrote above, there is no urgent meeting that I needed to attend or a task I had to do. Where did this urge to overtake him and look busy come from?

The modern life being promoted around us, teaches us not to loose time and to always be busy. If we are not, then we will not be successful, reach our goals or we will simply be brand-marked as slackers. But this time I intentionally chose to stop my overtaking and match the speed of a dreamy looking guy.

 
Read more...