diff --git a/404.html b/404.html new file mode 100644 index 0000000..bde64e5 --- /dev/null +++ b/404.html @@ -0,0 +1,114 @@ + + + + 404 Page not found – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+ +

Page not found

+

We could not find what you were looking for.

+

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+

Back to home

+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ + + +
+ + + diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..0dd74e0 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +charles.thyck.top diff --git a/UsersmapleAppDataLocalTempcharlesancheta.com-gh-pages2220612473 b/UsersmapleAppDataLocalTempcharlesancheta.com-gh-pages2220612473 new file mode 160000 index 0000000..0d2e1a8 --- /dev/null +++ b/UsersmapleAppDataLocalTempcharlesancheta.com-gh-pages2220612473 @@ -0,0 +1 @@ +Subproject commit 0d2e1a8e969e87a7070b60c2f7ec54bb9fc2f275 diff --git a/articles/index.html b/articles/index.html new file mode 100644 index 0000000..4df17a0 --- /dev/null +++ b/articles/index.html @@ -0,0 +1,10 @@ + + + + https://charlesancheta.com/post/ + + + + + + diff --git a/assets/index.57aa621a.js b/assets/index.57aa621a.js new file mode 100644 index 0000000..616f44d --- /dev/null +++ b/assets/index.57aa621a.js @@ -0,0 +1,4 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const o of n)if(o.type==="childList")for(const u of o.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&i(u)}).observe(document,{childList:!0,subtree:!0});function r(n){const o={};return n.integrity&&(o.integrity=n.integrity),n.referrerpolicy&&(o.referrerPolicy=n.referrerpolicy),n.crossorigin==="use-credentials"?o.credentials="include":n.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(n){if(n.ep)return;n.ep=!0;const o=r(n);fetch(n.href,o)}})();function m(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function v(e){if(e!=null)return m(e)}function z(e){var t=JSON.stringify(e);return t!==void 0?(localStorage.setItem("island",t),{TAG:0,_0:void 0}):{TAG:1,_0:"failed to stringify data"}}function K(e){var t=localStorage.getItem("island");if(t===null)return{TAG:1,_0:"key not found"};try{var r=JSON.parse(t),i=r.priceList.map(function(n){if(n!=null)return m(n)});return{TAG:0,_0:{price:r.price,priceList:i,predictions:r.predictions,categories:r.categories,pattern:r.pattern}}}catch{return{TAG:1,_0:"failed to parse json"}}}function k(e,t,r){for(var i=new Array(r),n=0,o=t;n=e.length)throw{RE_EXN_ID:"Invalid_argument",_1:"index out of bounds",Error:new Error};e[t]=r}function f(e,t){if(t<0||t>=e.length)throw{RE_EXN_ID:"Invalid_argument",_1:"index out of bounds",Error:new Error};return e[t]}function B(e,t){for(;;){var r=t,i=e,n=i.length,o=n===0?1:n,u=r.length,a=o-u|0;if(a===0)return i.apply(null,r);if(a>=0)return function(c,l){return function(d){return B(c,l.concat([d]))}}(i,r);t=k(r,o,-a|0),e=i.apply(null,k(r,0,o))}}function M(e,t){var r=e.length;if(r===1)return e(t);switch(r){case 1:return e(t);case 2:return function(i){return e(t,i)};case 3:return function(i,n){return e(t,i,n)};case 4:return function(i,n,o){return e(t,i,n,o)};case 5:return function(i,n,o,u){return e(t,i,n,o,u)};case 6:return function(i,n,o,u,a){return e(t,i,n,o,u,a)};case 7:return function(i,n,o,u,a,c){return e(t,i,n,o,u,a,c)};default:return B(e,[t])}}function Y(e){var t=e.length;return t===1?e:function(r){return M(e,r)}}function L(e,t){return e.TAG===0?M(t,e._0):{TAG:1,_0:e._0}}function Z(e,t){if(e.TAG!==0)return M(t,e._0)}function N(e){var t=parseInt(e,10);if(!isNaN(t))return t}function ee(e,t,r){v(document.querySelector("#buy-price")).value=String(e),v(document.querySelector("#previous-pattern")).value=String(r),Array.from(document.querySelectorAll("[data-time]")).forEach(function(i,n){var o=f(t,n);o!==void 0?i.value=String(o):i.value=""})}function te(e){var t=document.querySelector("#buy-price"),r=N((t==null?void 0:m(t)).value),i=r!==void 0?{TAG:0,_0:r}:{TAG:1,_0:"buy price not specified"},n=document.querySelector("#previous-pattern"),o=N((n==null?void 0:m(n)).value),u=Array.from(document.querySelectorAll("[data-time]")).map(function(a){return N(a.value)});return[i,u,o]}function re(e){if(window.confirm(`Are you sure you want to reset all fields? + +This cannot be undone!`)){v(document.querySelector("#buy-price")).value="",v(document.querySelector("#previous-pattern")).value="-1",Array.from(document.querySelectorAll("[data-time]")).forEach(function(t){t.value=""}),v(document.querySelector("#result")).textContent="";return}}function j(e){return e>3||e<0?4:e}function ne(e){switch(e){case 0:return"Fluctuating";case 1:return"Large spike";case 2:return"Decreasing";case 3:return"Small spike";case 4:return""}}function ie(e){switch(e){case 0:return"Fluc";case 1:return"LaSp";case 2:return"Decr";case 3:return"SmSp";case 4:return""}}function x(e){return e.map(function(t,r){var i=t[1],n=t[0];return""+(n===i?String(n):"("+String(n)+","+String(i)+")")+""}).join(` +`)}function U(e){var t=e*100;return t<.01?"<0.01":String(Math.round((t+Number.EPSILON)*100)/100)}function oe(e){var t=document.getElementById("results-table");if(t!=null){var r=t.parentElement;if(r!=null){r.removeChild(t);return}}}function ue(e){var t=document.createElement("thead");t.innerHTML='PatternPrices%MTWRFS';var r=document.createElement("tbody");e.forEach(function(o){for(var u=U(o.probability),a=[],c=[],l=0;l<=5;++l)a.push([f(o.prices,l<<2),f(o.prices,(l<<2)+1|0)]),c.push([f(o.prices,(l<<2)+2|0),f(o.prices,(l<<2)+3|0)]);var d=x(a),_=x(c),h=document.createElement("tr");h.innerHTML=""+ie(o.pattern)+""+d;var g=document.createElement("tr");g.innerHTML=""+u+"%"+_,r.appendChild(h),r.appendChild(g)});var i=document.createElement("div");i.id="results-table";var n=document.createElement("table");return n.appendChild(t),n.appendChild(r),i.appendChild(n),i}function H(e,t){return e>t?e:t}function ae(e,t){if(e<=0)return[];for(var r=new Array(e),i=0;ii?r-i|0:0,o=new Array(n),u=0;ue>t?-1:e0){v(document.querySelector("#result")).appendChild(ue(o));return}}),i}function ve(e){for(var t=ae(4,0),r=0,i=e.predictions.length;r0){var u=j(o),a=""+ne(u)+" ("+U(f(t,o))+"%)",c=I(a,{_0:u},r);n.appendChild(c)}var l=I("Show All",0,r),d=I("Hide",1,r);n.appendChild(l),n.appendChild(d)}var me="JsError";let s;const p=new Array(128).fill(void 0);p.push(void 0,null,!0,!1);function S(e){return p[e]}let E=p.length;function _e(e){e<132||(p[e]=E,E=e)}function C(e){const t=S(e);return _e(e),t}const X=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&X.decode();let b=null;function A(){return(b===null||b.byteLength===0)&&(b=new Uint8Array(s.memory.buffer)),b}function F(e,t){return e=e>>>0,X.decode(A().subarray(e,e+t))}function y(e){E===p.length&&p.push(p.length+1);const t=E;return E=p[t],p[t]=e,t}let R=0;const T=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},he=typeof T.encodeInto=="function"?function(e,t){return T.encodeInto(e,t)}:function(e,t){const r=T.encode(e);return t.set(r),{read:e.length,written:r.length}};function ge(e,t,r){if(r===void 0){const a=T.encode(e),c=t(a.length,1)>>>0;return A().subarray(c,c+a.length).set(a),R=a.length,c}let i=e.length,n=t(i,1)>>>0;const o=A();let u=0;for(;u127)break;o[n+u]=a}if(u!==i){u!==0&&(e=e.slice(u)),n=r(n,i,i=u+e.length*3,1)>>>0;const a=A().subarray(n+u,n+i),c=he(e,a);u+=c.written}return R=u,n}let w=null;function O(){return(w===null||w.byteLength===0)&&(w=new Int32Array(s.memory.buffer)),w}function ye(e,t,r){try{const u=s.__wbindgen_add_to_stack_pointer(-16),a=ge(t,s.__wbindgen_export_0,s.__wbindgen_export_1),c=R;s.predict(u,e,a,c,r);var i=O()[u/4+0],n=O()[u/4+1],o=O()[u/4+2];if(o)throw C(n);return C(i)}finally{s.__wbindgen_add_to_stack_pointer(16)}}async function be(e,t){if(typeof Response=="function"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(e,t)}catch(i){if(e.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",i);else throw i}const r=await e.arrayBuffer();return await WebAssembly.instantiate(r,t)}else{const r=await WebAssembly.instantiate(e,t);return r instanceof WebAssembly.Instance?{instance:r,module:e}:r}}function we(){const e={};return e.wbg={},e.wbg.__wbindgen_object_drop_ref=function(t){C(t)},e.wbg.__wbindgen_string_new=function(t,r){const i=F(t,r);return y(i)},e.wbg.__wbg_buffer_344d9b41efe96da7=function(t){const r=S(t).buffer;return y(r)},e.wbg.__wbg_newwithbyteoffsetandlength_4761a4dc62ec68a9=function(t,r,i){const n=new Float32Array(S(t),r>>>0,i>>>0);return y(n)},e.wbg.__wbg_new_4a74ed6e71e0296a=function(t){const r=new Float32Array(S(t));return y(r)},e.wbg.__wbindgen_throw=function(t,r){throw new Error(F(t,r))},e.wbg.__wbindgen_memory=function(){const t=s.memory;return y(t)},e}function Ee(e,t){return s=e.exports,J.__wbindgen_wasm_module=t,w=null,b=null,s}async function J(e){if(s!==void 0)return s;typeof e>"u"&&(e="/assets/predictor_bg.wasm");const t=we();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));const{instance:r,module:i}=await be(await e,t);return Ee(r,i)}function Se(e){return e==null?!1:typeof e.RE_EXN_ID=="string"}function Ae(e){return Se(e)?e:{RE_EXN_ID:"JsError",_1:e}}function Te(e,t,r){for(var i=f(e,0)|0,n=[],o=le(e,1),u=0,a=(t-1|0)/26|0;u + + + https://charlesancheta.com/post/ + + + + + + diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 0000000..8249f5d --- /dev/null +++ b/categories/index.html @@ -0,0 +1,543 @@ + + + + Categories – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+
+

Categories

+
+ + + + + + + + + + + + + + + + + + +

B

+ + + backend (1) + + + + + + + + + + + + + blazingly (1) + + + + + + + + + + + + + +

C

+ + + c++ (1) + + + + + + + + + + + + + compilation (1) + + + + + + + + + + + + + +

D

+ + + dev (2) + + + + + + + + + + + + + dev-log (4) + + + + + + + + + + + + + +

F

+ + + fast (1) + + + + + + + + + + + + + first (1) + + + + + + + + + + + + + +

G

+ + + gh-pages (1) + + + + + + + + + + + + + gnu (1) + + + + + + + + + + + + + go (3) + + + + + + + + + + + + + +

H

+ + + hosting (1) + + + + + + + + + + + + + hugo (1) + + + + + + + + + + + + + +

J

+ + + js (2) + + + + + + + + + + + + + +

L

+ + + love (4) + + + + + + + + + + + + + lua (4) + + + + + + + + + + + + + +

M

+ + + make (1) + + + + + + + + + + + + + meme (1) + + + + + + + + + + + + + multiplayer (1) + + + + + + + + + + + + + +

N

+ + + netlify (1) + + + + + + + + + + + + + npm (1) + + + + + + + + + + + + + +

R

+ + + rescript (1) + + + + + + + + + + + + + +

S

+ + + scripting (1) + + + + + + + + + + + + + +

T

+ + + til (2) + + + + + + + + + + + + + trash-packages (1) + + + + + + + + + + + + + typescript (1) + + + + + + + + + + + + + +

W

+ + + website (1) + + + + + + + + + + + + + welcome (1) + + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/categories/index.xml b/categories/index.xml new file mode 100644 index 0000000..2628624 --- /dev/null +++ b/categories/index.xml @@ -0,0 +1,13 @@ + + + + Categories on Charles Ancheta + https://charlesancheta.com/categories/ + Recent content in Categories on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..4df17a0 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,10 @@ + + + + https://charlesancheta.com/post/ + + + + + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..beb28b4 Binary files /dev/null and b/favicon.ico differ diff --git a/images/rice.svg b/images/rice.svg new file mode 100644 index 0000000..53e480c --- /dev/null +++ b/images/rice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..58bf291 --- /dev/null +++ b/index.html @@ -0,0 +1,126 @@ + + + + + Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

Charles Ancheta’s Personal Website

+
    +
  • Computer Engineering student at the University of Alberta
  • +
  • Love writing simple code for work and over-engineered monstrosities for fun
  • +
  • Looking forward to doing my last 8 months of school September 2023 - April 2024
  • +
+

What I’m currently learning

+
    +
  • Full Stack 🦀🦀🦀 Rust 🦀🦀🦀!!! (sorry, I meant +R*st)
  • +
  • Svelte
  • +
  • Pocketbase
  • +
+

Side Projects I’m working on/planning to work on

+

For some accountability

+ + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/index.xml b/index.xml new file mode 100644 index 0000000..3b4c3a2 --- /dev/null +++ b/index.xml @@ -0,0 +1,170 @@ + + + + Charles Ancheta + https://charlesancheta.com/ + Recent content on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Thu, 08 Jun 2023 23:04:45 -0600 + + Building a Static Website - Part 1: Introduction + https://charlesancheta.com/post/static-website-setup/part-1/ + Thu, 08 Jun 2023 23:04:45 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/static-website-setup/part-1/ + A couple of months ago, I help a friend set up a website for a business. Today, I had another talk with a friend about building a portfolio website and he asked me for a few resources. I couldn&rsquo;t find a comprehensive one that outlines all the required steps so I&rsquo;ll try my best. +What is a static website? From ChatGPT: +Basically: +Static - no server-side logic, cheaper Dynamic - with server-side logic, more expensive What makes a (static) website Setting up a static website is basically free these days, maybe a few dollars a year if you want a custom domain. + + + + TIL: Parallel `make` + https://charlesancheta.com/post/til/parallel-make/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/parallel-make/ + <p>I&rsquo;ve always kind of known about the <code>-j</code> flag for <code>make</code>, but I didn&rsquo;t know +that <strong>it just works</strong>.</p> + + + + I Deleted My NPM Packages + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + Wed, 10 May 2023 00:59:18 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + I deleted all 4 of my NPM packages today. It has been over a year since I&rsquo;ve last updated them, and I didn&rsquo;t want to add any more clutter to the system. +I&rsquo;ve always thought that having published open source code meant something, but then I realized that it doesn&rsquo;t matter if it&rsquo;s not useful. +Learning how to package libraries and applications was a good experience, though, and I would probably publish stuff IF/WHEN I have actually solved a need. + + + + Happy New Year! + https://charlesancheta.com/post/pou/ + Sat, 31 Dec 2022 21:04:23 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/pou/ + You might have to zoom in a little bit to see these bad boys. They sing a just-intonated major pentatonic scale from a low fifth to a high sixth. Just enough notes to play Auld Lang Syne. Click/tap on a Pou to play a note1. +Keyboard controls: z,x,a,s,d,q,w for the notes, space for confetti. +Pou won't show up without JavaScript :( +Toggle Confetti It&rsquo;s not as responsive on mobile sadly :(&#160;&#x21a9;&#xfe0e; + + + + Replicating My Linux Workflow on Windows + https://charlesancheta.com/post/replicating-my-linux-workflow-on-windows/ + Fri, 09 Dec 2022 00:49:52 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/replicating-my-linux-workflow-on-windows/ + A new co-op position meant new hardware1, and a new technology stack to learn. Unfortunately, that includes having to use Windows. Coming back to Windows after almost 2 full years on Linux, it felt like I forgot how to use a computer. All the keyboard shortcuts that my hands were used to would do funny things like lock my laptop. I just wanted my shell, my terminal, and my tiling window manager back. + + + + Why I Migrated to Hugo + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + <p>Aside from the fact that Hugo is <em>Blazingly Fast™</em>, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.</p> + + + + Go Interfaces give me a reason to live again + https://charlesancheta.com/post/go-interfaces/ + Wed, 16 Nov 2022 03:52:09 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/go-interfaces/ + A few months ago I made a meme about Go being my new favourite language (replacing TypeScript) and I just want to share a satisfying moment I had recently. +The Task In the previous iteration of my website1, I have a few lines in my config that fetches information about my published NPM packages to be rendered on the Projects page. I wanted to do the same for my new website, outputted as a Markdown table, which can be easily imported into the page with readFile. + + + + Dev Log: Boboman - Day 4 + https://charlesancheta.com/post/dev-log/boboman/day-4/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-4/ + I feel like the hardest part of writing this game would be the enemy logic. That&rsquo;s why I&rsquo;m putting it off for as long as possible! Today I implemented map generation, randomly placing boxes sufficiently far enough from players. +I also added controls for other players, which reminded me of my local multiplayer experience with Boxhead. I miss having multiple people on play a single keyboard. These days it would be awkward to play that way. + + + + Dev Log: Boboman - Day 3 + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Tue, 05 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Feeling good today. I got to fix the collision bug that was happening yesterday. It actually had to do with the collision lifecycle, so to make the player detectable, I decoupled the check from the lifecycle of the bomb. Because of this, I could revert the player&rsquo;s bomb timer to normal. Moving away from a project and letting your brain sit on a problem for a while really does wonders. + + + + Dev Log: Boboman - Day 2 + https://charlesancheta.com/post/dev-log/boboman/day-2/ + Mon, 04 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-2/ + MAJOR BUG ALERT!! +Apparently my collision logic for the bombs weren&rsquo;t going to hold up. Every time a bomb explodes, there is a small time window where you can place a bomb and the bomb would not recognize the player, making it a &ldquo;not new&rdquo; bomb. Because of that, the player gets pushed off right away and could end up in the weirdest of places. +After hours of debugging I couldn&rsquo;t really solve it because of how the collision library orders the entity updates. + + + + Dev Log: Boboman - Day 1 + https://charlesancheta.com/post/dev-log/boboman/day-1/ + Sun, 03 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-1/ + <p>Recently, I&rsquo;ve been heavily configuring my text editor, Neovim, which means that I&rsquo;ve been writing a lot of Lua. I do +find it enjoyable, even without having any tooling initially, so I wanted to give game development and +<a href="https://love2d.org">Love2D</a> a try. I just finished +<a href="https://www.sheepolution.com/learn/book/contents">Sheepolution&rsquo;s How to LÖVE</a> book on Love2D, and felt prepared to make +my first game from scratch. As per Jherzey&rsquo;s request, I&rsquo;m creating a Bomberman clone.</p> + + + + Bye bye Netlify + https://charlesancheta.com/post/bye-bye-netlify/ + Sun, 19 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/bye-bye-netlify/ + <p>It was short trial, but GitHub Pages just works better for me.</p> + + + + Friendship Ended with TypeScript, now Go is My Best Friend + https://charlesancheta.com/post/friendship-ended/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/friendship-ended/ + <p><img src="https://charlesancheta.com/post/friendship-ended/friendship-ended.webp" alt="Friendship ended"></p> + + + + TIL: My actual height + https://charlesancheta.com/post/til/my-actual-height/ + Sun, 29 May 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/my-actual-height/ + <p>Today I learned what my actual height was (at least at the time of writing). For a few years now I&rsquo;ve always kind of +just stuck with 170 cm because that&rsquo;s what was in my driver&rsquo;s license when I got it 5 years ago (I really need to pass +the road test this year). I&rsquo;m not even sure if that was right at the time.</p> + + + + Welcome! + https://charlesancheta.com/post/welcome/ + Sat, 28 May 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/welcome/ + <p>Welcome to my website! I am Charles, a Computer Engineering Student working as a Full Stack Web Developer.</p> + + + + diff --git a/isaic.webp b/isaic.webp new file mode 100644 index 0000000..996bb88 Binary files /dev/null and b/isaic.webp differ diff --git a/mp3/pou-2nd-shortened.mp3 b/mp3/pou-2nd-shortened.mp3 new file mode 100644 index 0000000..b48642a Binary files /dev/null and b/mp3/pou-2nd-shortened.mp3 differ diff --git a/mp3/pou-3rd-shortened.mp3 b/mp3/pou-3rd-shortened.mp3 new file mode 100644 index 0000000..b1e3883 Binary files /dev/null and b/mp3/pou-3rd-shortened.mp3 differ diff --git a/mp3/pou-5th-shortened.mp3 b/mp3/pou-5th-shortened.mp3 new file mode 100644 index 0000000..cceaefa Binary files /dev/null and b/mp3/pou-5th-shortened.mp3 differ diff --git a/mp3/pou-6th-shortened.mp3 b/mp3/pou-6th-shortened.mp3 new file mode 100644 index 0000000..9c0add4 Binary files /dev/null and b/mp3/pou-6th-shortened.mp3 differ diff --git a/mp3/pou-low-5th-shortened.mp3 b/mp3/pou-low-5th-shortened.mp3 new file mode 100644 index 0000000..d3e173e Binary files /dev/null and b/mp3/pou-low-5th-shortened.mp3 differ diff --git a/mp3/pou-low-6th-shortened.mp3 b/mp3/pou-low-6th-shortened.mp3 new file mode 100644 index 0000000..3c9ac08 Binary files /dev/null and b/mp3/pou-low-6th-shortened.mp3 differ diff --git a/mp3/pou-root-shortened.mp3 b/mp3/pou-root-shortened.mp3 new file mode 100644 index 0000000..a7aedf3 Binary files /dev/null and b/mp3/pou-root-shortened.mp3 differ diff --git a/post/bye-bye-netlify/index.html b/post/bye-bye-netlify/index.html new file mode 100644 index 0000000..a24c74a --- /dev/null +++ b/post/bye-bye-netlify/index.html @@ -0,0 +1,156 @@ + + + + Bye bye Netlify – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Bye bye Netlify

