This commit is contained in:
fido-node 2024-06-05 12:10:21 +00:00
parent 9a20a1c839
commit 39c487123d
65 changed files with 592 additions and 44 deletions

View File

@ -1,18 +0,0 @@
{
"m.homeserver": {
"base_url": "https://matrix.fidonode.me"
}
,
"m.identity_server": {
"base_url": "https://matrix.fidonode.me"
}
,
"io.element.e2ee": {
"default": true,
"secure_backup_required": false,
"secure_backup_setup_methods": []
},
"im.vector.riot.e2ee": {
"default": true
}
}

View File

@ -1,3 +0,0 @@
{
"m.server": "matrix.fidonode.me:8448"
}

View File

@ -1 +0,0 @@
<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/50da23bb63d0f76d438c.css" as="style"/><link rel="stylesheet" href="/_next/static/css/50da23bb63d0f76d438c.css" data-n-g=""/><noscript data-n-css=""></noscript><link rel="preload" href="/_next/static/chunks/webpack-b9ebe21d1d6d42ff628d.js" as="script"/><link rel="preload" href="/_next/static/chunks/framework-b5ec34b4134d0a8498e0.js" as="script"/><link rel="preload" href="/_next/static/chunks/597-c585594bee199939e53f.js" as="script"/><link rel="preload" href="/_next/static/chunks/778-29cba84d6833a4d554de.js" as="script"/><link rel="preload" href="/_next/static/chunks/main-9ca82ec4d4aca520c43d.js" as="script"/><link rel="preload" href="/_next/static/chunks/pages/_app-7d23ced55da02a1d5a80.js" as="script"/><link rel="preload" href="/_next/static/chunks/pages/_error-e3147175cc9900f89c76.js" as="script"/></head><body><div id="__next"><div style="color:#000;background:#fff;font-family:-apple-system, BlinkMacSystemFont, Roboto, &quot;Segoe UI&quot;, &quot;Fira Sans&quot;, Avenir, &quot;Helvetica Neue&quot;, &quot;Lucida Grande&quot;, sans-serif;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body { margin: 0 }</style><h1 style="display:inline-block;border-right:1px solid rgba(0, 0, 0,.3);margin:0;margin-right:20px;padding:10px 23px 10px 0;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:inherit;margin:0;padding:0">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"1KyjtQJ8VX-P78y_9qfrK","nextExport":true,"isFallback":false,"gip":true}</script><script nomodule="" src="/_next/static/chunks/polyfills-8683bd742a84c1edd48c.js"></script><script src="/_next/static/chunks/webpack-b9ebe21d1d6d42ff628d.js" async=""></script><script src="/_next/static/chunks/framework-b5ec34b4134d0a8498e0.js" async=""></script><script src="/_next/static/chunks/597-c585594bee199939e53f.js" async=""></script><script src="/_next/static/chunks/778-29cba84d6833a4d554de.js" async=""></script><script src="/_next/static/chunks/main-9ca82ec4d4aca520c43d.js" async=""></script><script src="/_next/static/chunks/pages/_app-7d23ced55da02a1d5a80.js" async=""></script><script src="/_next/static/chunks/pages/_error-e3147175cc9900f89c76.js" async=""></script><script src="/_next/static/1KyjtQJ8VX-P78y_9qfrK/_buildManifest.js" async=""></script><script src="/_next/static/1KyjtQJ8VX-P78y_9qfrK/_ssgManifest.js" async=""></script></body></html>

1
CNAME
View File

@ -1 +0,0 @@
fidonode.me

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

View File

