The quest for high quality sound on a Lenovo Yoga C940

Introduction I recently bought a new laptop, a Lenovo C940, and installed Ubuntu 20.04 on it. Everything works grand on it, except for the audio. When using Windows, the sound quality was great, however when in Linux, the sound is really tinny and can be harsh to listen to. It doesn’t matter if I use the speakers or the headphone-jack, both sound the same. The strange thing is that when I connect my bluetooth headphones (and use bluetooth A2DP), the sound is absolutely perfect. I’m not sure how this works technically, but if I can get bluetooth to work, I should be able to get the same quality normally, right? ...

Not all videos working on Firefox on Linux

Issue I recently installed Ubuntu minimal on a new computer, and noticed that sometimes Youtube-videos didn’t work. All “old” videos seemed to work, but newly uploaded videos usually claimed that my browser did not support HTML5. Basically, I could have a video in one tab which did work flawlessly, and a video in another tab which claimed I did not have HTML5 support in my browser. The error message was the something like the following: ...

New Ultrabook (2020)

Notes for purchasing a new laptop in 2020 Need to have ~13-14" screen 256 GiB SSD Probably 8 GiB RAM Modern bluetooth Modern Wi-Fi USB-C slot 8+ hours of use Full HD, no more, no less Intel Iris Plus Graphics G4 Nice to have No bezels 512 GiB SSD Probably 16 GiB RAM USB-A slot 3.5mm headphone jack Intel Iris Plus Graphics G7 Possible buys Lenovo Yoga C940-14 Got most stuff. Good hardware (trackpad, keyboard). Around 15k SEK. 2-in-1. Said to have great build-quality. I usually trust Lenovo. ...

June 2, 2020  | 

cURL Cheatsheet

Nice things you can do with cURL # Resolve a hostname with a given ip curl http://iix.se --resolve iix.se:80:206.189.18.126 # Run many queries in a loop (either for looping or load testing) curl 'http://localhost:8080/oauth/login?[1-10]' -d '{ "username": "[email protected]", "password": "secret" }' -vvv -H "Content-Type: application/json" # Light load testing an endpoint (Z=parallell, -s/-o removes output, -w sets new output) curl -Z -so /dev/null -w "%{time_total} %{http_code}\n" 'https://acme.system.com/api/endpoint?[1-20]'

May 25, 2020  |  🏷️Curl

A Hugo homepage workflow

Hugo is a framework for building static webpages. It pairs well with creating a git repository and creating a push-webhook which rebuilds the homepage every time you change it. This post is just documenting how to do just that for an existing hugo repository. Create a static repo with nginx pointing to it Clone a hugo repo and put it in /srv/hugo.iix.se Pop over to the folder and run hugo to generate a static page chown -R nginx:nginx /srv/hugo.iix.se Create a nginx vhost with location / { root /srv/hugo.iix.se/public } systemctl nginx reload Check that the page works Create an endpoint for updating This can be be done in a number of ways, but an easy way is creating a fastcgi endpoint in nginx, since we got that running already. ...

Iptables Cheatsheet

Various stuff I forget how I do it. View iptables # View iptables sudo iptables -nvL Add/Remove/Replace # Add a rule iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Append to end of chain iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT # Insert at position 1 in chain # Delete a rule iptables -D INPUT 5 # 5 is index 5 in the INPUT-chain # Replace a rule iptables -R INPUT 1 -p tcp -s 192.168.0.0/24 --dport 80 -j ACCEPT # Replace rule at index 1 Persisting Generally, tables are saved in ...

Optimizing MySQL Queries et. Indexes

Things I have learned from troubleshooting mySQL queries Links Index och prestanda i MySQL Join types (from explain) MySQL Profiling Commands # Run query without cache SELECT SQL_NO_CACHE * from users where name like 'Ol%'; # Profiling SET SESSION profiling = 1; SHOW PROFILES; SHOW PROFILE FOR QUERY 3; SHOW STATUS LIKE 'Last_Query_Cost'; How to index/optimize Optimize OR Example: SELECT * FROM users where customerNumber='qwe' OR birthDate='2020-01-01'; You need an index for each OR, which will create a merge index on modern innoDB. If you are missing an index for one OR you will have to do a full table scan. Basically, one condition can ruin the query. If you create a joined index on (customerNumber, birthDate) or (birthDate, customerNumber) they will have not effect. To use a joined index you have to do two solo queries and UNION them. ...

May 24, 2020  | 

Guitar pedals - What to buy

Pedals I wont buy Hungry Robot - Wardenclyffe Chase Bliss & Cooper - Generation Loss Pedals I might buy Behringer TO800 Vintage Tube Overdrive - 270 SEK Extra stuff 0.15m Patch Angled Jack - 25 SEK

March 18, 2020  | 

Remove subfolder from all git history

# Remove DIRECTORY_NAME from all commits, then remove the refs to the old commits # (repeat these two commands for as many directories that you want to remove) git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch DIRECTORY_NAME/' --prune-empty --tag-name-filter cat -- --all git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d # Ensure all old refs are fully removed rm -Rf .git/logs .git/refs/original # Perform a garbage collection to remove commits with no refs git gc --prune=all --aggressive

February 27, 2020  |  🏷️Git

Dexed patches I like

Cartridge collections: Dexed_cart_1.0.zip Patches !Instruments > Misc > 2003.SYX > Brass&REV7: Punchy brass with slight echo !Instruments > Misc > DECKARD.SYX > SYNTHI 1-5: Versatile dark lead bass

February 19, 2020  |  🏷️Music