Commiting cause we're going to edit the website
This commit is contained in:
parent
b1c529ea23
commit
60fac5022e
70
blog/2024-07-14.org
Normal file
70
blog/2024-07-14.org
Normal 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 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
|
32
build-site.el
Normal file
32
build-site.el
Normal 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
3
build.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
rm -rf ./public/*
|
||||||
|
emacs -Q --script build-site.el
|
68
content/blog/2024-07-14.org
Normal file
68
content/blog/2024-07-14.org
Normal 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 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
|
150
content/css/main.css
Normal file
150
content/css/main.css
Normal 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
1
content/css/normalize.css
vendored
Normal 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
8
content/icons/gitea.svg
Normal 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
8
content/icons/github.svg
Normal 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 |
8
content/icons/linkedin.svg
Normal file
8
content/icons/linkedin.svg
Normal 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
44
content/index.org
Normal 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
|
Loading…
x
Reference in New Issue
Block a user