@ -1 +0,0 @@
self.__BUILD_MANIFEST={__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/cb1608f2-dfa5f29f9cae8eae631d.js","static/chunks/a9a7754c-57084face35fae18d632.js","static/chunks/620-417e372b0d39b26dc356.js","static/chunks/pages/index-8c07338fb59be5e83b5d.js"],"/_error":["static/chunks/pages/_error-e3147175cc9900f89c76.js"],sortedPages:["/","/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

View File

@ -1 +0,0 @@
self.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB();

View File

@ -1 +0,0 @@
self.__BUILD_MANIFEST={__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/cb1608f2-dfa5f29f9cae8eae631d.js","static/chunks/a9a7754c-57084face35fae18d632.js","static/chunks/620-417e372b0d39b26dc356.js","static/chunks/pages/index-8c07338fb59be5e83b5d.js"],"/_error":["static/chunks/pages/_error-e3147175cc9900f89c76.js"],sortedPages:["/","/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

View File

@ -1 +0,0 @@
self.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[112],{1417:function(c,n,i){"use strict";i.d(n,{zhw:function(){return e},D9H:function(){return f},kyk:function(){return t},IKq:function(){return r},z0T:function(){return o},mdU:function(){return a}});var e={prefix:"fab",iconName:"github",icon:[496,512,[],"f09b","M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]},f={prefix:"fab",iconName:"linkedin",icon:[448,512,[],"f08c","M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"]},t={prefix:"fab",iconName:"mastodon",icon:[448,512,[],"f4f6","M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"]},r={prefix:"fab",iconName:"telegram-plane",icon:[448,512,[],"f3fe","M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z"]},o={prefix:"fab",iconName:"twitch",icon:[512,512,[],"f1e8","M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z"]},a={prefix:"fab",iconName:"twitter",icon:[512,512,[],"f099","M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"]}}}]);

View File

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[523],{1436:function(c,e,n){"use strict";n.d(e,{FU$:function(){return f}});var f={prefix:"fas",iconName:"envelope",icon:[512,512,[],"f0e0","M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"]}}}]);

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[179],{4453:function(){}},function(n){n.O(0,[774,597,778],(function(){return u=5778,n(n.s=u);var u}));var u=n.O();_N_E=u}]);

View File

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[888,179],{3173:function(e,r,t){"use strict";function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}t.r(r),t.d(r,{default:function(){return u}});var o=t(5893);t(3149);function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function u(e){var r=e.Component,t=e.pageProps;return(0,o.jsx)(r,function(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?c(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}({},t))}},6363:function(e,r,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return t(3173)}])},3149:function(){},4453:function(){}},function(e){var r=function(r){return e(e.s=r)};e.O(0,[774,597],(function(){return r(6363),r(2441)}));var t=e.O();_N_E=t}]);

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[405],{6645:function(t,e,n){"use strict";n.r(e),n.d(e,{default:function(){return v}});var s=n(5893),r=(n(7294),n(616)),c=function(t){return(0,r.Z)(t),(0,s.jsx)("footer",{className:"footer relative pt-1 border-t-2 border-blue-100",children:(0,s.jsx)("div",{className:"container mx-auto px-6 py-3",children:(0,s.jsxs)("h6",{className:"text-center text-gray-500",children:["\xa9 2020. Aleksandr Mikhailov."," ",(0,s.jsx)("a",{href:"http://creativecommons.org/licenses/by/3.0/",children:"Some Rights Reserved"}),"."]})})})},i=function(t){var e=t.imgUrl;return(0,s.jsx)("img",{src:e,className:"border rounded-full h-48 sm mx-auto"})},a=(n(8947),n(1436)),l=n(1417),o=n(7814),x={tg:function(t){return"https://t.me/".concat(t)},mail:function(t){return"mailto:".concat(t)},twitter:function(t){return"https://twitter.com/".concat(t)},github:function(t){return"https://github.com/".concat(t)},linkedin:function(t){return"https://linkedin.com/in/".concat(t)},twitch:function(t){return"https://www.twitch.tv/".concat(t)},mastodon:function(t){return"https://mastodon.social/".concat(t)}};function d(t){return x[t.type](t.id)}var u={tg:[l.IKq],mail:[a.FU$],twitter:[l.mdU],github:[l.zhw],linkedin:[l.D9H],twitch:[l.z0T],mastodon:[l.kyk]},h=function(t){var e=t.contacts;return(0,s.jsx)("div",{className:"flex flex-row justify-center",children:e.map((function(t){return function(t){var e=t.id,n=t.type,r=u[n];return"mastodon"==n?(0,s.jsx)("div",{className:"p-3",children:(0,s.jsx)("a",{rel:"me",className:"text-5xl text-gray-500 "+r[1],href:d({id:e,type:n}),target:"_blank",children:(0,s.jsx)(o.G,{icon:r[0]},n)})}):(0,s.jsx)("div",{className:"p-3",children:(0,s.jsx)("a",{className:"text-5xl text-gray-500 "+r[1],href:d({id:e,type:n}),target:"_blank",children:(0,s.jsx)(o.G,{icon:r[0]},n)})})}(t)}))})},m=[{id:"fido_node",type:"tg"},{id:"iam@fidonode.me",type:"mail"}],f=[{id:"@fido_node",type:"mastodon"},{id:"alex-mihailov-870448187",type:"linkedin"},{id:"michey",type:"github"},{id:"fido_node",type:"twitter"}],p=function(t){return(0,r.Z)(t),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex flex-col flex-row-2 ",children:[(0,s.jsx)("span",{className:"text-2xl text-center py-4",children:"Contact me via: "}),(0,s.jsx)(h,{contacts:m})]}),(0,s.jsxs)("div",{className:"flex flex-col flex-row-2",children:[(0,s.jsx)("span",{className:"text-2xl text-center py-4",children:"Social buttons: "}),(0,s.jsx)(h,{contacts:f})]})]})},j=function(t){var e=t.href,n=t.children;return(0,s.jsx)("a",{className:"underline",href:e,children:n})},g=function(t){return(0,r.Z)(t),(0,s.jsxs)("div",{className:"flex flex-col flex-row-2",children:[(0,s.jsx)("span",{className:"text-2xl text-center",children:"Full stack engineer"}),(0,s.jsx)("span",{className:"text-2xl text-center",children:"FP-curious | \u03bb-affected"}),(0,s.jsx)("span",{className:"text-2xl text-center",children:"Wanna be rustacean \ud83e\udd80 and/or secops guy \ud83d\udd12"}),(0,s.jsxs)("span",{className:"text-lg text-center text-gray-500 font-light pt-4",children:["Now ",(0,s.jsx)(j,{href:"https://www.samsungnext.com/",children:"@SamsungNEXT"})," (",(0,s.jsx)(j,{href:"https://whisk.com/",children:"Whisk product team"}),"). Previously"," ",(0,s.jsx)(j,{href:"https://www.visualthreat.com/",children:"@VisualThreat."})]}),(0,s.jsx)("span",{className:"text-lg text-center text-gray-500 font-light",children:"Work with: Scala, TypeScript, Java, MongoDB, MySQL, Thrift, gRPC"})]})},w=function(t){return(0,r.Z)(t),(0,s.jsx)("div",{className:"sm mx-auto pb-4",children:(0,s.jsx)("span",{className:"text-5xl",children:"Alex Mikhailov"})})},N=function(t){return(0,r.Z)(t),(0,s.jsxs)("div",{className:"flex flex-col sm mx-auto lg:w-1/3 pt-12",children:[(0,s.jsx)(i,{imgUrl:"./avatar.jpg"}),(0,s.jsx)(w,{}),(0,s.jsx)(g,{}),(0,s.jsx)(p,{})]})},v=function(){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("script",{async:!0,src:"https://umami.dokutsu.xyz/script.js","data-website-id":"d52d9af1-0c7d-4531-84c6-0b9c2850011f"}),(0,s.jsxs)("div",{className:"bg-gray-50 flex flex-col md:h-screen sm:h-full justify-between",children:[(0,s.jsx)(N,{}),(0,s.jsx)(c,{})]})]})}},5301:function(t,e,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return n(6645)}])}},function(t){t.O(0,[774,523,112,620],(function(){return e=5301,t(t.s=e);var e}));var e=t.O();_N_E=e}]);

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
!function(){"use strict";var r={},e={};function t(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}},u=!0;try{r[n](i,i.exports,t),u=!1}finally{u&&delete e[n]}return i.exports}t.m=r,function(){var r=[];t.O=function(e,n,o,i){if(!n){var u=1/0;for(a=0;a<r.length;a++){n=r[a][0],o=r[a][1],i=r[a][2];for(var c=!0,f=0;f<n.length;f++)(!1&i||u>=i)&&Object.keys(t.O).every((function(r){return t.O[r](n[f])}))?n.splice(f--,1):(c=!1,i<u&&(u=i));c&&(r.splice(a--,1),e=o())}return e}i=i||0;for(var a=r.length;a>0&&r[a-1][2]>i;a--)r[a]=r[a-1];r[a]=[n,o,i]}}(),t.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(e,{a:e}),e},t.d=function(r,e){for(var n in e)t.o(e,n)&&!t.o(r,n)&&Object.defineProperty(r,n,{enumerable:!0,get:e[n]})},t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"===typeof window)return window}}(),t.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},t.r=function(r){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},function(){var r;t.g.importScripts&&(r=t.g.location+"");var e=t.g.document;if(!r&&e&&(e.currentScript&&(r=e.currentScript.src),!r)){var n=e.getElementsByTagName("script");n.length&&(r=n[n.length-1].src)}if(!r)throw new Error("Automatic publicPath is not supported in this browser");r=r.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),t.p=r+"../../"}(),function(){var r={272:0};t.O.j=function(e){return 0===r[e]};var e=function(e,n){var o,i,u=n[0],c=n[1],f=n[2],a=0;for(o in c)t.o(c,o)&&(t.m[o]=c[o]);for(f&&f(t),e&&e(n);a<u.length;a++)i=u[a],t.o(r,i)&&r[i]&&r[i][0](),r[u[a]]=0;t.O()},n=self.webpackChunk_N_E=self.webpackChunk_N_E||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),t.O()}();

View File

@ -1 +0,0 @@
!function(){"use strict";var r={},e={};function t(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}},u=!0;try{r[n](i,i.exports,t),u=!1}finally{u&&delete e[n]}return i.exports}t.m=r,function(){var r=[];t.O=function(e,n,o,i){if(!n){var u=1/0;for(a=0;a<r.length;a++){n=r[a][0],o=r[a][1],i=r[a][2];for(var c=!0,f=0;f<n.length;f++)(!1&i||u>=i)&&Object.keys(t.O).every((function(r){return t.O[r](n[f])}))?n.splice(f--,1):(c=!1,i<u&&(u=i));c&&(r.splice(a--,1),e=o())}return e}i=i||0;for(var a=r.length;a>0&&r[a-1][2]>i;a--)r[a]=r[a-1];r[a]=[n,o,i]}}(),t.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(e,{a:e}),e},t.d=function(r,e){for(var n in e)t.o(e,n)&&!t.o(r,n)&&Object.defineProperty(r,n,{enumerable:!0,get:e[n]})},t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"===typeof window)return window}}(),t.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},t.r=function(r){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},function(){var r;t.g.importScripts&&(r=t.g.location+"");var e=t.g.document;if(!r&&e&&(e.currentScript&&(r=e.currentScript.src),!r)){var n=e.getElementsByTagName("script");n.length&&(r=n[n.length-1].src)}if(!r)throw new Error("Automatic publicPath is not supported in this browser");r=r.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),t.p=r+"../../"}(),function(){var r={272:0};t.O.j=function(e){return 0===r[e]};var e=function(e,n){var o,i,u=n[0],c=n[1],f=n[2],a=0;for(o in c)t.o(c,o)&&(t.m[o]=c[o]);for(f&&f(t),e&&e(n);a<u.length;a++)i=u[a],t.o(r,i)&&r[i]&&r[i][0](),r[u[a]]=0;t.O()},n=self.webpackChunk_N_E=self.webpackChunk_N_E||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),t.O()}();

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

