Commiting cause we're going to edit the website

This commit is contained in:
Joseph Ferano 2025-05-16 07:17:45 +07:00
parent b1c529ea23
commit 60fac5022e
10 changed files with 392 additions and 0 deletions

70
blog/2024-07-14.org Normal file
View File

@ -0,0 +1,70 @@
#+TITLE Joseph Ferano
* Thoughts on autocomplete :blog:
I have a somewhat similar story. After watching Tsoding code without
autocomplete, without linting, nothing, and I decided to give it a shot and went
the minimalist route. I think my productivity has improved, simply because the
whole coding experience flows more naturally. I just code what's on my mind and
I only get interrupted by my tools when I actually ask for help, ie compile And
now I think those things are overrated. I also think there's such a thing as
programming languages and tools that require LSP more than others. I have a fear
that LLM AIs are going to make this worse The underlying principle is that, as
the programming ecosystem develops more and more sophisticated tools that remove
the friction in programming, by reducing how much code you have to write or by
glossing over hairy technical details, you stop thinking deeply about problems,
but this new programming velocity means you can produce code much faster, and
even author codebases that are much more advanced than you properly understand
So what this does, in turn, is that it makes abstractions and complexity easier
to manage for individuals because anything they don't get they can just get AI
to solve it for them. So there's less pressure to design things in as simple a
manner as possible. There's less pressure to keep a feature set small enough
where it can fit in someone's head.
My fear then is, as AI progresses, software bloat is only going to get worse.
You have a counter culture emerging now with groups like Handmade Network, but
for the most part, developers are ok with more and more complexity, so long as
it makes their lives easier. So someone like myself is fucked, because I refuse
to go down that road. I want to understand what's going on with the code that I
write. Emacs and Vim will have to keep adding shit to their codebases in order
to keep up with all the crap people keep coming up with, if not, Visual Studio
Code will just keep merrily bloating itself and then eventually, if I want to do
some kind of program, I'll be stuck in a position where I HAVE to use VSCode, if
I want to make sense of all the shit going on
The main example that comes to mind is Java and C#. When you use these
programming languages, you ask yourself why are they so complicated compared to
others. I used to write C# in Vim and then I wrote C# in Jetbrains Rider, when
it came out. The difference between the two was considerable. But then I used
other languages, like F#, and I noticed that I didn't see a marked improvement
between vim and Rider. Then it got me thinking that likely a lot of design
decisions for these languages were acceptable because of the crutch of the IDE.
The tools reduced the complexity of a complicated language, to the point where
using the tools without the IDE was painful.
I think Rust and javascript frameworks have a similar thing going, where they
are being enabled by the tooling ecosystem that surrounds them, which lessens
the cognitive load, which in turn increases the cognitive burden budget
designers have I think that's what I would base this on;
Reducing the cognitive load to read and write a codebases written in a language
or framework increases the cognitive burden budget designers of these
languages/frameworks have My argument is that AI might become the new IDE, and
it might affect even more things, further increasing the cognitive burden budget
this current generation of junior programmers will work with once they become
skilled enough to start working on the languages and frameworks the future
junior generations will use
Now, let me clear up, I don't think this is a conscious decision on the part of
software developers. I think that they produce things they think would be
helpful, then they see what adoption looks like. By reducing the cognitive load,
the ecosystem can more easily consume complicated software, thereby triggering a
positive feedback loop of adding complexity and acceptance because of the crutch
Milhalis:
I think its mostly about being able to quickly understand the context
With LSP you can get down to base type of anything very quickly
And generally navigate code in better way then top to bottom, to find content about specific part and relevant functions/data
I guess the difference is how complex the base type can be
With something like C just greping the function is enough
With C++ you already need much more context but its still manageable
With C# the spider web of related things to that type can be all over the place

32
build-site.el Normal file
View File

@ -0,0 +1,32 @@
;; Load the publishing system
(require 'ox-publish)
(setq org-publish-project-alist
'(("org-files"
:recursive t
:base-directory "./content"
:publishing-directory "./public"
:publishing-function org-html-publish-to-html
:with-author nil ;; Don't include author name
:with-creator nil ;; Include Emacs and Org versions in footer
:with-toc nil ;; Include a table of contents
:title "Joseph Ferano"
:with-title nil
:with-validation nil
:section-numbers nil ;; Don't include section numbers
:time-stamp-file nil)
("static-files"
:base-directory "./content/"
:base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|svg"
:publishing-directory "./public/"
:recursive t
:publishing-function org-publish-attachment)
("site" :components ("org-files" "static-files"))))
(setq org-html-validation-link nil
org-html-head-include-default-style nil)
;; org-html-head "<link rel=\"stylesheet\" href=\"css/normalize.css\" /><link rel=\"stylesheet\" href=\"css/main.css\" />")
(org-publish-project "site" t)
(message "Build complete!")

