{"id":1979,"date":"2023-04-15T13:25:27","date_gmt":"2023-04-15T07:55:27","guid":{"rendered":"https:\/\/judepereira.com\/blog\/?p=1979"},"modified":"2023-04-15T13:25:28","modified_gmt":"2023-04-15T07:55:28","slug":"mac-m1-m2-keyboard-brightness-keys-remap-%c2%a7-to","status":"publish","type":"post","link":"https:\/\/judepereira.com\/blog\/mac-m1-m2-keyboard-brightness-keys-remap-%c2%a7-to\/","title":{"rendered":"Mac M1\/M2: Keyboard Brightness Keys + Remap \u00a7 to ~"},"content":{"rendered":"\n<p>I recently moved from the US layout to the UK layout for my shiny new MacBook Air M2. I&#8217;d get used to the keys, however, my work MacBook is still on the US layout. Therefore, I decided to:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Remap the section key \u00a7 to tilde\/back-tick (I use the tilde and back tick keys a lot)<\/li>\n\n\n\n<li>Remap the original tilde key to the left shift, so that I don&#8217;t accidentally hit the tilde in the wrong place<\/li>\n\n\n\n<li>Bring back the keyboard brightness keys by remapping the Siri (F5) + DND keys (F6)<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler\"><div class=\"wp-block-embed__wrapper\">\n<style>.gist table { margin-bottom: 0; }<\/style><div style=\"tab-size: 8\" id=\"gist121938533\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-com-judepereira-keyremapping-plist\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-xml-property-list  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"com.judepereira.keyremapping.plist content, created by judepereira on 07:48AM on April 15, 2023.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"com.judepereira.keyremapping.plist\">\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC1\" class=\"blob-code blob-code-inner js-file-line\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC2\" class=\"blob-code blob-code-inner js-file-line\">&lt;!DOCTYPE plist PUBLIC &quot;-\/\/Apple\/\/DTD PLIST 1.0\/\/EN&quot; &quot;http:\/\/www.apple.com\/DTDs\/PropertyList-1.0.dtd&quot;&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC3\" class=\"blob-code blob-code-inner js-file-line\">&lt;plist version=&quot;1.0&quot;&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC4\" class=\"blob-code blob-code-inner js-file-line\">&lt;dict&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC5\" class=\"blob-code blob-code-inner js-file-line\">    &lt;key&gt;Label&lt;\/key&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC6\" class=\"blob-code blob-code-inner js-file-line\">    &lt;string&gt;com.judepereira.keyremapping&lt;\/string&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC7\" class=\"blob-code blob-code-inner js-file-line\">    &lt;key&gt;ProgramArguments&lt;\/key&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC8\" class=\"blob-code blob-code-inner js-file-line\">    &lt;array&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC9\" class=\"blob-code blob-code-inner js-file-line\">        &lt;string&gt;\/usr\/bin\/hidutil&lt;\/string&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC10\" class=\"blob-code blob-code-inner js-file-line\">        &lt;string&gt;property&lt;\/string&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC11\" class=\"blob-code blob-code-inner js-file-line\">        &lt;string&gt;&#8211;set&lt;\/string&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC12\" class=\"blob-code blob-code-inner js-file-line\">        &lt;string&gt;{&quot;UserKeyMapping&quot;:[<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC13\" class=\"blob-code blob-code-inner js-file-line\">            {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC14\" class=\"blob-code blob-code-inner js-file-line\">              &quot;HIDKeyboardModifierMappingSrc&quot;: 0xC000000CF,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC15\" class=\"blob-code blob-code-inner js-file-line\">              &quot;HIDKeyboardModifierMappingDst&quot;: 0xFF00000009<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC16\" class=\"blob-code blob-code-inner js-file-line\">            },<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC17\" class=\"blob-code blob-code-inner js-file-line\">            {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC18\" class=\"blob-code blob-code-inner js-file-line\">              &quot;HIDKeyboardModifierMappingSrc&quot;: 0x10000009B,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC19\" class=\"blob-code blob-code-inner js-file-line\">              &quot;HIDKeyboardModifierMappingDst&quot;: 0xFF00000008<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC20\" class=\"blob-code blob-code-inner js-file-line\">            },<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC21\" class=\"blob-code blob-code-inner js-file-line\">            {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC22\" class=\"blob-code blob-code-inner js-file-line\">              &quot;HIDKeyboardModifierMappingSrc&quot;: 0x700000064,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC23\" class=\"blob-code blob-code-inner js-file-line\">              &quot;HIDKeyboardModifierMappingDst&quot;: 0x700000035<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC24\" class=\"blob-code blob-code-inner js-file-line\">            },<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC25\" class=\"blob-code blob-code-inner js-file-line\">            {<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC26\" class=\"blob-code blob-code-inner js-file-line\">              &quot;HIDKeyboardModifierMappingSrc&quot;: 0x700000035,<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC27\" class=\"blob-code blob-code-inner js-file-line\">              &quot;HIDKeyboardModifierMappingDst&quot;: 0x7000000E1<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC28\" class=\"blob-code blob-code-inner js-file-line\">            }<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC29\" class=\"blob-code blob-code-inner js-file-line\">        ]}&lt;\/string&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC30\" class=\"blob-code blob-code-inner js-file-line\">    &lt;\/array&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC31\" class=\"blob-code blob-code-inner js-file-line\">    &lt;key&gt;RunAtLoad&lt;\/key&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC32\" class=\"blob-code blob-code-inner js-file-line\">    &lt;true\/&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC33\" class=\"blob-code blob-code-inner js-file-line\">&lt;\/dict&gt;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-com-judepereira-keyremapping-plist-L34\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"34\"><\/td>\n          <td id=\"file-com-judepereira-keyremapping-plist-LC34\" class=\"blob-code blob-code-inner js-file-line\">&lt;\/plist&gt;<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/judepereira\/374684129b2906903bda1910e93ab82c\/raw\/e9378d7139defe3485f62365d343e0b87794b0f3\/com.judepereira.keyremapping.plist\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https:\/\/gist.github.com\/judepereira\/374684129b2906903bda1910e93ab82c#file-com-judepereira-keyremapping-plist\" class=\"Link--inTextBlock\">\n          com.judepereira.keyremapping.plist\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n\n<\/div><\/figure>\n\n\n\n<p>Save the contents above to <code>~\/Library\/LaunchAgents\/com.judepereira.keyremapping.plist<\/code>, and logout\/login :)<\/p>\n\n\n\n<p>That&#8217;s all!<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Credits<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/developer.apple.com\/library\/archive\/technotes\/tn2450\/_index.html\" target=\"_blank\" rel=\"noopener\" title=\"\">Technical Note TN2450<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/apple.stackexchange.com\/a\/374074\/157443\" target=\"_blank\" rel=\"noopener\" title=\"\">Tilde (~) and plus-minus (\u00b1) in wrong place on keyboard<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.idownloadblog.com\/2022\/03\/25\/bring-back-keyboard-brightness\/\" target=\"_blank\" rel=\"noopener\" title=\"\">How to bring brightness controls back to your M1 Mac\u2019s keyboard<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Remap the section key to the tilde key, and bring back the keyboard brightness keys to the MacBook M1\/M2 machines.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[12],"tags":[551,688,690,689,684,685,686,692,687,691],"class_list":["post-1979","post","type-post","status-publish","format-standard","hentry","category-misc","tag-apple","tag-brightness","tag-keyboard","tag-keys","tag-m1","tag-m2","tag-macbook","tag-section","tag-silicon","tag-tilde"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pqtyx-vV","jetpack-related-posts":[{"id":2039,"url":"https:\/\/judepereira.com\/blog\/remapping-%c2%a7-to-brightness-keys-from-macos-sonoma-14-3-1\/","url_meta":{"origin":1979,"position":0},"title":"Remapping \u00a7 to ~ + brightness keys from macOS Sonoma 14.3.1","author":"Jude Pereira","date":"February 20, 2024","format":false,"excerpt":"A year ago, I wrote about bringing the UK keyboard layout closer to the US one on my M2 Air here, however, that suddenly stopped working. While attempting to run the command involved by hand, I realised that it had to be executed as root. Apple updated macOS such that\u2026","rel":"","context":"In &quot;miscellaneous&quot;","block_context":{"text":"miscellaneous","link":"https:\/\/judepereira.com\/blog\/category\/misc\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1969,"url":"https:\/\/judepereira.com\/blog\/cloudflare-zero-trust-gateway-and-net-neutrality\/","url_meta":{"origin":1979,"position":1},"title":"Cloudflare Zero Trust Gateway and Net Neutrality","author":"Jude Pereira","date":"April 5, 2023","format":false,"excerpt":"Is Cloudflare ruining the entire concept of a distributed internet? Is it on a path to violate Net Neutrality? What can you do to prevent this?","rel":"","context":"In &quot;miscellaneous&quot;","block_context":{"text":"miscellaneous","link":"https:\/\/judepereira.com\/blog\/category\/misc\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2023-04-04-at-20.01.01.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2023-04-04-at-20.01.01.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2023-04-04-at-20.01.01.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2023-04-04-at-20.01.01.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2023-04-04-at-20.01.01.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2023-04-04-at-20.01.01.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1635,"url":"https:\/\/judepereira.com\/blog\/discover-my-second-ios-app\/","url_meta":{"origin":1979,"position":2},"title":"Discover &#8211; my second iOS app","author":"Jude Pereira","date":"July 5, 2015","format":false,"excerpt":"iTunes Genius is a great feature. However, it lacks music discovery outside your own music library. Sure, you can always do a Google search for similar tunes, but let's face it - who has time to do this anymore? There weren't any great music discovery apps on the App Store\u2026","rel":"","context":"In &quot;ios&quot;","block_context":{"text":"ios","link":"https:\/\/judepereira.com\/blog\/category\/code\/ios\/"},"img":{"alt_text":"Highlights of Discover","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/feature-both-small.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/feature-both-small.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/feature-both-small.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/feature-both-small.png?resize=700%2C400 2x"},"classes":[]},{"id":2126,"url":"https:\/\/judepereira.com\/blog\/upgrading-to-debian-bookworm-on-qnap-ts-112-also-ts-11x-ts-12x\/","url_meta":{"origin":1979,"position":3},"title":"Upgrading to Debian Bookworm on QNAP TS-112 (also TS-11x\/TS-12x)","author":"Jude Pereira","date":"October 16, 2024","format":false,"excerpt":"I decided to host Minio on a QNAP TS-112 device, bought from a second hand store. Here's a tale of me ditching the QNAP OS in favour of Debian Bookworm.","rel":"","context":"In &quot;gnu linux&quot;","block_context":{"text":"gnu linux","link":"https:\/\/judepereira.com\/blog\/category\/linux\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1734,"url":"https:\/\/judepereira.com\/blog\/why-matchbox-and-how-it-connects-people-through-music\/","url_meta":{"origin":1979,"position":4},"title":"Why Matchbox, and how it connects people through music","author":"Jude Pereira","date":"January 21, 2017","format":false,"excerpt":"There's no doubt that music defines us. It influences our moods, for example, making us happy by releasing a chemical named dopamine. It can affect what we wear, what we eat, and perhaps even who we enjoy being together with. It affects\u00a0our thought process too (it's well known that ambient\u2026","rel":"","context":"In &quot;android&quot;","block_context":{"text":"android","link":"https:\/\/judepereira.com\/blog\/category\/code\/android\/"},"img":{"alt_text":"Matchbox showing the top 10 artists","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/IMG_7195-300x210.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1830,"url":"https:\/\/judepereira.com\/blog\/ios-mac-ipsec\/","url_meta":{"origin":1979,"position":5},"title":"How to tunnel all traffic from your iOS device to your own server via IPSec","author":"Jude Pereira","date":"May 11, 2018","format":false,"excerpt":"TL;DR: A DigitalOcean droplet, strongSwan, and a custom Configuration Profile for iOS routes all the traffic from my iPhone via my droplet. Why? Just because I can. Note: This setup does not require you to download Apple Configurator and switch your iPhone into Supervised mode (we will create a configuration\u2026","rel":"","context":"In &quot;gnu linux&quot;","block_context":{"text":"gnu linux","link":"https:\/\/judepereira.com\/blog\/category\/linux\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screen-Shot-2018-05-10-at-20.34.32-1024x134.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screen-Shot-2018-05-10-at-20.34.32-1024x134.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screen-Shot-2018-05-10-at-20.34.32-1024x134.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts\/1979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/comments?post=1979"}],"version-history":[{"count":4,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts\/1979\/revisions"}],"predecessor-version":[{"id":1983,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts\/1979\/revisions\/1983"}],"wp:attachment":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/media?parent=1979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/categories?post=1979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/tags?post=1979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}