10
blog.html Normal file
View File

@ -0,0 +1,10 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"/><meta author="Alex Mikhailov"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="color-scheme" content="light dark"/><link rel="icon" type="image/x-icon" href="/resources/favicon.ico"/><link rel="stylesheet" href="/resources/css/pico.sand.min.css"/><script defer="true" src="https://umami.dokutsu.xyz/script.js" data-website-id="d52d9af1-0c7d-4531-84c6-0b9c2850011f"></script><title>Alex Mikhailov - Blog</title></head><body><main class="container"><header class="header"><nav><ul><li><strong>Alex Mikhailov - Blog</strong></li></ul><ul><li><a href="/index.html">About</a></li><li><a href="/blog.html">Blog</a></li></ul></nav></header>
<div id="outline-container-org70d5d11" class="outline-2">
<h2 id="org70d5d11">Posts</h2>
<div class="outline-text-2" id="text-org70d5d11">
<ul class="org-ul">
<li><a href="./posts/keeb.html">Keyboard journey</a></li>
</ul>
</div>
</div>
<footer class="footer"><hr/><p>Alex Mikhailov</p><p>Built with: <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a> <a href="https://orgmode.org/">Org Mode</a> <a href="https://picocss.com/">picocss</a></p></footer></main></body></html>

1
cv.html Normal file
View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"/><meta author="Alex Mikhailov"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="color-scheme" content="light dark"/><link rel="icon" type="image/x-icon" href="/resources/favicon.ico"/><link rel="stylesheet" href="/resources/css/pico.sand.min.css"/><script defer="true" src="https://umami.dokutsu.xyz/script.js" data-website-id="d52d9af1-0c7d-4531-84c6-0b9c2850011f"></script><title></title></head><body><main class="container"><header class="header"><nav><ul><li><strong></strong></li></ul><ul><li><a href="/index.html">About</a></li><li><a href="/blog.html">Blog</a></li></ul></nav></header><footer class="footer"><hr/><p>Alex Mikhailov</p><p>Built with: <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a> <a href="https://orgmode.org/">Org Mode</a> <a href="https://picocss.com/">picocss</a></p></footer></main></body></html>