+
+
+

It was short trial, but GitHub Pages just works better for me.

+

A couple of weeks ago, I moved my website from GitHub Pages to Netlify, hoping for a better development and production +experience. I didn’t really have a need to move just yet, but I wanted to see what the buzz about Netlify was about. So +I spent a few hours setting it up and pointing my domain to the Netlify app.

+

It was working just fine at first, until I started making updates. The page would just load indefinitely and I would +have to visit cbebe.netlify.app first before charlesancheta.com would behave properly. I’ve had a few embarrassing +moments showing my website to people for a couple times and it refusing to load.

+

Another annoying was that every pull request and push to the master branch would trigger a build, even if none of the +pages were modified. Netlify only provides a limited about of build time every month, so I found myself cancelling more +builds in the Netlify dashboard more often than I manually deployed a build using the command line. This could be nice +if other people were contributing to this repo, but since this is a personal website, I find that unlikely.

+

Realizing these, I moved back to GitHub Pages and manually deploying with the CLI. Maybe in the future where I would +have to actually launch a production-level static website that I would revisit Netlify, but for now, I’ll stick with my +current workflow.

+
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+

It was short trial, but GitHub Pages just works better for me.

+ +

+ By Charles Ancheta, + 2022-06-19 +

+ +

+ tags: + + netlify + + hosting + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/dev-log/boboman/day-1/boboman.gif b/post/dev-log/boboman/day-1/boboman.gif new file mode 100644 index 0000000..042843c Binary files /dev/null and b/post/dev-log/boboman/day-1/boboman.gif differ diff --git a/post/dev-log/boboman/day-1/index.html b/post/dev-log/boboman/day-1/index.html new file mode 100644 index 0000000..9b7e177 --- /dev/null +++ b/post/dev-log/boboman/day-1/index.html @@ -0,0 +1,157 @@ + + + + Dev Log: Boboman - Day 1 – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Dev Log: Boboman - Day 1

+
+
+

Recently, I’ve been heavily configuring my text editor, Neovim, which means that I’ve been writing a lot of Lua. I do +find it enjoyable, even without having any tooling initially, so I wanted to give game development and +Love2D a try. I just finished +Sheepolution’s How to LÖVE book on Love2D, and felt prepared to make +my first game from scratch. As per Jherzey’s request, I’m creating a Bomberman clone.

+

I tried looking for libraries that might be useful at first, such as the ones used in +Commando Kibbles. I wanted to set up an Entity-Component system and all +those other fancy game dev stuff I’ve been hearing about. However, I realized that I should only use the ones that I +don’t feel like re-writing. After all, the prerequisite to writing good code is writing bad code. In the end, Boboman +seems like a fitting title, because I do feel dumb writing this game.

+

Anyway, here’s what it looks like now. You can walk around, place bombs, and those bombs explode after a set amount of +time, leaving a trail of explosion. The explosions don’t go past the walls.

+

Boboman Day 1 demo

+
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-07-03 +

+ +

+ tags: + + dev-log + + love + + lua + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/dev-log/boboman/day-2/index.html b/post/dev-log/boboman/day-2/index.html new file mode 100644 index 0000000..7673564 --- /dev/null +++ b/post/dev-log/boboman/day-2/index.html @@ -0,0 +1,155 @@ + + + + Dev Log: Boboman - Day 2 – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Dev Log: Boboman - Day 2

+
+
+

MAJOR BUG ALERT!!

+

Apparently my collision logic for the bombs weren’t going to hold up. Every time a bomb explodes, there is a small time +window where you can place a bomb and the bomb would not recognize the player, making it a “not new” bomb. Because of +that, the player gets pushed off right away and could end up in the weirdest of places.

+

After hours of debugging I couldn’t really solve it because of how the collision library orders the entity updates. I +didn’t feel like giving up for today, though, and making no progress. I simply created a deployment script to deploy the +game to GitHub pages and fixed the player update logic so it at least doesn’t end up +outside of the map. Still a pretty good day even if I didn’t make as much progress as I wanted.

+ +
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-07-04 +

+ +

+ tags: + + dev-log + + love + + lua + + gh-pages + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/dev-log/boboman/day-3/index.html b/post/dev-log/boboman/day-3/index.html new file mode 100644 index 0000000..1f67a38 --- /dev/null +++ b/post/dev-log/boboman/day-3/index.html @@ -0,0 +1,153 @@ + + + + Dev Log: Boboman - Day 3 – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Dev Log: Boboman - Day 3

+
+
+

Feeling good today. I got to fix the collision bug that was happening yesterday. It actually had to do with the +collision lifecycle, so to make the player detectable, I decoupled the check from the lifecycle of the bomb. Because of +this, I could revert the player’s bomb timer to normal. Moving away from a project and letting your brain sit on a +problem for a while really does wonders.

+

I also created an enemy entity based off the player asset and make that and the box entities destructible by explosions. +I thought I lost my commit progress on it after mashing a few keys on lazygit, but I got it back after a git reflog +and git cherry-pick combo.

+

Overall, I’m making pretty good progress, and shaping the game more by adding stuff to the TODO.

+ +
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-07-05 +

+ +

+ tags: + + dev-log + + love + + lua + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/dev-log/boboman/day-4/index.html b/post/dev-log/boboman/day-4/index.html new file mode 100644 index 0000000..db56f1d --- /dev/null +++ b/post/dev-log/boboman/day-4/index.html @@ -0,0 +1,152 @@ + + + + Dev Log: Boboman - Day 4 – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Dev Log: Boboman - Day 4

+
+
+

I feel like the hardest part of writing this game would be the enemy logic. That’s why I’m putting it off for as long as +possible! Today I implemented map generation, randomly placing boxes sufficiently far enough from players.

+

Multiplayer gameplay

+

I also added controls for other players, which reminded me of my local multiplayer experience with Boxhead. I miss +having multiple people on play a single keyboard. These days it would be awkward to play that way.

+ +
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-07-06 +

+ +

+ tags: + + dev-log + + love + + lua + + multiplayer + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/dev-log/boboman/day-4/multiplayer.webp b/post/dev-log/boboman/day-4/multiplayer.webp new file mode 100644 index 0000000..4ff6594 Binary files /dev/null and b/post/dev-log/boboman/day-4/multiplayer.webp differ diff --git a/post/friendship-ended/friendship-ended.webp b/post/friendship-ended/friendship-ended.webp new file mode 100644 index 0000000..0ad0ba3 Binary files /dev/null and b/post/friendship-ended/friendship-ended.webp differ diff --git a/post/friendship-ended/index.html b/post/friendship-ended/index.html new file mode 100644 index 0000000..e19ec90 --- /dev/null +++ b/post/friendship-ended/index.html @@ -0,0 +1,150 @@ + + + + Friendship Ended with TypeScript, now Go is My Best Friend – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Friendship Ended with TypeScript, now Go is My Best Friend

+
+
+

Friendship ended

+

No blog post here, just a quick edit I made in GIMP.

+
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-06-07 +

+ +