3
build.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
rm -rf ./public/*
emacs -Q --script build-site.el

View File

@ -0,0 +1,68 @@
* Thoughts on autocomplete :blog:
I have a somewhat similar story. After watching Tsoding code without
autocomplete, without linting, nothing, and I decided to give it a shot and went
the minimalist route. I think my productivity has improved, simply because the
whole coding experience flows more naturally. I just code what's on my mind and
I only get interrupted by my tools when I actually ask for help, ie compile And
now I think those things are overrated. I also think there's such a thing as
programming languages and tools that require LSP more than others. I have a fear
that LLM AIs are going to make this worse The underlying principle is that, as
the programming ecosystem develops more and more sophisticated tools that remove
the friction in programming, by reducing how much code you have to write or by
glossing over hairy technical details, you stop thinking deeply about problems,
but this new programming velocity means you can produce code much faster, and
even author codebases that are much more advanced than you properly understand
So what this does, in turn, is that it makes abstractions and complexity easier
to manage for individuals because anything they don't get they can just get AI
to solve it for them. So there's less pressure to design things in as simple a
manner as possible. There's less pressure to keep a feature set small enough
where it can fit in someone's head.
My fear then is, as AI progresses, software bloat is only going to get worse.
You have a counter culture emerging now with groups like Handmade Network, but
for the most part, developers are ok with more and more complexity, so long as
it makes their lives easier. So someone like myself is fucked, because I refuse
to go down that road. I want to understand what's going on with the code that I
write. Emacs and Vim will have to keep adding shit to their codebases in order
to keep up with all the crap people keep coming up with, if not, Visual Studio
Code will just keep merrily bloating itself and then eventually, if I want to do
some kind of program, I'll be stuck in a position where I HAVE to use VSCode, if
I want to make sense of all the shit going on
The main example that comes to mind is Java and C#. When you use these
programming languages, you ask yourself why are they so complicated compared to
others. I used to write C# in Vim and then I wrote C# in Jetbrains Rider, when
it came out. The difference between the two was considerable. But then I used
other languages, like F#, and I noticed that I didn't see a marked improvement
between vim and Rider. Then it got me thinking that likely a lot of design
decisions for these languages were acceptable because of the crutch of the IDE.
The tools reduced the complexity of a complicated language, to the point where
using the tools without the IDE was painful.
I think Rust and javascript frameworks have a similar thing going, where they
are being enabled by the tooling ecosystem that surrounds them, which lessens
the cognitive load, which in turn increases the cognitive burden budget
designers have I think that's what I would base this on;
Reducing the cognitive load to read and write a codebases written in a language
or framework increases the cognitive burden budget designers of these
languages/frameworks have My argument is that AI might become the new IDE, and
it might affect even more things, further increasing the cognitive burden budget
this current generation of junior programmers will work with once they become
skilled enough to start working on the languages and frameworks the future
junior generations will use
Now, let me clear up, I don't think this is a conscious decision on the part of
software developers. I think that they produce things they think would be
helpful, then they see what adoption looks like. By reducing the cognitive load,
the ecosystem can more easily consume complicated software, thereby triggering a
positive feedback loop of adding complexity and acceptance because of the crutch
Milhalis:
I think its mostly about being able to quickly understand the context
With LSP you can get down to base type of anything very quickly
And generally navigate code in better way then top to bottom, to find content about specific part and relevant functions/data
I guess the difference is how complex the base type can be
With something like C just greping the function is enough
With C++ you already need much more context but its still manageable
With C# the spider web of related things to that type can be all over the place

150
content/css/main.css Normal file
View File

@ -0,0 +1,150 @@
#topbar {
position: absolute;
top: 0;
left: 0;
background-color: #594F4F;
width: 100%;
/* height: 12px; */
}
.content-topbar {
width: 100%;
height: 20px;
/* margin: -24px; */
}
#content-topbar-1 { background-color: hsla(84,91%,87%, 0.9); }
#content-topbar-2 { background-color: hsla(134,52%,75%,0.9); }
#content-topbar-3 { background-color: hsla(177,43%,47%,0.9); }
#content-topbar-4 { background-color: hsla(190,21%,42%,0.9); }
#content-topbar-5 { background-color: hsla(0,6%,33%, 0.9); }
/* #E5FCC2, 5%) 0%, */
/* #9DE0AD, 5%) 20%, */
/* #45ADA8, 5%) 30%, */
/* #547980, 5%) 40%, */
/* #594F4F, 5%) 60%, */
/* #594F4F, 5%) 100%) */
.o-grad {
position: absolute;
top: 0;
left: 0;
pointer-events: none; /* Allow clicks to reach underlying content */
}
body::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
filter: url(#noiseFilter);
opacity: 0.25; /* Adjust the opacity value as needed */
z-index: -1;
mix-blend-mode: difference;
}
body {
background: linear-gradient(
180deg,
hsla(84, 91%, 87%, 0.8) 0%,
hsla(134, 52%, 75%, 0.8) 20%,
hsla(177, 43%, 47%, 0.8) 30%,
hsla(190, 21%, 42%, 0.8) 40%,
hsla(0, 6%, 25%, 0.8) 60%,
hsla(0, 6%, 25%, 1) 100%
) no-repeat;
background-color: hsla(0, 6%, 25%, 1);
margin: auto;
max-width: 700px;
line-height: 1.6;
font-size: 18px;
color: #4f5b66;
padding: 10px 20px;
}
p {
font-family: 'Playfair', serif;
/* margin: 0px 0px -30px 0px; */
/* padding: 0px; */
}
div.gallery {
float: left;
/* margin: -10px; */
width: 200px;
}
span {
font-family: 'Playfair', serif;
}
#content {
background-color: hsla(84, 20%, 99%, 1);
position: relative;
/* padding: 24px; */
}
.outline-2 {
padding: 24px;
}
#content-body {
padding: 24px;
}
hr {
color: hsla(0,6%,33%, 0.9);
}
h1 {
color: hsla(190, 21%, 36%, 1);
font-family: 'Playfair', serif;
font-size: 40px;
/* margin-top: -5px; */
}
h2 {
color: hsla(190, 21%, 36%, 1);
line-height: 1.2;
font-size: 40px;
font-family: 'Playfair', serif;
}
h3 {
color: hsla(190, 21%, 36%, 1);
line-height: 1.2;
font-size: 24px;
font-family: 'Playfair', serif;
}
a.svg-icon {
text-decoration: none;
}
a.svg-icon:hover {
text-decoration: none;
}
svg:hover {
fill: #000;
}
a {
color: #333;
text-decoration: none;
font-family: 'Playfair', sans-serif;
/* margin: 0px 0px 50px 0px; */
}
a:hover {
color: #1d3557;
text-decoration: underline;
}
a:active {
color: #55;
}
a:visited {
color: #666;
}