File diff suppressed because one or more lines are too long

1
posts/about_blog.html Normal file
View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"/><meta author="Alex Mikhailov"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="color-scheme" content="light dark"/><link rel="icon" type="image/x-icon" href="/resources/favicon.ico"/><link rel="stylesheet" href="/resources/css/pico.sand.min.css"/><script defer="true" src="https://umami.dokutsu.xyz/script.js" data-website-id="d52d9af1-0c7d-4531-84c6-0b9c2850011f"></script><title></title></head><body><main class="container"><header class="header"><nav><ul><li><strong></strong></li></ul><ul><li><a href="/index.html">About</a></li><li><a href="/blog.html">Blog</a></li></ul></nav></header><footer class="footer"><hr/><p>Alex Mikhailov</p><p>Built with: <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a> <a href="https://orgmode.org/">Org Mode</a> <a href="https://picocss.com/">picocss</a></p></footer></main></body></html>

494
posts/keeb.html Normal file
View File

@ -0,0 +1,494 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"/><meta author="Alex Mikhailov"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="color-scheme" content="light dark"/><link rel="icon" type="image/x-icon" href="/resources/favicon.ico"/><link rel="stylesheet" href="/resources/css/pico.sand.min.css"/><script defer="true" src="https://umami.dokutsu.xyz/script.js" data-website-id="d52d9af1-0c7d-4531-84c6-0b9c2850011f"></script><title>My keyboard journey</title></head><body><main class="container"><header class="header"><nav><ul><li><strong>My keyboard journey</strong></li></ul><ul><li><a href="/index.html">About</a></li><li><a href="/blog.html">Blog</a></li></ul></nav></header><div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgd6fe091">My end-game (at least I hope) keyboard</a>
<ul>
<li><a href="#org1317552">Keebs path</a>
<ul>
<li><a href="#orgc8c1a02">Dactyl manuform</a></li>
<li><a href="#org893bf99">Moonlander</a></li>
<li><a href="#org6dff22d">Custom Corne</a></li>
<li><a href="#org83e3c6d">Dactyl manuform again</a></li>
</ul>
</li>
<li><a href="#org5ed0f03">Hardware</a>
<ul>
<li><a href="#orgf7c48b7">Body</a></li>
<li><a href="#org7a5c99f">Switches and caps</a></li>
<li><a href="#orgf418cc1">Controllers</a></li>
<li><a href="#org66b52e5">Amoeba things</a></li>
</ul>
</li>
<li><a href="#org4438c08">Software</a>
<ul>
<li><a href="#orgb43006a">Plain default - QMK</a></li>
<li><a href="#org20f390f">Make own layout</a></li>
</ul>
</li>
<li><a href="#orgf037b6f">Whats next?</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-orgd6fe091" class="outline-2">
<h2 id="orgd6fe091">My end-game (at least I hope) keyboard</h2>
<div class="outline-text-2" id="text-orgd6fe091">
</div>
<div id="outline-container-org1317552" class="outline-3">
<h3 id="org1317552">Keebs path</h3>
<div class="outline-text-3" id="text-org1317552">
<p>
Sometimes I think about the long journey I've made with keebs. In childhood, I had decent membrane keyboards, most of which had an ergonomic profile like the MS. Not sure if it somehow affected my taste because I started my career with the simplest, cheapest board and typed countless lines of code on such keebs. Then I heard about clickity-clack mechanical keyboards and decided to try one. It was a simple Chinese keeb with a thick metal body, double-shot caps, and Cherry Brown switches. A decent thing to annoy everyone around you. I think this purchase marked my dive into mech keebs
I'm not a geeky aficionado who thinks you can fix everything with a new keyboard, but I built a couple of them. I hope I've finally built the last one for quite some time.
</p>
</div>
<div id="outline-container-orgc8c1a02" class="outline-4">
<h4 id="orgc8c1a02">Dactyl manuform</h4>
<div class="outline-text-4" id="text-orgc8c1a02">
<p>
Almost all of the time, I struggle with my maximalism. So I decided to build the ultimate mechanical ergonomic split keyboard and chose the Dactyl Manuform. Sounds like a crazy idea. Zero experience with QMK, zero experience with hand-wired keyboards, and zero experience in 3D printing.
The last problem was the easiest one; I just asked my friend to print the bodies from PETG polymer, and Bob's your uncle. I got two pieces of rough-layered plastic with all the support structures. God, it was a nightmare to clean these prints from supports and small artifacts, but I was happy.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-manuform-6.jpg" alt="dactyl-manuform-6.jpg" />
</p>
</div>
<p>
I ordered a set of Kailh Brown switches, cheap no-name DSA caps, two controllers, and a pile of diodes. Two evenings later, I built the hardware of my first keeb. It was ugly on both sides, but it was functional.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-manuform-5.jpg" alt="dactyl-manuform-5.jpg" />
</p>
</div>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-manuform-4.jpg" alt="dactyl-manuform-4.jpg" />
</p>
</div>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-manuform-3.jpg" alt="dactyl-manuform-3.jpg" />
</p>
</div>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-manuform-2.jpg" alt="dactyl-manuform-2.jpg" />
</p>
</div>
<p>
QMK wasn't a big issue either. It has decent docs and examples. The most complicated thing was the layout. I tuned it for a couple of months. It was still a mess, but an acceptable mess. That's how I got into keebs.
To be honest, this keeb was ugly, and I decided that I wanted a beautiful factory-built one.
</p>
</div>
</div>
<div id="outline-container-org893bf99" class="outline-4">
<h4 id="org893bf99">Moonlander</h4>
<div class="outline-text-4" id="text-org893bf99">
<p>
Nothing special. Ordered, paid, got it, tried it. Everything worked. Looked good. Happy year of typing. Bored. Annoyed. Too big and chunky. No concave. Quality not the best. Started planning the next one.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/moonlander.jpg" alt="moonlander.jpg" />
</p>
</div>
</div>
</div>
<div id="outline-container-org6dff22d" class="outline-4">
<h4 id="org6dff22d">Custom Corne</h4>
<div class="outline-text-4" id="text-org6dff22d">
<p>
This journey started with discovering the Jian keyboard. It is a niche keeb from the Ru community focused on full support of the whole Russian layout. It was originally created by KGOH. I missed the group buy and decided that I could easily patch a Corne board with two additional keys to mimic the Jian.
Interesting journey. I learned how to use KiCad, and how to export gerbers.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/jirne-5.png" alt="jirne-5.png" />
</p>
</div>
<div class="figure">
<p><img src="../resources/images/keeb/jirne-6.png" alt="jirne-6.png" />
</p>
</div>
<p>
I've ordered PCBs at JLCPCB.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/jirne-8.jpeg" alt="jirne-8.jpeg" />
</p>
</div>
<div class="figure">
<p><img src="../resources/images/keeb/jirne-9.jpeg" alt="jirne-9.jpeg" />
</p>
</div>
<p>
The build came out pretty decent. I was happy. RGB underglow. Low-profile switches. I think at this point, I found a way to make balanced builds.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/jirne-7.jpeg" alt="jirne-7.jpeg" />
</p>
</div>
<p>
Daily driver for ~6 months. Then the world changed, and I decided to leave my home country and settle somewhere else.
</p>
</div>
</div>
<div id="outline-container-org83e3c6d" class="outline-4">
<h4 id="org83e3c6d">Dactyl manuform again</h4>
<div class="outline-text-4" id="text-org83e3c6d">
<p>
Two years late I've settled down in new country and decide that I want to bring back my dactyl manuform experience.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-pitch.jpeg" alt="dactyl-pitch.jpeg" />
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org5ed0f03" class="outline-3">
<h3 id="org5ed0f03">Hardware</h3>
<div class="outline-text-3" id="text-org5ed0f03">
</div>
<div id="outline-container-orgf7c48b7" class="outline-4">
<h4 id="orgf7c48b7">Body</h4>
<div class="outline-text-4" id="text-orgf7c48b7">
<p>
I've choose to use a <a href="https://ryanis.cool/dactyl/#manuform">Ryan's generator</a> and generate body on top of Corne preset with all keys in last row and disabled stagger for the last two columns. <a href="https://ryanis.cool/dactyl/#manuform:CiUIBhAEGgp0aHJlZS1taW5pIgRmdWxsKgNib3gyBm5vcm1pZTgAGgoIARIEbm9uZRgAIhdVAACAQBgAIABdAADgQGUAAEBAQABIADL5AZUDAAAgQJ0DAACAP4ADAIgDAA0AAAAAFQAAAAAdMzMzQCUAANDALQAAUME1AADAQD0AAAAARQAAAABNAADAQFUAAEDAXQAA4EBlMzNhwm0zMy3CdQAAvMF45wKAAc0YiAHIJJUBMzMXwp0BMzNdwqUBZmbKwagBnwuwAZkXuAH8JcUBAABQws0BAADQwdUBAABAwdgBnATgAfMX6AGQHPUBAADowf0BAAAkwoUCAABQwYgCmwSQAvMXmALgIaUCAAAMwq0CAABwwbUCAAAAwLgChAfAApUQyAKEB9UCAABAwd0CAACAweUCAABAQOgChAfwApUQ+AKEBw==">Generator preset</a>
The body was printed by JLC3DP (JLCPCB printing department). I've choose <a href="https://jlc3dp.com/help/article/502-Precimid-1172-Pro">SLS from nylon</a>. Print has minor artifacts; I expected better quality.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-body-2.jpeg" alt="dactyl-body-2.jpeg" />
</p>
</div>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-body-1.jpeg" alt="dactyl-body-1.jpeg" />
</p>
</div>
<p>
Overall, I'm happy with results. I also printed bottom plates and <a href="https://github.com/rianadon/dactyl-configurator/blob/main/src/connectors.md">external holders</a> for controllers and TRRS jack. They have been printed from <a href="https://jlc3dp.com/help/article/282-8001-Photosensitive-Resin">resin with SLA</a>. Looks neat.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-body-3.jpeg" alt="dactyl-body-3.jpeg" />
</p>
</div>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-body-4.jpeg" alt="dactyl-body-4.jpeg" />
</p>
</div>
</div>
</div>
<div id="outline-container-org7a5c99f" class="outline-4">
<h4 id="org7a5c99f">Switches and caps</h4>
<div class="outline-text-4" id="text-org7a5c99f">
<p>
I've chosen Kailh BOX Navy switches. I really like the clickity-clack sound. They have a dedicated clickbar to produce this sound, and the box profile helps with moving down perpendicularly.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/kailh-box.jpg" alt="kailh-box.jpg" />
</p>
</div>
<p>
The caps are inherited from the Moonlander. They are thick, double-shot caps with a nice texture.
</p>
</div>
</div>
<div id="outline-container-orgf418cc1" class="outline-4">
<h4 id="orgf418cc1">Controllers</h4>
<div class="outline-text-4" id="text-orgf418cc1">
<p>
I used a bootleg Pro Micro called Tenstar Robot, based on the ATmega32u4. It's perfectly supported by QMK, pin-to-pin and size-compatible with the Pro Micro.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-all-3.jpg" alt="dactyl-all-3.jpg" />
</p>
</div>
</div>
</div>
<div id="outline-container-org66b52e5" class="outline-4">
<h4 id="org66b52e5">Amoeba things</h4>
<div class="outline-text-4" id="text-org66b52e5">
<p>
During this build, I decided that I did not want to make a big mess of wires and chose Amoeba single-switch PCBs.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/amoeba.jpg" alt="amoeba.jpg" />
</p>
</div>
<p>
They are nice, have diodes on board, and simplify wiring. However, they have these flaps on the sides that do not match the places in the body. So, you need some elbow grease to grind them off.
</p>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-all-1.jpg" alt="dactyl-all-1.jpg" />
</p>
</div>
<div class="figure">
<p><img src="../resources/images/keeb/dactyl-all-5.jpg" alt="dactyl-all-5.jpg" />
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org4438c08" class="outline-3">
<h3 id="org4438c08">Software</h3>
<div class="outline-text-3" id="text-org4438c08">
</div>
<div id="outline-container-orgb43006a" class="outline-4">
<h4 id="orgb43006a">Plain default - QMK</h4>
<div class="outline-text-4" id="text-orgb43006a">
<p>
Prerequiremets:
<a href="https://docs.qmk.fm/cli">QMK CLI</a>
</p>
<p>
Clone QMK, setup QMK CLI.
</p>
<div class="org-src-container">
<pre class="src src-bash">git clone git@github.com:qmk/qmk_firmware.git
<span style="font-weight: bold;">cd</span> qmk_firmware
qmk setup -h ./
</pre>
</div>
<p>
You may want to create a separate keyboard entry in QMK.
</p>
<div class="org-src-container">
<pre class="src src-bash">qmk new-keyboard
</pre>
</div>
</div>
</div>
<div id="outline-container-org20f390f" class="outline-4">
<h4 id="org20f390f">Make own layout</h4>
<div class="outline-text-4" id="text-org20f390f">
<p>
I'll try to go through setting of my personal layout. It is based on <a href="http://www.keyboard-layout-editor.com/#/gists/4b6c2af67148f58ddd6c6b2976c4370f">Jian layout</a>.
</p>
<div class="org-src-container">
<pre class="src src-JSON">"features": {
"rgb_matrix": false,
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgblight": true
},
</pre>
</div>
<p>
Bootloader flashed to Pro Micro and target MC.
</p>
<div class="org-src-container">
<pre class="src src-JSON">"bootloader": "caterina",
"processor": "atmega32u4",
</pre>
</div>
<p>
Pins used to attach keyboard matrix.
</p>
<div class="org-src-container">
<pre class="src src-JSON">"matrix_pins": {
"cols": ["B5", "B4", "E6", "D7", "C6", "D4", "D0"],
"rows": ["B1", "B3", "B2", "B6"]
},
</pre>
</div>
<p>
RGB underglow configuration.
</p>
<div class="org-src-container">
<pre class="src src-JSON">"ws2812": {
"pin": "D3"
},
"rgblight": {
"led_count": 16,
"led_map": [7, 6, 5, 4, 3, 2, 1, 0, 8, 9, 10, 11, 12, 13, 14, 15],
"animations": {
"static_light": true,
"breathing": true,
"rainbow_mood": true,
"snake": false
},
"layers": {
"enabled": true,
"blink": true
},
"default": {
"animation": "rainbow_mood"
},
"split": true,
"split_count": [8, 8]
}
</pre>
</div>
<p>
Need to use another direction, since I use Amoeba pcbs turned 90 degrees.
</p>
<div class="org-src-container">
<pre class="src src-JSON">"diode_direction": "ROW2COL",
</pre>
</div>
<p>
Turn on split feature, assign pin for halves communication, choose what to sync.
</p>
<div class="org-src-container">
<pre class="src src-JSON">"split": {
"enabled": true,
"soft_serial_pin": "D2",
"transport": {
"protocol": "serial",
"sync": {
"layer_state": true,
"indicators": true,
"modifiers": true
}
}
},
</pre>
</div>
<p>
This is the <code>config.h</code> file. Enables keeping handness information in EEPROM of MC. You need to flash each half once with a special commands to write EEPROM data.
<code>qmk flash -bl avrdude-split-right</code> and <code>qmk flash -bl avrdude-split-left</code>
</p>
<div class="org-src-container">
<pre class="src src-C"><span style="font-weight: bold;">#pragma</span> once
<span style="font-weight: bold;">#define</span> <span style="font-weight: bold; font-style: italic;">EE_HANDS</span>
</pre>
</div>
<p>
This is the <code>keymaps/default/keymap.c</code> file.
</p>
<pre class="example">
#include QMK_KEYBOARD_H
#define _B 0
#define _L 1
#define _R 2
#define _S 3
const rgblight_segment_t PROGMEM system_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 4, HSV_RED},
{12, 4, HSV_RED});
const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS({5, 6, HSV_CYAN});
const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS({5, 6, HSV_PURPLE});
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(system_layer,
lower_layer,
raise_layer
);
void keyboard_post_init_user(void) {
// Enable the LED layers
rgblight_layers = my_rgb_layers;
}
layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(1, layer_state_cmp(state, _L));
rgblight_set_layer_state(2, layer_state_cmp(state, _R));
rgblight_set_layer_state(0, layer_state_cmp(state, _S));
return update_tri_layer_state(state, _L, _R, _S);
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
[_B] = LAYOUT_split_4x7_3(
KC_GRAVE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RCTL_T(KC_QUOTE),
KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH, RALT_T(KC_BACKSLASH),
KC_CAPS, KC_NO, KC_NO, KC_LEFT_GUI, LT(_R, KC_TAB), LSFT_T(KC_SPC), LT(_L, KC_ENT), LSFT_T(KC_BSPC), LT(_R, KC_DEL), LGUI_T(KC_RCBR), KC_D, KC_E, KC_F, LT(_L, KC_ESC)
),
[_L] = LAYOUT_split_4x7_3(
KC_UNDS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
LCTL_T(KC_PLUS), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, RCTL_T(KC_KP_MINUS),
LALT_T(KC_PEQL), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RALT,
KC_NO, KC_NO, KC_NO, KC_LEFT_GUI, KC_TRNS, LSFT_T(KC_SPC), KC_TRNS, LSFT_T(KC_BSPC), KC_TRNS, LGUI_T(KC_F12), KC_NO, KC_NO, KC_NO, KC_TRNS
),
[_R] = LAYOUT_split_4x7_3(
KC_NUM, KC_PSLS, KC_7, KC_8, KC_9, KC_PMNS, KC_VOLU, KC_HOME, KC_PSCR, KC_PGUP, KC_SCRL, KC_CAPS,
LCTL_T(KC_PEQL), KC_PAST, KC_4, KC_5, KC_6, KC_PPLS, KC_MUTE, KC_LEFT, KC_UP, KC_RIGHT, KC_INS, RCTL_T(KC_APP),
KC_LALT, KC_0, KC_1, KC_2, KC_3, KC_PDOT, KC_VOLD, KC_END, KC_DOWN, KC_PGDN, KC_PAUS, KC_RALT,
KC_NO, KC_NO, KC_NO, KC_LEFT_GUI, KC_TRNS, LSFT_T(KC_SPC), KC_TRNS, LSFT_T(KC_BSPC), KC_TRNS, KC_LGUI, KC_NO, KC_NO, KC_NO, KC_TRNS
),
[_S] = LAYOUT_split_4x7_3(
DB_TOGG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, DB_TOGG,
QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT,
RGB_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
RGB_RMOD, KC_NO, KC_NO, QK_RBT, KC_TRNS, KC_NO, KC_TRNS, KC_NO, KC_TRNS, QK_RBT, KC_NO, KC_NO, KC_NO, KC_TRNS
),
// clang-format on
};
</pre>
</div>
</div>
</div>
<div id="outline-container-orgf037b6f" class="outline-3">
<h3 id="orgf037b6f">Whats next?</h3>
</div>
</div>
<footer class="footer"><hr/><p>Alex Mikhailov</p><p>Built with: <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a> <a href="https://orgmode.org/">Org Mode</a> <a href="https://picocss.com/">picocss</a></p></footer></main></body></html>

