Skip to content

Commit 7093fd2

Browse files
authored
Merge pull request #111 from jbolns/dev
Updated project > LOKAL
2 parents 1abdb23 + 7d63727 commit 7093fd2

File tree

12 files changed

+102
-88
lines changed

12 files changed

+102
-88
lines changed

public/site-logo.svg

+3-3
Loading

src/components/Animation.jsx

+16-17
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { Component } from "react"
22
import * as THREE from 'three';
3-
//import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
43
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
54

65
// GLOBALS
@@ -11,8 +10,8 @@ class Animation extends Component {
1110

1211
componentDidMount() {
1312

14-
// Key modes
15-
let size = 4 // Diameter of main (land) layer (used for sizing other objects)
13+
// Key modes
14+
let size = this.mount.offsetWidth > 1024 ? 4 : this.mount.offsetWidth > 640 ? 3 : 2 // Diameter of main (land) layer (used for sizing other objects)
1615
const qual = this.props.qual // Quality of images uploaded'
1716
const mode = this.props.mode // Visualisation for the main (land) layer
1817
const allVisuals = [
@@ -82,10 +81,9 @@ class Animation extends Component {
8281
controls.target = new THREE.Vector3(0, 0, 0);
8382
controls.update();
8483

85-
// ADD LIGHTING
86-
const white = "0xffffff"
87-
const ambient = new THREE.AmbientLight("0xffffff", 0.1);
88-
const hemi = new THREE.HemisphereLight(white, 1);
84+
// ADD LIGHTING
85+
const ambient = new THREE.AmbientLight(0xffffff, 0.1);
86+
const hemi = new THREE.HemisphereLight(0xffffff, 1);
8987
hemi.position.set(10, 10, 0);
9088
scene.add(ambient, hemi)
9189

@@ -143,15 +141,16 @@ class Animation extends Component {
143141

144142

145143
// FUNCTION TO DO STUFF ON HOVER
146-
this.hoverSituation = () => {
147-
raycaster.setFromCamera(pointer, cam)
148-
const intersects = raycaster.intersectObjects(scene.children)
149-
if (intersects.length >= 1) {
150-
for (let i = 0; i < intersects.length; i++) {
151-
console.log("function goes here")
152-
}
153-
}
154-
}
144+
// Comments are ugly, but I might use this later, so deal with it
145+
//this.hoverSituation = () => {
146+
// raycaster.setFromCamera(pointer, cam)
147+
// const intersects = raycaster.intersectObjects(scene.children)
148+
// if (intersects.length >= 1) {
149+
// for (let i = 0; i < intersects.length; i++) {
150+
// null // Just a placeholder
151+
// }
152+
// }
153+
//}
155154

156155
// FUNCTION TO DO STUFF ON CLICK
157156
this.clickSituation = () => {
@@ -184,7 +183,7 @@ class Animation extends Component {
184183

185184
// FUNCTION TO GET POINTER COORDINATES AS IT MOVES (FOR HOVER)
186185
onPointerMove(event) {
187-
this.hoverSituation()
186+
//this.hoverSituation() // Comments are ugly, but I might use this later, so deal with it
188187
if (this.mount) {
189188
pointer.x = (event.clientX / this.mount.offsetWidth) * 2 - 1
190189
pointer.y = - (event.clientY / this.mount.offsetHeight) * 2 + 1

src/components/AnimationWrapper.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ const AnimationWrapper = ({ locale }: any) => {
5555
</div>
5656

5757
<p className="absolute mr-2 top-[6em] right-2 text-2sm text-white">
58-
{[wrapperStrings.low, wrapperStrings.mid, wrapperStrings.high].map(q => { return (<button onClick={() => { resetQual(q[defaultLang]) }} className={"border border-dotted px-2 hover:bg-yellow-200 " + ((q[defaultLang] === qual) ? "active" : "")}>{q[locale].toUpperCase()} DEF</button>) })}
58+
{[wrapperStrings.low, wrapperStrings.mid, wrapperStrings.high].map(q => { return (<button key={q[locale]} onClick={() => { resetQual(q[defaultLang]) }} className={"border border-dotted px-2 hover:bg-yellow-200 " + ((q[defaultLang] === qual) ? "active" : "")}>{q[locale].toUpperCase()} DEF</button>) })}
5959
</p>
6060
</>
6161
)

src/components/Latest.astro

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ items = items.concat(
4545
slug: item.slug,
4646
collection: item.collection,
4747
heroImage: item.data.heroImage,
48-
pubDate: item.data.pubDate,
48+
pubDate: item.data.updateDate, // Force latest update to top w/o having to add update time to blog schema
4949
};
5050
}),
5151
);

src/content/portfolio/en/lokal.mdx

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ title: "LOKAL transcriptions"
33
description: "A user-friendly application to do AI transcriptions locally (i.e. on your own computer)"
44
locale: "en"
55
pubDate: "May 17 2024"
6-
updateDate: "Aug 09 2024"
6+
updateDate: "Jan 13 2025"
77
heroImage: "@assets/banner-lokal.webp"
88
stack: ["Python", "TTKBootstrap", "AI", "Digital ethics"]
99
tags: ["coding"]
1010

1111
---
1212

13-
LOKAL (transcriptions) is an **open-source AI app** to easily perform **transcriptions** on regular computers, including laptops and personal computers.
13+
LOKAL is an **open-source AI app** to easily perform **transcriptions** on regular computers, i.e., laptops and personal computers.
1414

15-
Quality is on-par with on-cloud alternatives. Commercial use is possible.
15+
It emphasises privacy. Instead of sending your audio (and all data contained in it) out, LOKAL loads the model to your computer and performs the transcription there. You can even select between different model providers, so you choose a model that fits you.
1616

1717
## Benefits
18-
LOKAL offers high-quality transcriptions, at low cost, and with privacy in mind.
18+
LOKAL can help you perform high-quality transcriptions, at low cost, and with privacy in mind.
1919
- **Low cost.** Payment is voluntary.
2020
- **High quality.** LOKAL uses industry-standard state-of-the-art multilingual models. Quality is on-par with on-cloud alternatives
2121
- **Privacy-aware.** Since transcription happens in your computer, privacy risks are reduced.[^1]

src/content/portfolio/es/lokal.mdx

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ title: "LOKAL"
33
description: "Una aplicación para realizar transcripciones de IA localmente (es decir, en computadores personales)"
44
locale: "es"
55
pubDate: "May 17 2024"
6-
updateDate: "Aug 09 2024"
6+
updateDate: "Jan 13 2025"
77
heroImage: "@assets/banner-lokal.webp"
88
stack: ["Python", "TTKBootstrap", "AI", "Etica"]
99
tags: ["digitales"]
1010

1111
---
1212

13-
LOKAL (transcripciones) es una **aplicación de inteligencia artificial** para realizar **transcripciones** en computadoras comunes, incluidas laptops y computadores personales.
13+
LOKAL es una **aplicación de inteligencia artificial** para realizar **transcripciones** en computadoras personales.
1414

15-
La calidad es similar a las alternativas en la nube. El uso comercial está permitido.
15+
El enfasis es la privacidad. En lugar de enviar tu audio (y los datos que contiene) a un provedor externo, LOKAL baja los modelos a tu computadora y realiza la transcripción ahí. ¡Incluso puedes elegir entre 4 provedores de modelos diferentes!
1616

1717
## Beneficios
1818
LOKAL ofrece transcripciones de alta calidad, a bajo costo y teniendo en cuenta la privacidad.

src/content/portfolio/fi/lokal.mdx

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ title: "LOKAL"
33
description: "Sovellus AI-transkriptioiden suorittamiseen paikallisesti (eli omalla tietokoneellasi)"
44
locale: "fi"
55
pubDate: "May 17 2024"
6-
updateDate: "Aug 09 2024"
6+
updateDate: "Jan 13 2025"
77
heroImage: "@assets/banner-lokal.webp"
88
stack: ["Python", "TTKBootstrap", "AI", "Etiikka"]
99
tags: ["koodaus"]
1010

1111
---
1212

13-
LOKAL (transkriptiot) on tekoälysovellus **transkriptioiden** tekemiseen tavallisilla tietokoneilla (kannettavat tietokoneet ja pöytäkoneet).
13+
LOKAL on tekoälysovellus **transkriptioiden** tekemiseen tavallisilla tietokoneilla (kannettavat tietokoneet ja pöytäkoneet).
1414

15-
Laatu on yhtä hyvä kuin online-vaihtoehdoissa. Kaupallinen käyttö on mahdollista.
15+
LOKAL korostaa yksityisyyttä. Sen sijaan, että audio lähetettäisiin (ja kaikki sen sisältämä data) ulos, LOKAL lataa mallin tietokoneellesi ja suorittaa transkription siellä. Voit jopa valita eri malleista juuri sinulle sopivan mallin.
1616

1717
## Edut
1818
LOKAL tarjoaa korkealaatuisia transkriptioita alhaisin kustannuksin ja yksityisyyttä ajatellen.

src/layouts/BlogPost.astro

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import { site } from "@i18n/sections";
66
77
// ACTIONS
88
// Get props, incl. locale
9-
const { title, description, locale, pubDate, updatedDate, heroImage } = Astro.props;
9+
const { title, description, locale, pubDate, updateDate, heroImage } = Astro.props;
10+
console.log(updateDate)
1011
1112
---
1213

@@ -19,8 +20,8 @@ const { title, description, locale, pubDate, updatedDate, heroImage } = Astro.pr
1920
>
2021
<article class="post">
2122
<div class="-mt-10 mb-10">
22-
<FormattedDate date={updatedDate ? updatedDate : pubDate} />
23-
{updatedDate ? <span class="text-sm">({locale === "en" ? "update" : ""})</span> : ""}
23+
{updateDate ? <span>{locale === "en" ? "Last update" : locale === "es" ? "Última actualización": "Päivitetty"}</span> : ""}
24+
<FormattedDate date={updateDate ? updateDate : pubDate} />
2425
</div>
2526
<slot />
2627

src/pages/en/index.astro

+19-16
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ const stack = ["astro", "js", "typescript", "mdx", "tailwind", "threejs"];
2727
<span class="text-3xl">
2828
<p class="my-0">
2929
My name is <strong
30-
><span class="highlight underline md:no-underline md:c1">José A Bolanos</span></strong
30+
><span class="highlight underline md:no-underline md:c1"
31+
>José A Bolanos</span
32+
></strong
3133
>.
3234
</p>
3335
</span>
@@ -51,15 +53,15 @@ const stack = ["astro", "js", "typescript", "mdx", "tailwind", "threejs"];
5153
<p class="text-1xl before:content-['->']">
5254
I am at my best when coding in <strong>Python</strong>, <strong
5355
>VBA</strong
54-
>, and <strong>JS</strong> (incl. React, GatsbyJS, and Astro). I also really
55-
like <strong>SQL</strong>, up to and including analytical functions.
56+
>, and <strong>JS</strong> (incl. vanilla-JS, jQuery, React, GatsbyJS,
57+
and Astro). I also really like <strong>SQL</strong>, up to and
58+
including analytical functions.
5659
</p>
5760
<p class="text-1xl before:content-['->']">
58-
I believe that considering digital systems' <strong>energy</strong>, <strong
59-
>CO2</strong
60-
>, <strong>data</strong> (... requirements) is key to long-term success
61-
in a digital world: it can lower costs relative to competitors and reduce
62-
business risks ( && impacts).
61+
I am also particularly good at <strong
62+
>combining languages/stacks</strong
63+
>. No idea why. I just have a "knack" for it. For instance, this
64+
website combines Astro, React, and Three.js.
6365
</p>
6466
</span>
6567
</div>
@@ -77,16 +79,17 @@ const stack = ["astro", "js", "typescript", "mdx", "tailwind", "threejs"];
7779

7880
<span>
7981
<p class="text-1xl before:content-['->'] md:text-right">
80-
I was <strong>previously in academia</strong> (KCL, TU Dresden, LSE) and
81-
remain interested in academic debates.
82+
I am a <strong>Political Economist</strong> by training and was previously
83+
in academia (KCL, TU Dresden, LSE). The background is a huge <strong
84+
>advantage in projects with a digital ethics/sustainability
85+
component</strong
86+
>, and when facing complex regulations.
8287
</p>
8388
<p class="text-1xl before:content-['->'] md:text-right">
84-
Since I code well, I am also uniquely qualified for linking the <strong
85-
>abstract</strong
86-
>
87-
ideas in these debates with <strong>practical</strong> and <strong
88-
>technical</strong
89-
> realities on the ground.
89+
Additionally, though oft overlooked, the combined skill set shows I love to <strong>continuously learn</strong> new things.
90+
I enjoy <strong>figuring things out</strong>, and therefore <strong
91+
>excel in situations where the final solution/product is not initially clear</strong
92+
>, irrespective of field.
9093
</p>
9194
</span>
9295
</span>

src/pages/es/index.astro

+29-20
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ const stack = ["astro", "js", "typescript", "mdx", "tailwind", "threejs"];
2727
<span class="text-3xl">
2828
<p class="my-0">
2929
Mi nombre es <strong
30-
><span class="highlight underline md:no-underline md:c1">José A Bolanos</span></strong
30+
><span class="highlight underline md:no-underline md:c1"
31+
>José A Bolanos</span
32+
></strong
3133
>.
3234
</p>
3335
</span>
@@ -44,26 +46,23 @@ const stack = ["astro", "js", "typescript", "mdx", "tailwind", "threejs"];
4446
<span class="flex-initial w-[100%] grow text-3xl">
4547
<h2 class="mb-0 leading-tight">
4648
<strong
47-
><span class="highlight c3">Me apasiona programar.</span
48-
></strong
49+
><span class="highlight c3">Me apasiona programar.</span></strong
4950
>
5051
</h2>
5152
<h3 class="hidden leading-tight md:block">Me da paz.</h3>
5253
</span>
5354
<span class="">
5455
<p class="text-1xl before:content-['->']">
55-
Me va muy bien con <strong>Python</strong>, <strong
56-
>VBA</strong
57-
>, y <strong>JS</strong> (incluyendo React, GatsbyJS, y Astro). También
58-
me gusta mucho el <strong>SQL</strong>, en particular, las
59-
funciones analíticas.
56+
Me va muy bien con <strong>Python</strong>, <strong>VBA</strong>, y <strong
57+
>JS</strong
58+
> (incluyendo React, GatsbyJS, y Astro). También me gusta mucho el <strong
59+
>SQL</strong
60+
>, en particular, las funciones analíticas.
6061
</p>
6162
<p class="text-1xl before:content-['->']">
62-
Creo que estar al tanto de lo (... requerimientos) de <strong
63-
>energía</strong
64-
>, <strong>CO2</strong>, y <strong>data</strong> de los sistemas
65-
digitales es clave para el éxito en un mundo digital, pues reduce costos
66-
relativo a los competidores y minimiza impactos (... riesgos de negocio).
63+
Salí bastante bueno <strong>combinando lenguajes/stacks</strong>. Me
64+
gusta. Me sale natural. Por ejemplo, este sitio combina Astro, React,
65+
y Three.js.
6766
</p>
6867
</span>
6968
</div>
@@ -81,22 +80,32 @@ const stack = ["astro", "js", "typescript", "mdx", "tailwind", "threejs"];
8180

8281
<span>
8382
<p class="text-1xl before:content-['->'] md:text-right">
84-
<strong>Estuve en el mundo académico</strong> (KCL, TU Dresden, LSE) por un tiempo, y me mantengo interesado en los debates académicos.
83+
<strong>Fui académico</strong> (KCL, TU Dresden, LSE) por un tiempo, con
84+
énfasis en política pública y sostenibilidad. Esto me da una
85+
<strong
86+
>gran ventaja en proyectos con componente de ética o sostenibilidad
87+
digital</strong
88+
>.
8589
</p>
8690
<p class="text-1xl before:content-['->'] md:text-right">
87-
Dado que programo bien, también estoy excepcionalmente bien calificado para relacionar las <strong
88-
>abstracciones</strong
89-
> que caracterizan estos debates con las realidades <strong>prácticas</strong> y <strong
90-
>técnicas</strong
91-
>.
91+
Adicionalmente, la combinación de habilidades demuestra que <strong
92+
>me encanta aprender</strong
93+
> de manera continua. Soy muy curioso, por lo que <strong
94+
>me destaco en situaciones en las que la solución/producto final no
95+
son claros al principio</strong
96+
>, independientemente del campo.
9297
</p>
9398
</span>
9499
</span>
95100
<br />
96101
<span>
97102
<p class="intersect"><strong>Sitio hecho con:</strong></p>
98103
<span class="flex flex-wrap"
99-
>{stack.map((item: string) => <LogoRender label={item} locale={locale} />)}</span
104+
>{
105+
stack.map((item: string) => (
106+
<LogoRender label={item} locale={locale} />
107+
))
108+
}</span
100109
>
101110
</span>
102111
</section>

src/pages/fi/index.astro

+19-16
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ const stack = ["astro", "js", "typescript", "mdx", "tailwind", "threejs"];
2626
<div class="lg:flex items-baseline gap-2 md:my-7 intersect">
2727
<span class="text-3xl">
2828
<p class="my-0">
29-
Minä olen <strong><span class="highlight underline md:no-underline md:c1">José</span></strong>.
29+
Minä olen <strong
30+
><span class="highlight underline md:no-underline md:c1">José</span
31+
></strong
32+
>.
3033
</p>
3134
</span>
3235

@@ -49,18 +52,16 @@ const stack = ["astro", "js", "typescript", "mdx", "tailwind", "threejs"];
4952
<p class="text-1xl before:content-['->']">
5053
Olen parhaimmillani koodatessa <strong>Pythonilla</strong>, <strong
5154
>VBA:lla</strong
52-
> ja <strong>JS:llä</strong> (mukaan lukien React, GatsbyJS ja Astro).
53-
Pidän myös todella paljon <strong>SQL:stä</strong>, analyyttisiin
54-
toimintoihin asti.
55+
> ja <strong>JS:llä</strong> (myös vanilla-JS, jQuery, React, GatsbyJS
56+
ja Astro). Pidän myös todella paljon <strong>SQL:stä</strong>,
57+
analyyttiset toiminnot mukaan lukien.
5558
</p>
5659

5760
<p class="text-1xl before:content-['->']">
58-
Uskon, että digitaalisten järjestelmien <strong>energia-</strong>, <strong
59-
>hiilidioksidi-</strong
60-
> ja
61-
<strong>datatarpeiden</strong> (...vaatimusten) hallinta on avain menestykseen
62-
digitaalisessa maailmassa. Se voi alentaa kustannuksia verrattuna kilpailijoihin
63-
ja vähentää liiketoiminnan riskejä.
61+
Olen myös erityisen hyvä <strong
62+
>yhdistämään ohjelmointikieliä/stacks</strong
63+
>. En tiedä miksi. Minulla vain on se taito. Näillä sivuilla
64+
esimerkiksi yhdistyy Astro, React ja Three.js.
6465
</p>
6566
</span>
6667
</div>
@@ -78,14 +79,16 @@ const stack = ["astro", "js", "typescript", "mdx", "tailwind", "threejs"];
7879

7980
<span>
8081
<p class="text-1xl before:content-['->'] md:text-right">
81-
Olin <strong>aiemmin yliopistossa</strong> (KCL, TU Dresden, LSE) ja olen
82-
edelleen kiinnostunut akateemisista keskusteluista.
82+
Olen <strong>poliittinen taloustieteilijä</strong> koulutukseltani ja olin
83+
<strong>aiemmin akateemisessa maailmassa</strong> (KCL, TU Dresden, LSE).
84+
Tästä taustasta on valtavasti hyötyä projekteissa, joissa on digitaalisen
85+
etiikkaan/kestävään kehitykseen liittyvä aspekti ja kun vastassa on monimutkaisia
86+
säädöksiä.
8387
</p>
8488
<p class="text-1xl before:content-['->'] md:text-right">
85-
Koska koodaan hyvin, olen myös <strong>pätevä yhdistämään</strong> näiden
86-
keskustelujen <strong
87-
>abstraktit ideat käytäntöön ja tekniseen toteutukseen</strong
88-
>.
89+
Tämän lisäksi, tämä <strong>monipuolinen osaamiseni</strong> tarkoittaa,
90+
että rakastan oppia uutta. Tykkään löytää ratkaisuja ja olen parhaimmillani
91+
tilanteissa, missä ratkaisua ei vielä alussa tiedä, riippumatta aihealueesta.
8992
</p>
9093
</span>
9194
</span>

src/pages/portfolio/[lang]/[...slug].astro

-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ export async function getStaticPaths() {
2828
const project: Project = Astro.props;
2929
const { Content } = await project.render();
3030
31-
3231
---
3332

3433
<BlogPost {...project.data}>

0 commit comments

Comments
 (0)