PageSourceSearch

https://ferri.dev/_nuxt/PhUb8hRl.js

js ferri.dev collected 2026-10-05 02:52:20 UTC 7,802 bytes, 1 lines download raw bytes

1import{N as E,_ as f,d as I,u as T}from"./BCHCxmUL.js";import{d as y,a4 as P,V as d,k as u,g as t,n,al as U,a9 as x,N as M,f as j,a as B,a1 as H,m as r,h as L,au as C,j as R,_ as q,a0 as S,at as V,Q as w,P as z,U as F,ae as $}from"./W-dWrOyF.js";import{_ as G,s as K}from"./4R6nSzJl.js";import{_ as Q}from"./Dn5OTf-3.js";import{a as W}from"./DB3t8-ux.js";import{a as Y}from"./DPN5Y7D3.js";import"./CC49YAG3.js";const J={name:"PageHeader",setup(){return U(),{}}},X={class:"page-header"},Z={class:"wrapper"},ee={class:"intro"},te={href:"ferri-de-lange-resume.pdf",target:"_blank",style:{"padding-left":"7px"},class:"link-no-style"},oe={class:"model"};function ne(l,e,o,i,m,p){const c=P("font-awesome-icon"),s=E,a=f;return d(),u("header",X,[t("div",Z,[t("div",ee,[e[1]||(e[1]=t("p",{class:"subtext"},"Hi, my name is",-1)),e[2]||(e[2]=t("h1",null,"Ferri de Lange",-1)),e[3]||(e[3]=t("p",{class:"subtext"},"Low-level graphics and game development",-1)),t("p",null,[t("a",te,[n(c,{icon:"file-lines"}),e[0]||(e[0]=t("span",{style:{"text-decoration":"underline","padding-left":"5px"}},"My resume",-1))])])]),t("div",oe,[n(s)])]),n(a,{class:"bottom",type:"tilt",color:"#403d39","background-color":"#00000000",flip:!0})])}const se=Object.assign(y(J,[["render",ne],["__scopeId","data-v-c4cc4d3d"]]),{__name:"PageHeader"}),re={name:"ProjectTag",props:{message:{type:String,required:!0}},setup(l){const e={OPENGL:"#5a8aa7",VULKAN:"#ac162c",PASSION:"#d94873",SCHOOL:"#ee7623",TEAM:"#8e6fde",SOLO:"#35b45d"};return{style:j(()=>`--tag-color: ${e[l.message]??"#a861d7"}`)}}},ae={class:"tag"};function le(l,e,o,i,m,p){return d(),u("span",ae,[t("p",{style:M(i.style)},x(o.message),5)])}const N=Object.assign(y(re,[["render",le],["__scopeId","data-v-88b214ca"]]),{__name:"ProjectTag"}),ie={name:"PortfolioMention",components:{ProjectTag:N,ShapeDivider:f},props:{data:{type:Object,required:!0},backgroundColor:{type:String,required:!0}
1,nextBackgroundColor:{type:String,required:!0},transitionColor:{type:String,required:!0},last:{type:Boolean,required:!1,default:!1}},setup(l,e){const o=j(()=>`--background-color: ${l.backgroundColor};`),m=S(I[Math.floor(Math.random()*I.length)]),p=s=>K(s.title,{lower:!0}),c=j(()=>{if(!l.data.tags)return[];if(typeof l.data.tags!="string")return l.data.tags;const s=l.data.tags.split(", ");return s.length===1&&s[0]===""?[]:s.map(a=>a.trim().toUpperCase())});return{style:o,divider:m,getRoute:p,tags:c}}},ce={class:"content-wrapper"},de={class:"content"},pe={class:"text-wrapper"},ue={class:"header"},me={class:"tags"},_e={class:"image-wrapper"},ge=["src"];function fe(l,e,o,i,m,p){const c=N,s=G,a=f,g=q;return d(),u("section",{style:M(i.style),class:"portfolio-mention"},[t("div",ce,[t("div",de,[t("div",pe,[t("div",ue,[t("h2",null,x(o.data.title),1),t("div",me,[(d(!0),u(B,null,H(i.tags,(_,k)=>(d(),u("span",{class:"tag",key:k},[n(c,{message:_},null,8,["message"]),e[0]||(e[0]=r("  ",-1))]))),128))])]),t("p",null,x(o.data.description),1)]),t("div",_e,[t("img",{src:`/${o.data.thumbnail_path}`,alt:""},null,8,ge)]),n(s,{link:`/project/${i.getRoute(o.data)}/`,text:"Read more"},null,8,["link"])])]),o.last?R("",!0):(d(),L(g,{key:0},{default:C(()=>[n(a,{type:i.divider,color:o.transitionColor,"background-color":o.nextBackgroun
1dColor},null,8,["type","color","background-color"])]),_:1}))],4)}const ye=Object.assign(y(ie,[["render",fe],["__scopeId","data-v-95e4b22d"]]),{__name:"PortfolioMention"}),ke=""+new URL("portrait_03.Dl0LzHnU.jpg",import.meta.url).href,be={name:"PortfolioAboutMe",components:{ShapeDivider:f},props:{transitionColor:{type:String,required:!0}},setup(){return{}}},ve={class:"portfolio-about-me"},he={class:"wrapper"},we={class:"about-me"},$e={href:"ferri-de-lange-resume.pdf",target:"_blank",class:"link-no-style"},xe={class:"get-in-contact",id:"reach-out"},je={href:"[email protected]",target:"_blank",class:"link-no-style"},Ce={href:"https://github.com/MuskettaMan",target:"_blank",class:"link-no-style"},Se={href:"https://www.linkedin.com/in/ferri-de-lange",target:"_blank",class:"link-no-style"},Ie={href:"https://bsky.app/profile/ferri-de-lange.bsky.social",target:"_blank",class:"link-no-style"};function Pe(l,e,o,i,m,p){const c=f,s=Q,a=P("font-awesome-icon");return d(),u("section",ve,[n(c,{class:"top",type:"curve",color:o.transitionColor,"background-color":"#00000000"},null,8,["color"]),t("div",he,[t("div",we,[e[7]||(e[7]=t("h2",null,"Who am I",-1)),e[8]||(e[8]=t("p",null,[r(" Hey, I'm Ferri, I'm a graphics programmer with multiple years of experience. I started as a Unity game developer and have since transitioned into low-level graphics. "),t("br"),t("br"),r(" I'm currently in my third-year at Breda University of Applied Sciences, where I am working a year long project to create our own game engine. Here I am applying my graphics knowledge through Vulkan and help make our game look and stay optimized. "),t("br"),t("br"),r(" I primarily know and use C++, but also have experience with different programming languages, like C#, python, and javascript. I also enjoy learning about new programming languages, for example, I'm currently learning about "),t("a",{href:"https://ziglang.org/",target:"_blank"},"zig"),r("! ")],-1)),t("p",null,[e[2]||(e[2]=r("Curious to know more? Have a look at my ",-1)),n(s,{to:"/#projects"},{default:C(()=>[...e[0]||(e[0]=[r("projects",-1)])]),_:1}),e[3]||(e[3]=r(" or take a look at one of my ",-1)),n(s,{to:"/articles/"},{default:C(()=>[...e[1]||(e[1]=[r("articles!",-1)])]),_:1})]),t("span",null,[t("p",null,[t("a",$e,[n(a,{icon:"file-lines"}),e[4]||(e[4]=r(" Check out my ",-1)),e[5]||(e[5]=t("span",{class:"url"},"resume",-1)),e[6]||(e[6]=r(" here ",-1))])])])]),t("div",xe,[e[17]||(e[17]=t("h2",null,"Reach out",-1)),t("span",null,[t("p",null,[t("a",je,[n(a,{icon:"envelope"}),e[9]||(e[9]=r(" Email me at ",-1)),e[10]||(e[10]=t("span",{class:"url"},"[email protected]",-1))])])]),t("span",null,[t("p",null,[t("a",Ce,[n(a,{icon:["fa-brands","github"]}),e[11]||(e[11]=r(" Find me on ",-1)),e[12]||(e[12]=t("span",{class:"url"},"GitHub",-1))])])]),t("span",null,[t("p",null,[t("a",Se,[n(a,{icon:["fa-brands","linkedin"]}),e[13]||(e[13]=r(" Connect with me on ",-1)),e[14]||(e[14]=t("span",{class:"url"},"LinkedIn",-1))])])]),t("span",null,[t("p",null,[t("a",Ie,[n(a,{icon:["fab","bluesky"]}),e[15]||(e[15]=r(" Follow me on ",-1)),e[16]||(e[16]=t("span",{class:"url"},"bluesky",-1))])])])])]),e[18]||(e[18]=t("img",{src:ke,class:"portrait"},null,-1))])}const Me=Object.assign(y(be,[["render",Pe],["__scopeId","data-v-3f84dc2f"]]),{__name:"PortfolioAboutMe"}),Be={class:"home"},He={class:"wrapper"},Le={id:"projects"},Ne={__name:"index",async setup(l){let e,o;W({title:"Home",description:"Home page of my portfolio website",keywords:"portfolio, home, home page, home page portfolio, portfolio home page, ferri, ferri de lange, developer, game developer"});const i=S([]),m=S(null),p=T(),c=([e,o]=V(()=>Y.getProjects()),e=await e,o(),e),s=_=>_%2===0?"#403d39":"#252422",a=_=>_%2===0?"#403d39":"#252422",g=()=>{const k=document.getElementById("projects").offsetTop,v=window.scrollY;p.setInProjects(v>=k)};return w(()=>i.value.splice(0,0,m.value)),w(()=>window.addEventListener("scroll",g)),w(()=>g()),z(()=>window.removeEventListener("scroll",g)),F(()=>p.setInProjects(!1)),(_,k)=>{const v=se,O=ye,A=Me;return d(),u("div",Be,[t("div",He,[n(v),t("section",Le,[(d(!0),u(B,null,H($(c),(h,b)=>(d(),L(O,{key:h.id,ref_for:!0,ref:D=>{i.value[h.id]=D},data:h,"background-color":s(b),"next-background-color":s(b+1),"transition-color":a(b),last:b===$(c).length-1},null,8,["data","background-color","next-background-color","transition-color","last"]))),128))]),n(A,{ref:"section","transition-color":a($(c).length-1)},null,8,["transition-color"])])])}}},qe=y(Ne,[["__scopeId","data-v-8752068d"]]);export{qe as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.