File diff suppressed because one or more lines are too long

4
resources/css/pico.sand.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 932 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 849 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

11
sitemap.html Normal file
View File

@ -0,0 +1,11 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"/><meta author="Alex Mikhailov"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="color-scheme" content="light dark"/><link rel="icon" type="image/x-icon" href="/resources/favicon.ico"/><link rel="stylesheet" href="/resources/css/pico.sand.min.css"/><script defer="true" src="https://umami.dokutsu.xyz/script.js" data-website-id="d52d9af1-0c7d-4531-84c6-0b9c2850011f"></script><title>Sitemap</title></head><body><main class="container"><header class="header"><nav><ul><li><strong>Sitemap</strong></li></ul><ul><li><a href="/index.html">About</a></li><li><a href="/blog.html">Blog</a></li></ul></nav></header><ul class="org-ul">
<li><a href="index.html">Alex Mikhailov</a></li>
<li><a href="blog.html">Alex Mikhailov - Blog</a></li>
<li><a href="cv.html">cv</a></li>
<li>posts
<ul class="org-ul">
<li><a href="posts/keeb.html">My keyboard journey</a></li>
<li><a href="posts/about_blog.html">about<sub>blog</sub></a></li>
</ul></li>
</ul>
<footer class="footer"><hr/><p>Alex Mikhailov</p><p>Built with: <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a> <a href="https://orgmode.org/">Org Mode</a> <a href="https://picocss.com/">picocss</a></p></footer></main></body></html>