+ tags: + + dev + + go + + typescript + + backend + + meme + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/go-interfaces/fetch.go b/post/go-interfaces/fetch.go new file mode 100644 index 0000000..e9bafb7 --- /dev/null +++ b/post/go-interfaces/fetch.go @@ -0,0 +1,41 @@ +package main + +import ( + "encoding/json" + "fmt" + "log" + "os" + "path" + + "github.com/bitfield/script" +) + +const maintainer = "cbebe" + +func main() { + // Create file for writing + f, err := os.Create("data/packages.md") + if err != nil { + log.Fatalf("failed to create file: %v", err) + } + defer f.Close() + // Fetch data from NPM and extract relevant data with jq + req := script.Get("https://registry.npmjs.org/-/v1/search?text=maintainer:" + maintainer) + out, err := req.JQ("[.objects | .[] | {href: .package.links.npm, description: .package.description}]").Bytes() + if err != nil { + log.Fatalf("error fetching packages: %v", err) + } + // Parse JSON into an array of structs + var packages []struct { + Href string + Description string + } + json.Unmarshal(out, &packages) + + // Write Markdown into file + fmt.Fprint(f, "| package | description |\n|-|-|\n") + for _, p := range packages { + name := path.Base(p.Href) + fmt.Fprintf(f, "| [%s](%s) | %s |\n", name, p.Href, p.Description) + } +} diff --git a/post/go-interfaces/index.html b/post/go-interfaces/index.html new file mode 100644 index 0000000..e53a94e --- /dev/null +++ b/post/go-interfaces/index.html @@ -0,0 +1,302 @@ + + + + Go Interfaces give me a reason to live again – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Go Interfaces give me a reason to live again

+
+
+

A few months ago I made a meme about Go being my new +favourite language (replacing TypeScript) and I just want to share a satisfying +moment I had recently.

+

The Task

+

In the previous iteration of my website1, I +have a few lines in my config that fetches information about my published NPM +packages to be rendered on the +Projects page. I wanted to do +the same for my new website, outputted as a Markdown table, which can be easily +imported into the page with readFile.

+

Initial Code

+ + + + + + + + + + + + +
package main
+
+import (
+	"encoding/json"
+	"fmt"
+	"log"
+	"os"
+	"path"
+
+	"github.com/bitfield/script"
+)
+
+const maintainer = "cbebe"
+
+func main() {
+	// Create file for writing
+	f, err := os.Create("data/packages.md")
+	if err != nil {
+		log.Fatalf("failed to create file: %v", err)
+	}
+	defer f.Close()
+	// Fetch data from NPM and extract relevant data with jq
+	req := script.Get("https://registry.npmjs.org/-/v1/search?text=maintainer:" + maintainer)
+	out, err := req.JQ("[.objects | .[] | {href: .package.links.npm, description: .package.description}]").Bytes()
+	if err != nil {
+		log.Fatalf("error fetching packages: %v", err)
+	}
+	// Parse JSON into an array of structs
+	var packages []struct {
+		Href        string
+		Description string
+	}
+	json.Unmarshal(out, &packages)
+
+	// Write Markdown into file
+	fmt.Fprint(f, "| package | description |\n|-|-|\n")
+	for _, p := range packages {
+		name := path.Base(p.Href)
+		fmt.Fprintf(f, "| [%s](%s) | %s |\n", name, p.Href, p.Description)
+	}
+}
+
+ + + + + +

The initial code works fine for the task, but I also want it to be formatted +with deno fmt (for no good +reason since it’s not even commited into version control). My first instinct was +to pipe it into deno fmt so I wouldn’t have to create a temporary file. I +could do that with the script2 package using a one-liner.

+
// equivalent to `echo "$str" | deno fmt - --ext md > data/packages.md`
+script.Echo(str).Exec("deno fmt - --ext md").WriteFile("data/packages.md")
+

Refactoring

+

I noticed that I only call fmt.Fprint and fmt.Fprintf on the file, which +only needs the io.Writer interface, so we can pull the Markdown writing code +into a function.

+
func writePackagesTable(w io.Writer) error {
+	req := script.Get("https://registry.npmjs.org/-/v1/search?text=maintainer:" + maintainer)
+	out, err := req.JQ("[.objects | .[] | {href: .package.links.npm, description: .package.description}]").Bytes()
+	if err != nil {
+		return fmt.Errorf("error fetching packages: %v", err)
+	}
+
+	var packages []struct {
+		Href        string
+		Description string
+	}
+	json.Unmarshal(out, &packages)
+
+	// Write Markdown into a Writer
+	fmt.Fprint(w, "| package | description |\n|-|-|\n")
+	for _, p := range packages {
+		name := path.Base(p.Href)
+		fmt.Fprintf(w, "| [%s](%s) | %s |\n", name, p.Href, p.Description)
+	}
+}
+

Then in main I can simply pass the file to this new function.

+
func main() {
+	f, err := os.Create("data/packages.md")
+	if err != nil {
+		log.Fatalf("failed to create file: %v", err)
+	}
+	defer f.Close()
+	if err := writePackagesTable(f); err != nil {
+		log.Fatal(err)
+	}
+}
+

The neat thing is that I can now pass in anything that implements the +io.Writer interface, which is a lot of things in the standard library. This +includes *bytes.Buffer, which I can convert into a string and pipe into +deno fmt before saving the output to a file.

+
func main() {
+-	f, err := os.Create("data/packages.md")
+-	if err != nil {
+-		log.Fatalf("failed to create file: %v", err)
+-	}
+-	defer f.Close()
++	buf := bytes.NewBuffer(nil)
+-	if err := writePackagesTable(f); err != nil {
++	if err := writePackagesTable(buf); err != nil {
+		log.Fatal(err)
+	}
++	script.Echo(buf.String()).Exec("deno fmt - --ext md").WriteFile("data/packages.md")
+}
+

Conclusion

+

Go’s standard library has a really nice API when it comes to I/O, which makes +changes a breeze if you keep your interfaces small. Gems like this makes me love +Go even more and it’s definitely going to be my go-to language from now on3.

+
+
+
    +
  1. +

    I admit that the Docusaurus site is way cuter, but then I realized that no +one should have to download half a megabyte of JS just to read some text on a +browser ↩︎

    +
  2. +
  3. +

    Cross-platform Scripting with Go is more fun (and readable!) with the +script package +which I discovered from this +article by the same author. ↩︎

    +
  4. +
  5. +

    Another satisfying moment I had with Go is porting the +docusaurus deploy +command for my website. This cuts down the deploy time for my website from 5 +minutes to under 5 seconds!!! This probably has to do more with moving from +Docusaurus to Hugo, but there is certainly a bump in speed when executing +natively compared to Node.js. ↩︎

    +
  6. +
+
+ +
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-11-16 +

+ +

+ tags: + + dev + + go + + scripting + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/i-deleted-my-npm-packages/index.html b/post/i-deleted-my-npm-packages/index.html new file mode 100644 index 0000000..83e0063 --- /dev/null +++ b/post/i-deleted-my-npm-packages/index.html @@ -0,0 +1,258 @@ + + + + I Deleted My NPM Packages – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

I Deleted My NPM Packages

+
+
+

I deleted all 4 of my NPM packages today. It has been over a year since I’ve +last updated them, and I didn’t want to add any more clutter to the system.

+

I’ve always thought that having published open source code meant something, but +then I realized that it doesn’t matter if it’s not useful.

+

Learning how to package libraries and applications was a good experience, +though, and I would probably publish stuff IF/WHEN I have actually solved a +need. Here are the reasons why I deleted each of them.

+

TimeInterval nominal type: libtime

+

This should just be a single file that can be easily copied and extended. I also +created a GitHub Gist +so it can also be downloaded.

+
/* TimeInterval nominal type and converters */
+declare const TypeSymbol: unique symbol;
+export type TimeInterval = number & { [TypeSymbol]: 'TimeInterval' };
+
+/* Functions for converting to TimeInterval */
+export const milliseconds = (howMany: number) => howMany as TimeInterval;
+export const seconds = (howMany: number) => (howMany * 1000) as TimeInterval;
+export const minutes = (howMany: number) => (howMany * 1000 * 60) as TimeInterval;
+export const hours = (howMany: number) => (howMany * 1000 * 3600) as TimeInterval;
+export const days = (howMany: number) => (howMany * 1000 * 3600 * 24) as TimeInterval;
+export const weeks = (howMany: number) => (howMany * 1000 * 3600 * 24 * 7) as TimeInterval;
+
+/* Functions for converting to numbers */
+export const toSeconds = (timeInterval: TimeInterval) => timeInterval / 1000;
+export const toMilliseconds = (timeInterval: TimeInterval) => timeInterval as number;
+

This can be used like so:

+
async function delay(duration: TimeInterval): Promise<void> {
+  return new Promise<void>((resolve) => {
+    setTimeout(resolve, toMilliseconds(duration))
+  })
+}
+
+async function main() {
+  // do something here...
+
+  await delay(minutes(3))
+
+  // do another thing here...
+}
+

NestJS File Logger Module: nestjs-file-logger

+

This is also better suited to be just a copy-pasta, since I wouldn’t have been +able to offer a decent amount of customizability, nor did I want to. I just +wanted to publish a package for the sake of it.

+
import "reflect-metadata";
+import { Module, ConsoleLogger, Inject, Injectable } from "@nestjs/common";
+import { Logger as WinstonLogger, format, transports } from "winston";
+import { WinstonModule } from "nest-winston";
+
+type Level = "debug" | "log" | "warn" | "error";
+@Injectable()
+export class FileLogger extends ConsoleLogger {
+  @Inject("winston") logger: WinstonLogger;
+  private doLog(level: Level, message: any, ...optionalParams: any[]) {
+    super[level](message, ...optionalParams);
+    this.logger[level === "log" ? "info" : level](
+      JSON.stringify([message instanceof Error ? message.stack : message, ...optionalParams])
+    );
+  }
+  public debug(message: any, ...optionalParams: any[]): void { this.doLog("debug", message, ...optionalParams); }
+  public log(message: any, ...optionalParams: any[]): void { this.doLog("log", message, ...optionalParams); }
+  public warn(message: any, ...optionalParams: any[]): void { this.doLog("warn", message, ...optionalParams); }
+  public error(message: any, ...optionalParams: any[]): void { this.doLog("error", message, ...optionalParams); }
+}
+
+const { combine, timestamp, printf } = format;
+const logFormat = printf(({ level, message, timestamp }) => `[${timestamp}] ${level}: ${message}`);
+
+const CustomWinstonModule = WinstonModule.forRoot({
+  format: combine(timestamp({ format: () => new Date().toISOString() }), logFormat),
+  transports: [
+    new transports.File({ filename: "logs/error.log", level: "warn" }),
+    new transports.File({ filename: "logs/combined.log", level: "info" }),
+    new transports.File({ filename: "logs/debug.log", level: "debug" }),
+  ],
+});
+
+@Module({ imports: [CustomWinstonModule], providers: [FileLogger], exports: [FileLogger] })
+export class LoggerModule { }
+

Stolen from the README:

+
/* Import `LoggerModule` into your `AppModule` */
+import { Module } from "@nestjs/common";
+import LoggerModule from "nest-file-logger";
+
+@Module({
+  imports: [LoggerModule],
+})
+export class AppModule {}
+
+/***************************************/
+
+/* Use `FileLogger` on application setup: */
+import { NestFactory } from "@nestjs/core";
+import { FileLogger } from "nest-file-logger";
+import { AppModule } from "./app.module";
+
+const app = await NestFactory.create(AppModule);
+app.useLogger(app.get(FileLogger));
+

Link to Gist

+

Create Blog File CLI: create-md-blog

+

This was a CLI application that prompts you for a title and tags (even before +you write the actual blog post) and creates a Markdown file containing this +metadata. That’s it. And I published it.

+

This did not need to exist at all. It’s basically just a hammer looking for a +nail. Or me, an NPM-obsessed dev, looking for something to publish. It probably +took 100x more time to create this than the amount of time I’ve saved using +this CLI application. These days I just use hugo new post/<title>.md.

+

NestJS Dependency Graph: nestjs-dependency-graph

+

This one would’ve actually been useful if it wasn’t so hard to set up. +Fortunately, +nestjs-spelunker is a +similar tool that is actually maintained and comes with a more portable JSON +format.

+ +
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+

These should've just been Github gists

+ +

+ By Charles Ancheta, + 2023-05-10 +

+ +

+ tags: + + js + + npm + + trash-packages + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/index.html b/post/index.html new file mode 100644 index 0000000..ee230a2 --- /dev/null +++ b/post/index.html @@ -0,0 +1,358 @@ + + + + Posts – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Posts

+ +
+ + +
+
+

Building a Static Website - Part 1: Introduction

+ +
+ +
+ A couple of months ago, I help a friend set up a website for a business. Today, I had another talk with a friend about building a portfolio website and he asked me for a few resources. I couldn’t find a comprehensive one that outlines all the required steps so I’ll try my best. +What is a static website? From ChatGPT: +Basically: +Static - no server-side logic, cheaper Dynamic - with server-side logic, more expensive What makes a (static) website Setting up a static website is basically free these days, maybe a few dollars a year if you want a custom domain. +
+
+ +
+
+

TIL: Parallel make

+ +
+ +
+

I’ve always kind of known about the -j flag for make, but I didn’t know +that it just works.

+
+
+ +
+
+

I Deleted My NPM Packages

+ +
+ +
+ I deleted all 4 of my NPM packages today. It has been over a year since I’ve last updated them, and I didn’t want to add any more clutter to the system. +I’ve always thought that having published open source code meant something, but then I realized that it doesn’t matter if it’s not useful. +Learning how to package libraries and applications was a good experience, though, and I would probably publish stuff IF/WHEN I have actually solved a need. +
+
+ +
+
+

Happy New Year!

+ +
+ +
+ You might have to zoom in a little bit to see these bad boys. They sing a just-intonated major pentatonic scale from a low fifth to a high sixth. Just enough notes to play Auld Lang Syne. Click/tap on a Pou to play a note1. +Keyboard controls: z,x,a,s,d,q,w for the notes, space for confetti. +Pou won't show up without JavaScript :( +Toggle Confetti It’s not as responsive on mobile sadly :( ↩︎ +
+
+ +
+
+

Replicating My Linux Workflow on Windows

+ +
+ +
+ A new co-op position meant new hardware1, and a new technology stack to learn. Unfortunately, that includes having to use Windows. Coming back to Windows after almost 2 full years on Linux, it felt like I forgot how to use a computer. All the keyboard shortcuts that my hands were used to would do funny things like lock my laptop. I just wanted my shell, my terminal, and my tiling window manager back. +
+
+ +
+
+

Why I Migrated to Hugo

+ +
+ +
+

Aside from the fact that Hugo is Blazingly Fast™, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.

+
+
+ +
+
+

Go Interfaces give me a reason to live again

+ +
+ +
+ A few months ago I made a meme about Go being my new favourite language (replacing TypeScript) and I just want to share a satisfying moment I had recently. +The Task In the previous iteration of my website1, I have a few lines in my config that fetches information about my published NPM packages to be rendered on the Projects page. I wanted to do the same for my new website, outputted as a Markdown table, which can be easily imported into the page with readFile. +
+
+ +
+
+

Dev Log: Boboman - Day 4

+ +
+ +
+ I feel like the hardest part of writing this game would be the enemy logic. That’s why I’m putting it off for as long as possible! Today I implemented map generation, randomly placing boxes sufficiently far enough from players. +I also added controls for other players, which reminded me of my local multiplayer experience with Boxhead. I miss having multiple people on play a single keyboard. These days it would be awkward to play that way. +
+
+ +
+
+

Dev Log: Boboman - Day 3

+ +
+ +
+ Feeling good today. I got to fix the collision bug that was happening yesterday. It actually had to do with the collision lifecycle, so to make the player detectable, I decoupled the check from the lifecycle of the bomb. Because of this, I could revert the player’s bomb timer to normal. Moving away from a project and letting your brain sit on a problem for a while really does wonders. +
+
+ +
+
+

Dev Log: Boboman - Day 2

+ +
+ +
+ MAJOR BUG ALERT!! +Apparently my collision logic for the bombs weren’t going to hold up. Every time a bomb explodes, there is a small time window where you can place a bomb and the bomb would not recognize the player, making it a “not new” bomb. Because of that, the player gets pushed off right away and could end up in the weirdest of places. +After hours of debugging I couldn’t really solve it because of how the collision library orders the entity updates. +
+
+ +
+
+

Dev Log: Boboman - Day 1

+ +
+ +
+

Recently, I’ve been heavily configuring my text editor, Neovim, which means that I’ve been writing a lot of Lua. I do +find it enjoyable, even without having any tooling initially, so I wanted to give game development and +Love2D a try. I just finished +Sheepolution’s How to LÖVE book on Love2D, and felt prepared to make +my first game from scratch. As per Jherzey’s request, I’m creating a Bomberman clone.

+
+
+ +
+
+

Bye bye Netlify

+ +
+ +
+

It was short trial, but GitHub Pages just works better for me.

+
+
+ + + +
+
+

TIL: My actual height

+ +
+ +
+

Today I learned what my actual height was (at least at the time of writing). For a few years now I’ve always kind of +just stuck with 170 cm because that’s what was in my driver’s license when I got it 5 years ago (I really need to pass +the road test this year). I’m not even sure if that was right at the time.

+
+
+ +
+
+

Welcome!

+ +
+ +
+

Welcome to my website! I am Charles, a Computer Engineering Student working as a Full Stack Web Developer.

+
+
+ + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+

Future post ideas

+
    +
  • Shiny Object Syndrome
  • +
  • Recommended Tools for Software Development
  • +
  • T3 Stack (and how it made me love TypeScript again)
  • +
  • New Year, New Setup
  • +
  • HackED 2023
  • +
+ + +
+
+ +

+ + + + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/index.xml b/post/index.xml new file mode 100644 index 0000000..e9808f6 --- /dev/null +++ b/post/index.xml @@ -0,0 +1,170 @@ + + + + Posts on Charles Ancheta + https://charlesancheta.com/post/ + Recent content in Posts on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Thu, 08 Jun 2023 23:04:45 -0600 + + Building a Static Website - Part 1: Introduction + https://charlesancheta.com/post/static-website-setup/part-1/ + Thu, 08 Jun 2023 23:04:45 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/static-website-setup/part-1/ + A couple of months ago, I help a friend set up a website for a business. Today, I had another talk with a friend about building a portfolio website and he asked me for a few resources. I couldn&rsquo;t find a comprehensive one that outlines all the required steps so I&rsquo;ll try my best. +What is a static website? From ChatGPT: +Basically: +Static - no server-side logic, cheaper Dynamic - with server-side logic, more expensive What makes a (static) website Setting up a static website is basically free these days, maybe a few dollars a year if you want a custom domain. + + + + TIL: Parallel `make` + https://charlesancheta.com/post/til/parallel-make/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/parallel-make/ + <p>I&rsquo;ve always kind of known about the <code>-j</code> flag for <code>make</code>, but I didn&rsquo;t know +that <strong>it just works</strong>.</p> + + + + I Deleted My NPM Packages + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + Wed, 10 May 2023 00:59:18 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + I deleted all 4 of my NPM packages today. It has been over a year since I&rsquo;ve last updated them, and I didn&rsquo;t want to add any more clutter to the system. +I&rsquo;ve always thought that having published open source code meant something, but then I realized that it doesn&rsquo;t matter if it&rsquo;s not useful. +Learning how to package libraries and applications was a good experience, though, and I would probably publish stuff IF/WHEN I have actually solved a need. + + + + Happy New Year! + https://charlesancheta.com/post/pou/ + Sat, 31 Dec 2022 21:04:23 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/pou/ + You might have to zoom in a little bit to see these bad boys. They sing a just-intonated major pentatonic scale from a low fifth to a high sixth. Just enough notes to play Auld Lang Syne. Click/tap on a Pou to play a note1. +Keyboard controls: z,x,a,s,d,q,w for the notes, space for confetti. +Pou won't show up without JavaScript :( +Toggle Confetti It&rsquo;s not as responsive on mobile sadly :(&#160;&#x21a9;&#xfe0e; + + + + Replicating My Linux Workflow on Windows + https://charlesancheta.com/post/replicating-my-linux-workflow-on-windows/ + Fri, 09 Dec 2022 00:49:52 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/replicating-my-linux-workflow-on-windows/ + A new co-op position meant new hardware1, and a new technology stack to learn. Unfortunately, that includes having to use Windows. Coming back to Windows after almost 2 full years on Linux, it felt like I forgot how to use a computer. All the keyboard shortcuts that my hands were used to would do funny things like lock my laptop. I just wanted my shell, my terminal, and my tiling window manager back. + + + + Why I Migrated to Hugo + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + <p>Aside from the fact that Hugo is <em>Blazingly Fast™</em>, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.</p> + + + + Go Interfaces give me a reason to live again + https://charlesancheta.com/post/go-interfaces/ + Wed, 16 Nov 2022 03:52:09 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/go-interfaces/ + A few months ago I made a meme about Go being my new favourite language (replacing TypeScript) and I just want to share a satisfying moment I had recently. +The Task In the previous iteration of my website1, I have a few lines in my config that fetches information about my published NPM packages to be rendered on the Projects page. I wanted to do the same for my new website, outputted as a Markdown table, which can be easily imported into the page with readFile. + + + + Dev Log: Boboman - Day 4 + https://charlesancheta.com/post/dev-log/boboman/day-4/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-4/ + I feel like the hardest part of writing this game would be the enemy logic. That&rsquo;s why I&rsquo;m putting it off for as long as possible! Today I implemented map generation, randomly placing boxes sufficiently far enough from players. +I also added controls for other players, which reminded me of my local multiplayer experience with Boxhead. I miss having multiple people on play a single keyboard. These days it would be awkward to play that way. + + + + Dev Log: Boboman - Day 3 + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Tue, 05 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Feeling good today. I got to fix the collision bug that was happening yesterday. It actually had to do with the collision lifecycle, so to make the player detectable, I decoupled the check from the lifecycle of the bomb. Because of this, I could revert the player&rsquo;s bomb timer to normal. Moving away from a project and letting your brain sit on a problem for a while really does wonders. + + + + Dev Log: Boboman - Day 2 + https://charlesancheta.com/post/dev-log/boboman/day-2/ + Mon, 04 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-2/ + MAJOR BUG ALERT!! +Apparently my collision logic for the bombs weren&rsquo;t going to hold up. Every time a bomb explodes, there is a small time window where you can place a bomb and the bomb would not recognize the player, making it a &ldquo;not new&rdquo; bomb. Because of that, the player gets pushed off right away and could end up in the weirdest of places. +After hours of debugging I couldn&rsquo;t really solve it because of how the collision library orders the entity updates. + + + + Dev Log: Boboman - Day 1 + https://charlesancheta.com/post/dev-log/boboman/day-1/ + Sun, 03 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-1/ + <p>Recently, I&rsquo;ve been heavily configuring my text editor, Neovim, which means that I&rsquo;ve been writing a lot of Lua. I do +find it enjoyable, even without having any tooling initially, so I wanted to give game development and +<a href="https://love2d.org">Love2D</a> a try. I just finished +<a href="https://www.sheepolution.com/learn/book/contents">Sheepolution&rsquo;s How to LÖVE</a> book on Love2D, and felt prepared to make +my first game from scratch. As per Jherzey&rsquo;s request, I&rsquo;m creating a Bomberman clone.</p> + + + + Bye bye Netlify + https://charlesancheta.com/post/bye-bye-netlify/ + Sun, 19 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/bye-bye-netlify/ + <p>It was short trial, but GitHub Pages just works better for me.</p> + + + + Friendship Ended with TypeScript, now Go is My Best Friend + https://charlesancheta.com/post/friendship-ended/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/friendship-ended/ + <p><img src="https://charlesancheta.com/post/friendship-ended/friendship-ended.webp" alt="Friendship ended"></p> + + + + TIL: My actual height + https://charlesancheta.com/post/til/my-actual-height/ + Sun, 29 May 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/my-actual-height/ + <p>Today I learned what my actual height was (at least at the time of writing). For a few years now I&rsquo;ve always kind of +just stuck with 170 cm because that&rsquo;s what was in my driver&rsquo;s license when I got it 5 years ago (I really need to pass +the road test this year). I&rsquo;m not even sure if that was right at the time.</p> + + + + Welcome! + https://charlesancheta.com/post/welcome/ + Sat, 28 May 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/welcome/ + <p>Welcome to my website! I am Charles, a Computer Engineering Student working as a Full Stack Web Developer.</p> + + + + diff --git a/post/pou/index.html b/post/pou/index.html new file mode 100644 index 0000000..a35846c --- /dev/null +++ b/post/pou/index.html @@ -0,0 +1,162 @@ + + + + Happy New Year! – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Happy New Year!

+
+
+

You might have to zoom in a little bit to see these bad boys. They sing a +just-intonated major pentatonic scale from a low fifth to a high sixth. Just +enough notes to play Auld Lang Syne. Click/tap on a Pou to play a note1.

+

Keyboard controls: z,x,a,s,d,q,w for the notes, space for confetti.

+ + + + + +
+ + + + +
+
+
    +
  1. +

    It’s not as responsive on mobile sadly :( ↩︎

    +
  2. +
+
+ +
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+

Pou singing a pentatonic scale

+ +

+ By Charles Ancheta, + 2022-12-31 +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/replicating-my-linux-workflow-on-windows/index.html b/post/replicating-my-linux-workflow-on-windows/index.html new file mode 100644 index 0000000..c7c3267 --- /dev/null +++ b/post/replicating-my-linux-workflow-on-windows/index.html @@ -0,0 +1,236 @@ + + + + Replicating My Linux Workflow on Windows – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Replicating My Linux Workflow on Windows

+
+
+

A new co-op position meant new hardware1, and a new technology stack to +learn. Unfortunately, that includes having to use Windows. Coming back to +Windows after almost 2 full years on Linux, it felt like I forgot how to use a +computer. All the keyboard shortcuts that my hands were used to would do funny +things like lock my laptop. I just wanted my shell, my terminal, and my tiling +window manager back.

+

Note that this post is only about Windows alternatives for tools in my Linux +workflow. I won’t be talking about tools that are specific to the job like IDEs +and DB browsers (maybe in a separate post).

+

Going full Linux with WSL

+

I used WSL before I became a full-time Linux user. I had a positive experience +with it, so my first instinct was to reach for that. I was disappointed with the +performance, though, and the startup time is horrible. Not good if I want to be +able to use the shell right away. Having a separate $HOME directory also made +file organization awkward.

+

I figured that this was in no way going to be tolerable, so I knew I had to get +cross-platform or Windows-native tools. It was time to give up my dream of +having a single workflow everywhere.

+

Terminal Tools

+

Shell: Nushell (nu)

+

I use Nushell because… (?) I didn’t like Powershell2?? Now that I’m writing +about it, there was no reason for me NOT to learn Powershell. The concept of +piping objects instead of text is somewhat different, but Nushell uses that same +concept (since it’s inspired by Powershell). If anything, Powershell is probably +more polished since it’s built with Windows as a priority. I also had to spend +time learning Nushell, anyway. My time would’ve been better spent learning the +tools that are actually native to the system I’m using. I wasn’t giving up zsh +on my Linux machines either, so Nushell being cross-platform doesn’t mean +anything to me.

+

Directory navigation: lf -> zoxide

+

I used to use lf to change directories using an +lfcd binding, but +it’s a bit harder to integrate with Nushell since change in environment +variables are scoped. I came across zoxide which is great for jumping around +my most frequently visited directories. If I do need to explore a deep +directory, I actually fire up lf, even if it takes around 1.5 seconds to start +up.

+

Terminal Multiplexing: Nothing :(

+

I tried looking for a cross-platform platform alternative to +tmux, probably something written in Go or +Rust. One of them was zellij, but it doesn’t work on +Windows. For simple terminal management, Windows Terminal +works fine.

+

Neovim

+

I have also flipped my workflow around Neovim and terminals. Instead of having +two or three tmux panes, I simply have Neovim open and use the terminal inside +it using the :terminal command. By not using Neovim inside tmux, I can use +the increment number (<C-a>) binding properly. I have also carried this in my +Linux workflow which simplifies things by a lot. It could get annoying sometimes +though when I accidentally quit Neovim as it also kills the shell sessions that +I start inside it. VSCode also has this problem so I usually run development +server processes in separate Windows Terminal tabs.

+

Window Management

+

I tried to get tiling windows using +FancyZones from Microsoft PowerToys, +but it felt laggy and it was quite a resource hog. I also didn’t have enough +screen space for it to be useful, anyway. I eventually got used to pressing +Alt + Tab and Alt + Shift + Tab to go back and forth between windows, which +isn’t too bad. I have also carried this keyboard shortcut back to Pop! OS, +although I still prefer moving between workspaces3.

+

Terminal Emulator

+

Windows Terminal, hands down. This is what I’ve used back when I used +Windows 10. It’s customizable enough to keep me happy and the shortcut to start +different shells in new tabs is really handy when I need an admin shell (no more +searching for Powershell, and clicking ‘Run as Administrator’). It’s also the +only terminal that I’ve used on Windows that actually sends mouse terminal +sequences to programs. Even the VSCode integrated terminal doesn’t work properly +with lazygit!

+

I also tried using Alacritty, which is what I use for the rest of my machines, +but it doesn’t matter how fast the terminal emulator is if the programs +themselves are slow. Not having the features of Windows terminal actually slows +me down more.

+

Conclusion

+

When I first started using Windows again, it all felt so foreign to me. But with +these alternatives to my workflow, there’s not much difference from when I’m +working inside Linux. Maybe except for having Visual Studio running in the +background for the back-end server. With cross-platform tools written in modern +languages like Rust and Go, I can simply download the binary, plop it into +PATH, and go crazy.

+
+
+
    +
  1. +

    This beast of a gaming laptop costs around 3 times as much as my personal +laptop. It does makes sense now that they’d give me something so beefed up since +none of my own hardware can actually run Visual Studio. ↩︎

    +
  2. +
  3. +

    Maybe it had to do with it being slow? I think all shells are sluggish on +Windows anyway, even Nushell. Powershell 7 promises some performance +improvements, though. I will try setting it as my main shell after I’ve copied +my Nushell config. Writing really does help with introspection. EDIT December +17: Nope, nope, nope. The shell taking at most 1.5 seconds to “load +configurations” when I haven’t made any personal configuration yet seems like +bad news. I will never use it as an interactive shell, sorry. ↩︎

    +
  4. +
  5. +

    I realized now that Windows also has desktop workspaces. I need to start +using that more. ↩︎

    +
  6. +
+
+ +
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-12-09 +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/static-website-setup/part-1/index.html b/post/static-website-setup/part-1/index.html new file mode 100644 index 0000000..6c7ee77 --- /dev/null +++ b/post/static-website-setup/part-1/index.html @@ -0,0 +1,176 @@ + + + + Building a Static Website - Part 1: Introduction – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Building a Static Website - Part 1: Introduction

+
+
+

A couple of months ago, I help a friend set up a website for a business. Today, +I had another talk with a friend about building a portfolio website and he +asked me for a few resources. I couldn’t find a comprehensive one that outlines +all the required steps so I’ll try my best.

+

What is a static website?

+

From ChatGPT:

+

Question: difference between a static and dynamic website in 2 sentences -Answer: A static website consists of fixed content that remains the same forall users and is created using HTML/CSS, while a dynamic website usesserver-side technologies to generate content dynamically, allowing forpersonalized and interactive experiences tailored to individualusers.

+

Basically:

+
    +
  • Static - no server-side logic, cheaper
  • +
  • Dynamic - with server-side logic, more expensive
  • +
+

What makes a (static) website

+

Setting up a static website is basically free these days, maybe a few dollars a +year if you want a custom domain. There are many free website builders out +there. However, we’re going DIY with no strings attached to any one provider. +Any of these components can be swapped with many alternatives out there if you +so choose.

+

You really only need two things: your content, which is a bunch of HTML, +CSS, and JavaScript files, and a hosting provider, basically a computer +that serves your content 24/7.

+

What we will use

+

I’m mostly going to outline my process because it’s free (aside from the +domain) and that it’s going to teach you some skills on web development.

+

We will need:

+
    +
  • A Computer (Windows/Mac/Linux)
  • +
  • GitHub account for hosting your website with GitHub Pages
  • +
  • Some programming knowledge (very little, don’t worry)
  • +
  • Patience with my sucky writing 😭
  • +
+

These would be nice to have:

+
    +
  • Custom domain name - if you don’t want your domain to appear as +your-github-username.github.io
  • +
  • Cloudflare account - for email protection and easier DNS management
  • +
+

Since we are making a static website, most of the work will be done on your +personal computer. The hosting provider will only be concerned with serving the +final build output. For this, we would need to set up our development +environment.

+

Stay tuned for part 2!

+ +
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+

My 4-part series on how to build a website

+ +

+ By Charles Ancheta, + 2023-06-08 +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/static-website-setup/part-1/static-vs-dynamic.webp b/post/static-website-setup/part-1/static-vs-dynamic.webp new file mode 100644 index 0000000..d86be5a Binary files /dev/null and b/post/static-website-setup/part-1/static-vs-dynamic.webp differ diff --git a/post/til/my-actual-height/173cm.webp b/post/til/my-actual-height/173cm.webp new file mode 100644 index 0000000..5ae5af1 Binary files /dev/null and b/post/til/my-actual-height/173cm.webp differ diff --git a/post/til/my-actual-height/index.html b/post/til/my-actual-height/index.html new file mode 100644 index 0000000..95672b2 --- /dev/null +++ b/post/til/my-actual-height/index.html @@ -0,0 +1,149 @@ + + + + TIL: My actual height – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

TIL: My actual height

+
+
+

Today I learned what my actual height was (at least at the time of writing). For a few years now I’ve always kind of +just stuck with 170 cm because that’s what was in my driver’s license when I got it 5 years ago (I really need to pass +the road test this year). I’m not even sure if that was right at the time.

+

So, I took a couple of IKEA measuring tapes (courtesy of Jherzey), put them together on a post in our basement, got a +square ruler (triangular? (*sigh*… +eskwala)) and measured my height.

+

A square measuring my height at 173 cm

+

So I guess I grew 3 cm in those 5 years? I still haven’t caught up to my dad’s peak height (176 cm), but he’s a bit +shorter now that he’s older, so it’s okay. My hair can add at least 2 inches 😂.

+
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-05-29 +

+ +

+ tags: + + til + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/til/parallel-make/index.html b/post/til/parallel-make/index.html new file mode 100644 index 0000000..aaea6cf --- /dev/null +++ b/post/til/parallel-make/index.html @@ -0,0 +1,180 @@ + + + + TIL: Parallel `make` – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

TIL: Parallel make

+
+
+

I’ve always kind of known about the -j flag for make, but I didn’t know +that it just works.

+

I started dabbling in C++ again, which +meant dealing with Makefiles, compilation orders, and the like. I’m not sure +what part of my code is slowing down my compilation times, but it is +disappointing coming from Go and C. It’s even slower than a clean Rust build!!

+

I thought to myself that maybe there’s a way to parallelize the compilation +steps, after doing some setup. I was wrong, it did not need any setup. Just +slap a -j in there for infinite jobs and you’re good.

+
# Without -j
+[chrlz@workstation master monke]$ time make all
+mkdir -p obj
+g++ -c -o obj/token.o -std=c++20 -Wall -Wextra -pedantic -O3 src/token.cpp
+g++ -c -o obj/lexer.o -std=c++20 -Wall -Wextra -pedantic -O3 src/lexer.cpp
+g++ -c -o obj/ast.o -std=c++20 -Wall -Wextra -pedantic -O3 src/ast.cpp
+g++ -c -o obj/parser.o -std=c++20 -Wall -Wextra -pedantic -O3 src/parser.cpp
+g++ -c -o repl.o -std=c++20 -Wall -Wextra -pedantic -O3 repl.cpp
+g++ -o monke_repl -std=c++20 -Wall -Wextra -pedantic -O3 obj/token.o obj/lexer.o obj/ast.o obj/parser.o repl.o
+make all  9.08s user 0.66s system 99% cpu 9.748 total
+
+# With -j
+[chrlz@workstation master monke]$ time make -j all
+mkdir -p obj
+g++ -c -o repl.o -std=c++20 -Wall -Wextra -pedantic -O3 repl.cpp
+g++ -c -o obj/token.o -std=c++20 -Wall -Wextra -pedantic -O3 src/token.cpp
+g++ -c -o obj/lexer.o -std=c++20 -Wall -Wextra -pedantic -O3 src/lexer.cpp
+g++ -c -o obj/ast.o -std=c++20 -Wall -Wextra -pedantic -O3 src/ast.cpp
+g++ -c -o obj/parser.o -std=c++20 -Wall -Wextra -pedantic -O3 src/parser.cpp
+g++ -o monke_repl -std=c++20 -Wall -Wextra -pedantic -O3 obj/token.o obj/lexer.o obj/ast.o obj/parser.o repl.o
+make -j all  10.27s user 0.77s system 255% cpu 4.317 total
+

It basically cuts down my compilation time by 50%. I feel like a real dummy +now.

+
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+

I've always kind of known about the `-j` flag for `make`, but I didn't know that **it just works**.

+ +

+ By Charles Ancheta, + 2023-05-30 +

+ +

+ tags: + + til + + make + + gnu + + compilation + + c++ + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/welcome/index.html b/post/welcome/index.html new file mode 100644 index 0000000..9412944 --- /dev/null +++ b/post/welcome/index.html @@ -0,0 +1,145 @@ + + + + Welcome! – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Welcome!

+
+
+

Welcome to my website! I am Charles, a Computer Engineering Student working as a Full Stack Web Developer.

+

For someone who spends a lot of time typing in front of a computer, I write down very little of my thoughts. Most stuff +that I come back to for memories are just old code and old pictures, and this should hopefully change that.

+
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-05-28 +

+ +

+ tags: + + welcome + + first + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/post/why-i-migrated-to-hugo/index.html b/post/why-i-migrated-to-hugo/index.html new file mode 100644 index 0000000..f7596ff --- /dev/null +++ b/post/why-i-migrated-to-hugo/index.html @@ -0,0 +1,193 @@ + + + + Why I Migrated to Hugo – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Why I Migrated to Hugo

+
+
+

Aside from the fact that Hugo is Blazingly Fast™, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.

+

I had no need for React in this website

+

There were only a few components that needed JavaScript, and now that I re-built +the website with Hugo, there was only one that actually needed to be dynamic +(i.e. post comments section, which was a single script tag in Hugo compared to +an entire source file in React).

+

I was basically compiling my Markdown files to JSX, then compiling it to HTML +instead of going directly to HTML. This made me unsatisfied with my build times +considering I was not using much Docusaurus’ features.

+

I liked writing code too much that I never wrote actual content

+

Around the end of August, I discovered ReScript. +This was a breath of fresh air, coming from TypeScript fatigue. Naturally, I was +tempted to convert all my TypeScript projects to ReScript (even my work ones, +thank my co-worker for stopping me).

+

My website wasn’t saved from this, though. It was fun for a while, playing +around with its type system. Then I realized I spent more time inside the src +directory instead of blog. I was basically just playing around with the code, +not even changing the appearance or structure of the pages.

+

While I still use ReScript for my actual projects, my website doesn’t need it.

+

Simply less JavaScript

+

My content is purely markdown, my structure is purely HTML, my styling is +stolen1. No code necessary2. The only JS that I request now is from +Cloudflare (email protection and analytics) and +utteranc.es (post comments using GitHub account). In +conclusion, I’m just de-bloating my website, and I’m trying to move away from +writing more code. The world surely is a better place with me exercising +restraint.

+
+
+
    +
  1. +

    I really just love this style↩︎

    +
  2. +
  3. +

    aside from the little Go script that I use to auto-generate +more content, but this is just one instance ↩︎

    +
  4. +
+
+
+
+ + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+ + +

+ By Charles Ancheta, + 2022-11-29 +

+ +

+ tags: + + website + + hugo + + blazingly + + fast + + js + + go + + rescript + +

+ + + +
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/posts/index.html b/posts/index.html new file mode 100644 index 0000000..4df17a0 --- /dev/null +++ b/posts/index.html @@ -0,0 +1,10 @@ + + + + https://charlesancheta.com/post/ + + + + + + diff --git a/pou.a705cf93d8367f4c2b112b8a3216fc31b5984531f688285e365cf886786b507898fe341f07dc84cede9dda25155b1078c75a6da8d9a9b1cc1a250abd47474bad.js b/pou.a705cf93d8367f4c2b112b8a3216fc31b5984531f688285e365cf886786b507898fe341f07dc84cede9dda25155b1078c75a6da8d9a9b1cc1a250abd47474bad.js new file mode 100644 index 0000000..a0801fa --- /dev/null +++ b/pou.a705cf93d8367f4c2b112b8a3216fc31b5984531f688285e365cf886786b507898fe341f07dc84cede9dda25155b1078c75a6da8d9a9b1cc1a250abd47474bad.js @@ -0,0 +1,279 @@ +// @ts-check +const audio = { + lowFifth: new Audio("/mp3/pou-low-5th-shortened.mp3"), + lowSixth: new Audio("/mp3/pou-low-6th-shortened.mp3"), + root: new Audio("/mp3/pou-root-shortened.mp3"), + second: new Audio("/mp3/pou-2nd-shortened.mp3"), + third: new Audio("/mp3/pou-3rd-shortened.mp3"), + highFifth: new Audio("/mp3/pou-5th-shortened.mp3"), + highSixth: new Audio("/mp3/pou-6th-shortened.mp3"), +}; + +/** @type {Record} */ +const keys = { + "z": audio.lowFifth, + "x": audio.lowSixth, + "a": audio.root, + "s": audio.second, + "d": audio.third, + "q": audio.highFifth, + "w": audio.highSixth, +}; + +const paths = { + outline: + "m -242.63672,31.222656 c -1.90776,0 -3.8419,0.203714 -5.43164,0.623047 -10.67178,2.814945 -20.82279,13.047273 -31.05859,30.917969 -4.40363,7.688284 -7.10234,13.982699 -8.23047,19.291016 -0.61082,2.874119 -0.69144,8.888255 -0.11328,11.25 0.70067,2.862276 2.37328,5.887056 4.49609,8.160152 5.61473,6.01219 14.78371,9.21584 29.33984,10.50586 1.44209,0.1278 7.11224,0.52643 12.59375,0.47852 8.34302,-0.0728 10.73687,-0.52188 14.13477,-0.98633 12.17117,-1.66363 19.56076,-4.59416 24.60742,-9.99805 2.12281,-2.273093 3.79542,-5.297876 4.4961,-8.160152 0.57815,-2.361747 0.49754,-8.375882 -0.11329,-11.25 -1.12943,-5.314452 -3.70656,-11.33777 -8.10351,-19.042969 -10.31408,-18.074362 -20.4516,-28.334671 -31.18555,-31.166016 -1.58974,-0.419332 -3.52387,-0.623047 -5.43164,-0.623047 z", + body: + "m -242.63696,32.123297 c -1.85143,0 -3.70281,0.19762 -5.20072,0.59273 -10.33441,2.725954 -20.31852,12.705884 -30.50718,30.494264 -4.38043,7.64779 -7.03049,13.84982 -8.1318,19.03192 -0.58493,2.75232 -0.64947,8.67825 -0.11834,10.84791 0.66213,2.70482 2.25287,5.58989 4.27829,7.758699 5.3966,5.77862 14.30082,8.94407 28.76259,10.22573 1.42073,0.1259 7.04763,0.52106 12.50466,0.47336 8.29776,-0.0724 10.59343,-0.50947 14.02292,-0.97824 12.06699,-1.64939 19.23549,-4.54428 24.06986,-9.72085 2.02542,-2.168809 3.61615,-5.053879 4.27828,-7.758699 0.53113,-2.16966 0.46608,-8.09559 -0.11885,-10.84791 -1.10399,-5.19471 -3.62756,-11.1186 -8.00261,-18.78542 -10.2676,-17.99291 -20.23856,-27.99822 -30.63586,-30.740764 -1.49791,-0.39511 -3.3498,-0.59273 -5.20124,-0.59273 z", + "eye-outline": + "m -947.13867,161.54883 c -17.83196,-7e-5 -31.99181,15.58348 -31.99219,34.53711 -7e-4,18.9545 14.15948,34.53913 31.99219,34.53906 14.0794,5e-5 25.74692,-9.77348 30.08594,-23.19141 4.33902,13.41796 16.00655,23.19146 30.08593,23.19141 17.83274,7e-5 31.99289,-15.58461 31.99219,-34.53906 -3.8e-4,-18.95368 -14.16025,-34.53718 -31.99219,-34.53711 -14.07878,-5e-5 -25.74649,9.77227 -30.08593,23.18945 -4.33945,-13.4172 -16.00717,-23.1895 -30.08594,-23.18945 z", + sclera: + "m -947.13867,164.57227 a 28.968658,31.514358 0 0 0 -28.96875,31.51367 28.968658,31.514358 0 0 0 28.96875,31.51562 28.968658,31.514358 0 0 0 28.96875,-31.51562 28.968658,31.514358 0 0 0 -28.96875,-31.51367 z m 60.17187,0 a 28.968658,31.514358 0 0 0 -28.96875,31.51367 28.968658,31.514358 0 0 0 28.96875,31.51562 28.968658,31.514358 0 0 0 28.96875,-31.51562 28.968658,31.514358 0 0 0 -28.96875,-31.51367 z", + mouth: + "m -263.62773,63.084741 c 0,0 -4.35224,14.1398 7.57709,9.86893 l 0.31739,1.18452 c 0,0 -13.63449,5.12106 -8.87669,-11.52117 v 0 z", +}; + +const svgns = "http://www.w3.org/2000/svg"; + +/** + * @param {string} pathName + * @param {Record} obj + * @param {string | undefined} className + */ +function makePath(pathName, obj = paths, className = undefined) { + const path = document.createElementNS(svgns, "path"); + path.setAttribute("class", className || pathName); + path.setAttribute("d", obj[pathName]); + return path; +} + +/** + * @param {number} cx + */ +function makePupil(cx) { + const circle = document.createElementNS(svgns, "circle"); + circle.setAttribute("class", "pupil"); + circle.setAttribute("cx", cx.toString()); + circle.setAttribute("cy", "51.8"); + circle.setAttribute("r", "2.4"); + return circle; +} + +const openMouth = { + "upper-lip": + "m 28.824959,36.085745 c 0,0 14.005899,-14.088017 31.490978,0.06023", + "upper-mouth": + "m 28.824959,36.085745 c 0,0 14.005899,-14.088017 31.490978,0.06023", + "lower-mouth": + "m 28.824959,36.085745 c 0,0 14.506532,31.22966 31.490978,0.06023", + "lower-lip": + "m 28.824959,36.085745 c 0,0 14.506532,31.22966 31.490978,0.06023", + "centre": "m 28.824959,36.085745 l 31.490978,0.06023", +}; + +function makeOpenMouthSvg() { + const g = document.createElementNS(svgns, "g"); + g.setAttribute("transform", "translate(0, 5)"); + g.appendChild(makePath("lower-mouth", openMouth, "open-mouth")); + g.appendChild(makePath("upper-mouth", openMouth, "open-mouth")); + g.appendChild(makePath("centre", openMouth, "centre lip")); + g.appendChild(makePath("upper-lip", openMouth, "open lip")); + g.appendChild(makePath("lower-lip", openMouth, "open lip")); + return g; +} + +let clones = 0; + +/** + * @param {string} key + */ +function activatePou(key, event) { + const a = keys[key]; + if (a === undefined) return; + console.log(event); + const currentPou = pouRecord[key]; + for (let i = 0; i < currentPou.idx; i++) { + pouArray[i].lookRight(); + } + currentPou.lookStraight(); + currentPou.openMouth(); + for (let i = currentPou.idx + 1; i < 7; i++) { + pouArray[i].lookLeft(); + } + if (a.paused) { + a.play(); + } else { + console.log(`Cloned audio: ${++clones}`); + // @ts-expect-error + a.cloneNode().play(); + } +} + +class Pou { + /** + * @param {string} id + * @param {number} idx + */ + constructor(id, idx) { + this.idx = idx; + const color = makeHslColour(idx); + const svg = document.createElementNS(svgns, "svg"); + svg.setAttribute("class", "pou"); + svg.setAttribute("id", id); + svg.setAttribute("viewBox", "0 0 90.452331 81.230538"); + svg.setAttribute("version", "1.1"); + svg.setAttribute("xmlns", svgns); + svg.setAttribute("xmlns:svg", svgns); + const g = document.createElementNS(svgns, "g"); + g.setAttribute("transform", "translate(287.86288,-31.222656)"); + const body = makePath("body"); + body.style.fill = color; + this.closedMouth = makePath("mouth"); + this.left = makePupil(-250.59694); + this.right = makePupil(-234.67667); + g.appendChild(makePath("outline")); + g.appendChild(body); + g.appendChild(makePath("eye-outline")); + g.appendChild(makePath("sclera")); + g.appendChild(this.left); + g.appendChild(this.right); + g.appendChild(this.closedMouth); + this.openMouthSvg = makeOpenMouthSvg(); + this.openMouthSvg.classList.add("hidden"); + svg.appendChild(g); + svg.appendChild(this.openMouthSvg); + this.svg = svg; + svg.addEventListener("click", (e) => activatePou(id, e)); + } + + /** + * @param {number} offset + */ + lookOffset(offset) { + if (this.timeout) { + clearTimeout(this.timeout); + } + this.left.style.transform = `translateX(${offset}px)`; + this.right.style.transform = `translateX(${offset}px)`; + this.timeout = setTimeout(() => { + this.lookStraight(); + }, 500); + } + + openMouth() { + if (this.mouthTimeout) { + clearTimeout(this.mouthTimeout); + } + this.closedMouth.classList.add("hidden"); + this.openMouthSvg.classList.remove("hidden"); + this.mouthTimeout = setTimeout(() => { + this.closedMouth.classList.remove("hidden"); + this.openMouthSvg.classList.add("hidden"); + clearTimeout(this.mouthTimeout); + }, 500); + } + + lookStraight() { + this.left.style.transform = `translateX(${0}px)`; + this.right.style.transform = `translateX(${0}px)`; + clearTimeout(this.timeout); + } + + lookLeft() { + this.lookOffset(-5); + } + lookRight() { + this.lookOffset(5); + } +} + +const piano = document.querySelector(".piano"); + +/** + * @param {number} i + */ +function makeHslColour(i) { + return `hsl(${10 + i * (360 / 7)}, 100%, 50%)`; +} + +const pouRecord = Object.fromEntries(["z", "x", "a", "s", "d", "q", "w"].map(( + id, + idx, +) => [id, new Pou(id, idx)])); + +const pouArray = Object.values(pouRecord); + +pouArray.forEach((pou) => { + piano?.appendChild(pou.svg); +}); + +document.addEventListener("keypress", (e) => { + if (e.key === " " && e.target === document.body) { + e.preventDefault(); + toggleConfetti(); + } + activatePou(e.key, e); +}); + +const colours = [ + "blue", + "cyan", + "green", + "indigo", + "orange", + "pink", + "purple", + "red", + "steelblue", + "white", + "yellow", +]; + +const shapes = [ + "dodecagram", + "hexagram", + "pentagram", + "rectangle", + "square", + "wavy-line", +]; + +/** + * @param {number} min inclusive + * @param {number} max exclusive + */ +function getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min) + min); +} + +/** + * @param {string[]} arr + */ +function choose(arr) { + return arr[getRandomInt(0, arr.length)]; +} + +function toggleConfetti() { + const confetti = document.querySelector(".confetti"); + document.querySelector(".confetti-container")?.classList.toggle("hidden"); + if (confetti?.children.length === 0) { + const n = getRandomInt(100, 150); + for (let i = 0; i < n; i++) { + const i = document.createElement("i"); + i.setAttribute("class", choose(shapes)); + i.setAttribute( + "style", + `--speed: ${getRandomInt(5, 50)}; --pou-bg: ${choose(colours)}`, + ); + confetti?.appendChild(i); + } + } else if (confetti) { + confetti.innerHTML = ""; + } +} + +document.querySelector("#toggle-confetti")?.addEventListener("click", () => { + toggleConfetti(); +}); diff --git a/projects/index.html b/projects/index.html new file mode 100644 index 0000000..2479955 --- /dev/null +++ b/projects/index.html @@ -0,0 +1,179 @@ + + + + My Personal Projects – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

My Personal Projects

+ +

Both alone and with ✨ friends ✨

+

Current/Planned Projects

+
    +
  • Time Tracking PWA for my girlfriend with Svelte frontend and Pocketbase backend
  • +
  • Web frontend for Pincerhex, a Hex-playing program by me and my friend Will +
      +
    • written in 🦀🦀🦀 Rust 🦀🦀🦀 btw
    • +
    • we won +btw
    • +
    +
  • +
  • Markdown to LaTeX converter for my Resume (in 🦀🦀🦀 Rust 🦀🦀🦀 btw)
  • +
  • Open Kattis Group +Ranklist with a few extra +columns +
      +
    • Show contributed score, and required individual score to climb the next +group rank
    • +
    +
  • +
  • Water Sort Puzzle Solver
  • +
+ + +

Thyck Corgis

+

Started October 2020 Formed for University of Alberta Engineering Competition, we went on to participate in a couple +more hackathons as a team. Check out our GitHub!

+

WApp - February 2021

+
    +
  • Are you thirsty?! Well urine luck! ComPEEte with friends to rank #1 in the litreboard using our award winning WApp! +Demo Video
  • +
+

Heart 2 Heart Confessations - January 2021

+
    +
  • A mobile application that tackles the fear of initiating difficult conversations with friends, family, or significant +others.
  • +
+

NPM Packages

+

They’re gone now

+ + + +
    + +
+ + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/projects/index.xml b/projects/index.xml new file mode 100644 index 0000000..993284c --- /dev/null +++ b/projects/index.xml @@ -0,0 +1,13 @@ + + + + My Personal Projects on Charles Ancheta + https://charlesancheta.com/projects/ + Recent content in My Personal Projects on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + + diff --git a/ripple.webp b/ripple.webp new file mode 100644 index 0000000..e7cf454 Binary files /dev/null and b/ripple.webp differ diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..eff6756 --- /dev/null +++ b/robots.txt @@ -0,0 +1,3 @@ +User-agent: * + +Sitemap: https://charlesancheta.com/my-sitemap.xml diff --git a/series/index.html b/series/index.html new file mode 100644 index 0000000..2806c00 --- /dev/null +++ b/series/index.html @@ -0,0 +1,543 @@ + + + + Series – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+
+

Series

+
+ + + + + + + + + + + + + + + + + + +

B

+ + + backend (1) + + + + + + + + + + + + + blazingly (1) + + + + + + + + + + + + + +

C

+ + + c++ (1) + + + + + + + + + + + + + compilation (1) + + + + + + + + + + + + + +

D

+ + + dev (2) + + + + + + + + + + + + + dev-log (4) + + + + + + + + + + + + + +

F

+ + + fast (1) + + + + + + + + + + + + + first (1) + + + + + + + + + + + + + +

G

+ + + gh-pages (1) + + + + + + + + + + + + + gnu (1) + + + + + + + + + + + + + go (3) + + + + + + + + + + + + + +

H

+ + + hosting (1) + + + + + + + + + + + + + hugo (1) + + + + + + + + + + + + + +

J

+ + + js (2) + + + + + + + + + + + + + +

L

+ + + love (4) + + + + + + + + + + + + + lua (4) + + + + + + + + + + + + + +

M

+ + + make (1) + + + + + + + + + + + + + meme (1) + + + + + + + + + + + + + multiplayer (1) + + + + + + + + + + + + + +

N

+ + + netlify (1) + + + + + + + + + + + + + npm (1) + + + + + + + + + + + + + +

R

+ + + rescript (1) + + + + + + + + + + + + + +

S

+ + + scripting (1) + + + + + + + + + + + + + +

T

+ + + til (2) + + + + + + + + + + + + + trash-packages (1) + + + + + + + + + + + + + typescript (1) + + + + + + + + + + + + + +

W

+ + + website (1) + + + + + + + + + + + + + welcome (1) + + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/series/index.xml b/series/index.xml new file mode 100644 index 0000000..e99b867 --- /dev/null +++ b/series/index.xml @@ -0,0 +1,13 @@ + + + + Series on Charles Ancheta + https://charlesancheta.com/series/ + Recent content in Series on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + + diff --git a/showcase/index.html b/showcase/index.html new file mode 100644 index 0000000..4df17a0 --- /dev/null +++ b/showcase/index.html @@ -0,0 +1,10 @@ + + + + https://charlesancheta.com/post/ + + + + + + diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..fd0d0bd --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,208 @@ + + + + https://charlesancheta.com/work/ripple/ + + + https://charlesancheta.com/work/isaic/ + + + https://charlesancheta.com/ + 2023-06-08T23:04:45-06:00 + + + https://charlesancheta.com/post/static-website-setup/part-1/ + 2023-06-08T23:04:45-06:00 + + + https://charlesancheta.com/post/ + 2023-06-08T23:04:45-06:00 + + + https://charlesancheta.com/tags/c++/ + 2023-05-30T00:00:00+00:00 + + + https://charlesancheta.com/tags/compilation/ + 2023-05-30T00:00:00+00:00 + + + https://charlesancheta.com/tags/gnu/ + 2023-05-30T00:00:00+00:00 + + + https://charlesancheta.com/tags/make/ + 2023-05-30T00:00:00+00:00 + + + https://charlesancheta.com/tags/ + 2023-05-30T00:00:00+00:00 + + + https://charlesancheta.com/tags/til/ + 2023-05-30T00:00:00+00:00 + + + https://charlesancheta.com/post/til/parallel-make/ + 2023-05-30T00:00:00+00:00 + + + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + 2023-05-10T00:59:18-06:00 + + + https://charlesancheta.com/tags/js/ + 2023-05-10T00:59:18-06:00 + + + https://charlesancheta.com/tags/npm/ + 2023-05-10T00:59:18-06:00 + + + https://charlesancheta.com/tags/trash-packages/ + 2023-05-10T00:59:18-06:00 + + + https://charlesancheta.com/post/pou/ + 2022-12-31T21:04:23-07:00 + + + https://charlesancheta.com/post/replicating-my-linux-workflow-on-windows/ + 2022-12-09T00:49:52-07:00 + + + https://charlesancheta.com/tags/blazingly/ + 2022-11-29T02:50:15-07:00 + + + https://charlesancheta.com/tags/fast/ + 2022-11-29T02:50:15-07:00 + + + https://charlesancheta.com/tags/go/ + 2022-11-29T02:50:15-07:00 + + + https://charlesancheta.com/tags/hugo/ + 2022-11-29T02:50:15-07:00 + + + https://charlesancheta.com/tags/rescript/ + 2022-11-29T02:50:15-07:00 + + + https://charlesancheta.com/tags/website/ + 2022-11-29T02:50:15-07:00 + + + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + 2022-11-29T02:50:15-07:00 + + + https://charlesancheta.com/tags/dev/ + 2022-11-16T03:52:09-07:00 + + + https://charlesancheta.com/post/go-interfaces/ + 2022-11-16T03:52:09-07:00 + + + https://charlesancheta.com/tags/scripting/ + 2022-11-16T03:52:09-07:00 + + + https://charlesancheta.com/post/dev-log/boboman/day-4/ + 2022-07-06T00:00:00+00:00 + + + https://charlesancheta.com/tags/dev-log/ + 2022-07-06T00:00:00+00:00 + + + https://charlesancheta.com/tags/love/ + 2022-07-06T00:00:00+00:00 + + + https://charlesancheta.com/tags/lua/ + 2022-07-06T00:00:00+00:00 + + + https://charlesancheta.com/tags/multiplayer/ + 2022-07-06T00:00:00+00:00 + + + https://charlesancheta.com/post/dev-log/boboman/day-3/ + 2022-07-05T00:00:00+00:00 + + + https://charlesancheta.com/post/dev-log/boboman/day-2/ + 2022-07-04T00:00:00+00:00 + + + https://charlesancheta.com/tags/gh-pages/ + 2022-07-04T00:00:00+00:00 + + + https://charlesancheta.com/post/dev-log/boboman/day-1/ + 2022-07-03T00:00:00+00:00 + + + https://charlesancheta.com/post/bye-bye-netlify/ + 2022-06-19T00:00:00+00:00 + + + https://charlesancheta.com/tags/hosting/ + 2022-06-19T00:00:00+00:00 + + + https://charlesancheta.com/tags/netlify/ + 2022-06-19T00:00:00+00:00 + + + https://charlesancheta.com/tags/backend/ + 2022-06-07T00:00:00+00:00 + + + https://charlesancheta.com/post/friendship-ended/ + 2022-06-07T00:00:00+00:00 + + + https://charlesancheta.com/tags/meme/ + 2022-06-07T00:00:00+00:00 + + + https://charlesancheta.com/tags/typescript/ + 2022-06-07T00:00:00+00:00 + + + https://charlesancheta.com/post/til/my-actual-height/ + 2022-05-29T00:00:00+00:00 + + + https://charlesancheta.com/tags/first/ + 2022-05-28T00:00:00+00:00 + + + https://charlesancheta.com/tags/welcome/ + 2022-05-28T00:00:00+00:00 + + + https://charlesancheta.com/post/welcome/ + 2022-05-28T00:00:00+00:00 + + + https://charlesancheta.com/categories/ + + + https://charlesancheta.com/projects/ + + + https://charlesancheta.com/work/ + + + https://charlesancheta.com/series/ + + + https://charlesancheta.com/turnip/ + + diff --git a/styles/pou.min.a20e01ce011a16273b84d862a9fec9b4c61d29fc51bb91b4a08702f93391c120562c0a55d0ea16309a170feb9532715ffeed7e224164daf5e7c6015a80f54107.css b/styles/pou.min.a20e01ce011a16273b84d862a9fec9b4c61d29fc51bb91b4a08702f93391c120562c0a55d0ea16309a170feb9532715ffeed7e224164daf5e7c6015a80f54107.css new file mode 100644 index 0000000..670f493 --- /dev/null +++ b/styles/pou.min.a20e01ce011a16273b84d862a9fec9b4c61d29fc51bb91b4a08702f93391c120562c0a55d0ea16309a170feb9532715ffeed7e224164daf5e7c6015a80f54107.css @@ -0,0 +1 @@ +:root{--pou-bg:yellow}button{line-height:1.5rem;font-weight:700;color:var(--fg);font-size:1rem;background:var(--muted);font-family:var(--font-monospace);margin:.5rem}label{color:#fff;font-size:1.5rem}input{width:40px;height:40px;cursor:pointer}.confetti-container{user-select:none;pointer-events:none;z-index:10}.confetti{position:fixed;left:0;right:0;display:flex}.confetti .square{width:1rem;height:1rem;background-color:var(--pou-bg);transform:rotate(140deg)}.confetti .rectangle{width:1rem;height:.5rem;background-color:var(--pou-bg)}.confetti .hexagram{width:0;height:0;border-left:.5rem solid transparent;border-right:.5rem solid transparent;border-bottom:1rem solid var(--pou-bg);position:relative}.confetti .hexagram:after{content:"";width:0;height:0;border-left:.5rem solid transparent;border-right:.5rem solid transparent;border-top:1rem solid var(--pou-bg);position:absolute;top:.33rem;left:-.5rem}.confetti .dodecagram{background:var(--pou-bg);width:8px;height:8px;position:relative}.confetti .dodecagram:before{content:"";height:8px;width:8px;background:var(--pou-bg);transform:rotate(30deg);position:absolute;top:0;left:0}.confetti .dodecagram:after{content:"";height:8px;width:8px;background:var(--pou-bg);transform:rotate(60deg);position:absolute;top:0;left:0}.confetti .hexagram .confetti .pentagram{width:0;height:0;display:block;margin:.5rem 0;border-right:1rem solid transparent;border-bottom:.7rem solid var(--pou-bg);border-left:1rem solid transparent;transform:rotate(35deg);position:relative}.confetti .pentagram:before{border-bottom:.8rem solid var(--pou-bg);border-left:.3rem solid transparent;border-right:.3rem solid transparent;position:absolute;height:0;width:0;top:-.45rem;left:-.65rem;display:block;content:"";transform:rotate(-35deg)}.confetti .pentagram:after{position:absolute;display:block;color:var(--pou-bg);top:.03rem;left:-1.05rem;width:0;height:0;border-right:1rem solid transparent;border-bottom:.7rem solid var(--pou-bg);border-left:1rem solid transparent;transform:rotate(-70deg);content:""}.confetti .wavy-line{position:relative}.confetti .wavy-line::after,.confetti .wavy-line::before{content:"";height:10px;width:80px;background-size:20px 10px;position:absolute;left:-9rem;transform:rotate(90deg)}.confetti .wavy-line::before{background-image:linear-gradient( 45deg,transparent,transparent 50%,var(--pou-bg) 50%,transparent 60% );top:1rem}.confetti .wavy-line::after{background-image:linear-gradient( -45deg,transparent,transparent 50%,var(--pou-bg) 50%,transparent 60% )}.confetti i{width:3rem;height:3rem;margin:0 .2rem;animation-name:confetti;animation-timing-function:linear;animation-iteration-count:infinite;animation-duration:calc(60s/var(--speed))}.confetti i:nth-child(even){transform:rotate(90deg)}@keyframes confetti{0%{transform:translateY(-100vh)}100%{transform:translateY(100vh)}}.piano{display:flex}.piano img,.piano svg{width:10rem;margin:1rem;-webkit-tap-highlight-color:rgba(255,255,255,0)}.outline{opacity:1;fill:#000;stroke:none;stroke-width:.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1}.body{opacity:1;fill:#c4985a;stroke:none;stroke-width:.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1}.eye-outline{fill:#000;fill-opacity:1;stroke:none;stroke-width:5.24814;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;transform:scale(.26458333)}.sclera{fill:#fff;fill-opacity:1;stroke:none;stroke-width:5.24814;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;transform:scale(.26458333)}.hidden{display:none;transition:transform .5s}.open-mouth{fill:#782121}.lip{fill:none;stroke-dasharray:none;stroke-opacity:1}.open{stroke:#000;stroke-width:1}.centre{stroke:#782121;stroke-width:2}.pupil{fill:#000;fill-opacity:1;stroke:none;stroke-width:.829436;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;transition:transform .125s}.mouth{opacity:1;fill:#000;fill-opacity:1;stroke:none;stroke-width:.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1} \ No newline at end of file diff --git a/styles/risotto.min.ddc86cedd56f601a31494f30308bebeb59a546115259df9b372b4339234421562bd02be7d6794519d641e2ed9ee8035085814598034b9186658a36f325af60ad.css b/styles/risotto.min.ddc86cedd56f601a31494f30308bebeb59a546115259df9b372b4339234421562bd02be7d6794519d641e2ed9ee8035085814598034b9186658a36f325af60ad.css new file mode 100644 index 0000000..b96e2ea --- /dev/null +++ b/styles/risotto.min.ddc86cedd56f601a31494f30308bebeb59a546115259df9b372b4339234421562bd02be7d6794519d641e2ed9ee8035085814598034b9186658a36f325af60ad.css @@ -0,0 +1 @@ +:root{--base00:#181818;--base01:#282828;--base02:#383838;--base03:#585858;--base04:#b8b8b8;--base05:#d8d8d8;--base06:#e8e8e8;--base07:#f8f8f8;--base08:#ab4642;--base09:#dc9656;--base0A:#f7ca88;--base0B:#a1b56c;--base0C:#86c1b9;--base0D:#7cafc2;--base0E:#ba8baf;--base0F:#a16946;--bg:var(--base00);--off-bg:var(--base01);--inner-bg:var(--base02);--fg:var(--base05);--off-fg:var(--base04);--muted:var(--base03);--link:var(--base0D);--hover:var(--base0C);--highlight:var(--base0A);--logo:var(--base0B)}:root{--font-monospace:"Fira Mono", monospace}body{font-family:var(--font-monospace);font-size:16px;line-height:1.5rem}h1,h2,h3,h4,h5,h6{font-size:1rem;margin:1.5rem 0 0;font-weight:600}h1:before,h2:before,h3:before,h4:before,h5:before,h6:before{color:var(--muted)}h1+h2,h1+h3,h1+h4,h1+h5,h1+h6,h2+h3,h2+h4,h2+h5,h2+h6,h3+h4,h3+h5,h3+h6,h4+h5,h4+h6,h5+h6{margin:0}h1:before{content:"# "}h2:before{content:"## "}h3:before{content:"### "}h4:before{content:"#### "}h5:before{content:"##### "}h6:before{content:"###### "}h1:first-child{margin-top:0}p{margin:0 0 1.5rem}a:link,a:visited{color:var(--link)}a:hover,a:active,a.active{color:var(--hover)}ul{margin:0 0 1.5rem;padding-left:1.25rem}ul li::marker{content:'∗\00A0';color:var(--muted)}ol{margin:0 0 1.5rem;padding-left:1.75rem}ol li::marker{color:var(--muted)}ul ul,ol ol,ul ol,ol ul{margin:0}dt{margin:0;font-weight:700}dd{margin:0 0 0 1.5rem;font-style:italic}dd+dt{margin-top:1.5rem}dl{margin:0 0 1.5rem}blockquote{position:relative;margin:0 0 1.5rem 1.5rem}blockquote::before{position:absolute;left:-1.5rem;content:">";color:var(--muted)}.twitter-tweet::before{content:"\f099";font-family:"font awesome 5 brands";font-weight:400}pre,code,kbd,samp{background:var(--inner-bg)!important;font-family:var(--font-monospace);color:var(--off-fg)}pre{overflow-x:auto;padding:1.5rem;margin:0 0 1.5rem}b,strong{font-weight:600}::selection,mark{background-color:var(--highlight);color:var(--bg)}hr{border:0;margin-bottom:1.5rem}hr:after{content:'---';color:var(--muted)}sup,sub{vertical-align:baseline;position:relative;top:-.25rem;font-size:unset}sub{top:.25rem}table{border-spacing:0;margin:0 0 1.5rem;overflow-wrap:anywhere}th,td{padding:0 .75rem;vertical-align:top}th:first-child,td:first-child{padding-left:0}th{text-align:inherit}img{max-width:100%;height:auto}span{text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%}.page{max-width:64rem;margin:1rem auto;display:grid;grid-template-areas:"header" "body" "aside" "footer";grid-template-columns:minmax(0,1fr);grid-row-gap:2rem}@media(min-width:45rem){.page{grid-template-areas:"header header" "body aside" "footer footer";grid-template-columns:minmax(0,1fr)15rem;grid-column-gap:2rem}}.page__header{grid-area:header;display:flex}.page__logo{flex-shrink:0}.page__nav{flex-grow:1}.page__body{grid-area:body;background-color:var(--off-bg);box-shadow:0 0 0 1rem var(--off-bg);overflow-wrap:break-word}.page__aside{grid-area:aside;color:var(--off-fg)}.page__footer{grid-area:footer}.main-nav ul{display:flex;flex-flow:row wrap;justify-content:flex-start;margin:0;padding:.25rem 0}.main-nav li{margin-left:2.5rem;text-transform:lowercase}.main-nav li::marker{content:"./"}@media(max-width:45rem){.main-nav li{margin-bottom:.5rem}}.page__logo{padding:0;margin:0;font-weight:inherit;color:var(--bg)}.page__logo:before{content:none}.page__logo-inner{display:block;background:var(--logo);opacity:.9;padding:.25rem}a.page__logo-inner:link,a.page__logo-inner:visited{color:inherit;text-decoration:inherit}a.page__logo-inner:hover,a.page__logo-inner:active{opacity:1}a.page__logo-inner:before,a.page__logo-inner:after{color:var(--bg)}a.page__logo-inner:before{content:"["}a.page__logo-inner:after{content:"] $"}.about__logo{height:1.5rem}.about__title{display:inline;vertical-align:top}.about__title::before{content:none}.aside__social-links{padding:0}.aside__social-links li{display:inline-block}.aside__social-links li::marker{content:none}.page__footer{color:var(--off-fg)}.page__footer p{margin:0}body{background-color:var(--bg);color:var(--fg)} \ No newline at end of file diff --git a/styles/turnips.min.29d9285755caaf4c9a00f1ad2735b8b66c38f8cbf6ca00e2d3de6e5406d0e72fd1dc202807c08995c93ced558754f1e78483a9616c9faff85090b36c5b543bec.css b/styles/turnips.min.29d9285755caaf4c9a00f1ad2735b8b66c38f8cbf6ca00e2d3de6e5406d0e72fd1dc202807c08995c93ced558754f1e78483a9616c9faff85090b36c5b543bec.css new file mode 100644 index 0000000..2f2ce0f --- /dev/null +++ b/styles/turnips.min.29d9285755caaf4c9a00f1ad2735b8b66c38f8cbf6ca00e2d3de6e5406d0e72fd1dc202807c08995c93ced558754f1e78483a9616c9faff85090b36c5b543bec.css @@ -0,0 +1 @@ +.center{display:flex;align-items:center;justify-content:center}.turnip-form label{font-weight:700;margin:0 .5rem}.turnip-form{flex-direction:column;width:100%}.turnip-form input,.turnip-form button,.turnip-form select{line-height:1.5rem;font-weight:700;color:var(--fg);font-size:1rem;background:var(--muted);font-family:var(--font-monospace);margin:.5rem}.turnip-form input{min-width:50%}.turnip-form .days{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-width:80%}.turnip-form .days div{display:flex;flex-direction:column}#results-table{position:absolute}#results-table>table{position:relative;overflow-x:auto;white-space:nowrap;background-color:var(--inner-bg);width:100%}#results-table>table tr{text-align:center} \ No newline at end of file diff --git a/tags/backend/index.html b/tags/backend/index.html new file mode 100644 index 0000000..e8eeb9b --- /dev/null +++ b/tags/backend/index.html @@ -0,0 +1,120 @@ + + + + backend – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

backend

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/backend/index.xml b/tags/backend/index.xml new file mode 100644 index 0000000..28b3b6a --- /dev/null +++ b/tags/backend/index.xml @@ -0,0 +1,23 @@ + + + + backend on Charles Ancheta + https://charlesancheta.com/tags/backend/ + Recent content in backend on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 07 Jun 2022 00:00:00 +0000 + + Friendship Ended with TypeScript, now Go is My Best Friend + https://charlesancheta.com/post/friendship-ended/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/friendship-ended/ + <p><img src="https://charlesancheta.com/post/friendship-ended/friendship-ended.webp" alt="Friendship ended"></p> + + + + diff --git a/tags/blazingly/index.html b/tags/blazingly/index.html new file mode 100644 index 0000000..211c26d --- /dev/null +++ b/tags/blazingly/index.html @@ -0,0 +1,120 @@ + + + + blazingly – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

blazingly

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/blazingly/index.xml b/tags/blazingly/index.xml new file mode 100644 index 0000000..f94df3a --- /dev/null +++ b/tags/blazingly/index.xml @@ -0,0 +1,25 @@ + + + + blazingly on Charles Ancheta + https://charlesancheta.com/tags/blazingly/ + Recent content in blazingly on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 29 Nov 2022 02:50:15 -0700 + + Why I Migrated to Hugo + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + <p>Aside from the fact that Hugo is <em>Blazingly Fast™</em>, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.</p> + + + + diff --git a/tags/c++/index.html b/tags/c++/index.html new file mode 100644 index 0000000..889af09 --- /dev/null +++ b/tags/c++/index.html @@ -0,0 +1,120 @@ + + + + c++ – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

c++

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/c++/index.xml b/tags/c++/index.xml new file mode 100644 index 0000000..f5cd6bd --- /dev/null +++ b/tags/c++/index.xml @@ -0,0 +1,24 @@ + + + + c++ on Charles Ancheta + https://charlesancheta.com/tags/c++/ + Recent content in c++ on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 30 May 2023 00:00:00 +0000 + + TIL: Parallel `make` + https://charlesancheta.com/post/til/parallel-make/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/parallel-make/ + <p>I&rsquo;ve always kind of known about the <code>-j</code> flag for <code>make</code>, but I didn&rsquo;t know +that <strong>it just works</strong>.</p> + + + + diff --git a/tags/compilation/index.html b/tags/compilation/index.html new file mode 100644 index 0000000..fd20b18 --- /dev/null +++ b/tags/compilation/index.html @@ -0,0 +1,120 @@ + + + + compilation – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

compilation

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/compilation/index.xml b/tags/compilation/index.xml new file mode 100644 index 0000000..0e8e8f4 --- /dev/null +++ b/tags/compilation/index.xml @@ -0,0 +1,24 @@ + + + + compilation on Charles Ancheta + https://charlesancheta.com/tags/compilation/ + Recent content in compilation on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 30 May 2023 00:00:00 +0000 + + TIL: Parallel `make` + https://charlesancheta.com/post/til/parallel-make/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/parallel-make/ + <p>I&rsquo;ve always kind of known about the <code>-j</code> flag for <code>make</code>, but I didn&rsquo;t know +that <strong>it just works</strong>.</p> + + + + diff --git a/tags/dev-log/index.html b/tags/dev-log/index.html new file mode 100644 index 0000000..b2e5dd0 --- /dev/null +++ b/tags/dev-log/index.html @@ -0,0 +1,129 @@ + + + + dev-log – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

dev-log

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/dev-log/index.xml b/tags/dev-log/index.xml new file mode 100644 index 0000000..5bdee9c --- /dev/null +++ b/tags/dev-log/index.xml @@ -0,0 +1,57 @@ + + + + dev-log on Charles Ancheta + https://charlesancheta.com/tags/dev-log/ + Recent content in dev-log on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Wed, 06 Jul 2022 00:00:00 +0000 + + Dev Log: Boboman - Day 4 + https://charlesancheta.com/post/dev-log/boboman/day-4/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-4/ + I feel like the hardest part of writing this game would be the enemy logic. That&rsquo;s why I&rsquo;m putting it off for as long as possible! Today I implemented map generation, randomly placing boxes sufficiently far enough from players. +I also added controls for other players, which reminded me of my local multiplayer experience with Boxhead. I miss having multiple people on play a single keyboard. These days it would be awkward to play that way. + + + + Dev Log: Boboman - Day 3 + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Tue, 05 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Feeling good today. I got to fix the collision bug that was happening yesterday. It actually had to do with the collision lifecycle, so to make the player detectable, I decoupled the check from the lifecycle of the bomb. Because of this, I could revert the player&rsquo;s bomb timer to normal. Moving away from a project and letting your brain sit on a problem for a while really does wonders. + + + + Dev Log: Boboman - Day 2 + https://charlesancheta.com/post/dev-log/boboman/day-2/ + Mon, 04 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-2/ + MAJOR BUG ALERT!! +Apparently my collision logic for the bombs weren&rsquo;t going to hold up. Every time a bomb explodes, there is a small time window where you can place a bomb and the bomb would not recognize the player, making it a &ldquo;not new&rdquo; bomb. Because of that, the player gets pushed off right away and could end up in the weirdest of places. +After hours of debugging I couldn&rsquo;t really solve it because of how the collision library orders the entity updates. + + + + Dev Log: Boboman - Day 1 + https://charlesancheta.com/post/dev-log/boboman/day-1/ + Sun, 03 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-1/ + <p>Recently, I&rsquo;ve been heavily configuring my text editor, Neovim, which means that I&rsquo;ve been writing a lot of Lua. I do +find it enjoyable, even without having any tooling initially, so I wanted to give game development and +<a href="https://love2d.org">Love2D</a> a try. I just finished +<a href="https://www.sheepolution.com/learn/book/contents">Sheepolution&rsquo;s How to LÖVE</a> book on Love2D, and felt prepared to make +my first game from scratch. As per Jherzey&rsquo;s request, I&rsquo;m creating a Bomberman clone.</p> + + + + diff --git a/tags/dev/index.html b/tags/dev/index.html new file mode 100644 index 0000000..670cf2a --- /dev/null +++ b/tags/dev/index.html @@ -0,0 +1,123 @@ + + + + dev – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

dev

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/dev/index.xml b/tags/dev/index.xml new file mode 100644 index 0000000..9fd77e2 --- /dev/null +++ b/tags/dev/index.xml @@ -0,0 +1,33 @@ + + + + dev on Charles Ancheta + https://charlesancheta.com/tags/dev/ + Recent content in dev on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Wed, 16 Nov 2022 03:52:09 -0700 + + Go Interfaces give me a reason to live again + https://charlesancheta.com/post/go-interfaces/ + Wed, 16 Nov 2022 03:52:09 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/go-interfaces/ + A few months ago I made a meme about Go being my new favourite language (replacing TypeScript) and I just want to share a satisfying moment I had recently. +The Task In the previous iteration of my website1, I have a few lines in my config that fetches information about my published NPM packages to be rendered on the Projects page. I wanted to do the same for my new website, outputted as a Markdown table, which can be easily imported into the page with readFile. + + + + Friendship Ended with TypeScript, now Go is My Best Friend + https://charlesancheta.com/post/friendship-ended/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/friendship-ended/ + <p><img src="https://charlesancheta.com/post/friendship-ended/friendship-ended.webp" alt="Friendship ended"></p> + + + + diff --git a/tags/fast/index.html b/tags/fast/index.html new file mode 100644 index 0000000..3daa84a --- /dev/null +++ b/tags/fast/index.html @@ -0,0 +1,120 @@ + + + + fast – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

fast

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/fast/index.xml b/tags/fast/index.xml new file mode 100644 index 0000000..faf1f77 --- /dev/null +++ b/tags/fast/index.xml @@ -0,0 +1,25 @@ + + + + fast on Charles Ancheta + https://charlesancheta.com/tags/fast/ + Recent content in fast on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 29 Nov 2022 02:50:15 -0700 + + Why I Migrated to Hugo + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + <p>Aside from the fact that Hugo is <em>Blazingly Fast™</em>, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.</p> + + + + diff --git a/tags/first/index.html b/tags/first/index.html new file mode 100644 index 0000000..02ac4d2 --- /dev/null +++ b/tags/first/index.html @@ -0,0 +1,120 @@ + + + + first – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

first

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/first/index.xml b/tags/first/index.xml new file mode 100644 index 0000000..7fc5101 --- /dev/null +++ b/tags/first/index.xml @@ -0,0 +1,23 @@ + + + + first on Charles Ancheta + https://charlesancheta.com/tags/first/ + Recent content in first on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Sat, 28 May 2022 00:00:00 +0000 + + Welcome! + https://charlesancheta.com/post/welcome/ + Sat, 28 May 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/welcome/ + <p>Welcome to my website! I am Charles, a Computer Engineering Student working as a Full Stack Web Developer.</p> + + + + diff --git a/tags/gh-pages/index.html b/tags/gh-pages/index.html new file mode 100644 index 0000000..e2d602b --- /dev/null +++ b/tags/gh-pages/index.html @@ -0,0 +1,120 @@ + + + + gh-pages – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

gh-pages

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/gh-pages/index.xml b/tags/gh-pages/index.xml new file mode 100644 index 0000000..448b3cb --- /dev/null +++ b/tags/gh-pages/index.xml @@ -0,0 +1,25 @@ + + + + gh-pages on Charles Ancheta + https://charlesancheta.com/tags/gh-pages/ + Recent content in gh-pages on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Mon, 04 Jul 2022 00:00:00 +0000 + + Dev Log: Boboman - Day 2 + https://charlesancheta.com/post/dev-log/boboman/day-2/ + Mon, 04 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-2/ + MAJOR BUG ALERT!! +Apparently my collision logic for the bombs weren&rsquo;t going to hold up. Every time a bomb explodes, there is a small time window where you can place a bomb and the bomb would not recognize the player, making it a &ldquo;not new&rdquo; bomb. Because of that, the player gets pushed off right away and could end up in the weirdest of places. +After hours of debugging I couldn&rsquo;t really solve it because of how the collision library orders the entity updates. + + + + diff --git a/tags/gnu/index.html b/tags/gnu/index.html new file mode 100644 index 0000000..561b2c7 --- /dev/null +++ b/tags/gnu/index.html @@ -0,0 +1,120 @@ + + + + gnu – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

gnu

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/gnu/index.xml b/tags/gnu/index.xml new file mode 100644 index 0000000..fce2618 --- /dev/null +++ b/tags/gnu/index.xml @@ -0,0 +1,24 @@ + + + + gnu on Charles Ancheta + https://charlesancheta.com/tags/gnu/ + Recent content in gnu on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 30 May 2023 00:00:00 +0000 + + TIL: Parallel `make` + https://charlesancheta.com/post/til/parallel-make/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/parallel-make/ + <p>I&rsquo;ve always kind of known about the <code>-j</code> flag for <code>make</code>, but I didn&rsquo;t know +that <strong>it just works</strong>.</p> + + + + diff --git a/tags/go/index.html b/tags/go/index.html new file mode 100644 index 0000000..c215a91 --- /dev/null +++ b/tags/go/index.html @@ -0,0 +1,126 @@ + + + + go – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

go

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/go/index.xml b/tags/go/index.xml new file mode 100644 index 0000000..dd4056d --- /dev/null +++ b/tags/go/index.xml @@ -0,0 +1,44 @@ + + + + go on Charles Ancheta + https://charlesancheta.com/tags/go/ + Recent content in go on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 29 Nov 2022 02:50:15 -0700 + + Why I Migrated to Hugo + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + <p>Aside from the fact that Hugo is <em>Blazingly Fast™</em>, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.</p> + + + + Go Interfaces give me a reason to live again + https://charlesancheta.com/post/go-interfaces/ + Wed, 16 Nov 2022 03:52:09 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/go-interfaces/ + A few months ago I made a meme about Go being my new favourite language (replacing TypeScript) and I just want to share a satisfying moment I had recently. +The Task In the previous iteration of my website1, I have a few lines in my config that fetches information about my published NPM packages to be rendered on the Projects page. I wanted to do the same for my new website, outputted as a Markdown table, which can be easily imported into the page with readFile. + + + + Friendship Ended with TypeScript, now Go is My Best Friend + https://charlesancheta.com/post/friendship-ended/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/friendship-ended/ + <p><img src="https://charlesancheta.com/post/friendship-ended/friendship-ended.webp" alt="Friendship ended"></p> + + + + diff --git a/tags/hosting/index.html b/tags/hosting/index.html new file mode 100644 index 0000000..b6e82b6 --- /dev/null +++ b/tags/hosting/index.html @@ -0,0 +1,120 @@ + + + + hosting – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

hosting

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/hosting/index.xml b/tags/hosting/index.xml new file mode 100644 index 0000000..c1e13d5 --- /dev/null +++ b/tags/hosting/index.xml @@ -0,0 +1,23 @@ + + + + hosting on Charles Ancheta + https://charlesancheta.com/tags/hosting/ + Recent content in hosting on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Sun, 19 Jun 2022 00:00:00 +0000 + + Bye bye Netlify + https://charlesancheta.com/post/bye-bye-netlify/ + Sun, 19 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/bye-bye-netlify/ + <p>It was short trial, but GitHub Pages just works better for me.</p> + + + + diff --git a/tags/hugo/index.html b/tags/hugo/index.html new file mode 100644 index 0000000..6a44916 --- /dev/null +++ b/tags/hugo/index.html @@ -0,0 +1,120 @@ + + + + hugo – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

hugo

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/hugo/index.xml b/tags/hugo/index.xml new file mode 100644 index 0000000..3c22e6b --- /dev/null +++ b/tags/hugo/index.xml @@ -0,0 +1,25 @@ + + + + hugo on Charles Ancheta + https://charlesancheta.com/tags/hugo/ + Recent content in hugo on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 29 Nov 2022 02:50:15 -0700 + + Why I Migrated to Hugo + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + <p>Aside from the fact that Hugo is <em>Blazingly Fast™</em>, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.</p> + + + + diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 0000000..81eef5f --- /dev/null +++ b/tags/index.html @@ -0,0 +1,543 @@ + + + + Tags – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+
+

Tags

+
+ + + + + + + + + + + + + + + + + + +

B

+ + + backend (1) + + + + + + + + + + + + + blazingly (1) + + + + + + + + + + + + + +

C

+ + + c++ (1) + + + + + + + + + + + + + compilation (1) + + + + + + + + + + + + + +

D

+ + + dev (2) + + + + + + + + + + + + + dev-log (4) + + + + + + + + + + + + + +

F

+ + + fast (1) + + + + + + + + + + + + + first (1) + + + + + + + + + + + + + +

G

+ + + gh-pages (1) + + + + + + + + + + + + + gnu (1) + + + + + + + + + + + + + go (3) + + + + + + + + + + + + + +

H

+ + + hosting (1) + + + + + + + + + + + + + hugo (1) + + + + + + + + + + + + + +

J

+ + + js (2) + + + + + + + + + + + + + +

L

+ + + love (4) + + + + + + + + + + + + + lua (4) + + + + + + + + + + + + + +

M

+ + + make (1) + + + + + + + + + + + + + meme (1) + + + + + + + + + + + + + multiplayer (1) + + + + + + + + + + + + + +

N

+ + + netlify (1) + + + + + + + + + + + + + npm (1) + + + + + + + + + + + + + +

R

+ + + rescript (1) + + + + + + + + + + + + + +

S

+ + + scripting (1) + + + + + + + + + + + + + +

T

+ + + til (2) + + + + + + + + + + + + + trash-packages (1) + + + + + + + + + + + + + typescript (1) + + + + + + + + + + + + + +

W

+ + + website (1) + + + + + + + + + + + + + welcome (1) + + +
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/index.xml b/tags/index.xml new file mode 100644 index 0000000..e72fe3a --- /dev/null +++ b/tags/index.xml @@ -0,0 +1,266 @@ + + + + Tags on Charles Ancheta + https://charlesancheta.com/tags/ + Recent content in Tags on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 30 May 2023 00:00:00 +0000 + + c++ + https://charlesancheta.com/tags/c++/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/c++/ + + + + + compilation + https://charlesancheta.com/tags/compilation/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/compilation/ + + + + + gnu + https://charlesancheta.com/tags/gnu/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/gnu/ + + + + + make + https://charlesancheta.com/tags/make/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/make/ + + + + + til + https://charlesancheta.com/tags/til/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/til/ + + + + + js + https://charlesancheta.com/tags/js/ + Wed, 10 May 2023 00:59:18 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/js/ + + + + + npm + https://charlesancheta.com/tags/npm/ + Wed, 10 May 2023 00:59:18 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/npm/ + + + + + trash-packages + https://charlesancheta.com/tags/trash-packages/ + Wed, 10 May 2023 00:59:18 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/trash-packages/ + + + + + blazingly + https://charlesancheta.com/tags/blazingly/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/blazingly/ + + + + + fast + https://charlesancheta.com/tags/fast/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/fast/ + + + + + go + https://charlesancheta.com/tags/go/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/go/ + + + + + hugo + https://charlesancheta.com/tags/hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/hugo/ + + + + + rescript + https://charlesancheta.com/tags/rescript/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/rescript/ + + + + + website + https://charlesancheta.com/tags/website/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/website/ + + + + + dev + https://charlesancheta.com/tags/dev/ + Wed, 16 Nov 2022 03:52:09 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/dev/ + + + + + scripting + https://charlesancheta.com/tags/scripting/ + Wed, 16 Nov 2022 03:52:09 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/scripting/ + + + + + dev-log + https://charlesancheta.com/tags/dev-log/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/dev-log/ + + + + + love + https://charlesancheta.com/tags/love/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/love/ + + + + + lua + https://charlesancheta.com/tags/lua/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/lua/ + + + + + multiplayer + https://charlesancheta.com/tags/multiplayer/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/multiplayer/ + + + + + gh-pages + https://charlesancheta.com/tags/gh-pages/ + Mon, 04 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/gh-pages/ + + + + + hosting + https://charlesancheta.com/tags/hosting/ + Sun, 19 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/hosting/ + + + + + netlify + https://charlesancheta.com/tags/netlify/ + Sun, 19 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/netlify/ + + + + + backend + https://charlesancheta.com/tags/backend/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/backend/ + + + + + meme + https://charlesancheta.com/tags/meme/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/meme/ + + + + + typescript + https://charlesancheta.com/tags/typescript/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/typescript/ + + + + + first + https://charlesancheta.com/tags/first/ + Sat, 28 May 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/first/ + + + + + welcome + https://charlesancheta.com/tags/welcome/ + Sat, 28 May 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/tags/welcome/ + + + + + diff --git a/tags/js/index.html b/tags/js/index.html new file mode 100644 index 0000000..1489e66 --- /dev/null +++ b/tags/js/index.html @@ -0,0 +1,123 @@ + + + + js – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

js

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/js/index.xml b/tags/js/index.xml new file mode 100644 index 0000000..76affff --- /dev/null +++ b/tags/js/index.xml @@ -0,0 +1,36 @@ + + + + js on Charles Ancheta + https://charlesancheta.com/tags/js/ + Recent content in js on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Wed, 10 May 2023 00:59:18 -0600 + + I Deleted My NPM Packages + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + Wed, 10 May 2023 00:59:18 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + I deleted all 4 of my NPM packages today. It has been over a year since I&rsquo;ve last updated them, and I didn&rsquo;t want to add any more clutter to the system. +I&rsquo;ve always thought that having published open source code meant something, but then I realized that it doesn&rsquo;t matter if it&rsquo;s not useful. +Learning how to package libraries and applications was a good experience, though, and I would probably publish stuff IF/WHEN I have actually solved a need. + + + + Why I Migrated to Hugo + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + <p>Aside from the fact that Hugo is <em>Blazingly Fast™</em>, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.</p> + + + + diff --git a/tags/love/index.html b/tags/love/index.html new file mode 100644 index 0000000..8d488bb --- /dev/null +++ b/tags/love/index.html @@ -0,0 +1,129 @@ + + + + love – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

love

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/love/index.xml b/tags/love/index.xml new file mode 100644 index 0000000..d253891 --- /dev/null +++ b/tags/love/index.xml @@ -0,0 +1,57 @@ + + + + love on Charles Ancheta + https://charlesancheta.com/tags/love/ + Recent content in love on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Wed, 06 Jul 2022 00:00:00 +0000 + + Dev Log: Boboman - Day 4 + https://charlesancheta.com/post/dev-log/boboman/day-4/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-4/ + I feel like the hardest part of writing this game would be the enemy logic. That&rsquo;s why I&rsquo;m putting it off for as long as possible! Today I implemented map generation, randomly placing boxes sufficiently far enough from players. +I also added controls for other players, which reminded me of my local multiplayer experience with Boxhead. I miss having multiple people on play a single keyboard. These days it would be awkward to play that way. + + + + Dev Log: Boboman - Day 3 + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Tue, 05 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Feeling good today. I got to fix the collision bug that was happening yesterday. It actually had to do with the collision lifecycle, so to make the player detectable, I decoupled the check from the lifecycle of the bomb. Because of this, I could revert the player&rsquo;s bomb timer to normal. Moving away from a project and letting your brain sit on a problem for a while really does wonders. + + + + Dev Log: Boboman - Day 2 + https://charlesancheta.com/post/dev-log/boboman/day-2/ + Mon, 04 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-2/ + MAJOR BUG ALERT!! +Apparently my collision logic for the bombs weren&rsquo;t going to hold up. Every time a bomb explodes, there is a small time window where you can place a bomb and the bomb would not recognize the player, making it a &ldquo;not new&rdquo; bomb. Because of that, the player gets pushed off right away and could end up in the weirdest of places. +After hours of debugging I couldn&rsquo;t really solve it because of how the collision library orders the entity updates. + + + + Dev Log: Boboman - Day 1 + https://charlesancheta.com/post/dev-log/boboman/day-1/ + Sun, 03 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-1/ + <p>Recently, I&rsquo;ve been heavily configuring my text editor, Neovim, which means that I&rsquo;ve been writing a lot of Lua. I do +find it enjoyable, even without having any tooling initially, so I wanted to give game development and +<a href="https://love2d.org">Love2D</a> a try. I just finished +<a href="https://www.sheepolution.com/learn/book/contents">Sheepolution&rsquo;s How to LÖVE</a> book on Love2D, and felt prepared to make +my first game from scratch. As per Jherzey&rsquo;s request, I&rsquo;m creating a Bomberman clone.</p> + + + + diff --git a/tags/lua/index.html b/tags/lua/index.html new file mode 100644 index 0000000..e4c7162 --- /dev/null +++ b/tags/lua/index.html @@ -0,0 +1,129 @@ + + + + lua – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

lua

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/lua/index.xml b/tags/lua/index.xml new file mode 100644 index 0000000..f60800a --- /dev/null +++ b/tags/lua/index.xml @@ -0,0 +1,57 @@ + + + + lua on Charles Ancheta + https://charlesancheta.com/tags/lua/ + Recent content in lua on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Wed, 06 Jul 2022 00:00:00 +0000 + + Dev Log: Boboman - Day 4 + https://charlesancheta.com/post/dev-log/boboman/day-4/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-4/ + I feel like the hardest part of writing this game would be the enemy logic. That&rsquo;s why I&rsquo;m putting it off for as long as possible! Today I implemented map generation, randomly placing boxes sufficiently far enough from players. +I also added controls for other players, which reminded me of my local multiplayer experience with Boxhead. I miss having multiple people on play a single keyboard. These days it would be awkward to play that way. + + + + Dev Log: Boboman - Day 3 + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Tue, 05 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-3/ + Feeling good today. I got to fix the collision bug that was happening yesterday. It actually had to do with the collision lifecycle, so to make the player detectable, I decoupled the check from the lifecycle of the bomb. Because of this, I could revert the player&rsquo;s bomb timer to normal. Moving away from a project and letting your brain sit on a problem for a while really does wonders. + + + + Dev Log: Boboman - Day 2 + https://charlesancheta.com/post/dev-log/boboman/day-2/ + Mon, 04 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-2/ + MAJOR BUG ALERT!! +Apparently my collision logic for the bombs weren&rsquo;t going to hold up. Every time a bomb explodes, there is a small time window where you can place a bomb and the bomb would not recognize the player, making it a &ldquo;not new&rdquo; bomb. Because of that, the player gets pushed off right away and could end up in the weirdest of places. +After hours of debugging I couldn&rsquo;t really solve it because of how the collision library orders the entity updates. + + + + Dev Log: Boboman - Day 1 + https://charlesancheta.com/post/dev-log/boboman/day-1/ + Sun, 03 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-1/ + <p>Recently, I&rsquo;ve been heavily configuring my text editor, Neovim, which means that I&rsquo;ve been writing a lot of Lua. I do +find it enjoyable, even without having any tooling initially, so I wanted to give game development and +<a href="https://love2d.org">Love2D</a> a try. I just finished +<a href="https://www.sheepolution.com/learn/book/contents">Sheepolution&rsquo;s How to LÖVE</a> book on Love2D, and felt prepared to make +my first game from scratch. As per Jherzey&rsquo;s request, I&rsquo;m creating a Bomberman clone.</p> + + + + diff --git a/tags/make/index.html b/tags/make/index.html new file mode 100644 index 0000000..2150641 --- /dev/null +++ b/tags/make/index.html @@ -0,0 +1,120 @@ + + + + make – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

make

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/make/index.xml b/tags/make/index.xml new file mode 100644 index 0000000..5c5c852 --- /dev/null +++ b/tags/make/index.xml @@ -0,0 +1,24 @@ + + + + make on Charles Ancheta + https://charlesancheta.com/tags/make/ + Recent content in make on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 30 May 2023 00:00:00 +0000 + + TIL: Parallel `make` + https://charlesancheta.com/post/til/parallel-make/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/parallel-make/ + <p>I&rsquo;ve always kind of known about the <code>-j</code> flag for <code>make</code>, but I didn&rsquo;t know +that <strong>it just works</strong>.</p> + + + + diff --git a/tags/meme/index.html b/tags/meme/index.html new file mode 100644 index 0000000..0f650b6 --- /dev/null +++ b/tags/meme/index.html @@ -0,0 +1,120 @@ + + + + meme – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

meme

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/meme/index.xml b/tags/meme/index.xml new file mode 100644 index 0000000..82247ac --- /dev/null +++ b/tags/meme/index.xml @@ -0,0 +1,23 @@ + + + + meme on Charles Ancheta + https://charlesancheta.com/tags/meme/ + Recent content in meme on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 07 Jun 2022 00:00:00 +0000 + + Friendship Ended with TypeScript, now Go is My Best Friend + https://charlesancheta.com/post/friendship-ended/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/friendship-ended/ + <p><img src="https://charlesancheta.com/post/friendship-ended/friendship-ended.webp" alt="Friendship ended"></p> + + + + diff --git a/tags/multiplayer/index.html b/tags/multiplayer/index.html new file mode 100644 index 0000000..8fcce19 --- /dev/null +++ b/tags/multiplayer/index.html @@ -0,0 +1,120 @@ + + + + multiplayer – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

multiplayer

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/multiplayer/index.xml b/tags/multiplayer/index.xml new file mode 100644 index 0000000..201f80e --- /dev/null +++ b/tags/multiplayer/index.xml @@ -0,0 +1,24 @@ + + + + multiplayer on Charles Ancheta + https://charlesancheta.com/tags/multiplayer/ + Recent content in multiplayer on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Wed, 06 Jul 2022 00:00:00 +0000 + + Dev Log: Boboman - Day 4 + https://charlesancheta.com/post/dev-log/boboman/day-4/ + Wed, 06 Jul 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/dev-log/boboman/day-4/ + I feel like the hardest part of writing this game would be the enemy logic. That&rsquo;s why I&rsquo;m putting it off for as long as possible! Today I implemented map generation, randomly placing boxes sufficiently far enough from players. +I also added controls for other players, which reminded me of my local multiplayer experience with Boxhead. I miss having multiple people on play a single keyboard. These days it would be awkward to play that way. + + + + diff --git a/tags/netlify/index.html b/tags/netlify/index.html new file mode 100644 index 0000000..a0748c8 --- /dev/null +++ b/tags/netlify/index.html @@ -0,0 +1,120 @@ + + + + netlify – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

netlify

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/netlify/index.xml b/tags/netlify/index.xml new file mode 100644 index 0000000..f1ace60 --- /dev/null +++ b/tags/netlify/index.xml @@ -0,0 +1,23 @@ + + + + netlify on Charles Ancheta + https://charlesancheta.com/tags/netlify/ + Recent content in netlify on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Sun, 19 Jun 2022 00:00:00 +0000 + + Bye bye Netlify + https://charlesancheta.com/post/bye-bye-netlify/ + Sun, 19 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/bye-bye-netlify/ + <p>It was short trial, but GitHub Pages just works better for me.</p> + + + + diff --git a/tags/npm/index.html b/tags/npm/index.html new file mode 100644 index 0000000..64dfe9d --- /dev/null +++ b/tags/npm/index.html @@ -0,0 +1,120 @@ + + + + npm – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

npm

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/npm/index.xml b/tags/npm/index.xml new file mode 100644 index 0000000..1b59b19 --- /dev/null +++ b/tags/npm/index.xml @@ -0,0 +1,25 @@ + + + + npm on Charles Ancheta + https://charlesancheta.com/tags/npm/ + Recent content in npm on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Wed, 10 May 2023 00:59:18 -0600 + + I Deleted My NPM Packages + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + Wed, 10 May 2023 00:59:18 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + I deleted all 4 of my NPM packages today. It has been over a year since I&rsquo;ve last updated them, and I didn&rsquo;t want to add any more clutter to the system. +I&rsquo;ve always thought that having published open source code meant something, but then I realized that it doesn&rsquo;t matter if it&rsquo;s not useful. +Learning how to package libraries and applications was a good experience, though, and I would probably publish stuff IF/WHEN I have actually solved a need. + + + + diff --git a/tags/rescript/index.html b/tags/rescript/index.html new file mode 100644 index 0000000..ab78d75 --- /dev/null +++ b/tags/rescript/index.html @@ -0,0 +1,120 @@ + + + + rescript – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

rescript

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/rescript/index.xml b/tags/rescript/index.xml new file mode 100644 index 0000000..bf20b66 --- /dev/null +++ b/tags/rescript/index.xml @@ -0,0 +1,25 @@ + + + + rescript on Charles Ancheta + https://charlesancheta.com/tags/rescript/ + Recent content in rescript on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 29 Nov 2022 02:50:15 -0700 + + Why I Migrated to Hugo + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + <p>Aside from the fact that Hugo is <em>Blazingly Fast™</em>, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.</p> + + + + diff --git a/tags/scripting/index.html b/tags/scripting/index.html new file mode 100644 index 0000000..6e5a7a6 --- /dev/null +++ b/tags/scripting/index.html @@ -0,0 +1,120 @@ + + + + scripting – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

scripting

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/scripting/index.xml b/tags/scripting/index.xml new file mode 100644 index 0000000..e83aaa7 --- /dev/null +++ b/tags/scripting/index.xml @@ -0,0 +1,24 @@ + + + + scripting on Charles Ancheta + https://charlesancheta.com/tags/scripting/ + Recent content in scripting on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Wed, 16 Nov 2022 03:52:09 -0700 + + Go Interfaces give me a reason to live again + https://charlesancheta.com/post/go-interfaces/ + Wed, 16 Nov 2022 03:52:09 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/go-interfaces/ + A few months ago I made a meme about Go being my new favourite language (replacing TypeScript) and I just want to share a satisfying moment I had recently. +The Task In the previous iteration of my website1, I have a few lines in my config that fetches information about my published NPM packages to be rendered on the Projects page. I wanted to do the same for my new website, outputted as a Markdown table, which can be easily imported into the page with readFile. + + + + diff --git a/tags/til/index.html b/tags/til/index.html new file mode 100644 index 0000000..8603ef6 --- /dev/null +++ b/tags/til/index.html @@ -0,0 +1,123 @@ + + + + til – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

til

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/til/index.xml b/tags/til/index.xml new file mode 100644 index 0000000..34b42da --- /dev/null +++ b/tags/til/index.xml @@ -0,0 +1,35 @@ + + + + til on Charles Ancheta + https://charlesancheta.com/tags/til/ + Recent content in til on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 30 May 2023 00:00:00 +0000 + + TIL: Parallel `make` + https://charlesancheta.com/post/til/parallel-make/ + Tue, 30 May 2023 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/parallel-make/ + <p>I&rsquo;ve always kind of known about the <code>-j</code> flag for <code>make</code>, but I didn&rsquo;t know +that <strong>it just works</strong>.</p> + + + + TIL: My actual height + https://charlesancheta.com/post/til/my-actual-height/ + Sun, 29 May 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/til/my-actual-height/ + <p>Today I learned what my actual height was (at least at the time of writing). For a few years now I&rsquo;ve always kind of +just stuck with 170 cm because that&rsquo;s what was in my driver&rsquo;s license when I got it 5 years ago (I really need to pass +the road test this year). I&rsquo;m not even sure if that was right at the time.</p> + + + + diff --git a/tags/trash-packages/index.html b/tags/trash-packages/index.html new file mode 100644 index 0000000..1de6224 --- /dev/null +++ b/tags/trash-packages/index.html @@ -0,0 +1,120 @@ + + + + trash-packages – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

trash-packages

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/trash-packages/index.xml b/tags/trash-packages/index.xml new file mode 100644 index 0000000..9672a5b --- /dev/null +++ b/tags/trash-packages/index.xml @@ -0,0 +1,25 @@ + + + + trash-packages on Charles Ancheta + https://charlesancheta.com/tags/trash-packages/ + Recent content in trash-packages on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Wed, 10 May 2023 00:59:18 -0600 + + I Deleted My NPM Packages + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + Wed, 10 May 2023 00:59:18 -0600 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/i-deleted-my-npm-packages/ + I deleted all 4 of my NPM packages today. It has been over a year since I&rsquo;ve last updated them, and I didn&rsquo;t want to add any more clutter to the system. +I&rsquo;ve always thought that having published open source code meant something, but then I realized that it doesn&rsquo;t matter if it&rsquo;s not useful. +Learning how to package libraries and applications was a good experience, though, and I would probably publish stuff IF/WHEN I have actually solved a need. + + + + diff --git a/tags/typescript/index.html b/tags/typescript/index.html new file mode 100644 index 0000000..dc76cb8 --- /dev/null +++ b/tags/typescript/index.html @@ -0,0 +1,120 @@ + + + + typescript – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

typescript

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/typescript/index.xml b/tags/typescript/index.xml new file mode 100644 index 0000000..f250910 --- /dev/null +++ b/tags/typescript/index.xml @@ -0,0 +1,23 @@ + + + + typescript on Charles Ancheta + https://charlesancheta.com/tags/typescript/ + Recent content in typescript on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 07 Jun 2022 00:00:00 +0000 + + Friendship Ended with TypeScript, now Go is My Best Friend + https://charlesancheta.com/post/friendship-ended/ + Tue, 07 Jun 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/friendship-ended/ + <p><img src="https://charlesancheta.com/post/friendship-ended/friendship-ended.webp" alt="Friendship ended"></p> + + + + diff --git a/tags/website/index.html b/tags/website/index.html new file mode 100644 index 0000000..9986bfb --- /dev/null +++ b/tags/website/index.html @@ -0,0 +1,120 @@ + + + + website – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

website

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/website/index.xml b/tags/website/index.xml new file mode 100644 index 0000000..31ea39e --- /dev/null +++ b/tags/website/index.xml @@ -0,0 +1,25 @@ + + + + website on Charles Ancheta + https://charlesancheta.com/tags/website/ + Recent content in website on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Tue, 29 Nov 2022 02:50:15 -0700 + + Why I Migrated to Hugo + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + Tue, 29 Nov 2022 02:50:15 -0700 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/why-i-migrated-to-hugo/ + <p>Aside from the fact that Hugo is <em>Blazingly Fast™</em>, I had a few problems with +Docusaurus/the whole JS ecosystem that made it hard for me to keep updating my +website.</p> + + + + diff --git a/tags/welcome/index.html b/tags/welcome/index.html new file mode 100644 index 0000000..140d524 --- /dev/null +++ b/tags/welcome/index.html @@ -0,0 +1,120 @@ + + + + welcome – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+

welcome

+ + + + + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/tags/welcome/index.xml b/tags/welcome/index.xml new file mode 100644 index 0000000..81ceeea --- /dev/null +++ b/tags/welcome/index.xml @@ -0,0 +1,23 @@ + + + + welcome on Charles Ancheta + https://charlesancheta.com/tags/welcome/ + Recent content in welcome on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + Sat, 28 May 2022 00:00:00 +0000 + + Welcome! + https://charlesancheta.com/post/welcome/ + Sat, 28 May 2022 00:00:00 +0000 + cancheta.dev@gmail.com (Charles Ancheta) + https://charlesancheta.com/post/welcome/ + <p>Welcome to my website! I am Charles, a Computer Engineering Student working as a Full Stack Web Developer.</p> + + + + diff --git a/turnip/index.html b/turnip/index.html new file mode 100644 index 0000000..87435e8 --- /dev/null +++ b/turnip/index.html @@ -0,0 +1,159 @@ + + + + Turnip Price Calculator – Charles Ancheta + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Turnip Price Calculator

+ + +
+
+
+ + +
+
+ + +
+ + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/turnip/index.xml b/turnip/index.xml new file mode 100644 index 0000000..27d52d2 --- /dev/null +++ b/turnip/index.xml @@ -0,0 +1,13 @@ + + + + Turnip Price Calculator on Charles Ancheta + https://charlesancheta.com/turnip/ + Recent content in Turnip Price Calculator on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + + diff --git a/work/index.html b/work/index.html new file mode 100644 index 0000000..e79a1d0 --- /dev/null +++ b/work/index.html @@ -0,0 +1,152 @@ + + + + My Professional Experience – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

My Professional Experience

+ + +
+ + +
+
+

Ripple Group

+
+ +
+
Ripple Group Logo +
+ +
    +
  • Junior Software Engineer, September 2022 - Present
  • +
+
+
+ +
+
+

ISAIC

+
+ +
+
ISAIC Logo +
+ +
    +
  • Software Engineer Co-op, January 2021 - Present
  • +
+
+
+ + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/work/index.xml b/work/index.xml new file mode 100644 index 0000000..37f5a31 --- /dev/null +++ b/work/index.xml @@ -0,0 +1,13 @@ + + + + My Professional Experience on Charles Ancheta + https://charlesancheta.com/work/ + Recent content in My Professional Experience on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + + diff --git a/work/isaic/index.html b/work/isaic/index.html new file mode 100644 index 0000000..4efdadf --- /dev/null +++ b/work/isaic/index.html @@ -0,0 +1,132 @@ + + + + ISAIC – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

ISAIC

+
ISAIC Logo +
+ +
    +
  • Software Engineer Co-op, January 2021 - Present
  • +
+
    +
  • Full Stack Web Development +
      +
    • TypeScript
    • +
    • React
    • +
    • NestJS
    • +
    • Linux
    • +
    +
  • +
  • Website Link
  • +
+
+ + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/work/isaic/index.xml b/work/isaic/index.xml new file mode 100644 index 0000000..d95bc6e --- /dev/null +++ b/work/isaic/index.xml @@ -0,0 +1,13 @@ + + + + ISAIC on Charles Ancheta + https://charlesancheta.com/work/isaic/ + Recent content in ISAIC on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + + diff --git a/work/ripple/index.html b/work/ripple/index.html new file mode 100644 index 0000000..7bb3079 --- /dev/null +++ b/work/ripple/index.html @@ -0,0 +1,143 @@ + + + + Ripple Group – Charles Ancheta + + + + + + + + + + + + + + + + +
+ + + +
+
+

Ripple Group

+
Ripple Group Logo +
+ +
    +
  • Junior Software Engineer, September 2022 - Present
  • +
+
    +
  • Backend Web Development +
      +
    • C#
    • +
    • ASP.NET
    • +
    +
  • +
  • Data wrangling +
      +
    • Python
    • +
    • Pandas
    • +
    • SQL
    • +
    • Polars (py-polars)]
    • +
    +
  • +
  • Frontend Web Development +
      +
    • Angular
    • +
    +
  • +
  • Website Link
  • +
+
+ + + +
+ +
+
+
+ +

Charles Ancheta

+

Software Engineer

+
+ + + +
+
+
+
+
+ +

+ + + + + + + + + + + + + + +

+

+ + +
+ +
+ + + diff --git a/work/ripple/index.xml b/work/ripple/index.xml new file mode 100644 index 0000000..b0f04ae --- /dev/null +++ b/work/ripple/index.xml @@ -0,0 +1,13 @@ + + + + Ripple Group on Charles Ancheta + https://charlesancheta.com/work/ripple/ + Recent content in Ripple Group on Charles Ancheta + Hugo -- gohugo.io + en-us + cancheta.dev@gmail.com (Charles Ancheta) + cancheta.dev@gmail.com (Charles Ancheta) + Charles Ancheta. MIT + +