diff --git a/blog/2024-07-14.org b/blog/2024-07-14.org new file mode 100644 index 0000000..e6ee8eb --- /dev/null +++ b/blog/2024-07-14.org @@ -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 it’s 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 grep’ing the function is enough + With C++ you already need much more context but it’s still manageable + With C# the spider web of related things to that type can be all over the place diff --git a/build-site.el b/build-site.el new file mode 100644 index 0000000..a567bf8 --- /dev/null +++ b/build-site.el @@ -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 "") + +(org-publish-project "site" t) + +(message "Build complete!") diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..70e9d36 --- /dev/null +++ b/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh +rm -rf ./public/* +emacs -Q --script build-site.el diff --git a/content/blog/2024-07-14.org b/content/blog/2024-07-14.org new file mode 100644 index 0000000..2bc694e --- /dev/null +++ b/content/blog/2024-07-14.org @@ -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 it’s 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 grep’ing the function is enough + With C++ you already need much more context but it’s still manageable + With C# the spider web of related things to that type can be all over the place diff --git a/content/css/main.css b/content/css/main.css new file mode 100644 index 0000000..53786c0 --- /dev/null +++ b/content/css/main.css @@ -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; +} diff --git a/content/css/normalize.css b/content/css/normalize.css new file mode 100644 index 0000000..4d7182b --- /dev/null +++ b/content/css/normalize.css @@ -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} diff --git a/content/icons/gitea.svg b/content/icons/gitea.svg new file mode 100644 index 0000000..5f7d356 --- /dev/null +++ b/content/icons/gitea.svg @@ -0,0 +1,8 @@ + + + + diff --git a/content/icons/github.svg b/content/icons/github.svg new file mode 100644 index 0000000..70b046e --- /dev/null +++ b/content/icons/github.svg @@ -0,0 +1,8 @@ + + + + diff --git a/content/icons/linkedin.svg b/content/icons/linkedin.svg new file mode 100644 index 0000000..4da926c --- /dev/null +++ b/content/icons/linkedin.svg @@ -0,0 +1,8 @@ + + + + diff --git a/content/index.org b/content/index.org new file mode 100644 index 0000000..c6b87bc --- /dev/null +++ b/content/index.org @@ -0,0 +1,44 @@ +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_DOCTYPE: html5 +#+HTML_CONTAINER: div + +#+BEGIN_EXPORT html + + + + + +
+#+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