1
content/css/normalize.css vendored Normal file
View File

@ -0,0 +1 @@
html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}

8
content/icons/gitea.svg Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg fill="#777"
width="35px"
height="35px"
viewBox="0 0 32 32"
xmlns="http://www.w3.org/2000/svg">
<path d="M5.583 7.229c-2.464-0.005-5.755 1.557-5.573 5.479 0.281 6.125 6.557 6.693 9.068 6.745 0.271 1.146 3.224 5.109 5.411 5.318h9.573c5.74-0.38 10.036-17.365 6.854-17.427-5.271 0.25-8.396 0.375-11.073 0.396v5.297l-0.839-0.365-0.005-4.932c-3.073 0-5.781-0.141-10.917-0.396-0.646-0.005-1.542-0.115-2.5-0.115zM5.927 9.396h0.297c0.349 3.141 0.917 4.974 2.068 7.781-2.938-0.349-5.432-1.198-5.891-4.38-0.24-1.646 0.563-3.365 3.526-3.401zM17.339 12.479c0.198 0.005 0.406 0.042 0.594 0.13l1 0.432-0.714 1.302c-0.109 0-0.219 0.016-0.323 0.052-0.464 0.151-0.708 0.604-0.542 1.021 0.036 0.083 0.089 0.161 0.151 0.229l-1.234 2.25c-0.099 0-0.203 0.016-0.297 0.052-0.464 0.146-0.708 0.604-0.542 1.016 0.172 0.417 0.682 0.63 1.151 0.479 0.464-0.146 0.703-0.604 0.536-1.021-0.047-0.109-0.115-0.208-0.208-0.292l1.203-2.188c0.13 0.010 0.26 0 0.391-0.042 0.104-0.031 0.198-0.083 0.281-0.151 0.464 0.198 0.844 0.354 1.12 0.49 0.406 0.203 0.552 0.339 0.599 0.49 0.042 0.146-0.005 0.427-0.24 0.922-0.172 0.37-0.458 0.896-0.797 1.51-0.115 0-0.229 0.016-0.333 0.052-0.469 0.151-0.708 0.604-0.542 1.021 0.167 0.411 0.682 0.625 1.146 0.479 0.469-0.151 0.708-0.604 0.542-1.021-0.042-0.099-0.104-0.193-0.182-0.271 0.333-0.609 0.62-1.135 0.807-1.526 0.25-0.536 0.38-0.938 0.266-1.323s-0.469-0.635-0.932-0.865c-0.307-0.151-0.693-0.313-1.146-0.505 0.005-0.109-0.010-0.214-0.052-0.318s-0.109-0.198-0.193-0.281l0.703-1.281 3.901 1.682c0.703 0.307 0.995 1.057 0.651 1.682l-2.682 4.906c-0.339 0.625-1.182 0.885-1.885 0.578l-5.516-2.38c-0.703-0.307-0.995-1.057-0.656-1.682l2.682-4.906c0.234-0.432 0.708-0.688 1.208-0.708h0.083z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

