diff --git a/apps/rix1.dev-lume/about.md b/apps/rix1.dev-lume/about.md index 758d9ea..e7a2efa 100644 --- a/apps/rix1.dev-lume/about.md +++ b/apps/rix1.dev-lume/about.md @@ -3,34 +3,39 @@ title: Hi, I'm Rikard 👋 layout: layouts/center-content.tsx --- -I've found my home in product community of Oslo, in the intersection of technology, design, and sustainable energy solutions. After I joined [Otovo](https://otovo.com/) as their fourth engineer, I've helped grow the company from a small team to where we are today. We have installed solar power in tens of thousands of homes across 13 European countries. And we're [not done](https://twitter.com/rix1/status/1688663122385457153) yet. +I've found my home in product community of Oslo, in the intersection of technology, design, and sustainable energy solutions. After I joined [Otovo](https://otovo.com/) in 2016 as one of their first employees, I've helped grow the company to where we are today: Hundreds of employees, precence in 13 markets and tens of thousands of homes with solar panels on their roofs +(and we're [not done](https://twitter.com/rix1/status/1688663122385457153) yet). -Life's path is never straight. During my informatics studies at NTNU in Trondheim, [my partner](https://github.com/sirihol) and I spent a year on exchange at UCT in Cape Town. When we weren’t studying, visiting vineyards or at the beach, I worked for a Norwegian startup, [CosyTech](https://www.crunchbase.com/organization/cosytech). We [won a few competitions](https://twitter.com/Torildnm/status/617090179862523908), but never found product-market fit. No customers means no revenue, so we decided to close down after 10 months. [Andrroy](https://github.com/andrroy) and I proceeded to freelance together for the remainder of our formal studies. +I come from a life of priviledge, there's no doubt about that. I've probably been given more opportunities than most, but I also believe in making my own luck. I've come to understand that both history and life is only as straight as the stories we tell. So here's mine: -An unexpected turn of events while writing my [master's thesis](https://ntnuopen.ntnu.no/ntnu-xmlui/handle/11250/2403242), lead me to cancel my contract with [BEKK](https://www.bekk.no/), where I was supposed to start as a full-time consultant later that year. Instead, I accepted an offer from [DNB](https://www.dnb.no/), Norway's largest bank. This was thanks to productive procrastination a hackathon that [went surprisingly well](https://www.dnb.no/dnbnyheter/no/din-okonomi/dnb-utfordrer-studenter-til-a-vise-seg-frem). +During my informatics studies at NTNU in Trondheim, [my partner](https://www.instagram.com/siriholtnaes/) and I spent a year on exchange at UCT in Cape Town. When we weren’t studying, visiting vineyards or at the beach, I worked remote for a Norwegian startup, [CosyTech](https://www.crunchbase.com/organization/cosytech). This was my first real job in the world of product. After [winning a few competitions](https://twitter.com/Torildnm/status/617090179862523908), Visa invited us to wine and dine at at their HQ in London – a weird but fun trip. CosyTech however, never found product-market fit. No customers meant no revenue, so we decided to close shop after ~12 months. -I was a bit hesitant to joining such a large organisation, but the folks at DNB convinced us to spend two weeks at the bank to get a feel for it. It was an exciting experience; we started what eventually would morph into their [Open Banking platform](https://developer.dnb.no/). However, my feets were still a bit cold. After a lot of back and forth, I ended up cancelling my second contract in just 3 weeks. +[Andrroy](https://github.com/andrroy) and I then proceeded to freelance part-time together for the remainder of our formal studies. We built an e-commerce site for [wedding dresses](https://whitestory.no/), we MVP'd an [online learning platform](https://twitter.com/corsane_com), and spent about a year working on a "game" that was played in an [fMRI machine](https://www.biorxiv.org/content/10.1101/2020.05.11.084202v1.abstract) as part of a research project. We had no idea what we were doing back then, but we were good enough that people paid us to play and have fun. -That morning, I walked back into the office of a client I had been working with for the past 6 months – the newly [founded solar startup, Otovo](https://www.dn.no/solenergi/grunder/energi/selger-teslaen-for-a-folge-i-elon-musks-fotspor/1-1-5560478). Although they were surprised to see me, they got really excited when I asked if I could get a full-time job. +In an unexpected turn of events while writing my [master's thesis](https://ntnuopen.ntnu.no/ntnu-xmlui/handle/11250/2403242) lead me to break my upcoming full-time position at [BEKK](https://www.bekk.no/), and accept a job offer from [DNB](https://www.dnb.no/), Norway's largest bank. This was thanks to productive procrastination a hackathon in 2016 that [went surprisingly well](https://www.dnb.no/dnbnyheter/no/din-okonomi/dnb-utfordrer-studenter-til-a-vise-seg-frem). -After a quick chat with [Simen](https://twitter.com/simenfur) and [Andreas](https://twitter.com/athornor), I signed a contract for a engineering position with Otovo. 2016 was a crazy year. Now, eight years and countless experiences later, I'm still having fun chasing the sun together with Otovo from our [office in Torggata](https://maps.app.goo.gl/QVtntdVEEdDjDazK7). +I was a bit hesitant to joining such a large organisation, but the kind folks at DNB convinced us to spend two weeks at the bank to get a feel for it. It was an exciting experience: We started what eventually would morph into their [Open Banking platform](https://developer.dnb.no/). However fun, my feets were still a bit cold. After a lot of back and forth, I ended up cancelling my second contract in just 3 weeks. -> ### I never worked a day in my life, I just laid back and let the big beat lead me -> -> [Fatboy Slim's remix of Jungle Brothers](https://soundcloud.com/theclassicmixcdseries/on-the-floor-at-the-boutique-fatboy-slim) +That morning, I walked back into the office of a client Andrroy and I had been working with for the past 6 months – the newly [founded solar startup, Otovo](https://www.dn.no/solenergi/grunder/energi/selger-teslaen-for-a-folge-i-elon-musks-fotspor/1-1-5560478). Beliving they had lost me to the bank, [Andreas](https://twitter.com/athornor) and [Simen](https://twitter.com/simenfur) were surprised to see me. The surprise turned into excitement when I asked if I could join full-time. I signed and started my first full-time postition as a software engineer that day, and never looked back. + +2016 was a crazy year. Now, eight+ years and countless experiences later, I'm still having fun chasing the sun together with Otovo. -These experiences were never strategic career moves for me. They were lessons in navigating uncertainty and the importance of having fun while placing bets on who to surround yourself with. +As you might figure, these experiences were never strategic career moves for me. However, I learned some important lessons in: -Away from the keyboard, I find cooking extremely interesting. Ideally for larger crowds - as I come from a big family. I have fun when I can be curious, have attention to detail, do _just enough™_ planning and focus on playful execution. +1. Navigating uncertainty. +2. The importance of having fun. +3. Placing bets on who to surround yourself with. -I'm definitively a dog person, as I've had two Belgian shepherds since 2007. Dogs are pretty great. They not only provide unconditional love, but are also a daily reminder that patience, commitment and consistency go a long way. +> ### I never worked a day in my life, I just laid back and let the big beat lead me +> +> [Fatboy Slim - Because I Got It Like That (remix) ](https://soundcloud.com/theclassicmixcdseries/on-the-floor-at-the-boutique-fatboy-slim) -Life is better with music, which is why I listen to it [pretty much all day](https://www.last.fm/user/rikardeide). Long distance running and tap dancing are my go-to activities for a mental and physical balance. +Away from the keyboard, I like to cook. Ideally for larger crowds - either for a bunch of kids at [Feriekolonien](https://www.feriekolonien.no/), or for my large family. I have fun when I can be curious, have attention to detail, do _just enough™_ planning and focus on playful execution. -In conclusion, I approach work as I do life\* – with a blend of ambition, inspiration and a hands-on attitude. Whether I'm leading product people at Otovo, planning a mission as a squad leader in the [Norwegian Army Reserves](https://www.forsvaret.no/heimevernet) or cooking for children at [Feriekolonien](https://www.feriekolonien.no/), I like mixing theory and practice. I care about about making an impact, not just making noise. +I think dogs are pretty great. We've had three Belgian shepherds since 2007: [Sam & Tiva](https://s3.eu-north-1.amazonaws.com/rix1.dev/dogs/sam-tiva-bamble.jpg) and most recently [Yoda](https://s3.eu-north-1.amazonaws.com/rix1.dev/dogs/yoda-oslo.jpg) 🫶. A constant source of unconditional love, but also a daily reminder that patience, commitment and consistency go a long way. -\*I don't think about it that differently to be honest +Life is better with music, which is why you'll always find me [listening to it](https://www.last.fm/user/rikardeide). Semi-long distance running and dancing are my go-to activities for keeping in shape. That should do it for now. If you still haven't gotten enough, [here's some content](https://old.rix1.dev/posts) from my old site that still haven't been ported. -_Cheers - Rix1_ +Cheers, Rix1 ✌️ diff --git a/apps/rix1.dev-lume/globals.css b/apps/rix1.dev-lume/globals.css index 8cb4d63..08d5c26 100644 --- a/apps/rix1.dev-lume/globals.css +++ b/apps/rix1.dev-lume/globals.css @@ -3,176 +3,227 @@ @tailwind utilities; :root { - --scale-timing: 0.15s; - --image-size: 280px; + --scale-timing: 0.15s; + --image-size: 280px; } html, body { - padding: 0; - margin: 0; - - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + padding: 0; + margin: 0; + + font-family: + -apple-system, + BlinkMacSystemFont, + Segoe UI, + Roboto, + Oxygen, + Ubuntu, + Cantarell, + Fira Sans, + Droid Sans, + Helvetica Neue, + sans-serif; } * { - box-sizing: border-box; + box-sizing: border-box; } mark { - background-color: hsl(333, 71%, 90%); - color: #db2777; - padding: 0 0.25rem; - border-radius: 2px; + background-color: hsl(333, 71%, 90%); + color: white; + font-size: 95%; + padding: 0.3rem 0.4rem 0.4rem; + line-height: 1; + border-radius: 6px; + + --tw-gradient-from: #ea5634; + --tw-gradient-to: #db2777; + --tw-gradient-stops: var(--tw-gradient-from), + var(--tw-gradient-to, rgba(234, 86, 52, 0)); + background-image: linear-gradient( + to right, + var(--tw-gradient-stops) + ) !important; + display: inline-block; +} + +mark.playful { + transform: rotate(-1deg); + transition: transform 0.3s ease; +} + +mark.playful:hover { + animation: wobble 0.5s ease-in-out; +} + +@keyframes wobble { + 0%, + 100% { + transform: rotate(-2deg); + } + 25% { + transform: rotate(2deg); + } + 50% { + transform: rotate(-2deg); + } + 75% { + transform: rotate(2deg); + } } a:not(.clear) { - --tw-gradient-from: #ea5634; - --tw-gradient-to: #db2777; - --tw-gradient-stops: var(--tw-gradient-from), - var(--tw-gradient-to, rgba(234, 86, 52, 0)); - background-image: linear-gradient( - to right, - var(--tw-gradient-stops) - ) !important; - background-clip: text !important; - color: transparent !important; - - &:hover { - --tw-gradient-from: #fca5a5; - --tw-gradient-to: #f87171; - } + --tw-gradient-from: #ea5634; + --tw-gradient-to: #db2777; + --tw-gradient-stops: var(--tw-gradient-from), + var(--tw-gradient-to, rgba(234, 86, 52, 0)); + background-image: linear-gradient( + to right, + var(--tw-gradient-stops) + ) !important; + background-clip: text !important; + color: transparent !important; + + &:hover { + --tw-gradient-from: #fca5a5; + --tw-gradient-to: #f87171; + } } #blobby-avatar { - width: var(--image-size); - height: var(--image-size); + width: var(--image-size); + height: var(--image-size); - background-image: url(https://s3.eu-north-1.amazonaws.com/rix1.dev/first-thursday-450x450.jpg); - background-size: contain; - background-position: center; - background-repeat: no-repeat; + background-image: url(https://s3.eu-north-1.amazonaws.com/rix1.dev/first-thursday-450x450.jpg); + background-size: contain; + background-position: center; + background-repeat: no-repeat; - animation-name: floating; - animation-duration: 15s; - animation-timing-function: ease-in-out; - animation-iteration-count: infinite; + animation-name: floating; + animation-duration: 15s; + animation-timing-function: ease-in-out; + animation-iteration-count: infinite; - mask-image: url(assets/blob.svg); - mask-size: var(--image-size); - mask-repeat: no-repeat; - mask-position: center; + mask-image: url(assets/blob.svg); + mask-size: var(--image-size); + mask-repeat: no-repeat; + mask-position: center; } @keyframes floating { - 0% { - transform: translate(0, 0px); - } - 50% { - transform: translate(0, -12px); - } - 100% { - transform: translate(0, -0px); - } + 0% { + transform: translate(0, 0px); + } + 50% { + transform: translate(0, -12px); + } + 100% { + transform: translate(0, -0px); + } } #blur { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: fixed; - backdrop-filter: blur(75px); - z-index: -1; + width: 100%; + height: 100%; + top: 0; + left: 0; + position: fixed; + backdrop-filter: blur(75px); + z-index: -1; } #blob { - position: absolute; - inset: 10% 22%; - background: linear-gradient(135deg, #00eaff, #ff00ab, #ff7b00); - opacity: 0.7; - border-radius: 50%; - z-index: -10; - animation: move 8s linear infinite, rotate 12s linear infinite; + position: absolute; + inset: 10% 22%; + background: linear-gradient(135deg, #00eaff, #ff00ab, #ff7b00); + opacity: 0.7; + border-radius: 50%; + z-index: -10; + animation: + move 8s linear infinite, + rotate 12s linear infinite; } @keyframes rotate { - from { - transform: rotate(0deg); - } - to { - transform: rotate(359deg); - } + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } } @keyframes move { - 0% { - transform: translateY(0rem); - border-radius: 50%; - } - 25% { - border-radius: 40% 60% 50% 50% / 60% 40% 60% 40%; - } - 50% { - transform: translateY(1rem); - border-radius: 50% 50% 40% 60% / 40% 60% 40% 60%; - } - 75% { - border-radius: 40% 60% 50% 50% / 60% 40% 60% 40%; - } - 100% { - transform: translateY(0rem); - border-radius: 50%; - } + 0% { + transform: translateY(0rem); + border-radius: 50%; + } + 25% { + border-radius: 40% 60% 50% 50% / 60% 40% 60% 40%; + } + 50% { + transform: translateY(1rem); + border-radius: 50% 50% 40% 60% / 40% 60% 40% 60%; + } + 75% { + border-radius: 40% 60% 50% 50% / 60% 40% 60% 40%; + } + 100% { + transform: translateY(0rem); + border-radius: 50%; + } } [data-pos="center"] { - top: -50px; - left: calc(50% - 100px); - min-width: 200px; - min-height: 200px; - position: absolute; - pointer-events: none; + top: -50px; + left: calc(50% - 100px); + min-width: 200px; + min-height: 200px; + position: absolute; + pointer-events: none; } [data-pos="center"] > #blob { - inset: 0 0; + inset: 0 0; } .share-icons > a > svg { - transition: all var(--scale-timing) ease-out; + transition: all var(--scale-timing) ease-out; } .share-icons > a > small { - opacity: 0; - transform: scale(0.5) translateY(-0.5rem); - color: #db2777; - transition: all var(--scale-timing) ease-out; - font-size: 12px; + opacity: 0; + transform: scale(0.5) translateY(-0.5rem); + color: #db2777; + transition: all var(--scale-timing) ease-out; + font-size: 12px; } /* only target svgs with stroke property */ .share-icons > a > svg[stroke] { - fill: transparent; + fill: transparent; } .share-icons > a:hover > small { - opacity: 1; - transform: scale(1) translateY(0); - transition: all var(--scale-timing) ease-out; + opacity: 1; + transform: scale(1) translateY(0); + transition: all var(--scale-timing) ease-out; } .share-icons > a:hover > svg[stroke] { - transform: scale(1.2) translateY(-0.5rem); - stroke: #db2777; - transition: fill var(--scale-timing) ease-out, - transform var(--scale-timing) ease-out; + transform: scale(1.2) translateY(-0.5rem); + stroke: #db2777; + transition: + fill var(--scale-timing) ease-out, + transform var(--scale-timing) ease-out; } .share-icons > a:hover > svg:not([stroke]) { - transform: scale(1.2) translateY(-0.5rem); - fill: #db2777; - transition: fill var(--scale-timing) ease-out, - transform var(--scale-timing) ease-out; + transform: scale(1.2) translateY(-0.5rem); + fill: #db2777; + transition: + fill var(--scale-timing) ease-out, + transform var(--scale-timing) ease-out; }