Compare commits
89 Commits
363bcf86a8
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
949d476b43
|
|||
|
cfad9719a7
|
|||
|
67d01c2762
|
|||
|
82b7bc795e
|
|||
|
9195aacab2
|
|||
|
a316bda945
|
|||
|
3d03aa97e2
|
|||
|
5af774f08d
|
|||
|
24ce5cd29d
|
|||
|
97f47b282c
|
|||
|
490ed3e088
|
|||
|
98e2a5c004
|
|||
|
c03ad70a97
|
|||
|
8324bcc33e
|
|||
|
ba247f88d4
|
|||
|
7cb266782d
|
|||
|
2040281fcf
|
|||
|
ff98e0048d
|
|||
| c8259e7150 | |||
| 53483a6708 | |||
| 75ba22464d | |||
| 3dcb311aae | |||
| a8445e3e79 | |||
| d487121f3e | |||
| 6af02d9e0e | |||
| 0708a4c522 | |||
| ea9ec55590 | |||
| bf64bc92ef | |||
| 3aade95b85 | |||
| 9851b69c6a | |||
| b2c9d4fdbd | |||
| 55f020ed73 | |||
| 662c601891 | |||
| 849861bae2 | |||
| 002469acde | |||
| eb031f5f9b | |||
| fc0bc34152 | |||
| 672ba3a533 | |||
| 47c74e3e1e | |||
| 3e8684ee6f | |||
| 80dab03b39 | |||
| 581d7b5045 | |||
| 0b845d6f71 | |||
| af4287a66a | |||
| 35404255b0 | |||
| 8a6076c8b2 | |||
| 52184b9fd0 | |||
| 3b1c19c303 | |||
| c7d37a29be | |||
| 70f9dd674f | |||
| 250ae3e277 | |||
| ad5757106a | |||
| c4f5c3fe2d | |||
| 8667a83817 | |||
| 34311d8ee2 | |||
| af830b9f78 | |||
| 5c3985a0cc | |||
| 5a7ce358d4 | |||
| 84764567af | |||
| 67b1f27fcd | |||
| 369e06bb26 | |||
| 7cd1aa8fa5 | |||
| 9227978941 | |||
| c88c5d797d | |||
| 2233f70332 | |||
| e50ef8ff98 | |||
| 296f7e1a83 | |||
| 79545f35d0 | |||
| b08f757b2c | |||
| c7cb57950e | |||
| a2a6f6e588 | |||
| 33bf0a9f6f | |||
| 31132065c0 | |||
| 14a7167a8d | |||
| 894a787b6f | |||
| 4018dabf4d | |||
| 35dd7a375a | |||
| 470c9f2687 | |||
| 4a62540311 | |||
| a0a2213a3e | |||
| 39520dec04 | |||
| 846a001d45 | |||
| 3ad037da97 | |||
| 2fa75b76fe | |||
| 539dd9f960 | |||
| 9e52ae1958 | |||
| d2ea5caefe | |||
| ace54ce5a2 | |||
| 2a6271f51a |
3
.gitignore
vendored
@@ -9,3 +9,6 @@ dist-newstyle
|
||||
_site
|
||||
_cache
|
||||
.cache
|
||||
!images/dailies
|
||||
images/dailies/*
|
||||
!images/dailies/stub
|
||||
|
||||
@@ -6,4 +6,4 @@ Pages by natto
|
||||
* License
|
||||
Software code uses the MIT license.
|
||||
|
||||
All the content under [[/posts/][/posts]] and [[/images/personal/][/images/personal]] uses the CC BY-NC-SA 4.0 license.
|
||||
All the content under [[/posts/][/posts]], [[/documents/][/documents]] and [[/images/personal/][/images/personal]] uses the CC BY-NC-SA 4.0 license.
|
||||
|
||||
@@ -3,11 +3,13 @@ title: About
|
||||
---
|
||||
|
||||
* Alo
|
||||
My name is Amneesh Singh but I also go as natto (or natto1784) online. I was born in the blazing hot summer of 2003 in India, where I also currently reside (just in a different region). I am currently a freshman in college studying engineering. My major is Information Technology. I struggle with basic tasks but I can barely help that.
|
||||
My name is Amneesh Singh but I also go as natto (or natto1784) online. I am 22 and from Delhi, and currently I stay in Bengaluru. I am working as a software engineer right now, particularly with embedded devices. I struggle with basic tasks but I can barely help that.
|
||||
|
||||
I like a lot of things but currently I am into Emacs and functional programming. I also enjoy listening to Trivium. But the thing that I like the most is sleeping, I really do sleep a lot.
|
||||
I like a lot of things, but the thing I like the most is sleeping.
|
||||
|
||||
I dislike particularly nothing
|
||||
I dislike particularly nothing.
|
||||
|
||||
#+HTML: <p>Here is my <a href="/documents/cv.html">CV</a>.
|
||||
|
||||
* Socials
|
||||
- [[https://twitter.com/natto1784][Twitter]]
|
||||
|
||||
121
contact.org
@@ -2,10 +2,117 @@
|
||||
title: Contact
|
||||
---
|
||||
|
||||
- Email :: [[mailto:natto@weirdnatto.in][natto at weirdnatto dot com]]
|
||||
[[mailto:singh.amneesh1784@gmail.com][singh dot amneesh1784 at gmail dot com]]
|
||||
[[mailto:natto1784@protonmail.com][natto1784 at protonmail dot com]]
|
||||
- IRC Nicks :: natto
|
||||
natto17
|
||||
- LinkedIn :: [[https://www.linkedin.com/in/natto1784/][natto1784]]
|
||||
- Discord :: AlpaViraam#0735
|
||||
* Email
|
||||
Fastest way to get to me
|
||||
- [[mailto:natto@weirdnatto.in][natto at weirdnatto dot in]]
|
||||
- [[mailto:me@amneesh.com][me at amneesh dot com]]
|
||||
- [[mailto:amneeshsingh@proton.me][amneeshsingh at proton dot me]]
|
||||
- [[mailto:natto1784@protonmail.com][natto1784 at protonmail dot com]]
|
||||
- [[mailto:singh.amneesh1784@gmail.com][singh dot amneesh1784 at gmail dot com]]
|
||||
|
||||
* IRC Nicks
|
||||
I'll probably be AFK
|
||||
- natto
|
||||
- natto17
|
||||
|
||||
* Public PGP
|
||||
** Amneesh Singh <natto@weirdnatto.in>
|
||||
Fingerprint: 3C4BDBE7BBF45B52C14EA193007257B05FCC86A8
|
||||
|
||||
#+begin_src
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEZOMP7hYJKwYBBAHaRw8BAQdAZSaxRnNv+i6hwWz0EFw4eKjchRhykh+k6uPU
|
||||
B0Egu/a0I0FtbmVlc2ggU2luZ2ggPG5hdHRvQHdlaXJkbmF0dG8uaW4+iJkEExYK
|
||||
AEECGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AWIQQ8S9vnu/RbUsFOoZMA
|
||||
clewX8yGqAUCaLLbKgUJFpvOPAAKCRAAclewX8yGqFidAQDBR2wIZTCbQd2pL0PJ
|
||||
B+P9qJQwQnEv/jPAwhjRPsNT+gD/TbfgzqPem6y6PCBGnfhDJvjhlrfa5C+e11L8
|
||||
6aY2vgO4OARk4w/uEgorBgEEAZdVAQUBAQdAMaBmW7pI0GpK1MbrmzZXn2vh5v2f
|
||||
R88GxfcnXEm1IwcDAQgHiH4EGBYKACYCGwwWIQQ8S9vnu/RbUsFOoZMAclewX8yG
|
||||
qAUCaLLbMgUJFpvORAAKCRAAclewX8yGqL7CAQDMXACHqZF92mzcPFBex8lc2zQy
|
||||
VdSIoafC9Cpw4LbvEwD9GE/zyZzUznGidFdMQLSUvL569uUeJYCqK69OAI6zPgyZ
|
||||
Ag0EYI8sDgEQALlH5aVKX+u3xMPD5jzwQGInvQa7KBeHKZv9t2ry5GJrOmXz9YuB
|
||||
vERN8cmHMbXpas2PzjZT01/bR59etcPr0YwY8IOhPz9cLI/tLQU3jYy6DLSAnwH6
|
||||
PBFIyvMurUNcpoPMv1BZmO3SuLMeH4UvB6O7BK2IbZ6u0tPix8Ivh4t4gj1sI2Ir
|
||||
k7iNSwPLnjqq4rT2TTzn4wHsnYK9mteeympBPb+/ADV4oT0l0G7i692EPY26JeNq
|
||||
CwgVNm5JD3WspNNoMBobedBVB9/48IE47a4RP/ouPp6kLwpzMSrmbJg8x2poCcKn
|
||||
V/3F4E6BFBwU+WMvqXiLewDy0h2Bvyuy/VEqa4LZQp64mGyzGn5VzMaWG0ZMP+d1
|
||||
jg6bObHF2C+rRD1v7MdSfMfKdNQh5ib593G1xs6SMwCo5uB7FhrWYVhOIc2kdTCO
|
||||
3OupJJW/JgPJNa/mGT+09wUfXr+1vemJPmaYALFN/FX3hiwaEFoNNnKFcO3HKePR
|
||||
4DoKHhx6UL7Wssn8JropfKuVznB3ALfYnYL3iGsx1m5uwvzs8pq8AZq9NgJb+Daf
|
||||
GlR3+zJbPhHd0t+B23xDQ9XCCHhU6ork+kDUYrk5MlXzTUO3GpSo7IzzZ7Os05Rp
|
||||
gOR3y024q969S5JuRk4adsCYUk0oLesRFDRxkCxFsnKxG/U7r3TIXt+nABEBAAG0
|
||||
I0FtbmVlc2ggU2luZ2ggPG5hdHRvQHdlaXJkbmF0dG8uaW4+iQJaBBMBCABEAhsD
|
||||
BQkFKv5GBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAFiEEU+wInvIw5HqDuo+B
|
||||
lZSb1LhT9VkFAmP4rGACGQEACgkQlZSb1LhT9VmXaA//dDI9EubCmf9ocdMwRZwr
|
||||
ZHF/vZKs0ztkX3ApMoqlC1e/naI58uQQc+XkDGdq00A28sSCBBQRNjVCnIScWLrR
|
||||
ABuO7a3K92D7RUZR4BwTyOTLldE6mad/5D/EURHhq7nsXtwx56lNdJ681q9BvL1b
|
||||
jLIQtEZ47kw3U42uEmyfKCLdFrdJfbQd3JnY5SSBsI16hjuLGEQx9CpkOOEaodBB
|
||||
CZM6NXI6Ay6J60X0GO5tamcZijZQeB36iOCpdhZGxd4j9wbkavbH2cdD72l7Nlbr
|
||||
bOs7f7aPc/KebM2OynWvGU5Zf1x0T0fR8YsiL4on2tqu8Yk+weYuvWoJGtmd5GGo
|
||||
LWhbowRvA/0yJO06i59yN2QsLolGqr13sEbH/JDcHFMh6B2tJv43ZU2iJN6+3rHp
|
||||
PTUH2BHTn8lUH+cxqSBU281DGCu6ywzXV0EA7v3apdJuENSPzdkWMr9E+c+Nez4b
|
||||
j8ZoA/fCZyqXkNAmGB15UAJlXZsHSj3SYJX1ONatTqI7DPcMb6AmbQbyFyZGGoXa
|
||||
nklin7sKBCBBOgYycDd4Nz9RwjsnJ5EgLGF4Av+NBt/9DQILyBeYVeQ2W26MCGeO
|
||||
UFGA9zybukV6q2kxU8JvSaOtNQwwtspmKEAfpyAL1/5I1hCT3B9GpHluSmrMXKlU
|
||||
usS/swLB7f/1BYC1iQs6oqK0K0FtbmVlc2ggU2luZ2ggPHNpbmdoLmFtbmVlc2gx
|
||||
Nzg0QGdtYWlsLmNvbT6JAlcEEwEIAEEWIQRT7Aie8jDkeoO6j4GVlJvUuFP1WQUC
|
||||
Y/itOAIbAwUJBSr+RgULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRCVlJvU
|
||||
uFP1WeRMD/oCoKGQetOTgy6UH6jsWLw8on5q6H1273y32d0uiMY7hAKuG0/3Vgzl
|
||||
rMYdvAe27vNtXLNh73URbwDgcmOCZX2rrbOayQmxEtPwbAwunPwIjie8rM2X/TFU
|
||||
uz+1aZ/mR4hy4ukZ94IaFxgEjTTO4Uvk/GON+C4nVxN6ckPdTxcHv3fIiHasINng
|
||||
KLmqU4sAju4Eb5nmGH7Id0d6ym9NcWMhOKgQ4RExZogVK5/hOmjhgPnsVN+H+Hl1
|
||||
VtDoLDpC9Yp6n/q/Mtmg/1RNqTiG8ifI21K2d5zAHk6HC5HYgYxBpjqwbRNRgekS
|
||||
8vNW6kMUMHSzIleq8sywawHhBHMw/hR0HjnT0miP2aGzY9OQp1qxg8Fun2OXWPcR
|
||||
CvDK+pupDia10oCM0xRJa5s4FsmDim3KyR7oDtntEFLiqHj8dcJNLirnVYUe4pW/
|
||||
WITikobR9lQDEl6pt1LL2qhUOkCcCnrJvkerQyG4GsOwHB3iEbwlje7TOQGRUGgB
|
||||
aKVNwy7I1ekPnGYAsEuayk4jFagpauak2b2fakmrUdviD69jlXqjN94PRVmKI71q
|
||||
EycZTFKeiMu3V8fsEAGMvQvsV8MdWUmuHDiHusSee05/dHAdnKeBH/bl5LEk/PsD
|
||||
oaVa11djfJ/H0Vdxyu3DJZD9M7J2yqhUtZsi21Xuc6rY8Iy/W23VULkCDQRgjywO
|
||||
ARAA0d/a3LUwpX8FyzG1oGbPOWnKG1qZJwk3l0z/7RR3BpDBaxT/AgJX7l7w1Omm
|
||||
ku2GvO2uNIPjOfQ4X8P5RG5V1bZ237URCRPiPUJwTltBHeC3kcgvpp+tsBalt2WJ
|
||||
++ga1Qj178RgERiLojxh8XaQWgQuZY6h2hYj1CZU/gF9zeYkCrdGZ/7/I+XwVM6g
|
||||
Gb9MfyLuS7aTC7U8AvJ92hs1BKjH8pMgWVz8Gz1HQATKr5rNefuwPlnXw0kuqiWA
|
||||
y3Fbaqh7ou1nJzNgFgGgbW93Zy6b25XLjyDM8sh8Nox7Bwn43EJnW5BtzCFAw2N8
|
||||
08q7oHG+FAsKWyNzg1b/SeWBTgEFQb7o7+qVqaPfPxkObT0L4OS559ArMc+4WSzb
|
||||
fzWBQThiE9kit8gdNGFNy1yj8oFPbHMbm0xZxWICUEtjLzcz2wxh5aqfItGrX55/
|
||||
Y6AA7g0NRK93cuvJn4YGffgck7oEmBIVO3i7NqVGv1fhHQZ/Kq/jUsO6hVTrIZ33
|
||||
7zSBHN3lz5dgro8pgvPT8l42Ttxp0BHinrR6zKI9mUh6mm/xCL3hckmzB1zU3UsA
|
||||
le2odzaLqqYyQI9WzJBYQpurkcpMIQcmIgV31ILPk6lmWbwYWhICfWpgzsjktsde
|
||||
OygdeHo6IYLIWSOO7tvsZE9IJ/w2CKWNMSqejGAHPAxS55sAEQEAAYkCPAQYAQgA
|
||||
JgIbDBYhBFPsCJ7yMOR6g7qPgZWUm9S4U/VZBQJij2oWBQkFwqUIAAoJEJWUm9S4
|
||||
U/VZSYoP/2pn4TxI/GOURuCAU/rsq6oPH+E5F/vgavEcud/MyUA6MtXNAixYcKLg
|
||||
b6kUaGv/UDnjdUkJOpR7r7tBXUQ6rAocjXFdQ0rVzxNCIzdvcPIa+ssXOg4zLPPo
|
||||
B4NInKT3DIZr0cE5ezajOZhjfa8z1DvHLc2m/RYGX6BnbmjK3Nyft7c8tZRsUDZQ
|
||||
8GrejVSjjocbiHt5Ia41FiyaI/oUwc5AsYEjuc/UozZ4/XC9juA7bPx1cwwmpmra
|
||||
7w9SstlVhbzchGrnqv7l5vPja0CKGBI8Od+Ep/SFOeMOgUIdqowtYVHe+ELjxLf5
|
||||
ONzQHW4HBF+lRPBH9RZZJr6FFEoFKg+PEGBI8XBwZwesLXo/Lsuc1XjVV46eK2kI
|
||||
70Znm7t3n7o/KpdmEdV3AEIrlrmp1+QPOM1xJilUqAM2PKImO8s3o/WGt9iLhdah
|
||||
zXmqPO06YLmZlmEtLwz0s6jYhWQzxaEFarZFjTSVeA6yhcdlJg+kRTLE0BIN8L+o
|
||||
x1NqxUV/MvDHZcq+5BglXZArbzYeyd9a317jAXUW129zQal9k8URpPOSG5RPcQUu
|
||||
dJTXJlcIpM5Kwtet7NzAXvXmbB2OpHLOwO6usFTf+0cIJoDWEoZvXV/AqAzYWEvI
|
||||
1vVN6G5YYmjz8Gfxm/Nl3JCd134+IoiZRHeqIATeTVCzERABPMJb
|
||||
=54fJ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
#+end_src
|
||||
|
||||
** Amneesh Singh <me@amneesh.com>
|
||||
Fingerprint: 0C2FDA374F2D48D9F9F0F7788EAAB36980C424C2
|
||||
|
||||
#+begin_src
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mDMEaLML1BYJKwYBBAHaRw8BAQdAzsH8B3rh7b/Y7brho6KmcT0GpBb9tP4a7wbs
|
||||
mB1YXIK0HkFtbmVlc2ggU2luZ2ggPG1lQGFtbmVlc2guY29tPoiWBBMWCgA+FiEE
|
||||
DC/aN08tSNn58Pd4jqqzaYDEJMIFAmizC9QCGwMFCRLMAwAFCwkIBwIGFQoJCAsC
|
||||
BBYCAwECHgECF4AACgkQjqqzaYDEJMLdzAEAgNYmoRrYOusOS7bXptgLDI00VPV9
|
||||
EXzgd0Grqgmho0gBAPsV/ouEemx9d2GYUJ3hJI47KWkrV9dC1r9DpTk8Ak8CuDgE
|
||||
aLML1BIKKwYBBAGXVQEFAQEHQOG0Vs//mYea5BfTPv4MezyMX7e+dSASKY/Cce6x
|
||||
8ORpAwEIB4h+BBgWCgAmFiEEDC/aN08tSNn58Pd4jqqzaYDEJMIFAmizC9QCGwwF
|
||||
CRLMAwAACgkQjqqzaYDEJMJcigEA6Y8hWlVnuFkXCx2z347X38HBQhLFgtldqt5e
|
||||
BMJGWAYA+QHFO8wFQHrgBuvqOBiG878xdE8Td3RjVlCB3OJeMvsE
|
||||
=xA4Z
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
#+end_src
|
||||
|
||||
356
css/default.css
@@ -1,94 +1,202 @@
|
||||
@font-face {
|
||||
font-family: 'Quantico';
|
||||
font-family: "Arvo";
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('../fonts/Quantico-Regular.woff') format('woff');
|
||||
src: url("../fonts/Arvo-Regular.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Oxygen';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('../fonts/Oxygen.woff2') format('woff2');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Monoid Bold';
|
||||
src: url('../fonts/Monoid-Bold.eot');
|
||||
src: url('../fonts/Monoid-Bold-iefix.eot') format('embedded-opentype'),
|
||||
url('../fonts/Monoid-Bold.woff2') format('woff2'),
|
||||
url('../fonts/Monoid-Bold.woff') format('woff'),
|
||||
url('../fonts/Monoid-Bold.ttf') format('truetype');
|
||||
font-family: "Arvo";
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
src: url("../fonts/Arvo-Bold.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Arvo";
|
||||
font-style: italic;
|
||||
src: url("../fonts/Arvo-Italic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Arvo";
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url("../fonts/Arvo-BoldItalic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Lato";
|
||||
font-style: normal;
|
||||
src: url("../fonts/Lato-Regular.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Lato";
|
||||
font-weight: bold;
|
||||
src: url("../fonts/Lato-Bold.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Lato";
|
||||
font-style: italic;
|
||||
src: url("../fonts/Lato-Italic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Lato";
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url("../fonts/Lato-BoldItalic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Quantico";
|
||||
font-style: normal;
|
||||
src: url("../fonts/Quantico-Regular.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Quantico";
|
||||
font-weight: bold;
|
||||
src: url("../fonts/Quantico-Bold.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Quantico";
|
||||
font-style: italic;
|
||||
src: url("../fonts/Quantico-Italic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Quantico";
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
src: url("../fonts/Quantico-BoldItalic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-family {
|
||||
font-family: "Monoid";
|
||||
font-style: normal;
|
||||
src: url("../fonts/Monoid-Regular.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Monoid";
|
||||
font-weight: bold;
|
||||
src: url("../fonts/Monoid-Bold.woff2") format("woff2");
|
||||
}
|
||||
|
||||
@font-family {
|
||||
font-family: "Monoid";
|
||||
font-style: italic;
|
||||
src: url("../fonts/Monoid-Italic.woff2") format("woff2");
|
||||
}
|
||||
|
||||
:root {
|
||||
--yellow: #b58900;
|
||||
--orange: #cb4b16;
|
||||
--red: #dc322f;
|
||||
--magenta: #d33682;
|
||||
--violet: #6c71c4;
|
||||
--blue: #268bd2;
|
||||
--cyan: #2aa198;
|
||||
--green: #859900;
|
||||
--fg0: #93a1a1;
|
||||
--fg1: #839496;
|
||||
--fg2: #657b83;
|
||||
--fg3: #586e75;
|
||||
--fg4: #073642;
|
||||
--fg5: #002b36;
|
||||
--bg0: #fdf6e3 ;
|
||||
--bg1: #eee8d5;
|
||||
--dark: #002b36;
|
||||
--light: #fdf6e3;
|
||||
--rosewater: #dc8a78;
|
||||
--flamingo: #dd7878;
|
||||
--pink: #ea76cb;
|
||||
--mauve: #8839ef;
|
||||
--red: #d20f39;
|
||||
--maroon: #e64553;
|
||||
--peach: #fe640b;
|
||||
--yellow: #df8e1d;
|
||||
--green: #40a02b;
|
||||
--teal: #179299;
|
||||
--sky: #04a5e5;
|
||||
--sapphire: #209fb5;
|
||||
--blue: #1e66f5;
|
||||
--lavender: #7287fd;
|
||||
--text: #4c4f69;
|
||||
--subtext1: #5c5f77;
|
||||
--subtext0: #6c6f85;
|
||||
--overlay2: #7c7f93;
|
||||
--overlay1: #8c8fa1;
|
||||
--overlay0: #9ca0b0;
|
||||
--surface2: #acb0be;
|
||||
--surface1: #bcc0cc;
|
||||
--surface0: #ccd0da;
|
||||
--crust: #dce0e8;
|
||||
--mantle: #e6e9ef;
|
||||
--base: #eff1f5;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--bg0: #073642;
|
||||
--bg1: #002b36;
|
||||
--fg5: #fdf6e3 ;
|
||||
--fg4: #eee8d5;
|
||||
--fg3: #93a1a1;
|
||||
--fg2: #839496;
|
||||
--fg1: #657b83;
|
||||
--fg0: #586e75;
|
||||
}
|
||||
--rosewater: #f5e0dc;
|
||||
--flamingo: #f2cdcd;
|
||||
--pink: #f5c2e7;
|
||||
--mauve: #cba6f7;
|
||||
--red: #f38ba8;
|
||||
--maroon: #eba0ac;
|
||||
--peach: #fab387;
|
||||
--yellow: #f9e2af;
|
||||
--green: #a6e3a1;
|
||||
--teal: #94e2d5;
|
||||
--sky: #89dceb;
|
||||
--sapphire: #74c7ec;
|
||||
--blue: #89b4fa;
|
||||
--lavender: #b4befe;
|
||||
--text: #cdd6f4;
|
||||
--subtext1: #bac2de;
|
||||
--subtext0: #a6adc8;
|
||||
--overlay2: #9399b2;
|
||||
--overlay1: #7f849c;
|
||||
--overlay0: #6c7086;
|
||||
--surface2: #585b70;
|
||||
--surface1: #45475a;
|
||||
--surface0: #313244;
|
||||
--base: #1e1e2e;
|
||||
--mantle: #181825;
|
||||
--crust: #11111b;
|
||||
}
|
||||
}
|
||||
|
||||
html {
|
||||
font-size: 62.5%;
|
||||
background-color: var(--bg0);
|
||||
color: var(--fg2);
|
||||
background-color: var(--base);
|
||||
color: var(--subtext0);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: "Oxygen", sans-serif;
|
||||
font-family: "Lato", sans-serif;
|
||||
font-size: 1.6rem;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
h1, h2, h3 {
|
||||
color: var(--fg3);
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
color: var(--overlay2);
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: "Arvo", serif;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
header {
|
||||
border-bottom: 0.2rem solid var(--magenta);
|
||||
border-bottom: 0.2rem solid var(--pink);
|
||||
margin: 4.2rem 0;
|
||||
}
|
||||
|
||||
main a, footer a {
|
||||
color: var(--blue);
|
||||
main a,
|
||||
footer a {
|
||||
color: var(--sky);
|
||||
}
|
||||
|
||||
main a:hover, footer a:hover{
|
||||
color: var(--light);
|
||||
background: var(--blue);
|
||||
main a:not(.footnote-ref):hover,
|
||||
main .footnote-ref *:hover,
|
||||
footer a:hover {
|
||||
color: var(--base);
|
||||
background: var(--sky);
|
||||
}
|
||||
|
||||
.subdomains li a:hover {
|
||||
#subdomains li a:hover {
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
@@ -97,34 +205,38 @@ a {
|
||||
font-family: "Quantico", monospace;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
a:hover,
|
||||
a *:hover {
|
||||
transition-duration: 0.1s;
|
||||
}
|
||||
|
||||
nav {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
text-align: center;
|
||||
justify-content: center;
|
||||
margin: 0 auto 3rem;
|
||||
}
|
||||
|
||||
nav a {
|
||||
font-size: 1.8rem;
|
||||
font-size: 2rem;
|
||||
font-weight: bold;
|
||||
color: var(--cyan);
|
||||
color: var(--sapphire);
|
||||
text-transform: uppercase;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
nav a:hover {
|
||||
background: var(--cyan);
|
||||
color: var(--dark);
|
||||
background: var(--sapphire);
|
||||
color: var(--base);
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 3rem;
|
||||
padding: 1.2rem 0;
|
||||
border-top: 0.2rem solid var(--magenta);
|
||||
border-top: 0.2rem solid var(--pink);
|
||||
font-size: 1.2rem;
|
||||
color: var(--fg0);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
h1 {
|
||||
@@ -135,41 +247,27 @@ h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.post-preview-item {
|
||||
list-style-type: none;
|
||||
padding: 2rem;
|
||||
border: 0.5rem ridge var(--violet);
|
||||
}
|
||||
|
||||
.post-preview-item:not(:last-child) {
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.post-title {
|
||||
text-align: center;
|
||||
color: var(--fg5) !important;
|
||||
color: var(--subtext1);
|
||||
}
|
||||
|
||||
article .post-header {
|
||||
font-size: 1.4rem;
|
||||
font-style: italic;
|
||||
color: var(--fg0);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.logo {
|
||||
#nattopages {
|
||||
text-align: center;
|
||||
margin: 1rem auto 3rem;
|
||||
}
|
||||
|
||||
.logo a:hover {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
.logo a {
|
||||
#nattopages a {
|
||||
font-weight: bold;
|
||||
font-family: "Monoid Bold", sans-serif;
|
||||
font-family: "Monoid";
|
||||
font-size: 3rem;
|
||||
color: var(--green);
|
||||
color: var(--overlay2);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@@ -186,28 +284,73 @@ article > section {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: 'Cascadia Code', sans-serif;
|
||||
}
|
||||
|
||||
code {
|
||||
border-radius: 0.2rem;
|
||||
background: var(--bg1);
|
||||
.verbatim {
|
||||
background: var(--mantle);
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: "Monoid", monospace;
|
||||
padding: 2rem;
|
||||
border-radius: 1rem;
|
||||
border-left: 0.5rem solid var(--cyan);
|
||||
background: var(--bg1);
|
||||
border-left: 0.5rem solid var(--sapphire);
|
||||
background: var(--mantle);
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.toc {
|
||||
background: var(--bg1);
|
||||
background: var(--mantle);
|
||||
border-radius: 1rem;
|
||||
float: right;
|
||||
max-width: 40%;
|
||||
float: none;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
img,
|
||||
video {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.iframe-parent {
|
||||
max-width: 100%;
|
||||
position: relative;
|
||||
height: 0;
|
||||
padding-bottom: 56.25%;
|
||||
}
|
||||
|
||||
.iframe-parent iframe {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#sticker {
|
||||
bottom: -2em;
|
||||
left: -2em;
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
transform: rotate(45deg);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#sticker label:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#sticker-toggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#sticker-toggle:checked ~ #sticker {
|
||||
bottom: 1em;
|
||||
left: 1em;
|
||||
}
|
||||
|
||||
#sticker-toggle:checked ~ #sticker img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (max-width: 319px) {
|
||||
@@ -216,13 +359,20 @@ pre {
|
||||
margin: 0;
|
||||
padding: 0 5%;
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
nav {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
nav a {
|
||||
display: block;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.toc {
|
||||
padding: 1rem;
|
||||
}
|
||||
@@ -234,31 +384,47 @@ pre {
|
||||
margin: 0;
|
||||
padding: 0 5%;
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
nav a {
|
||||
display: inline;
|
||||
margin: 0 0.6rem;
|
||||
}
|
||||
|
||||
.toc {
|
||||
padding: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 639px) {
|
||||
#sticker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
nav {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
body {
|
||||
width: 60%;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
nav a {
|
||||
margin: 0 0 0 1.2rem;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.toc {
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
@@ -1,31 +1,97 @@
|
||||
/* Solarized theme for Pandoc Code */
|
||||
pre code { color: var(--fg2); }
|
||||
code span.kw { color: var(--green); } /* Keyword */
|
||||
code span.dt { color: var(--yellow); } /* DataType */
|
||||
code span.dv { color: var(--cyan); } /* DecVal */
|
||||
code span.bn { color: var(--cyan); } /* BaseN */
|
||||
code span.fl { color: var(--cyan); } /* Float */
|
||||
code span.ch { color: var(--cyan); } /* Char */
|
||||
code span.st { color: var(--cyan); } /* String */
|
||||
code span.co { color: var(--fg0); font-style: italic; } /* Comment */
|
||||
code span.ot { color: var(--blue); } /* Other */
|
||||
code span.al { color: var(--red); } /* Alert */
|
||||
code span.fu { color: var(--blue); } /* Function */
|
||||
code span.cn { color: var(--cyan); } /* Constant */
|
||||
code span.sc { color: var(--red); } /* SpecialChar */
|
||||
code span.vs { color: var(--fg2); } /* VerbatimString */
|
||||
code span.ss { color: var(--red); } /* SpecialString */
|
||||
code span.im { color: var(--fg2); } /* Import */
|
||||
code span.va { color: var(--blue); } /* Variable */
|
||||
code span.cf { color: var(--green); } /* ControlFlow */
|
||||
code span.op { color: var(--green); } /* Operator */
|
||||
code span.bu { color: var(--fg2); } /* BuiltIn */
|
||||
code span.ex { color: var(--fg2); } /* Extension */
|
||||
code span.pp { color: var(--orange); } /* Preprocessor */
|
||||
code span.at { color: var(--fg2); } /* Attribute */
|
||||
code span.er { color: var(--red); } /* Error */
|
||||
code span.wa { color: var(--orange); font-style: italic; } /* Warning */
|
||||
code span.do { color: var(--fg0); font-style: italic; } /* Documentation */
|
||||
code span.an { color: var(--fg0); font-style: italic; } /* Annotation */
|
||||
code span.cv { color: var(--fg0); font-style: italic; } /* CommentVar */
|
||||
code span.in { color: var(--fg0); font-weight:normal; font-style: normal; } /* Information */
|
||||
pre code {
|
||||
color: var(--subtext0);
|
||||
}
|
||||
code span.kw {
|
||||
color: var(--green);
|
||||
} /* Keyword */
|
||||
code span.dt {
|
||||
color: var(--yellow);
|
||||
} /* DataType */
|
||||
code span.dv {
|
||||
color: var(--sapphire);
|
||||
} /* DecVal */
|
||||
code span.bn {
|
||||
color: var(--sapphire);
|
||||
} /* BaseN */
|
||||
code span.fl {
|
||||
color: var(--sapphire);
|
||||
} /* Float */
|
||||
code span.ch {
|
||||
color: var(--sapphire);
|
||||
} /* Char */
|
||||
code span.st {
|
||||
color: var(--sapphire);
|
||||
} /* String */
|
||||
code span.co {
|
||||
color: var(--text);
|
||||
font-style: italic;
|
||||
} /* Comment */
|
||||
code span.ot {
|
||||
color: var(--sky);
|
||||
} /* Other */
|
||||
code span.al {
|
||||
color: var(--maroon);
|
||||
} /* Alert */
|
||||
code span.fu {
|
||||
color: var(--sky);
|
||||
} /* Function */
|
||||
code span.cn {
|
||||
color: var(--sapphire);
|
||||
} /* Constant */
|
||||
code span.sc {
|
||||
color: var(--maroon);
|
||||
} /* SpecialChar */
|
||||
code span.vs {
|
||||
color: var(--subtext0);
|
||||
} /* VerbatimString */
|
||||
code span.ss {
|
||||
color: var(--maroon);
|
||||
} /* SpecialString */
|
||||
code span.im {
|
||||
color: var(--subtext0);
|
||||
} /* Import */
|
||||
code span.va {
|
||||
color: var(--sky);
|
||||
} /* Variable */
|
||||
code span.cf {
|
||||
color: var(--green);
|
||||
} /* ControlFlow */
|
||||
code span.op {
|
||||
color: var(--green);
|
||||
} /* Operator */
|
||||
code span.bu {
|
||||
color: var(--subtext0);
|
||||
} /* BuiltIn */
|
||||
code span.ex {
|
||||
color: var(--subtext0);
|
||||
} /* Extension */
|
||||
code span.pp {
|
||||
color: var(--peach);
|
||||
} /* Preprocessor */
|
||||
code span.at {
|
||||
color: var(--subtext0);
|
||||
} /* Attribute */
|
||||
code span.er {
|
||||
color: var(--maroon);
|
||||
} /* Error */
|
||||
code span.wa {
|
||||
color: var(--peach);
|
||||
font-style: italic;
|
||||
} /* Warning */
|
||||
code span.do {
|
||||
color: var(--text);
|
||||
font-style: italic;
|
||||
} /* Documentation */
|
||||
code span.an {
|
||||
color: var(--text);
|
||||
font-style: italic;
|
||||
} /* Annotation */
|
||||
code span.cv {
|
||||
color: var(--text);
|
||||
font-style: italic;
|
||||
} /* CommentVar */
|
||||
code span.in {
|
||||
color: var(--text);
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
} /* Information */
|
||||
|
||||
69
documents/cv.org
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
title: Curriculum Vitae
|
||||
---
|
||||
|
||||
#+MACRO: SMALL \mdseries\smaller @@html:<small>@@ /$1/ @@html:</small>@@
|
||||
#+MACRO: RIGHT \hfill @@html:<span style="float:right">@@ $1 @@html:</span>@@
|
||||
#+MACRO: TRULE \titlerule @@html:<hr />@@
|
||||
|
||||
#+HTML: <h1>Curriculum Vitae</h1>Go <a href="/documents/cv.pdf">here</a> for the pdf.<hr>
|
||||
* Amneesh Singh
|
||||
|
||||
{{{TRULE}}}
|
||||
| Email | : | [[mailto:amneeshsingh@proton.me][amneeshsingh at proton dot me]] - [[mailto:me@amneesh.com][me at amneesh dot com]] - [[mailto:natto@weirdnatto.in][natto at weirdnatto dot in]] |
|
||||
| Homepage | : | [[https://weirdnatto.in][weirdnatto.in]] - [[https://amneesh.com][amneesh.com]] |
|
||||
| GitHub | : | [[https://github.com/natto1784/][natto1784]] |
|
||||
|
||||
* Work Experience
|
||||
{{{TRULE}}}
|
||||
** Texas Instruments, Bengaluru
|
||||
/Embedded Software Engineer/ {{{RIGHT(/Aug 2025 - Present/)}}}
|
||||
- Working with Sitara RTOS team
|
||||
- Working on SDHC driver for ZephyrOS
|
||||
|
||||
/Embedded Software Engineer Intern/ {{{RIGHT(/Feb 2025 - July 2025/)}}}
|
||||
- Added AM64x/AM243x Cortex-R and Cortex-M support for ZephyrOS
|
||||
- Wrote ADC, SPI, EPWM, ECAP and NOR Flash device drivers for ZephyrOS
|
||||
|
||||
/Embedded Software Engineer Intern/ {{{RIGHT(/July 2024 - Sept 2024/)}}}
|
||||
- Tested various Xen features on K3 with Linux and ZephyrOS
|
||||
- Wrote Yocto recipes for enabling Xen on K3
|
||||
- Enabled Xen on baremetal and freertos binaries
|
||||
- Wrote sample inter-VM communication programs using shared memory and event channels
|
||||
|
||||
** Cypherock, Gurugram (Hybrid)
|
||||
/Software Engineer Intern/ {{{RIGHT(/June 2023 - Sept 2023/)}}}
|
||||
- Worked on the firmware apps in C
|
||||
- Worked on the Electron side of things in Typescript
|
||||
- [[https://github.com/Cypherock/MPC-TSS/tree/main][Implemented]] the sockets based PoC for an MPC based threshold signing scheme
|
||||
|
||||
** TurboML, Remote
|
||||
/Software Engineer Intern/ {{{RIGHT(/November 2023/)}}}
|
||||
- Worked on the deployment side of things involving docker and nomad
|
||||
|
||||
* Student Programs, Scholarships, Examinations
|
||||
{{{TRULE}}}
|
||||
- *Google Summer of Code 2022* | {{{SMALL(C - GLib - Git)}}}
|
||||
I participated as a contributor in [[https://summerofcode.withgoogle.com/archive/2022][Google Summer of Code 2022]] at [[https://libvirt.org][libvirt]] and got paid a stipend for it by Google. The project involved adding the new introspectable statistics provided by QEMU and adding them under the libvirt statistics API.
|
||||
- NOC: Foundations of Cryptography, IIIT Bangalore, NPTEL {{{RIGHT(/May 2022/)}}}
|
||||
- NOC: Computer Architecture, IIT Delhi, NPTEL - {{{RIGHT(/May 2022/)}}}
|
||||
|
||||
* Education
|
||||
{{{TRULE}}}
|
||||
** B.Tech, Information Technology
|
||||
Maharaja Agrasen Institute of Technology {{{RIGHT(/(2021 - 2025)\, 8.6GPA/)}}}
|
||||
|
||||
* Skills
|
||||
{{{TRULE}}}
|
||||
** Programming Languages
|
||||
- *Proficient*: C/C++, Rust, Python, Javascript
|
||||
- *Experienced*: Lisp, Haskell, PHP, Java, Lua, Go, x86-Assembly, ARM-Assembly
|
||||
|
||||
** Tools
|
||||
- *General*: GNU/Linux, Nix/NixOS, Xen, POSIX shells, TeX, Git, ffmpeg
|
||||
- *DevOps*: Docker, Nomad, Consul, Vault, Terraform, ConcourseCI, GitHub Actions, nginx, OCI
|
||||
- *Embedded*: ZephyrOS, Yocto, Baremetal, FreeRTOS, Device Driver Development
|
||||
|
||||
** Soft Skills
|
||||
- *Languages*: Hindi, Punjabi, English
|
||||
- *Hobbies*: Home server/lab, Writing, Philosophy
|
||||
616
flake.lock
generated
@@ -1,34 +1,624 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"HTTP": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1648632716,
|
||||
"narHash": "sha256-kCmnDeiaMsdhfnNKjxdOzwRh2H6eQb8yWAL+nNabC/Y=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "710fed5a2483f945b14f4a58af2cd3676b42d8c8",
|
||||
"lastModified": 1451647621,
|
||||
"narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=",
|
||||
"owner": "phadej",
|
||||
"repo": "HTTP",
|
||||
"rev": "9bc0996d412fef1787449d841277ef663ad9a915",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"owner": "phadej",
|
||||
"repo": "HTTP",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cabal-32": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1603716527,
|
||||
"narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=",
|
||||
"owner": "haskell",
|
||||
"repo": "cabal",
|
||||
"rev": "48bf10787e27364730dd37a42b603cee8d6af7ee",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "3.2",
|
||||
"repo": "cabal",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cabal-34": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1645834128,
|
||||
"narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=",
|
||||
"owner": "haskell",
|
||||
"repo": "cabal",
|
||||
"rev": "5ff598c67f53f7c4f48e31d722ba37172230c462",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "3.4",
|
||||
"repo": "cabal",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cabal-36": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1669081697,
|
||||
"narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=",
|
||||
"owner": "haskell",
|
||||
"repo": "cabal",
|
||||
"rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "3.6",
|
||||
"repo": "cabal",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cardano-shell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1608537748,
|
||||
"narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "cardano-shell",
|
||||
"rev": "9392c75087cb9a3d453998f4230930dea3a95725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "cardano-shell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1672831974,
|
||||
"narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "flake-compat",
|
||||
"rev": "45f2638735f8cdc40fe302742b79f248d23eb368",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"ref": "hkm/gitlab-fix",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hackage": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1756600676,
|
||||
"narHash": "sha256-jwu+nyaVHxJzgDJMJjZ6ZJ7kR/Tc0Zd+kj0TnbhXzwU=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"rev": "e020d73db65a3077ed216941a682ac8de3722cd2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hackage-for-stackage": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1756600075,
|
||||
"narHash": "sha256-rCDhCCWoNPbNM92s+Cy2ynLsy26GLwaT0cNgttbHbTY=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"rev": "cfc1ade34a20cf02b8da122c7c13dc8402cff0e1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"ref": "for-stackage",
|
||||
"repo": "hackage.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hackage-internal": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1750307553,
|
||||
"narHash": "sha256-iiafNoeLHwlSLQTyvy8nPe2t6g5AV4PPcpMeH/2/DLs=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"rev": "f7867baa8817fab296528f4a4ec39d1c7c4da4f3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "hackage.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1741604408,
|
||||
"narHash": "sha256-tuq3+Ip70yu89GswZ7DSINBpwRprnWnl6xDYnS4GOsc=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "682d6894c94087da5e566771f25311c47e145359",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-1.10": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1680000865,
|
||||
"narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "1.10.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.0": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1687698105,
|
||||
"narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "783905f211ac63edf982dd1889c671653327e441",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.0.0.1",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.10": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1743069404,
|
||||
"narHash": "sha256-q4kDFyJDDeoGqfEtrZRx4iqMVEC2MOzCToWsFY+TOzY=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "2318c61db3a01e03700bd4b05665662929b7fe8b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.10.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.11": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747306193,
|
||||
"narHash": "sha256-/MmtpF8+FyQlwfKHqHK05BdsxC9LHV70d/FiMM7pzBM=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "46ef4523ea4949f47f6d2752476239f1c6d806fe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.11.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1693064058,
|
||||
"narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.2.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1695910642,
|
||||
"narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.3.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.4": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1699862708,
|
||||
"narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.4.0.1",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.5": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1701080174,
|
||||
"narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "27f8c3d3892e38edaef5bea3870161815c4d014c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.5.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.6": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1705325287,
|
||||
"narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.6.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.7": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1708965829,
|
||||
"narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.7.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.8": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1715153580,
|
||||
"narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "dd1be1beb16700de59e0d6801957290bcf956a0a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.8.0.0",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls-2.9": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1719993701,
|
||||
"narHash": "sha256-wy348++MiMm/xwtI9M3vVpqj2qfGgnDcZIGXw8sF1sA=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "90319a7e62ab93ab65a95f8f2bcf537e34dae76a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"ref": "2.9.0.1",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hnix": {
|
||||
"inputs": {
|
||||
"HTTP": "HTTP",
|
||||
"cabal-32": "cabal-32",
|
||||
"cabal-34": "cabal-34",
|
||||
"cabal-36": "cabal-36",
|
||||
"cardano-shell": "cardano-shell",
|
||||
"flake-compat": "flake-compat",
|
||||
"hackage": "hackage",
|
||||
"hackage-for-stackage": "hackage-for-stackage",
|
||||
"hackage-internal": "hackage-internal",
|
||||
"hls": "hls",
|
||||
"hls-1.10": "hls-1.10",
|
||||
"hls-2.0": "hls-2.0",
|
||||
"hls-2.10": "hls-2.10",
|
||||
"hls-2.11": "hls-2.11",
|
||||
"hls-2.2": "hls-2.2",
|
||||
"hls-2.3": "hls-2.3",
|
||||
"hls-2.4": "hls-2.4",
|
||||
"hls-2.5": "hls-2.5",
|
||||
"hls-2.6": "hls-2.6",
|
||||
"hls-2.7": "hls-2.7",
|
||||
"hls-2.8": "hls-2.8",
|
||||
"hls-2.9": "hls-2.9",
|
||||
"hpc-coveralls": "hpc-coveralls",
|
||||
"iserv-proxy": "iserv-proxy",
|
||||
"nixpkgs": [
|
||||
"hnix",
|
||||
"nixpkgs-unstable"
|
||||
],
|
||||
"nixpkgs-2305": "nixpkgs-2305",
|
||||
"nixpkgs-2311": "nixpkgs-2311",
|
||||
"nixpkgs-2405": "nixpkgs-2405",
|
||||
"nixpkgs-2411": "nixpkgs-2411",
|
||||
"nixpkgs-2505": "nixpkgs-2505",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"old-ghc-nix": "old-ghc-nix",
|
||||
"stackage": "stackage"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756601532,
|
||||
"narHash": "sha256-r6p+T14ZlXEDVGml9scgfz7SFq03vOdnOVpDi/muAr8=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "haskell.nix",
|
||||
"rev": "c3380cc02d0e5249b6c1b609833135b95a610af9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "haskell.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hpc-coveralls": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1607498076,
|
||||
"narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=",
|
||||
"owner": "sevanspowell",
|
||||
"repo": "hpc-coveralls",
|
||||
"rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "sevanspowell",
|
||||
"repo": "hpc-coveralls",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"iserv-proxy": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1755243078,
|
||||
"narHash": "sha256-GLbl1YaohKdpzZVJFRdcI1O1oE3F3uBer4lFv3Yy0l8=",
|
||||
"owner": "stable-haskell",
|
||||
"repo": "iserv-proxy",
|
||||
"rev": "150605195cb7183a6fb7bed82f23fedf37c6f52a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "stable-haskell",
|
||||
"ref": "iserv-syms",
|
||||
"repo": "iserv-proxy",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2305": {
|
||||
"locked": {
|
||||
"lastModified": 1705033721,
|
||||
"narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-23.05-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2311": {
|
||||
"locked": {
|
||||
"lastModified": 1719957072,
|
||||
"narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7144d6241f02d171d25fba3edeaf15e0f2592105",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-23.11-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2405": {
|
||||
"locked": {
|
||||
"lastModified": 1735564410,
|
||||
"narHash": "sha256-HB/FA0+1gpSs8+/boEavrGJH+Eq08/R2wWNph1sM1Dg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1e7a8f391f1a490460760065fa0630b5520f9cf8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-24.05-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2411": {
|
||||
"locked": {
|
||||
"lastModified": 1748037224,
|
||||
"narHash": "sha256-92vihpZr6dwEMV6g98M5kHZIttrWahb9iRPBm1atcPk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f09dede81861f3a83f7f06641ead34f02f37597f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-24.11-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2505": {
|
||||
"locked": {
|
||||
"lastModified": 1754477006,
|
||||
"narHash": "sha256-suIgZZHXdb4ca9nN4MIcmdjeN+ZWsTwCtYAG4HExqAo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4896699973299bffae27d0d9828226983544d9e9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-25.05-darwin",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1754393734,
|
||||
"narHash": "sha256-fbnmAwTQkuXHKBlcL5Nq1sMAzd3GFqCOQgEQw6Hy0Ak=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a683adc19ff5228af548c6539dbc3440509bfed3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"old-ghc-nix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1631092763,
|
||||
"narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=",
|
||||
"owner": "angerman",
|
||||
"repo": "old-ghc-nix",
|
||||
"rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "angerman",
|
||||
"ref": "master",
|
||||
"repo": "old-ghc-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"hnix": "hnix",
|
||||
"nixpkgs": [
|
||||
"hnix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"utils": "utils"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"stackage": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1648297722,
|
||||
"narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
|
||||
"lastModified": 1756599261,
|
||||
"narHash": "sha256-q5bRMT/Zr/hzXT1q8yDzPDsthgVIn6KLTa9Uens2oWo=",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "stackage.nix",
|
||||
"rev": "1ae535ce067096a08308b6884e70a634a16ee8d0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "input-output-hk",
|
||||
"repo": "stackage.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
106
flake.nix
@@ -2,46 +2,76 @@
|
||||
description = "My personal website";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = github:nixos/nixpkgs/nixos-unstable;
|
||||
utils.url = github:numtide/flake-utils;
|
||||
nixpkgs.follows = "hnix/nixpkgs";
|
||||
hnix.url = "github:input-output-hk/haskell.nix";
|
||||
utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, utils }:
|
||||
utils.lib.eachDefaultSystem
|
||||
(system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
|
||||
vars = pkgs.lib.mapAttrsToList (n: v: "export ${n}=${v}") {
|
||||
LANG = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
site = pkgs.haskellPackages.callCabal2nix "nattopages" ./src { };
|
||||
nattopages = pkgs.stdenv.mkDerivation {
|
||||
name = "nattopages";
|
||||
src = ./.;
|
||||
phases = "unpackPhase buildPhase";
|
||||
nativeBuildInputs = [ site ];
|
||||
buildPhase = (pkgs.lib.concatStringsSep "\n" vars ) + ''
|
||||
log=$(site build)
|
||||
mkdir -p $out
|
||||
cp -r \_site/* $out
|
||||
'';
|
||||
};
|
||||
in
|
||||
rec {
|
||||
devShell = with pkgs; mkShell {
|
||||
buildInputs = [
|
||||
haskell-language-server
|
||||
(haskellPackages.ghcWithPackages (h: with h; [ hakyll pandoc ]))
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
utils,
|
||||
hnix,
|
||||
}:
|
||||
utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
overlays = [
|
||||
hnix.overlay
|
||||
];
|
||||
|
||||
pkgs = import nixpkgs {
|
||||
inherit system overlays;
|
||||
inherit (hnix) config;
|
||||
};
|
||||
|
||||
nattopages = pkgs.haskell-nix.hix.project {
|
||||
src = ./src;
|
||||
compiler-nix-name = "ghc948";
|
||||
};
|
||||
|
||||
flake = nattopages.flake { };
|
||||
in
|
||||
flake
|
||||
// rec {
|
||||
packages.default = flake.packages."nattopages:exe:site";
|
||||
devShells.default =
|
||||
with pkgs;
|
||||
mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
cabal-install
|
||||
haskellPackages.fourmolu
|
||||
prettier
|
||||
|
||||
(texlive.combine {
|
||||
inherit (texlive)
|
||||
scheme-small
|
||||
fontspec
|
||||
enumitem
|
||||
parskip
|
||||
hyperref
|
||||
standalone
|
||||
relsize
|
||||
titlesec
|
||||
;
|
||||
})
|
||||
|
||||
packages.default
|
||||
];
|
||||
SSHTARGET = "bat@weirdnatto.in:/var/lib/site/";
|
||||
SSHTARGETPORT = 22002;
|
||||
};
|
||||
packages = {
|
||||
inherit nattopages site;
|
||||
};
|
||||
defaultPackage = packages.nattopages;
|
||||
}
|
||||
);
|
||||
formatter = pkgs.nixfmt-tree;
|
||||
}
|
||||
);
|
||||
|
||||
nixConfig = {
|
||||
extra-substituters = [
|
||||
"https://cache.iog.io"
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
BIN
fonts/Arvo-Bold.ttf
Normal file
BIN
fonts/Arvo-Bold.woff2
Normal file
BIN
fonts/Arvo-BoldItalic.ttf
Normal file
BIN
fonts/Arvo-BoldItalic.woff2
Normal file
BIN
fonts/Arvo-Italic.ttf
Normal file
BIN
fonts/Arvo-Italic.woff2
Normal file
BIN
fonts/Arvo-Regular.ttf
Normal file
BIN
fonts/Arvo-Regular.woff2
Normal file
BIN
fonts/Lato-Bold.ttf
Normal file
BIN
fonts/Lato-Bold.woff2
Normal file
BIN
fonts/Lato-BoldItalic.ttf
Normal file
BIN
fonts/Lato-BoldItalic.woff2
Normal file
BIN
fonts/Lato-Italic.ttf
Normal file
BIN
fonts/Lato-Italic.woff2
Normal file
BIN
fonts/Lato-Regular.ttf
Normal file
BIN
fonts/Lato-Regular.woff2
Normal file
BIN
fonts/Monoid-Italic.woff2
Normal file
BIN
fonts/Monoid-Regular.woff2
Normal file
BIN
fonts/Quantico-Bold.woff2
Normal file
BIN
fonts/Quantico-BoldItalic.woff2
Normal file
BIN
fonts/Quantico-Italic.woff2
Normal file
BIN
fonts/Quantico-Regular.woff2
Normal file
1
images/icons/ci.svg
Symbolic link
@@ -0,0 +1 @@
|
||||
concourse.svg
|
||||
1
images/icons/concourse.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="34.76 24.16 64 64" width="64" height="64"><path d="M34.778 83.756V28.672c.902-2.924 3.104-4.512 6.606-4.512l51.5.036c3.538 0 5.848 2.3 5.848 5.812v52.305c0 .433 0 .902-.072 1.336-.47 2.455-2.094 3.826-4.368 4.512H39.218c-2.3-.614-3.754-2.094-4.44-4.404zm28.156-42.883c-2.166.325-4.08 1.2-5.848 2.418-3.538 2.455-5.703 5.848-6.714 10.035-.217.866-1.047 1.336-2.058 1.12-.866-.18-.47-.94-.578-1.48 0-.108 0-.253.036-.36.866-7.22 4.548-12.5 10.973-15.883C60.803 35.64 63.04 35 65.35 34.665c-.3-.072-.614-.072-.902-.072-5.234.433-9.746 2.418-13.464 6.1-3.8 3.718-5.92 8.302-6.425 13.6-.072.686-.325 1.083-1 1.263-.866.217-1.697.505-2.563.794-.83.3-1.66.65-2.238 1.372-.686.866-.578 1.733.325 2.382.722.54 1.588.794 2.455.94 3.43.578 6.895 1.083 10.432.722 3.393-.325 6.642-1.047 9.818-2.274.794-.325 1.12-.758.94-1.624-.108-.47-.108-1-.072-1.516.036-.686-.3-1-.94-1.155-2.382-.578-4.8-.975-7.292-1.083-1.372-.036-1.552-.217-1.3-1.588.794-4.187 2.96-7.472 6.534-9.854 1.083-.686 2.202-1.2 3.285-1.805zm21.84 19.384c.144-.578.325-1.12.47-1.697.072-.253.144-.505.18-.794.758-5.703-.866-10.576-4.98-14.62-1.155-1.12-1.155-1.227-.433-2.635.217-.433.47-.578.902-.325l.758.433c6.606 4.657 9.313 11.082 8.627 19.023-.108 1.408-.614 2.743-.83 4.15.217-.325.397-.686.54-1 3.393-8.988.758-18.88-6.858-24.726-1.697-1.3-1.95-2.455-1.336-4.223.36-1.047.47-2.13.217-3.25-.3-1.227-1.2-1.697-2.346-1.2a4.52 4.52 0 0 0-1.66 1.299c-2.3 2.78-4.476 5.667-5.956 8.988-1.444 3.285-2.418 6.678-2.852 10.215-.072.65.108.975.758 1.155.578.18 1.12.397 1.588.758.614.433.975.3 1.444-.217 1.733-1.877 3.32-3.862 4.584-6.1.36-.65.686-.758 1.3-.3 3.032 2.166 4.837 5.126 5.667 8.735.433 2.13.47 4.223.217 6.317zm-33.14 11.768c.036.072.072.144.144.217 5.992 8.23 17.327 10.793 26.35 6.57.902-.433 1.516-.433 2.274.325.975.94 1.95 1.913 3.213 2.5 1.552.686 2.527.072 2.527-1.588 0-.578 0-1.12-.18-1.66-2.346-7.04-6.28-12.96-12.273-17.4-.433-.325-.794-.397-1.263 0-.433.397-.94.758-1.444 1-.758.36-.794.866-.578 1.588.758 2.418 1.733 4.73 2.96 6.93.578 1.083.578 1.2-.578 1.66-4.548 1.805-8.916 1.372-13.14-.975-.83-.47-1.552-1-2.346-1.552.578.722 1.2 1.372 1.913 1.95 4.512 3.393 9.494 4.404 14.908 2.78 1.2-.36 1.77-.072 2.455.83.47.614.36.866-.253 1.2-6.678 3.393-13.248 3.177-19.745-.505-1.877-1.083-3.393-2.5-4.945-3.862zm20.323-15.233c.036-2.058-1.588-3.718-3.6-3.718-1.985-.036-3.718 1.66-3.718 3.646a3.67 3.67 0 0 0 3.646 3.718c2.02.036 3.682-1.588 3.682-3.646z" fill="#38c4e3"/></svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
1
images/icons/consul.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 51.1 49.400000000000006" xmlns="http://www.w3.org/2000/svg" width="2500" height="2417"><path clip-rule="evenodd" d="M24.6 30c-2.9 0-5.3-2.4-5.3-5.3s2.4-5.3 5.3-5.3 5.3 2.4 5.3 5.3c.1 2.9-2.3 5.3-5.3 5.3" fill="#8c1c59" fill-rule="evenodd"/><g fill="#c62a71"><path clip-rule="evenodd" d="M35 27.1c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5m9 2.3c-.3 1.3-1.7 2.1-3 1.8s-2.1-1.7-1.8-3 1.7-2.1 3-1.8 2.1 1.5 1.8 2.8zm-1.8-6.3c-1.3.3-2.7-.5-2.9-1.8-.3-1.3.5-2.7 1.8-2.9 1.3-.3 2.7.5 2.9 1.8 0 .3.1.7 0 1 0 .9-.7 1.7-1.8 1.9m8.8 6.1c-.2 1.4-1.5 2.2-2.9 2s-2.2-1.5-2-2.9 1.5-2.2 2.9-2c1.3.2 2.1 1.4 2.1 2.6-.1.1-.1.2-.1.3M49 23c-1.4.2-2.6-.7-2.8-2-.2-1.4.7-2.6 2-2.8 1.4-.2 2.6.7 2.8 2v.7c-.1 1-.9 2-2 2.1m-1.7 14.7c-.7 1.2-2.1 1.6-3.4.9-1.2-.7-1.6-2.1-.9-3.4.7-1.2 2.1-1.6 3.4-.9.8.5 1.3 1.4 1.2 2.3 0 .5-.1.8-.3 1.1m-.9-22.6c-1.2.7-2.7.2-3.4-.9-.7-1.2-.2-2.7.9-3.4 1.2-.7 2.7-.2 3.4.9.3.5.4.9.3 1.4 0 .9-.5 1.6-1.2 2" fill-rule="evenodd"/><path d="M24.7 49.4c-6.6 0-12.8-2.6-17.5-7.2S0 31.3 0 24.7 2.6 11.9 7.2 7.2 18.1 0 24.7 0c5.5 0 10.7 1.8 15 5.1l-3 3.9c-3.5-2.6-7.6-4-12-4-5.3 0-10.2 2.1-14 5.8S5 19.4 5 24.7s2.1 10.2 5.8 14c3.7 3.7 8.7 5.7 14 5.7 4.4 0 8.5-1.4 12-4.1l3 3.9c-4.4 3.5-9.6 5.2-15.1 5.2z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
images/icons/f.svg
Symbolic link
@@ -0,0 +1 @@
|
||||
trollface.svg
|
||||
1
images/icons/git.svg
Symbolic link
@@ -0,0 +1 @@
|
||||
gitea.svg
|
||||
12
images/icons/gitea.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg version="1.1" id="main_outline" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 640 640" style="enable-background:new 0 0 640 640;" xml:space="preserve">
|
||||
<g>
|
||||
<path id="teabag" style="fill:#FFFFFF" d="M395.9,484.2l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5,21.2-17.9,33.8-11.8 c17.2,8.3,27.1,13,27.1,13l-0.1-109.2l16.7-0.1l0.1,117.1c0,0,57.4,24.2,83.1,40.1c3.7,2.3,10.2,6.8,12.9,14.4 c2.1,6.1,2,13.1-1,19.3l-61,126.9C423.6,484.9,408.4,490.3,395.9,484.2z"/>
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#609926" d="M622.7,149.8c-4.1-4.1-9.6-4-9.6-4s-117.2,6.6-177.9,8c-13.3,0.3-26.5,0.6-39.6,0.7c0,39.1,0,78.2,0,117.2 c-5.5-2.6-11.1-5.3-16.6-7.9c0-36.4-0.1-109.2-0.1-109.2c-29,0.4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5 c-9.8-0.6-22.5-2.1-39,1.5c-8.7,1.8-33.5,7.4-53.8,26.9C-4.9,212.4,6.6,276.2,8,285.8c1.7,11.7,6.9,44.2,31.7,72.5 c45.8,56.1,144.4,54.8,144.4,54.8s12.1,28.9,30.6,55.5c25,33.1,50.7,58.9,75.7,62c63,0,188.9-0.1,188.9-0.1s12,0.1,28.3-10.3 c14-8.5,26.5-23.4,26.5-23.4s12.9-13.8,30.9-45.3c5.5-9.7,10.1-19.1,14.1-28c0,0,55.2-117.1,55.2-231.1 C633.2,157.9,624.7,151.8,622.7,149.8z M125.6,353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6,321.8,60,295.4 c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5,38.5-30c13.8-3.7,31-3.1,31-3.1s7.1,59.4,15.7,94.2c7.2,29.2,24.8,77.7,24.8,77.7 S142.5,359.9,125.6,353.9z M425.9,461.5c0,0-6.1,14.5-19.6,15.4c-5.8,0.4-10.3-1.2-10.3-1.2s-0.3-0.1-5.3-2.1l-112.9-55 c0,0-10.9-5.7-12.8-15.6c-2.2-8.1,2.7-18.1,2.7-18.1L322,273c0,0,4.8-9.7,12.2-13c0.6-0.3,2.3-1,4.5-1.5c8.1-2.1,18,2.8,18,2.8 l110.7,53.7c0,0,12.6,5.7,15.3,16.2c1.9,7.4-0.5,14-1.8,17.2C474.6,363.8,425.9,461.5,425.9,461.5z"/>
|
||||
<path style="fill:#609926" d="M326.8,380.1c-8.2,0.1-15.4,5.8-17.3,13.8c-1.9,8,2,16.3,9.1,20c7.7,4,17.5,1.8,22.7-5.4 c5.1-7.1,4.3-16.9-1.8-23.1l24-49.1c1.5,0.1,3.7,0.2,6.2-0.5c4.1-0.9,7.1-3.6,7.1-3.6c4.2,1.8,8.6,3.8,13.2,6.1 c4.8,2.4,9.3,4.9,13.4,7.3c0.9,0.5,1.8,1.1,2.8,1.9c1.6,1.3,3.4,3.1,4.7,5.5c1.9,5.5-1.9,14.9-1.9,14.9 c-2.3,7.6-18.4,40.6-18.4,40.6c-8.1-0.2-15.3,5-17.7,12.5c-2.6,8.1,1.1,17.3,8.9,21.3c7.8,4,17.4,1.7,22.5-5.3 c5-6.8,4.6-16.3-1.1-22.6c1.9-3.7,3.7-7.4,5.6-11.3c5-10.4,13.5-30.4,13.5-30.4c0.9-1.7,5.7-10.3,2.7-21.3 c-2.5-11.4-12.6-16.7-12.6-16.7c-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3c4.7-9.7,9.4-19.3,14.1-29 c-4.1-2-8.1-4-12.2-6.1c-4.8,9.8-9.7,19.7-14.5,29.5c-6.7-0.1-12.9,3.5-16.1,9.4c-3.4,6.3-2.7,14.1,1.9,19.8 C343.2,346.5,335,363.3,326.8,380.1z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
1
images/icons/nomad.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg width="2133" height="2500" viewBox="0 0 256 300" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M0 74.435v148.174l128.696 76.521 2.987-4.757-2.987-143.808L4.425 74.523 0 74.435" fill="#449B82"/><path d="M256 73.739V224l-127.304 75.13V150.565l122.641-76.713 4.663-.113" fill="#9BDB9C"/><path d="M128 0l128 73.739-127.304 79.305L0 74.435 128 0" fill="#56CDAD"/><path d="M192.293 59.091l-43.292 25.341v51.148l-43.376-25.757-41.709 24.415v106.906l43.292-26.549V157.05l46.239 29.19 38.846-23.822V59.091" fill="#FFF"/></g></svg>
|
||||
|
After Width: | Height: | Size: 559 B |
1
images/icons/radio.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 122.88 116.12" style="enable-background:new 0 0 122.88 116.12" xml:space="preserve"><style type="text/css">.st0{fill-rule:evenodd;clip-rule:evenodd;}</style><g><path class="st0" d="M84.61,51.83c13.81,0,25.01,11.2,25.01,25.01s-11.2,25.01-25.01,25.01s-25.01-11.2-25.01-25.01 S70.8,51.83,84.61,51.83L84.61,51.83z M12.53,36.69c0.28-0.27,0.63-0.49,1.02-0.64L42.4,25.29c0.63-0.23,1.29-0.24,1.89-0.06 c0.19-0.15,0.4-0.28,0.64-0.36l18.39-6.9c0.41-0.15,0.84-0.18,1.24-0.1c0.03-0.02,0.07-0.03,0.1-0.04l18.85-7.36 c0.53-0.21,1.1-0.17,1.57,0.06c0.06-0.04,0.13-0.07,0.21-0.1l19-7.32c0.08-0.03,0.16-0.05,0.24-0.07c0.11-1.7,1.52-3.04,3.24-3.04 c1.8,0,3.25,1.46,3.25,3.25s-1.46,3.25-3.25,3.25c-0.94,0-1.78-0.4-2.37-1.03c-0.06,0.03-0.12,0.06-0.18,0.08l-19,7.32 c-0.04,0.02-0.09,0.03-0.13,0.04c-0.18,0.54-0.58,1-1.15,1.22l-18.85,7.36c-0.07,0.03-0.13,0.05-0.2,0.07 c-0.25,0.31-0.58,0.56-0.98,0.71l-18.39,6.9c-0.14,0.05-0.28,0.09-0.42,0.11c-0.31,0.69-0.89,1.25-1.65,1.53l-15.78,5.89h84.21 c2.75,0,5.25,1.12,7.06,2.93c1.81,1.81,2.93,4.31,2.93,7.06v59.44c0,2.75-1.12,5.25-2.93,7.06c-1.81,1.81-4.31,2.93-7.06,2.93H9.99 c-2.75,0-5.25-1.12-7.06-2.93C1.12,111.38,0,108.88,0,106.13V46.69c0-2.75,1.12-5.25,2.93-7.06c1.81-1.81,4.31-2.93,7.06-2.93 H12.53L12.53,36.69z M13.79,88.93c-1.45,0-2.63-1.18-2.63-2.63s1.18-2.63,2.63-2.63h32.28c1.45,0,2.63,1.18,2.63,2.63 s-1.18,2.63-2.63,2.63H13.79L13.79,88.93z M13.79,98.89c-1.45,0-2.63-1.18-2.63-2.63c0-1.45,1.18-2.63,2.63-2.63h39.15 c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63H13.79L13.79,98.89z M13.79,59.06c-1.45,0-2.63-1.18-2.63-2.63 c0-1.45,1.18-2.63,2.63-2.63h38.03c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63H13.79L13.79,59.06z M13.79,69.02 c-1.45,0-2.63-1.18-2.63-2.63c0-1.45,1.18-2.63,2.63-2.63h32.28c1.45,0,2.63,1.18,2.63,2.63c0,1.45-1.18,2.63-2.63,2.63H13.79 L13.79,69.02z M13.79,78.98c-1.45,0-2.63-1.18-2.63-2.63c0-1.45,1.18-2.63,2.63-2.63h30.84c1.45,0,2.63,1.18,2.63,2.63 c0,1.45-1.18,2.63-2.63,2.63H13.79L13.79,78.98z M112.89,42.94H9.99c-1.03,0-1.96,0.42-2.65,1.1c-0.68,0.68-1.1,1.62-1.1,2.65 v59.44c0,1.03,0.42,1.96,1.1,2.65c0.68,0.68,1.62,1.1,2.65,1.1h102.9c1.03,0,1.96-0.42,2.65-1.1c0.68-0.68,1.1-1.62,1.1-2.65V46.69 c0-1.03-0.42-1.96-1.1-2.65C114.85,43.36,113.92,42.94,112.89,42.94L112.89,42.94z M84.61,59.05c9.82,0,17.79,7.96,17.79,17.79 c0,9.82-7.96,17.79-17.79,17.79s-17.79-7.96-17.79-17.79C66.83,67.02,74.79,59.05,84.61,59.05L84.61,59.05z M84.61,71.61 c2.89,0,5.23,2.34,5.23,5.23c0,2.89-2.34,5.23-5.23,5.23s-5.23-2.34-5.23-5.23C79.38,73.95,81.72,71.61,84.61,71.61L84.61,71.61z" fill="white"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
50
images/icons/trollface.svg
Normal file
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="469pt" height="428pt" viewBox="0 0 469 428" version="1.1">
|
||||
<g id="surface1">
|
||||
<rect x="0" y="0" width="469" height="428" style="fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;stroke:none;"/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 170.859375 51.269531 C 224.03125 44.988281 277.691406 47.199219 331.011719 49.96875 C 338.058594 49.761719 345.089844 48.421875 352.140625 49.191406 C 358.179688 49.898438 363.589844 53.03125 368.429688 56.539063 C 378.179688 63.738281 386.359375 72.878906 393.308594 82.761719 C 401.53125 94.621094 403.320313 109.660156 411.609375 121.5 C 422.550781 136.730469 440 145.871094 450.398438 161.558594 C 457.421875 171.738281 458.609375 184.789063 457.28125 196.769531 C 456.128906 207.53125 450.488281 217.269531 443.210938 225.078125 C 433.488281 235.398438 422.328125 244.679688 415.070313 257.039063 C 410.289063 265.171875 408.449219 274.628906 403.761719 282.789063 C 392.601563 299.480469 376.308594 311.949219 359.300781 322.238281 C 334.699219 337.019531 307.929688 347.589844 282.238281 360.230469 C 270.171875 366.070313 258.578125 372.890625 246.21875 378.121094 C 234.808594 383.082031 222.320313 384.371094 210.191406 386.570313 C 199.640625 388.179688 189.339844 391.039063 178.929688 393.339844 C 153.398438 398.871094 127.109375 403.167969 100.941406 400.390625 C 83.058594 398.46875 64.878906 392.019531 52.320313 378.679688 C 47.441406 373.179688 42.890625 367.070313 40.339844 360.128906 C 38.859375 339.050781 41.730469 318.019531 44.480469 297.171875 C 47.082031 277.101563 48.648438 256.5 44.308594 236.550781 C 40.101563 220.75 30.121094 207.308594 25.101563 191.808594 C 21.167969 180.078125 20.289063 166.859375 24.910156 155.199219 C 32.390625 141.460938 47.261719 133.460938 54.109375 119.269531 C 58.011719 111.71875 58.78125 103.070313 58.511719 94.710938 C 70.75 82.46875 86.070313 73.730469 102.089844 67.429688 C 124.101563 58.769531 147.46875 54.179688 170.859375 51.269531 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 147.640625 65.691406 C 200.710938 57.988281 254.480469 54.679688 308.078125 56.609375 C 320.71875 57.429688 333.441406 56.628906 346.039063 58.179688 C 356.699219 59.609375 366.320313 65.691406 373.230469 73.78125 C 389.621094 92.839844 394.691406 118.96875 411.429688 137.789063 C 404.238281 138.550781 397.058594 136.511719 389.898438 137.480469 C 387.75 137.671875 385.851563 138.761719 384.128906 139.980469 C 395.019531 138.609375 406.410156 139.011719 416.609375 143.449219 C 430.558594 149.171875 441.96875 161.199219 446.210938 175.75 C 449.480469 187.089844 447.710938 199.628906 441.859375 209.828125 C 435 221.851563 423.78125 230.96875 411.320313 236.710938 C 411.898438 236.980469 412.488281 237.238281 413.078125 237.511719 C 415.339844 236.660156 417.351563 235.320313 419.359375 234.011719 C 419.640625 234.589844 420.199219 235.761719 420.480469 236.339844 C 417.269531 238.441406 413.761719 240.269531 411.390625 243.390625 C 405.789063 250.21875 404.039063 259.101563 400.871094 267.128906 C 397.488281 276.449219 391.011719 284.199219 384.128906 291.160156 C 367.550781 307.199219 347.128906 318.410156 326.710938 328.761719 C 312.109375 335.898438 297.269531 342.539063 282.601563 349.539063 C 269.75 355.53125 257.769531 363.179688 244.878906 369.082031 C 242.019531 370.261719 239.171875 371.679688 236.058594 372 C 231.660156 372.039063 227.308594 370.769531 222.898438 371.28125 C 215.179688 372.101563 208 375.238281 200.730469 377.738281 C 185.671875 383.441406 169.738281 386.261719 153.871094 388.558594 C 136.011719 390.929688 117.851563 392 99.929688 389.699219 C 85.289063 387.71875 69.980469 383.488281 59.21875 372.769531 C 53.488281 366.660156 48.730469 358.589844 49.5 349.917969 C 49.308594 315.089844 58.628906 280.738281 55.769531 245.851563 C 54.570313 235.191406 52.839844 224.171875 47.191406 214.851563 C 42.738281 207.011719 36.378906 200.019531 34.230469 191.070313 C 32.160156 180.429688 31.988281 168.871094 36.851563 158.929688 C 42.949219 146.03125 56.878906 138.980469 62.648438 125.859375 C 65.769531 119.050781 66.03125 111.421875 65.589844 104.078125 C 80.710938 86.421875 101.851563 73.539063 124.808594 69.300781 C 140.480469 66.261719 156.339844 69.570313 172.058594 70.339844 C 203.648438 72.390625 234.441406 61.539063 266.019531 63.058594 C 280.550781 64.019531 294.738281 68.210938 307.878906 74.410156 C 322.378906 81.21875 335.460938 90.570313 348.980469 99.070313 C 353.308594 101.648438 357.558594 104.46875 362.28125 106.320313 C 348.078125 95.109375 333.488281 84.148438 317.539063 75.511719 C 300.789063 66.519531 282.070313 60.988281 263.019531 60.410156 C 231.449219 59.410156 200.550781 68.558594 168.980469 68 C 161.828125 67.769531 154.609375 67.371094 147.640625 65.691406 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 225.140625 75.628906 C 250.378906 72.121094 276.660156 73.5 300.789063 82.148438 C 315.53125 87.410156 329.308594 95.5 340.789063 106.171875 C 344.511719 109.851563 348.449219 113.429688 351.25 117.898438 C 331.488281 100.148438 307.960938 85.941406 281.828125 80.109375 C 265.988281 76.410156 249.550781 75.730469 233.371094 77.199219 C 220.75 78.550781 208.769531 83.550781 196.019531 84.03125 C 172.621094 85.578125 149.210938 83.011719 126 80.171875 C 123.71875 79.949219 121.449219 79.511719 119.160156 79.601563 C 115.140625 81.621094 112.078125 85.308594 107.53125 86.308594 C 110.550781 81.238281 115.96875 77.921875 121.789063 77.230469 C 133.390625 75.871094 144.640625 79.78125 156.058594 81.019531 C 179.230469 83.078125 202.289063 79.03125 225.140625 75.628906 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 242.058594 88.96875 C 265.390625 86.53125 289.769531 88.238281 311.488281 97.628906 C 321.558594 102.210938 331.960938 109.46875 334.828125 120.789063 C 327.558594 107.859375 313.71875 100.421875 299.949219 96.308594 C 278.910156 90.128906 256.640625 89.261719 234.878906 90.339844 C 237.191406 89.539063 239.621094 89.148438 242.058594 88.96875 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 120.898438 97.121094 C 136.539063 92.019531 153.558594 91.789063 169.578125 95.230469 C 172.519531 95.871094 175.789063 95.890625 178.339844 97.671875 C 180.050781 98.589844 178.5 100.441406 178.148438 101.671875 C 163.871094 96 148.078125 94.050781 132.890625 96.449219 C 123.71875 98.101563 114.320313 101.941406 108.53125 109.558594 C 106.019531 112.730469 104.820313 116.609375 103.25 120.269531 C 103.550781 114.589844 105.660156 109.25 108.199219 104.238281 C 111.539063 100.609375 116.339844 98.75 120.898438 97.121094 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 240.300781 94.121094 C 241.871094 92.589844 243.648438 93.929688 245.230469 94.640625 C 240.019531 97.578125 236.121094 102.488281 234.109375 108.109375 C 233.820313 111.460938 234.328125 114.910156 233.28125 118.179688 C 230.949219 113.988281 231.371094 108.980469 231.769531 104.390625 C 235.078125 101.351563 236.859375 97.011719 240.300781 94.121094 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 166.761719 106.96875 C 168.019531 106.609375 169.28125 106.28125 170.558594 105.960938 C 171.878906 108.691406 173.429688 111.320313 175.539063 113.53125 C 175.449219 120.140625 175.628906 126.75 175.449219 133.359375 C 170.148438 128.601563 175.160156 121.058594 173.289063 115.171875 C 171.261719 112.308594 168.308594 110.179688 166.761719 106.96875 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 265.148438 119.160156 C 281.539063 116.191406 299.148438 116.519531 314.609375 123.308594 C 324.46875 127.570313 332.96875 135.988281 335.199219 146.761719 C 332.558594 148.839844 329.53125 150.699219 326.070313 150.78125 C 318.148438 151.140625 310.820313 147.300781 302.988281 146.769531 C 281.289063 145.019531 259.851563 151.851563 241.011719 162.191406 C 236.210938 157.300781 228.089844 155.570313 225.710938 148.550781 C 223.878906 144.160156 227.25 140.171875 229.789063 136.910156 C 238.769531 126.71875 252.171875 121.851563 265.148438 119.160156 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 245.558594 136.609375 C 253.710938 131.609375 263.101563 129.289063 272.121094 126.398438 C 270.980469 131.238281 274.101563 135.339844 274.78125 139.949219 C 268.578125 139.238281 262.410156 140.921875 257.109375 144.101563 C 251.398438 147.339844 245 151.898438 238.128906 149.179688 C 237.460938 143.738281 241.160156 139.21875 245.558594 136.609375 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 122.128906 129.359375 C 134.390625 126.328125 147.378906 128.429688 159.140625 132.53125 C 167.070313 135.558594 175.351563 139.488281 180.089844 146.878906 C 185.050781 145.441406 190.660156 143.28125 195.539063 146.199219 C 195.441406 148.148438 195.511719 150.460938 193.878906 151.839844 C 189.988281 155.699219 183.488281 155.179688 180 159.648438 C 179.988281 166.648438 180.03125 173.648438 179.96875 180.648438 C 173.910156 187.390625 162.46875 188.710938 159.601563 198.261719 C 164.449219 206.660156 170.441406 215.699219 180.121094 218.898438 C 184.019531 219.199219 186.53125 215.609375 189.828125 214.160156 C 191.03125 214.871094 192.230469 215.601563 193.421875 216.339844 C 191.53125 221.011719 189.210938 226.039063 184.648438 228.640625 C 181.660156 230.28125 178.128906 229.210938 175.421875 227.539063 C 165.96875 221.621094 160.480469 211.238281 151.128906 205.199219 C 149.25 207.25 147.140625 210.050781 144.03125 209.761719 C 142.460938 207.699219 141.839844 205.121094 140.710938 202.820313 C 131.929688 205 124.769531 213.71875 115.128906 212.140625 C 136.390625 203.640625 153.039063 187.539063 171 173.890625 C 171 168.519531 171 163.140625 171 157.761719 C 162.570313 152.71875 152.550781 151.730469 142.96875 150.789063 C 130.519531 149.53125 117.589844 149.5 105.890625 144.511719 C 107.601563 136.671875 114.570313 131.128906 122.128906 129.359375 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 310 135.261719 C 314.140625 134.539063 318.75 135.078125 321.910156 138.089844 C 323.308594 139.070313 323.089844 140.871094 323.089844 142.351563 C 320.101563 139.75 316.210938 139.851563 312.519531 139.328125 C 310.460938 139.128906 310.421875 136.789063 310 135.261719 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 121.160156 137.960938 C 126.128906 138.238281 131.050781 137.269531 136.019531 137.25 C 138.410156 137.171875 140.628906 138.210938 142.328125 139.851563 C 138.179688 139.730469 134.050781 140.03125 129.921875 140.421875 C 126.839844 140.660156 123.300781 140.539063 121.160156 137.960938 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 339.800781 137.769531 C 346.859375 136.921875 353.179688 141.820313 360.300781 140.269531 C 359.121094 147.320313 348.949219 148.898438 344.089844 144.621094 C 347.328125 144.121094 351.671875 145.601563 353.710938 142.269531 C 348.828125 141.890625 343.519531 141.359375 339.800781 137.769531 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 68.878906 142.710938 C 75.941406 143.839844 82.980469 142.269531 89.941406 141.191406 C 94.050781 140.449219 98.550781 141.390625 101.46875 144.519531 C 88.910156 142.871094 75.800781 143.078125 63.871094 147.769531 C 53.890625 151.46875 44.808594 158.949219 41.089844 169.140625 C 37.691406 178.121094 38.699219 188.140625 41.609375 197.109375 C 42.289063 198.988281 42.761719 201.199219 44.5 202.421875 C 50.480469 206.941406 58.667969 206.96875 64.628906 211.460938 C 66.429688 212.648438 65.949219 214.828125 65.878906 216.671875 C 63.148438 214.910156 60.582031 212.851563 57.539063 211.648438 C 51.800781 209.148438 45.179688 207.949219 40.601563 203.371094 C 36.191406 193.660156 34.820313 182.371094 37.359375 171.949219 C 40.570313 158.429688 51.25 147.308594 64.140625 142.488281 C 65.679688 141.921875 67.308594 142.628906 68.878906 142.710938 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 378.488281 143.710938 C 383.808594 142 389.5 142.601563 395.011719 142.460938 C 405.320313 142.378906 416.308594 144.769531 424.089844 151.949219 C 431.101563 158.601563 433.820313 168.460938 434.378906 177.839844 C 434.878906 183.191406 434.140625 188.53125 433.988281 193.871094 C 433.410156 193.21875 432.828125 192.570313 432.25 191.929688 C 433.078125 183.621094 432.859375 175.21875 432.011719 166.929688 C 428.621094 158.671875 422.378906 151.128906 413.878906 147.859375 C 402.621094 143.351563 390.269531 145.019531 378.488281 143.710938 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 339.21875 149.199219 C 342.289063 147.589844 345.671875 149.988281 347.089844 152.730469 C 344.03125 152.839844 341.328125 151.28125 339.21875 149.199219 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 366.890625 151.769531 C 379.839844 149.148438 394.058594 151.300781 404.949219 159.050781 C 414.828125 165.929688 421.710938 177.609375 421.070313 189.851563 C 420.878906 200.289063 414.960938 209.789063 407.140625 216.378906 C 404.050781 209.609375 408.140625 202.898438 410.398438 196.628906 C 413.308594 189.5 411.699219 181.371094 408.230469 174.75 C 404.808594 168.058594 398.269531 163.308594 391.089844 161.359375 C 384.699219 159.378906 377.929688 159.640625 371.339844 160.039063 C 364.640625 166.53125 355.691406 169.980469 346.828125 172.371094 C 335.199219 175.300781 322.980469 176.199219 311.109375 174.398438 C 303.121094 173.019531 294.671875 170.148438 289.558594 163.480469 C 286.789063 160.03125 285.898438 155.550781 285.738281 151.230469 C 296.109375 152.75 302.148438 162.800781 311.878906 165.871094 C 320.730469 168.671875 330.539063 167.710938 339.078125 164.261719 C 348.511719 160.460938 356.738281 153.75 366.890625 151.769531 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 51.789063 162.628906 C 56.898438 158.238281 63.378906 156.019531 69.628906 153.800781 C 66.417969 160.589844 56.511719 159.679688 53.859375 166.929688 C 51.730469 173.441406 54.332031 180.578125 51.96875 187.121094 C 51.371094 186.25 50.78125 185.390625 50.167969 184.53125 C 50.28125 177.199219 51.429688 169.941406 51.789063 162.628906 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 69.417969 164.390625 C 77.738281 160.410156 87.371094 162.101563 95.871094 164.609375 C 103.628906 167.050781 111.210938 170.601563 117.21875 176.191406 C 120.621094 174.351563 123.488281 171.578125 127.101563 170.109375 C 129.210938 169.46875 131.171875 170.429688 132.871094 171.578125 C 132.648438 175.75 131.140625 180.238281 127.128906 182.191406 C 119.140625 186.039063 109.980469 184.421875 101.421875 184.820313 C 101.121094 179.710938 98.589844 174.070313 93.210938 172.710938 C 82.25 169.96875 71.601563 175.398438 60.75 176.140625 C 61.917969 171.269531 64.691406 166.519531 69.417969 164.390625 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 372.398438 168.410156 C 373.679688 166.679688 375.980469 166.839844 377.878906 166.570313 C 378.078125 171.339844 378.679688 176.398438 381.671875 180.320313 C 387.769531 188.691406 399.300781 190.53125 405.441406 198.871094 C 400.460938 203.441406 393.738281 199.878906 387.980469 199.519531 C 384.898438 198.96875 384.03125 202.679688 382.761719 204.71875 C 380.820313 207.890625 380.628906 211.699219 382.070313 215.101563 C 383.308594 217.199219 380.449219 218.101563 379.460938 219.449219 C 368.839844 230.191406 361.699219 243.691406 352.769531 255.75 C 345.75 265.53125 337.589844 274.570313 328.039063 281.929688 C 311.679688 294.558594 293.5 304.898438 274.140625 312.160156 C 255.910156 319.101563 236.328125 321.128906 217.019531 322.679688 C 194.75 324.179688 172.378906 324.289063 150.109375 322.699219 C 134.570313 321.421875 118.921875 319.648438 103.988281 314.980469 C 97.917969 312.96875 91.582031 310.601563 87.261719 305.660156 C 80.839844 298.449219 77.378906 289.191406 74.910156 280 C 69.960938 260.140625 69.320313 239.289063 72.128906 219.070313 C 73.429688 209.511719 78.121094 200.960938 82.609375 192.589844 C 84.78125 189.101563 83.628906 184.78125 84.96875 181.070313 C 85.761719 178.921875 88.410156 180.128906 90.082031 179.96875 C 94.082031 188.5 91.679688 198.308594 94.589844 207.078125 C 110.160156 222.578125 131.988281 230.121094 153.429688 232.828125 C 184.429688 236.46875 215.71875 231.679688 245.839844 224.371094 C 289.089844 213.539063 330.679688 196.96875 371 178.121094 C 371.089844 174.878906 370.441406 171.238281 372.398438 168.410156 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 229.570313 191.941406 C 229.859375 186.300781 236 183.890625 240.898438 184.511719 C 247.078125 185.230469 253.808594 186.851563 258.300781 191.449219 C 259.738281 195.03125 259.238281 199.121094 259.160156 202.910156 C 258.570313 208.429688 256.710938 215.070313 251.128906 217.449219 C 248.488281 218.738281 245.648438 217.421875 243.058594 216.679688 C 243.058594 214.949219 242.691406 213.109375 243.5 211.5 C 245.019531 208.210938 249.128906 206.941406 250.300781 203.429688 C 251.21875 200.980469 250.378906 198.410156 249.929688 195.96875 C 243.371094 193.441406 235.980469 194.960938 229.570313 191.941406 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 261.550781 191.609375 C 260.820313 189.5 260.199219 186.359375 262.851563 185.390625 C 263.550781 185.589844 264.929688 185.96875 265.621094 186.171875 C 264.691406 186.871094 263.761719 187.558594 262.828125 188.25 C 263.011719 190.789063 264.890625 192.890625 267.371094 193.421875 C 276.449219 195.671875 285.898438 192.671875 295.019531 194.328125 C 297.019531 194.511719 297.660156 196.339844 297.339844 198.128906 C 288.929688 193.449219 279.109375 197.179688 270.089844 196.320313 C 266.828125 196.109375 262.710938 195.109375 261.550781 191.609375 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 50.378906 187.140625 C 50.871094 187.449219 51.871094 188.078125 52.371094 188.398438 C 55.019531 193.808594 60.820313 196.378906 64.761719 200.671875 C 61.28125 200.25 57.550781 199.609375 54.898438 197.109375 C 52.011719 194.621094 51.03125 190.730469 50.378906 187.140625 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 333.039063 207.609375 C 347.71875 202.730469 359.480469 190.070313 375.550781 189.398438 C 375.800781 198.101563 371.761719 206.578125 365.199219 212.210938 C 356.058594 220.199219 343.988281 223.738281 332.179688 225.378906 C 335.070313 219.769531 332.128906 213.53125 333.039063 207.609375 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 432.039063 192.988281 C 432.601563 193.738281 433.160156 194.5 433.71875 195.25 C 432.660156 202.371094 431.371094 209.460938 429.601563 216.441406 C 423.539063 220.039063 417.890625 224.789063 410.851563 226.300781 C 409.050781 226.859375 407.261719 226.210938 405.539063 225.710938 C 412.300781 224.609375 419.179688 221.988281 423.648438 216.570313 C 429.089844 210 431.449219 201.371094 432.039063 192.988281 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 212.820313 201.730469 C 221.25 199.441406 230.25 200.441406 238.488281 203.03125 C 238.769531 206.789063 238.480469 210.660156 236.460938 213.941406 C 227.390625 205.800781 214.871094 214.660156 204.71875 209.859375 C 205.238281 205.648438 208.898438 202.710938 212.820313 201.730469 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 83.28125 219.039063 C 84.410156 216.488281 85.820313 214.058594 87.75 212.039063 C 87.28125 215.070313 86.410156 218.078125 84.488281 220.539063 C 84.191406 220.160156 83.582031 219.410156 83.28125 219.039063 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 267.980469 227.878906 C 286.730469 223.070313 304.960938 216.351563 323.898438 212.21875 C 323.78125 220.371094 319.851563 228.46875 312.820313 232.820313 C 300.480469 240.648438 285.308594 241.480469 272.238281 247.679688 C 270.589844 241.128906 269.75 234.398438 267.980469 227.878906 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 88.679688 241.808594 C 88.800781 234.25 92.699219 227.351563 96.871094 221.269531 C 99.398438 230.839844 96.980469 240.859375 94.449219 250.171875 C 91.160156 248.691406 88.460938 245.621094 88.679688 241.808594 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 342.03125 235.171875 C 347.378906 232.121094 353.410156 230.328125 359.539063 229.890625 C 349.191406 238.328125 346.710938 254.589844 333.011719 259.160156 C 331.441406 255.691406 330.121094 251.871094 331 248.019531 C 332.261719 242.210938 337.058594 237.980469 342.03125 235.171875 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 108.121094 254.398438 C 107.128906 246.578125 102.71875 236.371094 109.871094 230.21875 C 113.628906 234.011719 118.671875 235.890625 123.75 237.128906 C 124.308594 241.96875 120.800781 245.769531 119.398438 250.121094 C 118.589844 252.558594 119.808594 254.960938 120.761719 257.148438 C 116.679688 255.710938 112.609375 253.371094 108.121094 254.398438 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 217.921875 240.460938 C 231.398438 237.429688 244.898438 234.449219 258.578125 232.398438 C 260.519531 238.949219 261.179688 245.789063 263.011719 252.359375 C 252.511719 253.488281 242.558594 257.328125 232.128906 258.808594 C 226.058594 259.730469 219.890625 259.640625 213.789063 259.160156 C 213.851563 253.339844 213.679688 247.53125 213.839844 241.71875 C 214.980469 240.851563 216.578125 240.878906 217.921875 240.460938 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 128.96875 254.960938 C 133.339844 250.730469 130.75 243.761719 134.589844 239.238281 C 144.121094 244.53125 155.558594 241.429688 165.570313 245.109375 C 162.058594 249.070313 164.871094 254.511719 164.308594 259.199219 C 152.460938 259.171875 140.140625 259.539063 128.96875 254.960938 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 175.949219 243.828125 C 185.699219 245.171875 195.03125 241.199219 204.71875 241.179688 C 204.769531 247.179688 204.730469 253.191406 204.75 259.191406 C 194.21875 259.210938 183.699219 259.238281 173.171875 259.179688 C 171.789063 253.679688 176.320313 249.25 175.949219 243.828125 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 276.800781 263.980469 C 292.460938 260.179688 307.199219 253.46875 321.460938 246.109375 C 320.160156 254.050781 321.988281 262.660156 328.121094 268.210938 C 313.691406 276.550781 301.238281 288.070313 285.96875 294.988281 C 285.78125 285.910156 277.609375 279.730469 276.710938 270.878906 C 276.359375 268.578125 276.621094 266.269531 276.800781 263.980469 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 222.78125 279.660156 C 238.28125 277.699219 252.910156 271.921875 267.378906 266.300781 C 266.988281 271.5 266.878906 276.96875 269.28125 281.75 C 272.058594 287.519531 275.929688 292.921875 276.738281 299.449219 C 263.148438 302.789063 250.101563 308.53125 236.058594 309.820313 C 231.769531 310.328125 227.449219 309.71875 223.269531 308.78125 C 224.988281 299.109375 221.261719 289.390625 222.78125 279.660156 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 85.550781 281.328125 C 84.628906 279.511719 84.761719 277.449219 85.089844 275.511719 C 87.25 280.578125 90.988281 284.78125 93.140625 289.851563 C 94.28125 292.238281 93.691406 294.921875 92.667969 297.230469 C 91.460938 291.441406 87.941406 286.621094 85.550781 281.328125 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 103.078125 281.621094 C 110.148438 288.109375 113.859375 297.261719 116.769531 306.199219 C 111.269531 304.78125 105.480469 304.140625 100.339844 301.621094 C 98.800781 300.96875 98.320313 299.289063 97.71875 297.910156 C 98.558594 298.648438 99.378906 299.398438 100.199219 300.171875 C 101.960938 299.679688 104.019531 299.488281 105.269531 297.96875 C 107.289063 292.191406 99.371094 287.140625 103.078125 281.621094 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 177.910156 286.46875 C 190.03125 287.53125 202.199219 285.5 213.78125 281.960938 C 214.390625 291.621094 211.519531 301.878906 215.578125 311.050781 C 204.859375 314.640625 193.421875 312.679688 182.359375 313 C 181.261719 304.089844 179.109375 295.359375 177.910156 286.46875 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 119.25 286.179688 C 124.710938 285.800781 129.238281 289.988281 134.78125 289.121094 C 134.5 297.070313 140.21875 303.28125 141.640625 310.820313 C 136.46875 310.070313 130.980469 309.839844 126.480469 306.878906 C 127.070313 305.019531 128.109375 303 127.160156 301.058594 C 125.328125 295.691406 120.960938 291.621094 119.25 286.179688 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(98.826599%,98.826599%,98.826599%);fill-opacity:1;" d="M 144.121094 288.601563 C 150.839844 287.03125 158.648438 286.121094 164.53125 290.511719 C 171.238281 295.941406 172.109375 305.21875 173.109375 313.191406 C 166.398438 313.46875 159.601563 313.101563 153.191406 310.921875 C 151.390625 303.011719 146.539063 296.289063 144.121094 288.601563 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 305.71875 310.820313 C 316.640625 305.820313 327.878906 300.71875 339.980469 299.601563 C 320.449219 306.589844 302.378906 316.878906 283.609375 325.578125 C 259.351563 336.890625 233.148438 346.371094 206 345.199219 C 195.988281 344.019531 186.011719 346.089844 175.980469 345.988281 C 156.710938 345.761719 137.210938 348.148438 118.121094 344.390625 C 110.21875 342.679688 101.980469 339.648438 96.832031 333.070313 C 94.167969 329.910156 92.78125 325.941406 91.988281 321.941406 C 98.929688 333.601563 112.171875 339.179688 124.859375 342.058594 C 140.628906 345.417969 156.921875 346.53125 173 345.121094 C 194.558594 344.199219 216.398438 344.390625 237.511719 339.300781 C 261.609375 333.441406 283.488281 321.421875 305.71875 310.820313 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 328.058594 313.210938 C 339.019531 307.808594 349.738281 300.640625 362.25 299.699219 C 348.660156 308.851563 333.851563 316.070313 318.960938 322.859375 C 260.339844 348.871094 196.050781 361.191406 132.03125 361.261719 C 119.289063 361.332031 106.300781 360.800781 94.050781 356.960938 C 84.332031 353.917969 75.25 347.808594 70.121094 338.851563 C 69.96875 335.070313 68.460938 330.878906 69.949219 327.300781 C 70.449219 327.011719 71.449219 326.441406 71.949219 326.148438 C 72.050781 330.75 71.980469 335.359375 72 339.960938 C 77.519531 345.53125 84.488281 349.460938 91.832031 352.101563 C 103.101563 356.25 115.101563 357.910156 127.019531 358.78125 C 145.75 359.910156 164.53125 358.75 183.171875 356.78125 C 233.628906 351.480469 282.808594 335.988281 328.058594 313.210938 "/>
|
||||
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(5.099487%,5.099487%,5.099487%);fill-opacity:1;" d="M 144.640625 331.460938 C 158.761719 331.582031 172.890625 331.238281 186.988281 331.71875 C 196.308594 331.738281 206.351563 329.082031 215.148438 333.21875 C 199.78125 332.550781 184.429688 333.769531 169.058594 333.800781 C 160.910156 333.582031 152.53125 333.789063 144.640625 331.460938 "/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 28 KiB |
1
images/icons/vault.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 73.6 72" width="2500" height="2446"><defs><path id="a" d="M37.6 36.8c1.2 0 2.1-1 2.1-2.1s-.9-2.1-2.1-2.1-2.1 1-2.1 2.1.9 2.1 2.1 2.1zM31.3 31c1.2 0 2.1-1 2.1-2.1 0-1.2-.9-2.1-2.1-2.1-1.2 0-2.1 1-2.1 2.1 0 1.2.9 2.1 2.1 2.1zm6.3 0c1.2 0 2.1-1 2.1-2.1 0-1.2-.9-2.1-2.1-2.1s-2.1 1-2.1 2.1c0 1.2.9 2.1 2.1 2.1zm6.3 0c1.2 0 2.1-1 2.1-2.1 0-1.2-.9-2.1-2.1-2.1-1.2 0-2.1 1-2.1 2.1 0 1.2 1 2.1 2.1 2.1zm-12.6-5.7c1.2 0 2.1-1 2.1-2.1 0-1.2-.9-2.1-2.1-2.1-1.2 0-2.1 1-2.1 2.1 0 1.2.9 2.1 2.1 2.1zm6.3 0c1.2 0 2.1-1 2.1-2.1 0-1.2-.9-2.1-2.1-2.1s-2.1 1-2.1 2.1c0 1.2.9 2.1 2.1 2.1zm6.3 0c1.2 0 2.1-1 2.1-2.1 0-1.2-.9-2.1-2.1-2.1-1.2 0-2.1 1-2.1 2.1 0 1.2 1 2.1 2.1 2.1zm-6.3-5.7c1.2 0 2.1-1 2.1-2.1 0-1.2-.9-2.1-2.1-2.1s-2.1 1-2.1 2.1.9 2.1 2.1 2.1zm6.3 0c1.2 0 2.1-1 2.1-2.1 0-1.2-.9-2.1-2.1-2.1-1.2 0-2.1 1-2.1 2.1s1 2.1 2.1 2.1zm-12.6 0c1.2 0 2.1-1 2.1-2.1 0-1.2-.9-2.1-2.1-2.1-1.2 0-2.1 1-2.1 2.1s.9 2.1 2.1 2.1zM36.8 72L0 0h73.6L36.8 72z"/></defs><use xlink:href="#a" overflow="visible" fill-rule="evenodd" clip-rule="evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
1
images/icons/woodpecker.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="white"><path d="M1.263 2.744C2.41 3.832 2.845 4.932 4.118 5.08l.036.007c-.588.606-1.09 1.402-1.443 2.423-.38 1.096-.488 2.285-.614 3.659-.19 2.046-.401 4.364-1.556 7.269-2.486 6.258-1.12 11.63.332 17.317.664 2.604 1.348 5.297 1.642 8.107a.857.857 0 00.633.744.86.86 0 00.922-.323c.227-.313.524-.797.86-1.424.84 3.323 1.355 6.13 1.783 8.697a.866.866 0 001.517.41c2.88-3.463 3.763-8.636 2.184-12.674.459-2.433 1.402-4.45 2.398-6.583.536-1.15 1.08-2.318 1.55-3.566.228-.084.569-.314.79-.441l1.707-.981-.256 1.052a.864.864 0 001.678.408l.68-2.858 1.285-2.95a.863.863 0 10-1.581-.687l-1.152 2.669-2.383 1.372a18.97 18.97 0 00.508-2.981c.432-4.86-.718-9.074-3.066-11.266-.163-.157-.208-.281-.247-.26.095-.12.249-.26.358-.374 2.283-1.693 6.047-.147 8.319.75.589.232.876-.337.316-.67-1.95-1.153-5.948-4.196-8.188-6.193-.313-.275-.527-.607-.89-.913C9.825.555 4.072 3.057 1.355 2.569c-.102-.018-.166.103-.092.175m10.98 5.899c-.06 1.242-.603 1.8-1 2.208-.217.224-.426.436-.524.738-.236.714.008 1.51.66 2.143 1.974 1.84 2.925 5.527 2.538 9.86-.291 3.288-1.448 5.763-2.671 8.385-1.031 2.207-2.096 4.489-2.577 7.259a.853.853 0 00.056.48c1.02 2.434 1.135 6.197-.672 9.46a96.586 96.586 0 00-1.97-8.711c1.964-4.488 4.203-11.75 2.919-17.668-.325-1.497-1.304-3.276-2.387-4.207-.208-.18-.402-.237-.495-.167-.084.06-.151.238-.062.444.55 1.266.879 2.599 1.226 4.276 1.125 5.443-.956 12.49-2.835 16.782l-.116.259-.457.982c-.356-2.014-.85-3.95-1.33-5.84-1.38-5.406-2.68-10.515-.401-16.254 1.247-3.137 1.483-5.692 1.672-7.746.116-1.263.216-2.355.526-3.252.905-2.605 3.062-3.178 4.744-2.852 1.632.316 3.24 1.593 3.156 3.42zm-2.868.62a1.177 1.177 0 10.736-2.236 1.178 1.178 0 10-.736 2.237z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 18 KiB |
@@ -1 +0,0 @@
|
||||
gitea.png
|
||||
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 13 KiB |
BIN
images/personal/nyn.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
@@ -3,6 +3,5 @@ title: Home
|
||||
home: true
|
||||
---
|
||||
|
||||
<h2>Welcome</h2>
|
||||
$partial("templates/post-preview-list.html")$
|
||||
<p>Find more in the <a href="/archive.html">archives</a>.</p>
|
||||
<h2><b>Welcome</b></h2>
|
||||
Hello, I post stuff here. Check the <a href="/archive.html">archive</a>.
|
||||
|
||||
40
links.org
@@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Links
|
||||
---
|
||||
#+OPTIONS: *:nil
|
||||
|
||||
Random links I find useful
|
||||
|
||||
@@ -13,6 +14,8 @@ Random links I find useful
|
||||
** Reading and writing
|
||||
- [[https://writing.stackexchange.com][Writing StackExchange]]: Q&A for writing.
|
||||
- [[https://worldbuilding.stackexchange.com][Worldbuilding StackExchange]]: Q&A regarding worldbuilding.
|
||||
- [[https://critters.org/][Critters]]: Critique other works and get yours critiqued.
|
||||
- [[https://boards.4channel.org/lit/catalog][/wg/]]: Writing general on /lit/
|
||||
- [[https://www.myanonamouse.net][MyAnonamouse]]: A private torrent tracker for books.
|
||||
- [[https://punjabilibrary.com/][ਪੰਜਾਬੀ ਲਾਇਬ੍ਰੇਰੀ]]: Punjabi Library, a library for Punjabi books and audiobooks.
|
||||
- [[https://syosetu.com/][小説家になろう]]: Shōsetsuka ni Narō, a Japanese novel publishing website.
|
||||
@@ -20,10 +23,43 @@ Random links I find useful
|
||||
** History
|
||||
- [[https://www.larsdatter.com/index.html][Larsdatter]]: Medieval & Rennaissance Material Culture.
|
||||
- [[https://www.medievalchronicles.com][Medieval Chronicles]]: A library about medieval stuff.
|
||||
- [[http://www.perseus.tufts.edu/hopper/collections][Perseus Digital Library]]: Limited range of stuff to read across a number of cultures.
|
||||
|
||||
** Games
|
||||
- [[https://app.roll20.net/][Roll20]]: For the free online TTRPG experience.
|
||||
- [[https://sonome.dareno.me/][Committee of Zero]]: A group that provides fan improvement patches with fixes for the Science Adventure Series by 5pb., Nitroplus, and Chiyomaru Studio.
|
||||
|
||||
** Language Learning
|
||||
- [[https://ankiweb.net/shared/decks/][Anki Decks]]: Download respective Anki decks for your languages here.
|
||||
- [[https://learnjapanese.moe/][TheMoeWay]]: Learn Japanese the moe way.
|
||||
- [[https://itazuraneko.neocities.org/][Itazuarneko]]: Another great guide for learning Japanese.
|
||||
- [[https://foosoft.net/projects/yomichan/][Yomichan]]: Pop up dictionary for Japanese (supports AnkiConnect).
|
||||
- [[https://github.com/pnlpal/dictionariez][Dictionariez]]: Similar to Yomichan but for other languages.
|
||||
- [[https://www.languages-on-fire.com/][Languages On Fire]]: [PAYWALLED] Learn German here (use their Anki Deck too).
|
||||
|
||||
** Code Repositories
|
||||
- [[https://github.com/NixOS/nixpkgs][Nixpkgs]]: Nix Packages collection.
|
||||
- [[https://github.com/concourse/concourse][Concourse CI]]: A continuous thing-doer.
|
||||
- [[https://github.com/emacs-lsp/lsp-mode][lsp-mode]]: Emacs library for Language Server Protocol.
|
||||
- [[https://gitlab.com/qemu-project/qemu][QEMU]]: The famous virtualization API library.
|
||||
- [[https://gitlab.com/libvirt/libvirt/][libvirt]]: The famous virtualization API library.
|
||||
- [[https://github.com/CompVis/stable-diffusion][Stable Diffusion]]: Text2Image and Image2Image diffusion scripts for the SD models.
|
||||
- [[https://gitlab.com/simple-nixos-mailserver/nixos-mailserver][Simple Nixos Mailserver]]: True to its name.
|
||||
- [[https://github.com/bakape/captchouli][Captchouli]]: Booru-backed procedurally-generated anime image captcha library and server
|
||||
- [[https://github.com/rui314/chibicc][chibicc]]: A [[https://jisho.org/word/%E7%A6%BF%E3%81%B3][chibi]] C compiler by Rui Ueyama.
|
||||
|
||||
** Torrent Trackers
|
||||
- I won't post any more private trackers even if you want me to.
|
||||
- [[https://1377x.to/][1337x]]: All purpose public tracker
|
||||
- [[https://rutracker.org/][RuTracker]]: All purpose public tracker (Russian).
|
||||
- [[https://nyaa.si][Nyaa]]: The anime public tracker, also has JP music, games, manga, books and software. Mirror for blocked countries: [[https://nyaa.iss.one]].
|
||||
- [[https://en.metal-tracker.com][METAL-TRACKER.COM]]: Public metal music tracker.
|
||||
|
||||
** Music
|
||||
- [[https://doujinstyle.com/][DOUJINSTYLE.COM]]: Everything doujin, convenient way to get albums although LOG files may not be 100% correct.
|
||||
|
||||
** Misc
|
||||
- [[https://www.proxysite.com/][ProxySite]]: I use it to download large GitHub assets.
|
||||
|
||||
* Other Blogs
|
||||
- [[https://justinas.org/nixos-in-the-cloud-step-by-step-part-2][NixOS in the Cloud, step-by-step: part 2]] by Justinas Stankevičius (also see https://github.com/justinas/nixos-cloud)
|
||||
- [[https://snehit.dev/posts/body-trade-in-mainline-streams/][Body Trade in Mainline Streams?]] by Snehit Shah (flyingcakes)
|
||||
- [[https://blog.konno.tk/#30][most depressing midi player]] by junko (Possibly browsing https://github.com/Henrixounez/v-midi/)
|
||||
|
||||
163
posts/amends-1.org
Normal file
@@ -0,0 +1,163 @@
|
||||
---
|
||||
title: Amends Chapter 1 - Stop speaking from inside my head!
|
||||
tags: creative_writing, amends
|
||||
author: AlpaViraam
|
||||
published: August 28, 2022
|
||||
---
|
||||
=Wake up, you fucking bum.=
|
||||
|
||||
"Huh! Who the ..."
|
||||
|
||||
=It does not matter who I am, but do you know who you are?=
|
||||
|
||||
"I am... Ha, you thought. I perfectly remember who I am, Gle Harlet, happily married, father of one, and a professor at the University of Tellmond."
|
||||
|
||||
=That's fine and all but who *are* you?=
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
"Waddafuck are ye talking about, ya clinically retarded or is this one of yer tricks to get yer ass out? If 'tis the latter, it won't work," the man paused for a second before resuming, "it won't work if 'tis the former either."
|
||||
|
||||
This time it was a huge, burly man who spoke out, a man the size of a cannon.
|
||||
|
||||
"Incredibly rude of you to wake me up with such unpleasantries and then straight up call me retarded." Gle sounded annoyed beyond reason, an expression he rarely showed.
|
||||
|
||||
"What'd ye say, fucking twat. I didn't say shit, are ye alright in the head? Look around ya."
|
||||
|
||||
Gle quickly started looking around, confused like a child who suddenly gained consciousness on his fourth birthday. The stone floor was cold, the walls were not too different, the light came in through an iron mesh, except the horizontal wires were missing. Actually, upon further observation, these wires were far too sturdy to be wires, with all the shine and hardness; they were more like bars, not the black licorice kind but the actual, cold, steel bars. It was indeed a prison cell, one exceptionally small and inconvenient at that, since there were no signature prison windows you often see in the comics.
|
||||
|
||||
=Are you aware now? You are damn convict now, how do you feel, if I may ask?=
|
||||
|
||||
"Who are you and where the fuck are you speaking from?"
|
||||
|
||||
"Yeah ye tell me, there is no'ne here but ya, me and that blond fellow lying over there." The giant suppressed his slight smile to maintain a poker face.
|
||||
|
||||
Gle squinted his eyes, it was safe to assume that his eyesight had not served him well in the absence of his glasses. It turns out that the prison cell was not really as small as it initially seemed to be, just that it was incredibly dark the further one went away from those cold bars. In the darkness, there was a dull silhouette of a man, or is it a woman? With a build similar to Gle's but hair golden instead of brown, the threads on this young man were incredibly lavish unlike Gle's commoner clothes and the giant's shirtless waistcoat.
|
||||
|
||||
=Go wake him up, just like I woke you up, and you might learn the reason why you are here, don't you wanna make new friends?=
|
||||
|
||||
/Am I going insane, is this voice just inside my head, I should not have browsed those damn imageboards; always knew they were bad for my mental health, better keep it hidden and not make a fool of myself./
|
||||
|
||||
"I am not going to waste my time asking you why I am in here since you wouldn't really know, but do you know what date and time is it?" Gle sounded a bit like those cunning Ilai merchants.
|
||||
|
||||
"Been here fer a few years now, was never interested in tracking dates so never cared, but I am guessing late spring; and 'tis almost time for the second daily meal," the giant sounded slightly annoyed, but the cause is unknown.
|
||||
|
||||
/*clomp clomp clomp*/
|
||||
|
||||
They both turned their heads towards the resonating sound, it was a guard, an officer if you will. The clothes were brand new, probably a new recruit, but they were unfamiliar; it was surely a uniform, but not one that Gle recognized.
|
||||
|
||||
"Here."
|
||||
|
||||
The officer threw three bowls of what looked like porridge, or perhaps some curry. Gle immediately went towards the bars, locked his eyes into the officer's and finally spoke.
|
||||
|
||||
"What place is this, why am I in here, from what I remember I just went to sleep last night and now I am here, this must be a sick joke." He sounded very desperate, looking for help like a wounded dog.
|
||||
|
||||
The guard took a good look at Gle and thought, the silence was awkward but nothing out of ordinary for an inmate-officer conversation. He starts speaking very softly and politely.
|
||||
|
||||
"My job is to provide food and to supervise you guys here in the south quarter." The guard replied finally.
|
||||
|
||||
"Supervise me ass." The giant muttered. The officer ignored him without batting an eye.
|
||||
|
||||
"South quarter? So we are geographically in the south?"
|
||||
|
||||
"No, the south quarter of the circle that makes the panopticon."
|
||||
|
||||
=Woaaaaaah, a panopticon straight out of movies, I love this. You do too, right?=
|
||||
|
||||
Gle broke his line of sight and moved his head to see behind the guard. His eyes widened, it was indeed a panopticon.
|
||||
|
||||
"This is a panopticon, wow." He was genuinely amazed.
|
||||
|
||||
"It is, yes."
|
||||
|
||||
"So you guys are not with the government? Are you sure this is not some government policy to secure the citizens against disasters and terrorist attacks?"
|
||||
|
||||
"Nein, and no, you are here because of the crimes you committed. I bet your friend over there knows more about it. I just started working here yesterday, I have no clue and neither do I care, for it is not my job."
|
||||
|
||||
=Do you believe me now, you retarded fuck? You should be more aware of what heinous things you do, I am so ashamed to share your pathetic self.=
|
||||
|
||||
"I see, thank you, can I call for you again if I need you?"
|
||||
|
||||
"No."
|
||||
|
||||
=LMAO!=
|
||||
|
||||
/These voices are getting more and more annoying. I can ignore them all I want, but they are still me and I am them. At least I have some sense of recognition and have not completely insane./
|
||||
|
||||
A quick and decisive answer, Gle was taken aback but nodded in defeat. He quickly went back to the place where he woke up and started thinking hard. Maybe he felt like that place was his new home in this small district of a prison cell with a total of three citizens. He looked up almost snapping his neck and turned towards the giant and spoke.
|
||||
|
||||
"Hey you, is it true? Do you know why I am in here?"
|
||||
|
||||
The giant turned towards the man with an even more disinterested and annoyed face than before.
|
||||
|
||||
"Sure I do."
|
||||
|
||||
"Then why did you not tell me before, I am not particularly enjoying this here."
|
||||
|
||||
The giant's face went from annoyed to expressionless, making it even scarier.
|
||||
|
||||
"Yeah, well does it look like I am partying in here? Besides, ye're the one who went all like 'I won't ask since ye wouldn't know', retard."
|
||||
|
||||
Gle sank into the floor a bit more. A composed professor of Harlevian literature, was now a complete mess who cannot think twice before asking, panicking like a four-year-old separated from his mother.
|
||||
|
||||
"I am sorry, it was pretty rude of me but I request you to tell me if you know anything."
|
||||
|
||||
"Well then, all I know is ye're in here for murdering a kid and her mother, that it."
|
||||
|
||||
Gle went completely silent, he felt his insides twisting, his brain going cold, his vision became white and he struggled for air. This went on for a minute or so. The giant was confused but he still did not care about him enough to calm him down, and knowing he is a killer surely did not help.
|
||||
|
||||
=Ha! You fucking killed your wife and your daughter, you sick fuck.=
|
||||
|
||||
/No, it can't be... I must remain calm, there's no way I could have killed them, I just went to sleep with Mint as usual and Cavon was already in her bed sleeping./
|
||||
|
||||
"Ah, thank you for the information, now that I think about it, may I have your name?"
|
||||
|
||||
"My name doesn't matter, jus' call me whatever ye feel like. It is awfully weird of ya to remain this calm after killing two people including a kid."
|
||||
|
||||
His face was much less tense than before.
|
||||
|
||||
"No, I just... Okay, you probably would not believe me, but I have not done anything like that, I just went to sleep like everyday."
|
||||
|
||||
"Yeah, sure, whatever." He was now just trying to sound uninterested but that was not the case.
|
||||
|
||||
=Wow, nobody cares about you, damn.=
|
||||
|
||||
"So, what place is this?"
|
||||
|
||||
"Why finally, shouldn't that have been yer first question if ya did not do anything? This is some kinda facility, where they put selected people from different prisons together. I really do not know the specifics, none of the prisoners do but one thing is fer sure, we don't share the same ethnicity."
|
||||
|
||||
"Right, you sound Gecovian."
|
||||
|
||||
"Me father was Gecovian but I am from Martell. Ya must be a Harlevian from your accent."
|
||||
|
||||
"My parents are Harlevian but they are first-generation immigrants. I am Martella as well."
|
||||
|
||||
"Well, ain't that a pleasant coincidence, we both share the land of the *free*." The giant burst out laughing, lightening the mood.
|
||||
|
||||
=Well, what about the other guy, surely he cannot be a Martella as well.=
|
||||
|
||||
"So you have any clue about who the other guy might be?"
|
||||
|
||||
"Nah. Sorry."
|
||||
|
||||
=Well, too bad.=
|
||||
|
||||
"Okay, this might sound strange, but I have voices in my head but I am aware of them so I have not gone completely insane."
|
||||
|
||||
"Voices, huh. We all do." He fell into deep thought right after saying that.
|
||||
|
||||
"Oh, I completely forgot about the food. It must have gone cold by now."
|
||||
|
||||
"It already was cold, me man. Here, have mine, I eat once every few days anyway."
|
||||
|
||||
/Hard to believe when you have a body like that./
|
||||
|
||||
"Well sure, thanks!"
|
||||
|
||||
They now just sat there, with the now calm Gle eating and the giant staring. The sound of him slurping his food was reverberating within the walls of the cell. The giant no longer wore a tense expression, it almost felt like he was smiling.
|
||||
|
||||
Suddenly the sleeping figure sprang up.
|
||||
|
||||
=Baby, guess who is up.=
|
||||
101
posts/amends-2.org
Normal file
@@ -0,0 +1,101 @@
|
||||
---
|
||||
title: Amends Chapter 2 - Four
|
||||
tags: creative_writing, amends
|
||||
author: AlpaViraam
|
||||
published: August 31, 2022
|
||||
---
|
||||
The blond was blindingly pretty, almost like a princess, maybe he was a woman after all. There were no ornaments or jewellery, but you could instantly tell from his barely visible clothes and the shawl covering them, that he was not your ordinary guy.
|
||||
|
||||
All three of them stared at each other for a few minutes. The giant had an absolute poker face, as if expecting the other two to interact with each other as he continues to observe. However, his anticipation quickly turned to disappointment as the minutes passed.
|
||||
|
||||
=Speak something, you buffoon, you can always eat later.=
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
"Awake, are we?" The giant suddenly broke the silence turning their attention towards him.
|
||||
|
||||
"Food?" The blond asked with eyes like a dead fish's.
|
||||
|
||||
"There it is." The giant pointed his finger towards the bars, there lay the cold bowl of food with a visible layer of fat now formed on top of it. "Well it has gone cold now." He added trying to sound as unapologetic as possible.
|
||||
|
||||
The blond tried moving but made very little progress even after 30 seconds.
|
||||
|
||||
=Go help him, now!=
|
||||
|
||||
Gle who was still slurping up his share put it down and fetched the other bowl for him. Frail hands popped out of his shawl to grab the bowl and collided with Gle's. The hands were incredibly soft and cold, mildly surprising Gle.
|
||||
|
||||
"Thanks." The blond spoke timidly, trying to eat with slightly trembling hands, and eyes asking for help.
|
||||
|
||||
/Well, attractive as he might be, I certainly do not want to feed another man even if he struggles to death. Besides, I am a married man./
|
||||
|
||||
=But she is already dead. You killed her, stop running away.=
|
||||
|
||||
/No she is not, there is no way she is dead./ Gle thought while his face transformed into a twisted expression showcasing fear. /No, I must remain calm and get back to my family as soon as possible./
|
||||
|
||||
To Gle's surprise the blond had almost finished eating his share, the hands trembled but they were fast, or maybe he was just hungry.
|
||||
|
||||
"What is your name? I am Gle and this is...", he stopped as he remembered the giant did not tell him his name earlier.
|
||||
|
||||
"I am Offlest, I already heard you guys earlier, and his name is Hick, Hick Tarmande." The blond interrupted as soon as he realized that Gle was at a loss of words. He now looked incredibly energetic betraying his earlier impression.
|
||||
|
||||
=I do not trust this guy, and neither should you.=
|
||||
|
||||
"So you were just pretending to be asleep earlier?" Gle asked with a sharp tone.
|
||||
|
||||
"I was just resting, you were the ones who assumed it." Offlest replied in an equally sharp tone.
|
||||
|
||||
"You could have just interrupted us, but fair," Gle looked towards the giant whom he had forgotten was still in the room, and continued, "and you would tell your name to him but not me?" He was slightly frustrated now and even felt a little betrayed.
|
||||
|
||||
Hick just shook his head without saying anything, possibly enjoying all this; and turned towards the wall while laying prone, as if indicating that he is about to sleep. Gle also just shook it off and was now glaring back at Offlest thinking hard about something that only he could tell.
|
||||
|
||||
=Just shoot those questions you keep collecting in your mind, retention is not always a good thing.=
|
||||
|
||||
"Why and how long have you been in here? Do you have any clue about what this place is?", Gle fired off a barrage of questions towards Offlest, in an attempt to overwhelm him and secure his social rank in this prison.
|
||||
|
||||
"It has been two weeks since I was thrown in here; I was earlier in the Martell Central Prison for around an year, under false charges, betrayed by my own blood". His cute ladylike face now turned red as he swallowed air before continuing. "As for this place, I only know that this is a special rehabilitation facility for the Martella prisoners where they get chances to reduce their sentence and get released. I have heard of people reducing their life sentences to nothing in here but those might just be baseless rumors."
|
||||
|
||||
"No wonder we are all Martella here but hey wait," Gle turned towards Hick and shouted, "did you already know all of this? How did you even know about the crime I was charged for when I did not?"
|
||||
|
||||
There were no replies, not even snores, he just laid there, probably asleep, or maybe not. Gle was even more annoyed by his attitude now, but he decided to maintain his composure; after all, he was a professor, but the truth remained that he was the only one of them who did not know why he was in there.
|
||||
|
||||
Offlest was now slightly flustered but continues anyway. "I do not feel comfortable talking to a killer but I am ready to believe you since I was falsely accused myself; but don't get the wrong idea, I have been enduring this for over an year which makes me your senior."
|
||||
|
||||
/*clomp clomp clomp*/
|
||||
|
||||
=He is here for you, time to get you executed, do you have any last words?=
|
||||
|
||||
The steps were recognizable this time, and it took no time for Gle to reach out for the bars, hoping that the officer was there to get him out. The expected officer was in the frame again, except with an unexpected figure this time. The figure was short and elderly, most of his hair had already turned grey with only a few remaining the natural black that they were supposed to be. He was wearing a typical office worker's attire, a plain shirt and trousers with leather boots, not too different from what Gle was wearing. Suddenly something dawned on Gle. /How the hell did I overlook it, where is the prisoner's uniform? I do not see anyone wearing it here; there is no way this is a prison without a uniform./ He wanted to ask the officer about the time and the date, but could not as his head was now trying to put together his new train of thoughts.
|
||||
|
||||
"Here is your new roommate, make sure you are all nice to each other. The three of you were a noisy bunch already." The officer trailed off as he unlocked the door, shoved the office worker inside and locked it again. As soon as he was done, he went out of the frame leaving only the central tower of the panopticon containing only a couple of prison officers, visible.
|
||||
|
||||
"Hello there, I am Old." The office worker greeted them, terrifyingly composed, considering he is in a prison cell; but then again, Gle has been trying to do the same for a while now.
|
||||
|
||||
=What a funny little old man.=
|
||||
|
||||
"Yeah, I see ye're old." Hick, who was not much younger than the man he was talking to, was suddenly staring at him with a slight grin, still lying on the ground.
|
||||
|
||||
"No, I mean my name is Old Stuv, sir. I would prefer it if you could call me Stuv." The man unintentionally twitched his eyebrows while saying that.
|
||||
|
||||
"Nah, I'll roll with Old. I am Hick, that lady is Offlest, and that bum is Gle." Hick said with the same foolish grin from earlier.
|
||||
|
||||
Offlest was clearly offended by the careless remark but he was used to hearing it so he let it slide.
|
||||
|
||||
"Why are you in here?" Offlest asked while remaining on guard for anything that was about to come.
|
||||
|
||||
"That is not for you to know, young lady, I would rather keep it to myself, and tell you when the time comes." Old replied with a shrewd look on his face.
|
||||
|
||||
"The time? We are in the prison old man, get real; and I am no lady." Offlest said while trying to puff his chest out only making him look more feminine and cuter.
|
||||
|
||||
"Oh my, please pardon my ignorance, young man. The time is soon, so explaining it to you right now would be of very little use, but we have got an unexpected element in here". Old trailed off as he squinted his eyes at Gle who was hugging his knees by the cold brick wall.
|
||||
|
||||
Gle had no time for this tomfoolery, he had caught onto something more important yet basic. He was very puzzled and now even scared, his face showed all his emotions for everyone to read.
|
||||
|
||||
"What are you worried about young man? If I recall correctly, you must be Gle, right?" Old asked as he moved closer to Gle.
|
||||
|
||||
Gle just looked towards Old in complete silence with his mouth open as if he was about to say something, but he never planned on saying anything.
|
||||
|
||||
"Don't you worry young man, I know exactly what you are thinking about and the answers to your questions." Old extends his hands towards Gle who looked a like a kid pouting for candy.
|
||||
|
||||
=Do not trust this man, do not trust anyone, not even yourself.=
|
||||
17
posts/change.org
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Change?
|
||||
author: Amneesh
|
||||
tags: random
|
||||
published: August 10, 2022
|
||||
---
|
||||
I have decided to change (or revert) to a better person today.
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
People always either overestimate or underestimate me. It is pretty tough being average in the year 2022 where being pretentious is the norm. People praise you for even your little achievements and assume (or pretend that they are assuming) that you’re being humble when you deny the efforts they enforce upon you. And then there are people who would always put you on the sidelines without even knowing anything about you.
|
||||
|
||||
This, along with the your average Joe’s regrets/worries, has been eating away at me lately. I have been telling myself for at least a month now to make things go back to the way they were but I end up regretting about the time I wasted being down and depressed. It has been well over an year, I have decided not to worry about the wasted time and that is for two reasons. First is that obviously, it can’t come back. The other one is that the time cannot merely be wasted, for it holds no value, not for my philosophical self at least. And even if it does, ‘my’ time certainly does not, for I am not a God or one of his incarnations, in which case, time would be meaningless anyway.
|
||||
|
||||
This is not a long post for sure, just kind of a “life update” thing. The last thing I would change is stop trying to be happy. The pursuit of happiness and satisfaction has robbed me of the very exact thing. My mental slump has taught me that gloom is not all that bad. Why must Sisyphus just be happy? Why simplify things?
|
||||
@@ -2,6 +2,7 @@
|
||||
title: छवि
|
||||
author: AlpaViraam
|
||||
tags: poetry, hindi
|
||||
published: July 20, 2022
|
||||
---
|
||||
आधी रात पश्चात की कुछ स्वलिखित पंक्तियाँ।
|
||||
#+begin_export html
|
||||
21
posts/cut-my-hair.org
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: I cut my hair
|
||||
author: Amneesh
|
||||
tags: rant, religion
|
||||
published: May 08, 2023
|
||||
---
|
||||
|
||||
Hello, it has been ages since I last wrote something, life has been hard in ways more than one. As the post title says, I cut my hair, for the very first time, a few days before my 20th birthday.
|
||||
|
||||
It may not seem like a huge deal to many but being born in a Sikh family, although I was never initiated/baptised (Amrit Sanchar/ਅੰਮ੍ਰਿਤ ਸੰਚਾਰ), I have had my hair my entire life. That is the only way I have ever lived, with uncut hair and a turban when outside. I went through an atheist phase back in middle school like many, and that is when I decided I will get rid of my hair some day. Albeit I am not an atheist (or a theist for that matter) anymore, I got a haircut yesterday. I had been preparing for this passively for years and mentally for months at least, but a day later, it hit me like a truck.
|
||||
|
||||
I woke up feeling rather shitty about the whole situation. I cut my hair and that's what I wanted, then why am I mad about it? The answer is an amalgam of a number of reasons, one of the major ones being that it was not about Sikhi or religion anymore, it was about the culture.It is ironic but I have never cared about Sikh tenets that much despite knowing their significance; that is how it has been, but the hair and the turban have become my very identity. They are me and I am them, at least that's how it had been up until yesterday. Now I am left with this gaping hole in my chest with this new me. My relatives do not know about the entire ordeal but my parents and sister have accepted me for what I did and do not think ill of it anymore. The problem is selfish. I want to go back to how I was so much, and think about all this again. The entire problem stems from my coping mechanism for major changes; but even if I say that, everything is the same - friend and family are the same and so are my memories; however, I am not me anymore. I cannot bring myself to look into the eyes of other people, as if I have somehow defiled myself. I am completely aware that this is not the case, and people who have not been in this situation might find it offensive or hilarious at best, my upbringing has has had somewhat of an effect on how I think subconsciously. I should try to get rid of that.
|
||||
|
||||
Even Bulleh Shah did not know who they were, nor does any thinking mortal either. And Nanak said that the 'I' does not exist. But the fact remains that people are who they believe they are, and that is not at all wrong. Maybe that is why the lack of an existing identity is so excruciating. Being as reserved and introverted as I am, with no contact with the native Punjabi culture outside textbooks and the internet, why do I feel this strange lack of brotherhood? I am more fragile and weak than I thought. Doing this on purpose without being forced by external factors does not feel right. Maybe I was looking for a reason, but that would mean I indeed wanted what I did. Today is a rough day and tomorrow will be rougher, all I can hope for is for me to get through it.
|
||||
|
||||
Before closing, I must state that I did not do this to "look" good. I looked much better when I used to don a turban, I do not anymore. I do not hate or even dislike Sikhi or Punjabi culture; on the contrary, I very much like it since I somewhat grew up with it. The only reason I did it was because I did not want to be associated with a single group identity; turns out I miss it. This post was just me sharing my experience.
|
||||
|
||||
Short hair feel shitty and my beard is prickly. Maybe I will go back to being the way I was some day or maybe I won't.
|
||||
|
||||
-----
|
||||
Too many 'I's in this post, lol.
|
||||
41
posts/done-with-concourse-ci.org
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: I am done with ConcourseCI
|
||||
author: natto
|
||||
tags: ci, devops, concourse
|
||||
published: October 20, 2022
|
||||
modified: October 29, 2022
|
||||
enabletoc: true
|
||||
---
|
||||
|
||||
* Background
|
||||
I spent a lot of time (almost entire February/March and random days here and there) on learning concourse, setting it up (under Nomad with Vault on an aarch64 NixOS machine with limited resources, you know which one) and working on resources for it to work with Gitea earlier this year. I spent so much time on something that I am probably never going to use again and I hate myself for it.
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export html
|
||||
|
||||
* KIA
|
||||
What was lost? A lot of time and more time dwelling upon the formerly wasted time. I could have used that time for my many other hobbies or I could have spent more time on other stuff, like programming, that I actually enjoy but lack experience in.
|
||||
|
||||
* Why even
|
||||
I used concourse because of the shills that like to shill every relatively obscure thing out there. Just because it is hard to understand and has sophisticated (arguable) internals does not mean it is practical and fun. I do not hate concourse all that much but it fails to complete my needs and I refuse to work on resources for every little thing, maybe will work on improving the support some time later in the distant future, but not now. It might be good for complicated pipelines but mine are relatively simple.
|
||||
|
||||
* Starting over is hard
|
||||
Starting over again is seriously hard, how will I ever be able to justify the lost time? But ideally, I should not feel the need to justify it.
|
||||
|
||||
* What now
|
||||
I will use DroneCI as soon as I am done with rewiring this stupid pile of messs at my home. It is not much better than concourse but it fits my needs. I am afraid that it might just be another concourse and if that happens, I will give up on self hosting and move completely to GitHub+Actions or GitLab but let's try to avoid that since that is no +pain+ fun. Goodbye concourse, I do not hate you but we cannot be together.
|
||||
|
||||
-----
|
||||
|
||||
* UPDATE 1
|
||||
I might just use WoodpeckerCI but it lacks support for Vault. I shall try it regardless since [[https://github.com/woodpecker-ci/woodpecker/pull/915][this PR]] exists.
|
||||
|
||||
* UPDATE 2
|
||||
Okay so I spent an entire day experimenting; and while Woodpecker is very promising, it is stupid simple and thus, lacks what it takes to be a CI for more complex projects. Luckily, I do not have any complex projects, at least not right now. When I do, I shall move back to concourse perhaps and I hope that by that time, there will be multi arch support.
|
||||
|
||||
* UPDATE 3
|
||||
What timing! It is here, they added architecture specification for the registry image resource [[https://github.com/concourse/registry-image-resource/pull/36][here]]. I might go back to concourse in a few days and make a Gitea status resource.
|
||||
|
||||
* UPDATE 4
|
||||
I am dropping the idea of self hosting CI/CD for now because come on, who am I fooling here? I have never written a single code that requires CI/CD and when I do write such a thing, I might as well just use GitHub Actions.
|
||||
@@ -3,6 +3,7 @@ title: Dream Diary 1
|
||||
tags: dream_diary
|
||||
author: natto
|
||||
enabletoc: true
|
||||
published: June 27, 2022
|
||||
---
|
||||
|
||||
*WARNING: Highly chuunibyou content*
|
||||
20
posts/fear.org
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Fear
|
||||
tags: random
|
||||
author: AlpaViraam
|
||||
published: September 30, 2023
|
||||
---
|
||||
|
||||
One often wonders if it is possible to attain a better tomorrow - a better future; and if it is, then how? A common question with an obvious answer that it is all rooted in the fear of a worse tomorrow or of a “worse you”. This much is obvious, however, not many attempt to eliminate this fear and instead focus on getting over it by overcoming the trials it sets. Is there something more to it than fear? Is the desire, greed or want driven by this fear? Or is the fear driven by them? Does eliminating the fear eliminate the associated desires, and vice versa? What is the primal nature of this fear and what does it mean to be the “worse you”, when the only “you” is the “you” of the “now”? Many more questions may arise from this very obvious inference. However, do these questions even hold any value over determining whether fear is something to be taken hold of? Or is it some part of you that makes you the person you are? Perhaps it is both, or perhaps it is something that we can completely get rid of and get closer to understanding what it means to realise oneself, that is, the “you”. This text tries a little to explore these questions and possibly get closer to the answer.
|
||||
|
||||
* Ideology
|
||||
Fear is associated with, as petty as they may be, an individual’s ideologies, ambitions, feelings, etc. But the primary and the most important factor is the ideology. Ideologies have surrounded mankind since the dawn of it, it is not something new and nor is it much more advanced than it was in the older times; at least, when it comes to the core values. One may see oneself as an individual with a unique ideology, however, it is a fact that parts of this ideology are shared by many; making it less of an individual thing and more of what would be called a “product” - a product of things greater than the individual. To understand this, we must understand that this product may be a result of influences, feelings, senses, environment and of course, society. Even if a person is to seclude themselves, they are still living on the same planet, experiencing the same emotions and same senses, making them less of an individual but more of a collective idea. This is the part where fear comes in - the ideology or what can also be sometimes called the philosophy is many time so rigid that one would get so attached to it, very much like other material things, like money and family; that it can be a cause of fear for him to instantly get rid of it. Imagine building something up for a long time, perhaps even your entire life and then instantly giving it up when you find something more suited to the truth or subjectively “correct” or “better”. This is no easy feat to do - perhaps even harder than giving up on one’s most treasured belongings like their own children or spouse. Now what does this fear “actually” stem from? Why is it hard to give up on something you worked so hard on? One possible answer might be the individual himself. Encouraging deletion of the already present beliefs might lead one to question the credibility of his own existence or the individualism itself. This might just be the fear of not being “one” as in a separate “one”. As soon as the idea of “one” (or “you”) begins to dissolve, the fear takes hold. What can be inferred from this is that there is no such thing as a “you” - neither of the past, nor of the present and neither worse or better. The entity that is often associated with these idologies is not “you” but “you” is the ideologies themselves; and if we remember from earlier, ideologies are not something alien for every being, it is a shared belief, no matter how much the overlap is. Then why does the “you” and “me” exist? What is the “me” and “you”, and why fear losing it? This all sounds so childish but that is only because it is so. Rigid ideologies, for a lack of a better term, whether religious, political or philosophical, are pretty much the very definition of childish. This is because a “child” lacks, not the understanding of what is and what is not, but the understanding of what may be.
|
||||
|
||||
* Ego
|
||||
Why would one get troubled over abandoning their entire life’s meaning despite knowing very well that their life has no inherent impact? That is due to one’s idea about themselves. We earlier inferred that a person is nothing but his own idea, but it is now time to understand that the idea also includes something along the lines of what is one’s perception of self. Contrary to the popular belief I do not think life is something as romantic as what can be called “absurd”. Abandoning self and attributing happens to this absurdity does hold some truth in it but it comes off as plain lazy. What should be analyzed here is that living is fear; even if you “embrace this absurdity”, you are still living in the constant fear of tomorrow and have your own little ambitions for it. Then when we say that losing this fear might help in embracing the reality itself and being “happy”, we might not be completely wrong. But is the fear something to be conquered? Probably not; the fear from abandoning the ideology is at the core, the fear of abandoning your existence as discussed earlier; but let’s say we completely demolish this fear, then what is left? Certainly not you or even the idea of you. This is because having an idea of yourself is a very primary trait of being alive and has a streak of arrogance in it. Is the self so petty as to need an idea of self while not even realising what self might be. Perhaps having even an inkling of what the self might be would prevent this idea of self from existing. Acceptance is the natural step in conquering fear. However, this acceptance would eventually collapse the entire ego and the self. Is this the same as death, is it even achievable? I do not know, but probably not. Then is the best we can do is simplify the complexities involved and figure out what might be causing this fear at the high level to begin going into the process of even understading it? No, but it is certainly a good point to start.
|
||||
|
||||
* Desires
|
||||
Let’s explore this fear at a high level now since delving deep into the abyss has only raised more questions. As we discussed earlier, one “desires” a better or sustainable tomorrow, but what entails this betterment might be very different for each individual. Whatever these desires may be, these may be the easiest things to control so far, and doing this may also lead to being free of the desire of the better tomorrow and subsequently, the fear itself. This is what one would think, but isn’t being free of desires also a desire itself? As long as one continues to think of getting rid of these desires, he is only substituting one desire with another. To continue living is to indulge in desires - the desire to live, the desire to breathe, the desire to exist, we cannot deny that. So is the only solution of being free of fear dying? That is a reasonable solution and it probably works as well but do we really need to eliminate this fear? Well, objectively speaking, we do not “need” to do anything, “need” is nothing but an unavoidable desire; but addressing the question with another question - would eliminating fear, eliminate the desires and the self containing them, and subsequently simulate a state similar to that of death? Let me correct my earlier sentence, living is to indulge in fear and grief, for the lack of grief is very attractive. If there was no grief, there would not be any lack of it either; happiness is only a state achievable with the presence of grief. This dichotomy is what drives fear and it is not possible to live outside this very basic dichotomy.
|
||||
|
||||
* Fear
|
||||
Fear is something that cannot be eliminated without eliminating oneself. As stated earlier, thinking about eliminating fear is nothing but fearing having fear itself. It is not enough to accept and identify this fear to do something about it; as this will only lead to more fears and thus creating an illusion of seeing fear as a separate entity. One must understand that one is one’s fear itself. Trying to change this fear or trying to change oneself will only deepen the illusion; but when one realises the fear itself, the entire perspective is changed. Now one is the fear, and inevitably one is bound to undergo changes and when I say changes, I do not mean voluntary or changes by desires; since those are nothing but illusion of changes and the idea of the self. If you read this entire piece so far, and can only take away one thing from it, please realise that thinking of yourself or anything as a separate entity gives rise to this another so called entity called “fear” and you cannot just try to be one with it by wanting and trying to be one with it, for there is no “you” but an already inseparable entity.
|
||||
@@ -2,6 +2,7 @@
|
||||
title: Feign Chapter 1 - Shadripu
|
||||
tags: creative_writing, feign
|
||||
author: AlpaViraam
|
||||
published: June 05, 2022
|
||||
---
|
||||
"Ha". Thinking is an arduous task; however, not so much when you have nothing else to do. There he was, staring holes into the supposedly hostile air on this mundane summer day, as if anticipating the end of a decisive battle. /The hellish hours are over now./ He rose with the sluggishness of a dead sloth. His rough, yet feeble arms swept across the table as he tried to wrap things up, stopping briefly as he stared down the silver hourglass on the side for no more than three menacing seconds. The unpolished window doors were slammed shut, as he put his seemingly empty bag over his shoulders. After wiping his already clean hands against his worn-out clothes and checking the door lock for the third time, he finally left his shed of a shop; albeit wearing a poker face.
|
||||
|
||||
52
posts/filthy-1.org
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: Filthy - 1
|
||||
author: AlpaViraam
|
||||
published: November 1, 2022
|
||||
tags: poetry, filthy
|
||||
---
|
||||
|
||||
* 1
|
||||
#+begin_verse
|
||||
Trying to be calm
|
||||
Trying to be stealthy
|
||||
Rodents of the war
|
||||
Sneaking by the wealthy
|
||||
What is up with this vanity
|
||||
Why is this all so filthy?
|
||||
|
||||
Kindness was fraught
|
||||
Or so were we taught
|
||||
Mother was frail
|
||||
Father no worth more than nought
|
||||
We raise our heads to our golden God
|
||||
And pretend to feel his affirming nod.
|
||||
#+end_verse
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
#+begin_verse
|
||||
|
||||
The kind nod was interrupted
|
||||
All prayers utterly disrupted
|
||||
Stood there quietly the dandy man
|
||||
His dead man's ledger in his hand
|
||||
The royal gylph of inclination
|
||||
Told the rabid dog's next decision.
|
||||
|
||||
The jaded old man killd abruptly
|
||||
The dog, no the fox moved oh so subtly
|
||||
At least the poor man went away smiling
|
||||
Quiet were the tides of the misery riling
|
||||
Ma was horrified, desiring all but death
|
||||
Oh but she was spared.
|
||||
She would have liked the former nonetheless.
|
||||
|
||||
The dog had pups and the pups were fierce
|
||||
The harlot was taken surrounded by the spears
|
||||
Left was an animal, so very strange
|
||||
Might he be worth some silver change
|
||||
Look at him cry, look at him quiver
|
||||
Collar, but no clothes, look at him shiver.
|
||||
#+end_verse
|
||||
@@ -2,6 +2,7 @@
|
||||
title: Frustrations
|
||||
tags: rant
|
||||
author: Amneesh
|
||||
published: June 19, 2022
|
||||
---
|
||||
|
||||
I apologise in advance for my grammar and semi-vulgar overtones.
|
||||
14
posts/goodbye-nomad.org
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: Goodbye Hashistack
|
||||
author: natto
|
||||
tags: devops, hashicorp, nomad
|
||||
published: November 01, 2022
|
||||
modified: November 02, 2022
|
||||
---
|
||||
|
||||
I have decided to stop running HashiStack. As some of you might know, I only run a RaspberryPi4B for a server for power related reasons and lack of old cheap server hardware. It is not the best hardware to orchestrate containers on, especially when it already has NixOS installed. I do not use extravagant software and my setup from earlier this year was very overkill. I recently stopped using CI at all since I realised I do not really need it. This post is about similar feelings. I have spent a shit ton of time learning HashiStack this year and have decided to stop using it altogether in some time.
|
||||
|
||||
I just hope I will not regret wasting my time learning stuff that I am never going to use and will save me some headache in the future as well. Being a hobbyist is tough.
|
||||
|
||||
UPDATE 1: Man I do not know what to do, they do not take much resources (except Vault), but I can run Gitea and other small stuff on NixOS as services instead anyway, I do not see any point in running Nomad except when I need to spin up containers. I don't know man. I don't know.
|
||||
UPDATE 2: Yeah nah I will keep it, I will add Concourse CI again too, I do be indecisive like that, kill me please.
|
||||
85
posts/gsoc-2022.org
Normal file
@@ -0,0 +1,85 @@
|
||||
---
|
||||
title: Google Summer of Code 2022
|
||||
author: natto
|
||||
tags: gsoc, c
|
||||
enabletoc: true
|
||||
published: September 23, 2022
|
||||
enablenumbering: true
|
||||
---
|
||||
#+OPTIONS: ^:nil
|
||||
|
||||
Google Summer of Code has come to an end with this week. It has been a relatively new experience for me and I will be sharing it in this post.
|
||||
|
||||
* The goal
|
||||
The goal was to write an API for querying the KVM statistics in libvirt for which QEMU already has a QMP command called "query-stats".
|
||||
|
||||
* The importance
|
||||
Statistics are useful to developers (of libvirt and others) and users (of libvirt) alike. The more statistics, the better, and verbosity helps in that too. They are an important part of inspection and working on something involving libvirt, or it might help some hobbyist or enthusiast with whatever it is they want to accomplish. Regardless, they are bound to be of some use at some point, if not right now, and if QEMU is convenient enough to provide them, then why not parse them?
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
* The work
|
||||
This might come off as rude or unexpected but the work itself was nothing much really. Things were relatively easy to understand and most problems were caused by either my stupid schedule and my lack of basic common sense, and my clumsiness is always there to blame; the mentors always helped me with whatever I needed help with. I will continue to look after at least this part of the code and help in whatever way I can, even with other things in libvirt and surrounding projects, if possible.
|
||||
|
||||
* Why even do it
|
||||
I had been on a long break from programming (and IT tinkering) for around an year. This seemed like a very nice and relatively easier place to get started again and at the same time learn new stuff as well. I won't lie that the stipend is not appealing for a freshman either.
|
||||
|
||||
* Mistakes
|
||||
I kept on piling up stupid amounts of side stuff to do alongside GSoC when I had my college to attend to as well. Things got pretty bad, I tried keeping up apperances everywhere but it was pretty obvious anyway.
|
||||
|
||||
* What I learnt
|
||||
- Well interacting in a mailing list was a first, always was curious and there was this mysterious air around it, turns out it is not exactly mysterious.
|
||||
- My mentors were the best part of the project, learnt that kind people do, in fact, exist.
|
||||
- How cover letter and commit messages are really important. This might seem obvious but it is still a learning experience in practice and a very important thing to keep in mind.
|
||||
- How cool GLib is in preventing memory leaks and stuff. This was my first time working with it.
|
||||
- How working on something is not always going to be fun and exciting but is still important.
|
||||
- And most importantly, why taking up a lot of work in the middle of a student program and being a full time student is a very bad decision.
|
||||
|
||||
* The mentors (and the organization)
|
||||
They were the saving grace for my miserable condition. Super kind people and super patient as well, helped me whenever I had problems and never overlooked any part of their mentoring. They kept up with my pitiable schedule, although I was the one making excuses for it. They taught me a lot of stuff too that comes with working on a project like =libvirt=. If I were to become an employee of a distinguished firm or a project, I would want to be like them for sure; cannot praise them enough as a mentee.
|
||||
|
||||
* The patches
|
||||
** Merged
|
||||
So far only the support for "query-stats" has been merged and implemented for querying the halt poll status for vCPUs.
|
||||
*** [[https://listman.redhat.com/archives/libvir-list/2022-August/233737.html][qemu: add an API for "query-stats" QMP command]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-August/233735.html][qemu_monitor: add qemuMonitorQueryStats]] [[[https://gitlab.com/libvirt/libvirt/-/commit/3b265520f17cdc2845c35c80517f1acd38f474ee][GitLab]]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-August/233736.html][qemu_capabilities: add "query-stats" QMP command to the QEMU capabilities]] [[[https://gitlab.com/libvirt/libvirt/-/commit/ceaa74dfe059878ddbb52cbe583dfad5812391f5][GitLab]]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-August/233734.html][qemu_driver: use qemuMonitorQueryStats to extract halt poll time]] [[[https://gitlab.com/libvirt/libvirt/-/commit/6353e8f5c1f8336a58c2fde93c1c17de224a4dfb][GitLab]]]
|
||||
|
||||
** Unmerged
|
||||
*** [[https://listman.redhat.com/archives/libvir-list/2022-September/234197.html][qemu: add support for query-stats-schemas]]
|
||||
First up is the basic API support for the "query-stats-schemas" QMP command and its usage to get vCPU and VM stats, they need some refinement.
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234196.html][qemu_monitor: add qemuMonitorQueryStatsSchema]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234198.html][qemu_capabilities: add "query-stats-schemas" QMP command to the QEMU capabilities]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234200.html][qemu_domain: add statsSchema to qemuDomainObjPrivate]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234199.html][qemu_monitor: add qemuMonitorGetStatsByQOMPath]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234202.html][qemu_driver: add the vCPU stats by KVM to the current stats]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234201.html][qemu_driver: add new stats worker qemuDomainGetStatsVm]]
|
||||
|
||||
*** [[https://listman.redhat.com/archives/libvir-list/2022-September/234402.html][add support for histograms as a virTypedParameterType]]
|
||||
Next is the even more unrefined additon of histograms to virTypedParameterType to support histograms which were previously ignored.
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234404.html][virtypedparam: add virHistogram as a virTypedParameterType]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234403.html][add a global feature for supporting virHistogram]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234405.html][virtypedparams: add VIR_TYPED_PARAM_HISTOGRAM_OKAY]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234406.html][qemu_driver: add histograms to the stats]]
|
||||
+ [[https://listman.redhat.com/archives/libvir-list/2022-September/234407.html][remote: add virHistogram support for RPC as a virTypedParameterType]]
|
||||
The commit messages for this set are more hideous than I initially thought.
|
||||
|
||||
* What comes next
|
||||
** Stage 1 (with querying stats in libvirt)
|
||||
A bunch of things really
|
||||
+ I have some tests for query-stats and query-stats-schemas that I shall post as soon as possible.
|
||||
+ Refining the current patches and getting them merged (and the tests mentioned above too).
|
||||
+ Some extensions like working with units and exponents provided by the schema to provide more verbose statistics.
|
||||
+ Keeping an eye on what changes are made with QMP or the relevant commands upstream (QEMU source).
|
||||
|
||||
** Stage 2 (with libvirt)
|
||||
Virtualisation is something I always wanted to learn about and while I learnt about a lot of things, I have barely even scratched the surface. =libvirt= being an API collection for major hypervisors is a good starting point for learning about the data communicated between these cogs, so I shall keep on learning and contributing to it.
|
||||
|
||||
** Stage 3 (with other projects)
|
||||
QEMU piques my interest, but I barely know anything about virtualisation besides whatever I "worked" on. I shall learn more about it along with the surrounding projects before I go deep into the QEMU/KVM source. That definitely requires me to get rid of or complete all the tasks I have on my hands right now.
|
||||
|
||||
* Final word
|
||||
It was a learning experience, authough refreshing, the severity of my schedule made it frustrating; however, learning stuff beyond programming was nice. I could have gone for more "interesting" projects and maybe I would have had a good time with it but this was a good returning point; also helped me learn that life is not an amusement park and there are bound to be things that are going to be boring and someone has to do them. Besides this was not entirely boring, learnt new stuff. Maybe I will go back to programming and tinkering with stuff again after all.
|
||||
77
posts/illusions.org
Normal file
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: Illusions
|
||||
author: AlpaViraam
|
||||
tags: poetry, english
|
||||
published: August 27, 2022
|
||||
---
|
||||
|
||||
* 1
|
||||
#+begin_verse
|
||||
The thought strata collapses on its own,
|
||||
Like a tower of cards falling apart,
|
||||
Except that the wind is absent,
|
||||
Or so it seems.
|
||||
|
||||
The aesthetics are purely an illusion,
|
||||
Lost in the pursuit of objectivity,
|
||||
Gliding through the wishful sky,
|
||||
Wishing for what one is not.
|
||||
|
||||
The tears are flown into a river,
|
||||
But the cause is left unknown,
|
||||
Unknown to whom is not a question,
|
||||
But just a yearned illusion.
|
||||
|
||||
The innards were spoiled long ago,
|
||||
Or maybe even moved to another dimension,
|
||||
Or maybe just another illusion,
|
||||
Or maybe a result of believing in one.
|
||||
#+end_verse
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
* 2
|
||||
#+begin_verse
|
||||
The tower that once existed was tall,
|
||||
But now that same one is not,
|
||||
Or maybe it was never,
|
||||
But it was still magnificent,
|
||||
This is what the the self desires,
|
||||
What was then an ugly monument,
|
||||
Now is all glitters,
|
||||
But all glitters can be gold,
|
||||
For the observer is the sole god.
|
||||
|
||||
The desire to rebuild it is present,
|
||||
Absent is the reasoning,
|
||||
The longing for the identity is present,
|
||||
Absent are the amends,
|
||||
Demolishing and building towers is not complicated,
|
||||
But breaking the cycle is hard,
|
||||
Maybe the tower was never needed at all,
|
||||
Present is already a synagogue.
|
||||
#+end_verse
|
||||
|
||||
* 3
|
||||
#+begin_verse
|
||||
The meaning once existed,
|
||||
Or was it another illusion of it,
|
||||
The absense is excruciating,
|
||||
Although the truth is now known,
|
||||
The longing for one is still inevitable.
|
||||
|
||||
The taste is absent,
|
||||
And so is the thrill,
|
||||
Return the goal that once existed,
|
||||
For without it I am no one,
|
||||
The reality is what I make.
|
||||
|
||||
Fearing being a no one,
|
||||
Fearing being an outcast,
|
||||
It all makes no sense,
|
||||
Who is this no-one,
|
||||
Meaning was always a farce,
|
||||
Identity was the desire all along.
|
||||
#+end_verse
|
||||
19
posts/indic-ligatures.org
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Indic ligatures in terminal emulators
|
||||
author: natto
|
||||
tags: terminals, indic
|
||||
published: November 11, 2022
|
||||
---
|
||||
* Preface
|
||||
I have been using the [[https://st.suckless.org/][simple terminal]], or =st=, by [[https://suckless.org ][suckless.org]] for almost two years now, and it has been great. Unfortunately it has fixed width unicode support and hence hindi ligatures cannot be rendered properly. There is a [[https://st.suckless.org/patches/ligatures/][ligatures patch]] available but all it does it combine fixed width LTR ligatures. So I spent the last 8 hours or so looking for a way to implement it. Here is what I learnt.
|
||||
|
||||
* The problem
|
||||
The only problem with rendering indic fonts on terminal is that they cannot be monospace and has have variable widths, which are much harder to implement than one realises. The ligature combining stuff can be done using =harfbuzz=, =pango=, =fribidi= / =ubidi(ICU)= or their combination without any problem. The problem is the varying widths and how the terminal is supposed to be a grid of rows and =$COLUMNS=. Also I need perfect input for indic languages with =fcitx4= (I use m17n methods just for the context). These problems have haunted me for months now, and I finally decided to confront them.
|
||||
|
||||
* The candidates
|
||||
+ [[https://github.com/arakiken/mlterm][mlterm]] promises to solve these issues but its primary focus is arabic languages from what I understand, and Indic languages are not rendered correctly.
|
||||
+ [[https://github.com/KDE/konsole][konsole]] by =KDE= solves the rendering stuff beautifully, however it has problem with inputting =halant= and the following character. Another problem it has is incorrect cursor rendering position when inputting. However it is good enough for displaying Indic text in terminal.
|
||||
+ [[https://github.com/emacs-mirror/emacs/][Emacs eshell]] is perfect when it comes to rendering, inputting and navigating the text with not just indic languages but many other languages as well, however it requires =GNU Emacs=. And as obvious as it is, GUI stuff usually does render ligatures properly, so nothing surprising there.
|
||||
|
||||
* The compromise
|
||||
I wil use Emacs for any Indic language related stuff and st for everything else, but I guess that is fine since English is the lingua franca when it comes to computers.
|
||||
55
posts/khoj.org
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: खोज
|
||||
author: AlpaViraam
|
||||
tags: poetry, hindi
|
||||
published: September 08, 2022
|
||||
---
|
||||
|
||||
#+begin_verse
|
||||
आत्मनिष्ठता सहित
|
||||
निर्णय लिए हजार,
|
||||
आत्म ही स्वयं ना था
|
||||
रह गया मन लाचार।
|
||||
|
||||
गलत अर्थ ने किया वश
|
||||
बाहरी सौंदर्य ने माया डाली,
|
||||
कुछ मूल खो रहा था मन
|
||||
जल ही भूल गया था माली।
|
||||
#+end_verse
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
#+begin_verse
|
||||
|
||||
लालची नेत्र सराह रहे थे
|
||||
अद्भुत मनोरम दृश्य रंगीन,
|
||||
जिज्ञासु मन ने नमक डाला
|
||||
पूर्व घाव हुआ संगीन।
|
||||
|
||||
यथार्थ सार्थक लगने लगा
|
||||
निर्णय लेंगे वे,
|
||||
प्रेक्षक का क्या ही मूल्य
|
||||
ज्ञान सदैव रहे।
|
||||
|
||||
आत्मबोध तो हुआ नहीं
|
||||
अबोध्य जगत का होगा बोध,
|
||||
सीमा निश्चित हुई नहीं
|
||||
काम प्रति क्या ही निरोध।
|
||||
|
||||
सीमा खोजे ना मिली
|
||||
खोज रही निष्फल,
|
||||
खोज लिया अर्ध संसार
|
||||
चित्त ना रहा अटल।
|
||||
|
||||
पराजित खोजी लौट आए
|
||||
अचंभित व धनहीन,
|
||||
कठोर एहसास हुआ फिर यह
|
||||
धन था बहुत करीब।
|
||||
|
||||
संतोष की लहरें चलने लगी
|
||||
ठीक हुए अधिकांश रोग,
|
||||
अंतिम जिज्ञासा ने उठाया प्रश्न
|
||||
इस धन का अब क्या है उपयोग।
|
||||
#+end_verse
|
||||
101
posts/qmk-keychron-k8-pro.org
Normal file
@@ -0,0 +1,101 @@
|
||||
---
|
||||
title: QMK for Keychron K8 Pro
|
||||
author: natto
|
||||
enabletoc: true
|
||||
tags: qmk, c
|
||||
published: September 7, 2022
|
||||
---
|
||||
* <<introduction>> Introduction
|
||||
I got my first mechanical keyboard and used QMk for the very first time. Messing around with QMK on Keychron K8 Pro is straightforward but people might struggle to find the default implementation for the board, so if that's what you're looking for, it is [[https://github.com/Keychron/qmk_firmware/tree/6829fbd074c11e731b92be11e7fa857b8ab9baba/keyboards/keychron/k8_pro][right here]], no need to waste your time.
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
* Requirements
|
||||
+ Git
|
||||
+ C compiler (GCC)
|
||||
+ QMK cli
|
||||
+ nix package manager (optional)
|
||||
|
||||
* Starting
|
||||
First wise thing to do would be fetching the default implementation for the board by Keychron, you can find it at the link in the [[introduction][introduction]]. Cloning the upstream repository or this fork would be a tremendous waste of time and storage, so I will just fetch the current revision here (make sure to update the branch later or just use the revision hash).
|
||||
|
||||
#+begin_src sh
|
||||
git clone --branch bluetooth_playground --depth 1 git@github.com:Keychron/qmk_firmware.git
|
||||
#+end_src
|
||||
|
||||
Next, you should get the QMK cli if you already do not. Install it using your favourite package manager but if you use nix, you can compile it easily from the current source without hassle from the QMK directory
|
||||
|
||||
#+begin_src sh
|
||||
nix-shell
|
||||
#+end_src
|
||||
|
||||
and using the nix cache is always an option.
|
||||
|
||||
You might want to setup the QMK directory next
|
||||
|
||||
#+begin_src sh
|
||||
qmk setup -H /path/to/qmk_firmware
|
||||
#+end_src
|
||||
|
||||
* Compiling and flashing
|
||||
Very straightforward and from the QMK Wiki.
|
||||
|
||||
#+begin_src sh
|
||||
qmk compile -kb keychron/k8_pro/ansi/rgb -km default -j 8
|
||||
#+end_src
|
||||
|
||||
+ =-kb= takes the keyboard name and specifications. I have an RGB one with the ANSI layout, so I will use that.
|
||||
+ =-km= takes the keymap. The default one will do now for now.
|
||||
+ =-j= is a simple =-jobs= flag for compilation.
|
||||
|
||||
Now, before flashing you must enter the DFU (bootloader) mode. Doing this on K8 Pro is slightly different than some other Keychron boards. From the manual:
|
||||
+ Slide the switch to "OFF".
|
||||
+ Connect the USB.
|
||||
+ Hold the reset button (under your spacebar keycap).
|
||||
+ Slide the switch to "Cable".
|
||||
+ Release the reset button
|
||||
|
||||
Flashing is similar to compiling
|
||||
#+begin_src sh
|
||||
qmk flash -kb keychron/k8_pro/ansi/rgb -km colemak-dhm -j 8
|
||||
#+end_src
|
||||
|
||||
Some things to note here
|
||||
+ You might require elevated privileges to flash
|
||||
+ Not compiling first will automatically compile it before flashing.
|
||||
+ There is a short-hand for both compiling and flashing but it is cleaner this way.
|
||||
|
||||
* Keymaps
|
||||
As evident from the code, for the default keymap, there are four [[https://github.com/qmk/qmk_firmware/blob/f73330755153912f18619cfeaefe0270394e0daf/docs/feature_layers.md][layers]] in the code.
|
||||
|
||||
#+begin_src c
|
||||
enum layers{
|
||||
MAC_BASE,
|
||||
MAC_FN,
|
||||
WIN_BASE,
|
||||
WIN_FN
|
||||
};
|
||||
#+end_src
|
||||
|
||||
I personally use neither a Windows machine nor a Macintosh, the switch is just a glorified pin to toggle between layer 0 and layer 2, so I decided to change the layers to Colemak and QWERTY layouts instead; keeping a common MO layer =ALT_KEYS= bound to the "fn" key for both the layouts. So it now looks like this
|
||||
|
||||
#+begin_src c
|
||||
enum layers{
|
||||
COLEMAK_DHM,
|
||||
QWERTY,
|
||||
ALT_KEYS
|
||||
};
|
||||
#+end_src
|
||||
This demands a change for the toggle to be between layers 0 and 1 instead of 0 and 2. This can be easily done by making the following change on =k8_pro.c:63=
|
||||
|
||||
#+begin_src diff
|
||||
- default_layer_set(1UL << (active ? 2 : 0));
|
||||
+ default_layer_set(1UL << (active ? 1 : 0));
|
||||
#+end_src
|
||||
|
||||
I will experiment with the unicode later today and add more stuff like Devanagri, Gurmukhi and the Roman accented symbols.
|
||||
|
||||
* Conclusion
|
||||
It was pretty easy to follow the documentation and was fun. I have not yet checked all the things QMK is capable of but I definitely will. The implementations for Siri and Cortana are very messy and ugly but can be used as an example for a clean implementation for maybe, something other than Siri or Cortana.
|
||||
62
posts/the-nugatory-fetish-1.org
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: The Nugatory Fetish 1 - Dionysian Magnet
|
||||
author: AlpaViraam
|
||||
tags: the_nugatory_fetish, creative_writing
|
||||
published: October 01, 2022
|
||||
---
|
||||
|
||||
The primordial sense of harmony is not something unbeknownst to humans, modern and ancient alike. However, it is not something to look up to, for some people at least. He stood there dumbfounded amidst this dancing plague of a gathering; which was, in fact, less about dancing and more about stimulus. His plain blue shirt and black trousers combined with the monotone shaded glasses that screamed "nerd', were something out of the place for an environment like this; his furrowed brows and glabellar lines betrayed his age as well. The lights danced all around the hall, reinventing flamenco by going back and forth between heaven and nether, and the music — 80 decibels of pure NuPop blasting through the premium grade speakers installed all over this posh establishment. This, combined with his lack of sleep made the twenty-five-year-old Mimi Lyngdoh annoyed, which was unusual for a man as composed and professional as him. Well, as they say; everything has a limit, including thee, for divinity is not thy forte.
|
||||
|
||||
#+begin_export html
|
||||
<!--more-->
|
||||
#+end_export
|
||||
|
||||
He took a piece of paper out of his breast pocket and examined it for a few seconds before putting it back where it belonged. "This is indeed the correct place, what kind of asshole calls an attorney anonymously to a place like this?" He asked himself; annoyed and frustrated with traveling out so far. His last bout of annoyance was ten minutes ago when he was asked to stand outside this incredible, rich establishment despite him having shown his bar council identity card. This was no place for people who were anything below filthy rich, he understood that; he was not rich but he was not exactly poor either, at least not anymore. This place was a clear opposite of the West Uldic states, and that is because this was no West Uldic state, this was the Uldic capital, Bhikan; that too, the eastern border of it. This place was as far away from those peasants as it could be, but this was not the source of the surplus annoyance.
|
||||
|
||||
Everything has a subjective value, and Lyngdoh, he valued his time more than anything; always striving to maximize its potential use, no matter the circumstance. Today he had traveled all the way from West Bhikan to the eastern border, a trip of no less than fifty kilometers, it cost him his entire afternoon. He started looking around in the club for this anonymous client of his; the next hour was spent scouring the entire place, he asked every guy who seemed rich, nouveau or vieux. The result was that the only thing he felt now was guilt and regret, feelings staple to him, feelings he hated and embraced simultaneously. He felt like he had already wasted too much time getting there and an hour more looking for this guy, there would not be anything to justify that wasted time and he could not stand the thought of that, besides he had not acquired the thing that lured him out here in the first place. So, he spent the next hour scouring the rest of the people and finally found his caller, Bala Dutt.
|
||||
|
||||
There he lay, intoxicated, or at least that was the judgment Lyngdoh made based on the fact that there were a few bottles of the "Kissan Twenty-Five Year Old", all empty, on the table in front of him. Like all the other people in the establishment, which by the way, were all guys, he had two girls, not natives, in each of his arms as he giggled in presence of the man who risked his precious time for him. Almost none of his current state was surprising, except his clothes; his clothes were not much different from Lyngdoh's. In fact, they might even have the same trousers, the shirts were different but they were similar in the way that they both reeked of a commoner. They even looked the same age but Lyngdoh's professional demeanor made him look way older.
|
||||
|
||||
Although Lyngdoh was taken aback, this was not the most surprising thing he had seen in his life. He was enraged, but he could not figure out why a man would relax like this after committing a crime, omit the details on a call for an attorney, or be rich and still dress up like this. It is weird how copper can stand out among gold when allowed to. The only reason he was even here was that this was his first job as an attorney and not just a lawyer, that he took up. Yet, he was an almost perfect man, a model Apollonian figure; how could he be angry, he must learn to control his emotions as a man, and so he did. Now that he was in presence of another person, a client, no less, he could not afford to display such barbaric emotions and thus, he relaxed his brows and almost put on what seemed like a smile.
|
||||
|
||||
"Now that I am here, shouldn't you start describing what kind of trouble you are in? I might be your new attorney, so no need to hide the details. Besides, it has already been two hours and a half since the time we agreed upon. I am surprised that you are still here, with some company even." Lyngdoh reassured Dutt while eyeing the two beauties with visible discomfort on his face.
|
||||
|
||||
Dutt looked at his wrist, only to realize he did not have a watch, and burst into laughter which his company followed. "Yes, I called up that Barnaclaw firm, but I am fairly certain, I talked to a woman on the phone. She even had this cute name." Dutt makes a comical face, pretending to think.
|
||||
|
||||
"Mimi. I am Lyngdoh Mimi and I am very certain I do not sound feminine at all." Lyngdoh meant that and there were no hidden lies or embarrassment. He really did not sound feminine at all, it was Dutt's booze talking.
|
||||
|
||||
"I apologize, I did not mean to offend you in any way, I just wanted a fairly competent lawyer, that is it, really." Dutt started rubbing his hands like the cunning Ilai merchants, but there was no hidden malice, and as weird as it sounds, he was a terrible truth-teller. He gestured the ladies to go away and so they did, and in a swift motion offered Lyngdoh the seat, no words spoken. Lyngdoh gestured back by holding his right hand up, to which Dutt responded by shrugging it off, literally.
|
||||
|
||||
Lyngdoh put his hand behind his back, in an authoritative manner and so, the twins were united. "It is alright, I do not mind such petty things. A lot of time has already been wasted, so let us get down to the details. I believe you are intoxicated, since the call at least, you really sounded sober then; but let us discuss things anyway since the radioman was so kind to not put you on when I called later." He spoke quickly to showcase his dominance by being more sober, but it had little effect as Dutt was still catching up.
|
||||
|
||||
"I am sorry, look, I was busy with the ladies then, and asked the radioman to not pick up any calls for me, since I would not have answered them anyway. But damn, I certainly did not expect you to be an Ahwait." Dutt tried to change the topic, but Lyngdoh decided to play along anyway.
|
||||
|
||||
"As your potential future legal counselor, I feel like I should tell you that referring to the West Uldic minorities as Ahwaits is racist and illegal; and I personally do not tolerate this either." Lyngdoh slammed his fist hard on the table causing the only two bottles standing upright to fall over, while his face was still stuck with the calm expression from earlier, making him scarier. "This is common knowledge, what the hell is wrong with these people", he added under his breath.
|
||||
|
||||
"I am once again, very sorry for my indecent behavior. This in no way an argument in my favor but it is not just me, everyone calls West Uldic people Ahwaits when they are, in fact, Uldic, just like me and you!" Dutt made this weak statement definitely to strengthen his side of the argument, and failed miserably as it did not provoke Lyngdoh at all.
|
||||
|
||||
"You have apologized for three times in a row, and while I, in no way want to believe this, are you trying to omit the details on purpose? Can you even remember them?" Lyngdoh grew a little skeptical now and narrowed his already narrow eyes even further.
|
||||
|
||||
"No, that's not it, I can tell you about the incident but I will need some time to remember every detail." Dutt said in a very deep tone, trying to sound sober, and since he was not even mocking Lyngdoh and was completely serious, he sounded like a complete moron with that face.
|
||||
|
||||
Lyngdoh was now growing very weary, but as long as the story is not too extreme for him, he can take up the case and most importantly justify his time here. "Alright, I am listening." He finally sat down and leaned in on Dutt; he felt as if the booze in his breath condensed and was now perforating his skin, but it was not his first time in such company.
|
||||
|
||||
"So I and my friends were drunk as skunks a few days ago, and I beat up a few kids, probably juveniles," Dutt started speaking as Lyngdoh let loose his true angry and fierce expression for the first time since the beginning of this conversation. Dutt noticed it and continued, "but hey, it was for a good reason, found those punks pissing on and jerking off to my precious Crudson 400; and for what it's worth, we went very easy on them." Lyngdoh eased his expression and Dutt followed.
|
||||
|
||||
"Okay, vandalism of your private property can be used in our favor, good. When and did this exactly happen? When was the Immediate Crime Report filed?" Lyngdoh pressed on for questions, very motivated by his scrupulous use of time.
|
||||
|
||||
"As I said, a few days ago, I will need time to remember the exact date and time and as for where, a few alleys away from this place." Dutt answered like a child with no hint of deception or pride.
|
||||
|
||||
"And what about the ICR?" Lyngdoh reminded Dutt about his latter question.
|
||||
|
||||
"What is that?" Dutt asked, even more childlike this time.
|
||||
|
||||
"The Immediate Crime Report, the kids filed one, did they not?" Lyngdoh asked, confused, as clear signs of fatigue emerged on his face from his long day.
|
||||
|
||||
"Did they? How am I supposed to know?" Dutt enquired like a kid lost at a railway station.
|
||||
|
||||
"So there might be a chance I would not even be needed as an attorney? From what I understand, chances are, those kids are piss poor and are not going to bother with filing a report against the big rich guy here. You, sir, have wasted my entire day." Lyngdoh was angry but his face showed no such signs, not because he was hiding it this time, but because he was simply very exhausted.
|
||||
|
||||
"Hey listen, I am the big rich guy, right? I am going to hire you as my attorney and law consultant, I have all the money." Dutt spoke, puffing out his chest. Lyngdoh felt a sharp tingle in the back of his neck but could not explain why.
|
||||
|
||||
"Okay then, let us discuss the terms and details for that once you are sober enough, here is my home radio address. Call me tomorrow between seven and noon." Lyngdoh took out the same piece of paper from before, flipped it and wrote down some twelve letters-long address, and shoved it down Dutt's pocket without his consent. He got up and went out without looking back even once or gesturing the parting. Little did he know, he made a huge mistake, right at the end there.
|
||||
47
sitemap.xml
@@ -1,47 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset
|
||||
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
|
||||
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
|
||||
<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
|
||||
|
||||
|
||||
<url>
|
||||
<loc>http://weirdnatto.in/</loc>
|
||||
<lastmod>2022-05-12T14:58:07+00:00</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://weirdnatto.in/about.html</loc>
|
||||
<lastmod>2022-05-12T14:58:07+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://weirdnatto.in/contact.html</loc>
|
||||
<lastmod>2022-05-12T14:58:07+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://weirdnatto.in/archive.html</loc>
|
||||
<lastmod>2022-05-12T14:58:07+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://weirdnatto.in/posts/2022-12-05-placeholder.html</loc>
|
||||
<lastmod>2022-05-12T14:58:07+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://weirdnatto.in/archive/tags.html</loc>
|
||||
<lastmod>2022-05-12T14:58:07+00:00</lastmod>
|
||||
<priority>0.64</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>http://weirdnatto.in/archive/tags/amaang.html</loc>
|
||||
<lastmod>2022-05-12T14:58:12+00:00</lastmod>
|
||||
<priority>0.64</priority>
|
||||
</url>
|
||||
|
||||
|
||||
</urlset>
|
||||
245
src/Main.hs
Normal file
@@ -0,0 +1,245 @@
|
||||
--------------------------------------------------------------------------------
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
import Data.Functor.Identity (runIdentity)
|
||||
import Data.Maybe (isJust)
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Hakyll
|
||||
import System.Environment (getEnv)
|
||||
import System.FilePath (replaceDirectory, replaceExtension, takeDirectory)
|
||||
import System.IO.Unsafe (unsafePerformIO)
|
||||
import qualified System.Process as Process
|
||||
import Text.Pandoc (
|
||||
WriterOptions (
|
||||
writerHighlightStyle,
|
||||
writerNumberSections,
|
||||
writerTOCDepth,
|
||||
writerTableOfContents,
|
||||
writerTemplate
|
||||
),
|
||||
)
|
||||
import qualified Text.Pandoc as Pandoc
|
||||
import Text.Pandoc.Templates (Template, compileTemplate)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
main :: IO ()
|
||||
main = hakyllWith config $ do
|
||||
let individualPatterns = fromList ["about.org", "contact.org", "links.org", "documents/cv.org"]
|
||||
let copyPatterns = fromList ["images/**", "fonts/*", "documents/*"]
|
||||
|
||||
match "images/**" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "fonts/*" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "css/*" $ do
|
||||
route idRoute
|
||||
compile compressCssCompiler
|
||||
|
||||
match "*pdf" $ do
|
||||
route idRoute
|
||||
|
||||
match individualPatterns $ do
|
||||
route $ setExtension "html"
|
||||
compile $
|
||||
pandocCompiler
|
||||
>>= loadAndApplyTemplate "templates/default.html" defaultCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
-- kindly stolen from https://github.com/jaspervdj/jaspervdj/blob/b2a9a34cd2195c6e216b922e152c42266dded99d/src/Main.hs#L163-L169
|
||||
-- also see helper functions writeXetex and xelatex
|
||||
match "documents/cv.org" $
|
||||
version "pdf" $ do
|
||||
route $ setExtension "pdf"
|
||||
compile $
|
||||
getResourceBody
|
||||
>>= readPandoc
|
||||
>>= writeXeTex
|
||||
>>= loadAndApplyTemplate "templates/cv.tex" defaultCtx
|
||||
>>= xelatex
|
||||
|
||||
tags <- buildTags "posts/*" (fromCapture "archive/tags/*.html")
|
||||
|
||||
tagsRules tags $ \tag pattern -> do
|
||||
let title = "Posts tagged \"" ++ tag ++ "\""
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll pattern
|
||||
let tagCtx =
|
||||
constField "title" title
|
||||
<> constField "tag" tag
|
||||
<> listField "posts" (postCtx tags) (return posts)
|
||||
<> defaultCtx
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/tag.html" tagCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" tagCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
match "posts/*org" $ do
|
||||
route $ setExtension "html"
|
||||
compile $ do
|
||||
identifier <- getUnderlying
|
||||
toc <- getMetadataField identifier "enabletoc"
|
||||
numbering <- getMetadataField identifier "enablenumbering"
|
||||
let writerOptions' = maybe defaultHakyllWriterOptions (const $ writerOptions $ isJust numbering) toc
|
||||
pandocCompilerWith defaultHakyllReaderOptions writerOptions'
|
||||
>>= saveSnapshot "content"
|
||||
>>= loadAndApplyTemplate "templates/post.html" (postCtx tags)
|
||||
>>= loadAndApplyTemplate "templates/default.html" (postCtx tags)
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["archive.html"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll "posts/*"
|
||||
let archiveCtx =
|
||||
listField "posts" (postCtx tags) (return posts)
|
||||
<> constField "title" "Archives"
|
||||
<> field "tags" (\_ -> renderTagList tags)
|
||||
<> defaultCtx
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/archive.html" archiveCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" archiveCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
match "index.html" $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
let indexCtx = defaultCtx
|
||||
|
||||
getResourceBody
|
||||
>>= applyAsTemplate indexCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" indexCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["rss.xml"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
let feedCtx = postCtx tags <> bodyField "description"
|
||||
posts <- fmap (take 10) . recentFirst =<< loadAllSnapshots "posts/*" "content"
|
||||
renderRss rssFeedConfiguration feedCtx posts
|
||||
|
||||
-- https://robertwpearce.com/hakyll-pt-2-generating-a-sitemap-xml-file.html
|
||||
create ["sitemap.xml"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll "posts/*"
|
||||
individualPages <- loadAll individualPatterns
|
||||
let pages = posts <> individualPages
|
||||
sitemapCtx =
|
||||
listField "pages" (postCtx tags) (return pages)
|
||||
<> defaultCtx
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/sitemap.xml" sitemapCtx
|
||||
|
||||
match "templates/*" $ compile templateBodyCompiler
|
||||
where
|
||||
-- https://github.com/jaspervdj/jaspervdj/blob/b2a9a34cd2195c6e216b922e152c42266dded99d/src/Main.hs#L214-L218
|
||||
writeXeTex :: Item Pandoc.Pandoc -> Compiler (Item String)
|
||||
writeXeTex = traverse $ \pandoc ->
|
||||
case Pandoc.runPure (Pandoc.writeLaTeX Pandoc.def pandoc) of
|
||||
Left err -> fail $ show err
|
||||
Right x -> return (T.unpack x)
|
||||
|
||||
-- https://github.com/jaspervdj/jaspervdj/blob/b2a9a34cd2195c6e216b922e152c42266dded99d/src/Main.hs#L280-L292
|
||||
-- but even more hacky
|
||||
xelatex :: Item String -> Compiler (Item TmpFile)
|
||||
xelatex item = do
|
||||
TmpFile texPath <- newTmpFile "xelatex.tex"
|
||||
let tmpDir = takeDirectory texPath
|
||||
pdfPath = replaceExtension texPath "pdf"
|
||||
|
||||
unsafeCompiler $ do
|
||||
writeFile texPath $ itemBody item
|
||||
let x = itemBody item
|
||||
_ <-
|
||||
Process.system $
|
||||
unwords
|
||||
[ "xelatex"
|
||||
, "-halt-on-error"
|
||||
, "-output-directory"
|
||||
, tmpDir
|
||||
, texPath
|
||||
, ">/dev/null"
|
||||
, "2>&1"
|
||||
]
|
||||
return ()
|
||||
|
||||
makeItem $ TmpFile pdfPath
|
||||
|
||||
rssFeedConfiguration :: FeedConfiguration
|
||||
rssFeedConfiguration =
|
||||
FeedConfiguration
|
||||
{ feedTitle = "nattopages"
|
||||
, feedDescription = "Pages by natto"
|
||||
, feedAuthorName = "Amneesh Singh"
|
||||
, feedAuthorEmail = "natto@weirdnatto.in"
|
||||
, feedRoot = "https://weirdnatto.in"
|
||||
}
|
||||
|
||||
config :: Configuration
|
||||
config =
|
||||
defaultConfiguration
|
||||
{ deployCommand = "rsync --checksum -ave 'ssh -p" ++ sshTargetPort ++ "' _site/* " ++ sshTarget
|
||||
, previewPort = 3333
|
||||
}
|
||||
where
|
||||
{-# NOINLINE sshTarget #-}
|
||||
sshTarget = unsafePerformIO $ getEnv "SSHTARGET"
|
||||
{-# NOINLINE sshTargetPort #-}
|
||||
sshTargetPort = unsafePerformIO $ getEnv "SSHTARGETPORT"
|
||||
|
||||
postCtx :: Tags -> Context String
|
||||
postCtx tags =
|
||||
tagsField "tags" tags
|
||||
-- <> teaserFieldWithSeparator "((.tease.))" "teaser" "content"
|
||||
<> dateField "date" "%B %e, %Y"
|
||||
<> dateField "altdate" "%Y-%m-%d"
|
||||
<> teaserField "teaser" "content"
|
||||
<> defaultCtx
|
||||
|
||||
defaultCtx :: Context String
|
||||
defaultCtx =
|
||||
listField "subdomains" subCtx (return subdomains)
|
||||
<> domainCtx
|
||||
<> defaultContext
|
||||
where
|
||||
domain :: String
|
||||
domain = "weirdnatto.in"
|
||||
subCtx :: Context String
|
||||
subCtx =
|
||||
field "name" (return . itemBody)
|
||||
<> domainCtx
|
||||
domainCtx :: Context String
|
||||
domainCtx = constField "domain" domain
|
||||
subdomains :: [Item String]
|
||||
subdomains = map mkItem ["git", "radio", "f"]
|
||||
where
|
||||
mkItem :: a -> Item a
|
||||
mkItem a = Item{itemIdentifier = "subdomain", itemBody = a}
|
||||
|
||||
writerOptions :: Bool -> WriterOptions
|
||||
writerOptions withNumbering =
|
||||
defaultHakyllWriterOptions
|
||||
{ writerNumberSections = withNumbering
|
||||
, writerTableOfContents = True
|
||||
, writerTOCDepth = 2
|
||||
, writerTemplate = Just tocTemplate
|
||||
}
|
||||
|
||||
tocTemplate :: Text.Pandoc.Templates.Template Text
|
||||
tocTemplate =
|
||||
either error id . runIdentity . compileTemplate "" $
|
||||
T.unlines
|
||||
[ "<div class=\"toc\"><div class=\"toc-header\">Table of Contents</div>"
|
||||
, "$toc$"
|
||||
, "</div>"
|
||||
, "$body$"
|
||||
]
|
||||
7
src/cabal.project
Normal file
@@ -0,0 +1,7 @@
|
||||
packages: .
|
||||
|
||||
source-repository-package
|
||||
type: git
|
||||
location: https://github.com/natto1784/pandoc.git
|
||||
tag: b30124ce3e835cdb7b35fafd88c86d0841dcfaa9
|
||||
--sha256: sha256-tHUhx+RBGFN+Km0qulSrD9NSsMIAjIhOU+6CxGPmwZ8=
|
||||
@@ -5,10 +5,12 @@ license: MIT
|
||||
cabal-version: >= 1.10
|
||||
|
||||
executable site
|
||||
main-is: site.hs
|
||||
main-is: Main.hs
|
||||
build-depends: base == 4.*
|
||||
, hakyll == 4.15.*
|
||||
, pandoc == 2.*
|
||||
, text == 1.*
|
||||
, filepath == 1.4.*
|
||||
, hakyll == 4.16.*
|
||||
, pandoc == 3.1.6.2
|
||||
, process == 1.6.*
|
||||
, text == 2.*
|
||||
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
||||
default-language: Haskell2010
|
||||
|
||||
176
src/site.hs
@@ -1,176 +0,0 @@
|
||||
--------------------------------------------------------------------------------
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
import Data.Functor.Identity (runIdentity)
|
||||
import Data.Maybe (isJust)
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Hakyll
|
||||
import Text.Pandoc (WriterOptions (writerHighlightStyle, writerNumberSections, writerTOCDepth, writerTableOfContents, writerTemplate))
|
||||
import Text.Pandoc.Templates (Template, compileTemplate)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
main :: IO ()
|
||||
main = hakyllWith config $ do
|
||||
|
||||
match "images/logos/*" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "fonts/*" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "sitemap.xml" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "css/*" $ do
|
||||
route idRoute
|
||||
compile compressCssCompiler
|
||||
|
||||
match (fromList ["about.org", "contact.org", "links.org"]) $ do
|
||||
route $ setExtension "html"
|
||||
compile $
|
||||
pandocCompiler
|
||||
>>= loadAndApplyTemplate "templates/default.html" defaultCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
tags <- buildTags "posts/*" (fromCapture "archive/tags/*.html")
|
||||
|
||||
tagsRules tags $ \tag pattern -> do
|
||||
let title = "Posts tagged \"" ++ tag ++ "\""
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll pattern
|
||||
let tagCtx =
|
||||
constField "title" title
|
||||
<> constField "tag" tag
|
||||
<> listField "posts" (postCtx tags) (return posts)
|
||||
<> defaultCtx
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/tag.html" tagCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" tagCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
match "posts/*org" $ do
|
||||
route $ setExtension "html"
|
||||
compile $ do
|
||||
identifier <- getUnderlying
|
||||
toc <- getMetadataField identifier "enabletoc"
|
||||
numbering <- getMetadataField identifier "enablenumbering"
|
||||
let writerOptions' = maybe defaultHakyllWriterOptions (const $ writerOptions $ isJust numbering) toc
|
||||
pandocCompilerWith defaultHakyllReaderOptions writerOptions'
|
||||
>>= saveSnapshot "content"
|
||||
>>= loadAndApplyTemplate "templates/post.html" (postCtx tags <> teaserField "teaser" "content")
|
||||
>>= loadAndApplyTemplate "templates/default.html" (postCtx tags)
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["archive.html"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll "posts/*"
|
||||
let archiveCtx =
|
||||
listField "posts" (postCtx tags) (return posts)
|
||||
<> constField "title" "Archives"
|
||||
<> field "tags" (\_ -> renderTagList tags)
|
||||
<> defaultCtx
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/archive.html" archiveCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" archiveCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
match "index.html" $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- fmap (take 10) . recentFirst =<< loadAllSnapshots "posts/*" "content"
|
||||
let indexCtx =
|
||||
listField "posts" (postCtx tags) (return posts)
|
||||
<> defaultCtx
|
||||
|
||||
getResourceBody
|
||||
>>= applyAsTemplate indexCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" indexCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["rss.xml"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
let feedCtx = postCtx tags <> bodyField "description"
|
||||
posts <- fmap (take 10) . recentFirst =<< loadAllSnapshots "posts/*" "content"
|
||||
renderRss rssFeedConfiguration feedCtx posts
|
||||
|
||||
match "images/*" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "templates/*" $ compile templateBodyCompiler
|
||||
|
||||
rssFeedConfiguration :: FeedConfiguration
|
||||
rssFeedConfiguration = FeedConfiguration
|
||||
{ feedTitle = "nattopages"
|
||||
, feedDescription = "Pages by natto"
|
||||
, feedAuthorName = "Amneesh Singh"
|
||||
, feedAuthorEmail = "natto@weirdnatto.in"
|
||||
, feedRoot = "https://weirdnatto.in"
|
||||
}
|
||||
|
||||
config :: Configuration
|
||||
config =
|
||||
defaultConfiguration
|
||||
{ deployCommand =
|
||||
"rsync --checksum -ave 'ssh -p 22001' \
|
||||
\_site/* \
|
||||
\root@weirdnatto.in:/var/lib/site/",
|
||||
previewPort = 3333
|
||||
}
|
||||
|
||||
postCtx :: Tags -> Context String
|
||||
postCtx tags =
|
||||
tagsField "tags" tags
|
||||
-- <> teaserFieldWithSeparator "((.tease.))" "teaser" "content"
|
||||
<> dateField "date" "%B %e, %Y"
|
||||
<> teaserField "teaser" "content"
|
||||
<> defaultCtx
|
||||
|
||||
defaultCtx :: Context String
|
||||
defaultCtx =
|
||||
listField "subdomains" subCtx (return subdomains)
|
||||
<> domainCtx
|
||||
<> defaultContext
|
||||
where
|
||||
domain :: String
|
||||
domain = "weirdnatto.in"
|
||||
subCtx :: Context String
|
||||
subCtx =
|
||||
field "name" (return . itemBody)
|
||||
<> domainCtx
|
||||
domainCtx :: Context String
|
||||
domainCtx = constField "domain" domain
|
||||
subdomains :: [Item String]
|
||||
subdomains = map mkItem ["git", "nomad", "consul", "vault", "ci", "radio"]
|
||||
where
|
||||
mkItem :: a -> Item a
|
||||
mkItem a = Item {itemIdentifier = "subdomain", itemBody = a}
|
||||
|
||||
writerOptions :: Bool -> WriterOptions
|
||||
writerOptions withNumbering =
|
||||
defaultHakyllWriterOptions
|
||||
{ writerNumberSections = withNumbering,
|
||||
writerTableOfContents = True,
|
||||
writerTOCDepth = 2,
|
||||
writerTemplate = Just tocTemplate
|
||||
}
|
||||
|
||||
tocTemplate :: Text.Pandoc.Templates.Template Text
|
||||
tocTemplate =
|
||||
either error id . runIdentity . compileTemplate "" $
|
||||
T.unlines
|
||||
[ "<div class=\"toc\"><div class=\"toc-header\">Table of Contents</div>",
|
||||
"$toc$",
|
||||
"</div>",
|
||||
"$body$"
|
||||
]
|
||||
@@ -1,7 +1,5 @@
|
||||
<p>
|
||||
<h3> Here you can find all my previous posts: </h3>
|
||||
</p>
|
||||
<h3>Here you can find all my previous posts:</h3>
|
||||
$partial("templates/post-list.html")$
|
||||
|
||||
<h3>Tags</strong></h3>
|
||||
<h3><strong>Tags</strong></h3>
|
||||
<div class="tags">$tags$</div>
|
||||
|
||||
43
templates/cv.tex
Normal file
@@ -0,0 +1,43 @@
|
||||
\documentclass[a4paper,11pt]{article}
|
||||
|
||||
|
||||
\usepackage[margin=0.5in]{geometry}
|
||||
\usepackage[colorlinks=true]{hyperref}
|
||||
\usepackage{longtable}
|
||||
\usepackage{booktabs}
|
||||
|
||||
\usepackage{enumitem}
|
||||
\setlist[itemize]{partopsep=-4pt, itemsep=-6pt}
|
||||
|
||||
\usepackage{parskip}
|
||||
\setlength{\parindent}{0em}
|
||||
\setlength{\parskip}{0.5em}
|
||||
\setcounter{secnumdepth}{-1}
|
||||
|
||||
\def\tightlist{}
|
||||
\usepackage{ulem}
|
||||
\normalem
|
||||
|
||||
\usepackage{titlesec}
|
||||
\titleformat{\section}{
|
||||
\vspace{-5pt}\scshape\raggedright\large
|
||||
}{}{0em}{}[\vspace{-5pt}]
|
||||
|
||||
\titleformat{\subsection}{
|
||||
\vspace{0pt}\raggedright\normalsize\bfseries
|
||||
}{}{0em}{}[\vspace{-4pt}]
|
||||
|
||||
\titlespacing{\subsection}{0pt}{8pt}{5pt}
|
||||
|
||||
\let\OldRule\rule
|
||||
\renewcommand{\rule}[2]{\OldRule{\linewidth}{#2}}
|
||||
|
||||
\setlength{\LTleft}{0pt}
|
||||
\setlength{\LTpre}{3pt}
|
||||
\setlength{\LTpost}{0pt}
|
||||
|
||||
\usepackage{relsize}
|
||||
|
||||
\begin{document}
|
||||
$body$
|
||||
\end{document}
|
||||
13
templates/dailies.html
Normal file
@@ -0,0 +1,13 @@
|
||||
You have stumbled upon a relic of the past that I never maintained.
|
||||
<hr />
|
||||
$for(today)$
|
||||
<article>
|
||||
<h1 class="post-title">$title$</h1>
|
||||
<div class="post-teaser">$body$</div>
|
||||
<hr />
|
||||
</article>
|
||||
$endfor$
|
||||
|
||||
<h3>Previous Dailies:</h3>
|
||||
|
||||
$partial("templates/post-list.html")$
|
||||
@@ -1,46 +1,65 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>nattopages - $title$</title>
|
||||
<link rel="stylesheet" href="/css/default.css" />
|
||||
<link rel="stylesheet" href="/css/highlight.css" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="logo">
|
||||
<a href="/">nattopages</a>
|
||||
</div>
|
||||
<nav>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/archive.html">Archive</a>
|
||||
<a href="/links.html">Links</a>
|
||||
</nav>
|
||||
</header>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>nattopages - $title$</title>
|
||||
<link rel="stylesheet" href="/css/default.css" />
|
||||
<link rel="stylesheet" href="/css/highlight.css" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div id="nattopages">
|
||||
<a href="/">nattopages</a>
|
||||
</div>
|
||||
<nav>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/archive.html">Archive</a>
|
||||
<a href="/links.html">Links</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main role="main">
|
||||
$body$
|
||||
</main>
|
||||
<main role="main">$body$</main>
|
||||
|
||||
<footer>
|
||||
All content published under <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International</a><br>
|
||||
<a href="https://git.weirdnatto.in/natto1784/nattopages">Source</a> available under MIT License<br>
|
||||
Site proudly generated by
|
||||
<a href="http://jaspervdj.be/hakyll">Hakyll</a><br>
|
||||
53EC 089E F230 E47A 83BA 8F81 9594 9BD4 B853 F559<br>
|
||||
<a href="/rss.xml">RSS 2.0</a>
|
||||
<ul class="subdomains" style="list-style-type: none;">
|
||||
$for(subdomains)$
|
||||
<li style="display: inline-block;">
|
||||
<a href="https://$name$.$domain$">
|
||||
<img src="/images/logos/$name$.png" alt="https://$name$.$domain$" width="30" height="30"/>
|
||||
</a>
|
||||
</li>
|
||||
$endfor$
|
||||
</ul>
|
||||
</footer>
|
||||
</body>
|
||||
<footer>
|
||||
All content published under
|
||||
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/"
|
||||
>Creative Commons Attribution-NonCommercial-ShareAlike 4.0
|
||||
International</a
|
||||
><br />
|
||||
<a href="https://git.weirdnatto.in/natto1784/nattopages">Source</a>
|
||||
available under MIT License<br />
|
||||
Site proudly generated by
|
||||
<a href="http://jaspervdj.be/hakyll">Hakyll</a><br />
|
||||
3C4B DBE7 BBF4 5B52 C14E A193 0072 57B0 5FCC 86A8<br />
|
||||
<a href="/rss.xml">RSS 2.0</a><br />
|
||||
<ul id="subdomains" style="list-style-type: none">
|
||||
$for(subdomains)$
|
||||
<li style="display: inline-block">
|
||||
<a href="https://$name$.$domain$">
|
||||
<img
|
||||
src="/images/icons/$name$.svg"
|
||||
alt="https://$name$.$domain$"
|
||||
width="30"
|
||||
height="30"
|
||||
/>
|
||||
</a>
|
||||
</li>
|
||||
$endfor$
|
||||
</ul>
|
||||
</footer>
|
||||
<input type="checkbox" id="sticker-toggle" />
|
||||
<div id="sticker">
|
||||
<label for="sticker-toggle"> hello! </label>
|
||||
<label for="sticker-toggle">
|
||||
<img
|
||||
src="/images/personal/nyn.webp"
|
||||
alt="いらっしゃいませ"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
<ul>
|
||||
$for(posts)$
|
||||
<li class="post-item">
|
||||
<a href="$url$">$title$</a> - $date$
|
||||
</li>
|
||||
$endfor$
|
||||
$for(posts)$
|
||||
<li class="post-item"><a href="$url$">$title$</a> - $date$</li>
|
||||
$endfor$
|
||||
</ul>
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
<ul class="post-preview-item-list">
|
||||
$for(posts)$
|
||||
<li class="post-preview-item" >
|
||||
<article>
|
||||
<h1 class="post-title">$title$</h1>
|
||||
<div class="post-header">
|
||||
<div class="post-date" >
|
||||
Posted $date$
|
||||
</div>
|
||||
<div class="tags" >
|
||||
$if(tags)$
|
||||
Tags: $tags$
|
||||
$endif$
|
||||
</div>
|
||||
</div>
|
||||
<div class="post-teaser">
|
||||
$teaser$
|
||||
</div>
|
||||
<a href="$url$">Read more</a>
|
||||
</article>
|
||||
</li>
|
||||
$endfor$
|
||||
</ul>
|
||||
@@ -1,16 +1,10 @@
|
||||
<article>
|
||||
<h1 class="post-title">$title$</h1>
|
||||
<section class="post-header">
|
||||
Posted on $date$
|
||||
$if(author)$
|
||||
by $author$
|
||||
$endif$ <br>
|
||||
$if(tags)$
|
||||
Tags: $tags$
|
||||
$endif$
|
||||
</section>
|
||||
<hr>
|
||||
<section>
|
||||
$body$
|
||||
</section>
|
||||
<h1 class="post-title">$title$</h1>
|
||||
<section class="post-header">
|
||||
Posted on $date$ $if(author)$ by $author$ $endif$<br />
|
||||
$if(tags)$ Tags: $tags$ $endif$<br />
|
||||
$if(modified)$ Last modified on $modified$ $endif$
|
||||
</section>
|
||||
<hr />
|
||||
<section>$body$</section>
|
||||
</article>
|
||||
|
||||
23
templates/sitemap.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset
|
||||
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||
xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0"
|
||||
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
|
||||
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"
|
||||
>
|
||||
<url>
|
||||
<loc>https://$domain$</loc>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
$for(pages)$
|
||||
<url>
|
||||
<loc>https://$domain$$url$</loc>
|
||||
<lastmod>$if(updated)$$updated$$else$$if(altdate)$$altdate$$endif$$endif$</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
$endfor$
|
||||
</urlset>
|
||||
@@ -1,2 +1,3 @@
|
||||
Here are all the posts marked with tag <strong style="font-size: 3rem;">$tag$</strong>:
|
||||
Here are all the posts marked with tag
|
||||
<strong style="font-size: 3rem">$tag$</strong>:
|
||||
$partial("templates/post-list.html")$
|
||||
|
||||