8
content/icons/github.svg Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg fill="#777"
xmlns="http://www.w3.org/2000/svg"
width="35px"
height="35px"
viewBox="0 0 496 512">
<path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg fill="#777"
xmlns="http://www.w3.org/2000/svg"
width="35px"
height="35px"
viewBox="0 0 448 512">
<path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/>
</svg>

After

Width:  |  Height:  |  Size: 605 B

44
content/index.org Normal file
View File

@ -0,0 +1,44 @@
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/normalize.css" />
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/main.css" />
#+HTML_HEAD: <link rel="preconnect" href="https://fonts.googleapis.com">
#+HTML_HEAD: <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
#+HTML_HEAD: <link href="https://fonts.googleapis.com/css2?family=Playfair:wght@300&display=swap" rel="stylesheet">
#+HTML_DOCTYPE: html5
#+HTML_CONTAINER: div
#+BEGIN_EXPORT html
<svg class="o-grad" xmlns='http://www.w3.org/2000/svg'>
<filter id='noiseFilter'>
<feTurbulence
type='fractalNoise'
baseFrequency='6.29'
numOctaves='3'
stitchTiles='stitch'/>
</filter>
</svg>
<div class="content-topbar" id="content-topbar-4"></div>
#+END_EXPORT
* Joseph Ferano
-----
** About
I'm a game programmer, but I also enjoy writing software in general. I am still
working on this site, but you can check out some of my work in the links below.
** Blog
- [[file:blog/2024-07-14.org][2024/07/17 - AI will develop more crappy software]]
** Games
- [[https://www.youtube.com/watch?v=MwaA7Ao7FDA][Wargate: Heroes]] / [[https://www.youtube.com/watch?v=p39bR69Ws8s][Breach Arena]]
- [[https://www.youtube.com/watch?v=uWEXo278UmQ][Jaws.io]]
- [[https://www.youtube.com/watch?v=T5DXcvSaR-w][Starship Troopers: Invasion "Mobile Infantry"]]
** Projects
- [[https://git.ferano.io/JosephFerano/kanban-tui][Kanban TUI]]
- [[https://git.ferano.io/JosephFerano/basicterm][Basicterm]]
- [[https://git.ferano.io/JosephFerano/pqtorusknot][PQ Torus Knot]]
- [[https://git.ferano.io/JosephFerano/fp-rendering-engine][FP Rendering Engine]]
- [[https://git.ferano.io/JosephFerano/dotfiles][dotfiles]]
** Socials
[[https://git.ferano.io/JosephFerano][file:./icons/gitea.svg]]
[[https://github.com/JosephFerano][file:./icons/github.svg]]
[[https://www.linkedin.com/in/josephferano/][file:./icons/linkedin.svg]]
** Contact
joseph @ this site's url