generated from nhcarrigan/template
feat: convert to blog
This commit is contained in:
parent
3a6a8fff18
commit
d546799f66
@ -3,9 +3,9 @@
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev -p 3001",
|
||||
"dev": "next dev -p 3003",
|
||||
"build": "next build",
|
||||
"start": "next start -p 3001",
|
||||
"start": "next start -p 3003",
|
||||
"lint": "eslint src --max-warnings 0"
|
||||
},
|
||||
"dependencies": {
|
||||
|
53
posts/de-googling-myself.md
Normal file
53
posts/de-googling-myself.md
Normal file
@ -0,0 +1,53 @@
|
||||
---
|
||||
title: "De-Googling Myself"
|
||||
date: "2024-05-14"
|
||||
summary: "How I shifted my entire online presence to more privacy-focused platforms"
|
||||
---
|
||||
|
||||
Recent life events have made me more cognisant of my digital footprint and online privacy. So much so that I'm paying for one of those services that sends data removal requests automatically on your behalf. But over the weekend I realised... how much data am I still giving to the tech giants? So I sat down and spent many hours moving away from those platforms.
|
||||
|
||||
## Stepping Away From Microsoft
|
||||
|
||||
I had moved from Windows to Linux a month ago, but I was still using a relatively recent acquisition of theirs: GitHub. Now, sure, the privacy concerns of having access to my (99%) open source projects are definitely much smaller than giving a company access to my search history, entire internet history, or even my phone.
|
||||
|
||||
But still, I knew there had to be a better option. So I moved all of my repositories over to CodeBerg - which had quite a few attractive aspects:
|
||||
|
||||
- It's FOSS!
|
||||
- It's run by a non-profit
|
||||
- They seem very privacy focused
|
||||
|
||||
They had this pretty slick option to import a repository from GitHub, using a PAT to copy over everything including issues and pull requests. I tried that for a few repos, but with a fairly extensive open-source history I quickly hit rate limits. I'm a rather impatient girl, so I decided to go the nuclear route - wipe my local .git directory, re-initialise from the main branch, and push the changes to the new remote creating a fresh history.
|
||||
|
||||
I didn't bother to preserve my old archives, either - nuked those entirely. It felt oddly liberating to unload four years of development history, and I have to say my notifications have become vastly more manageable. I do worry about diminished contributor activity, but on the flip side that'll free me up to focus on more paid work.
|
||||
|
||||
## Removing Google
|
||||
|
||||
Google was an entirely different beast. I had used my GMail account for years. I had so many accounts that were OAuth sign-in through Google. There was a LOT to migrate.
|
||||
|
||||
Step one was to decide on a new email provider. I had some pleasant experiences with Migadu for custom domain emails, but the limit on number of messages you could send/receive was concerning with how many different client inboxes I manage. With the help of the De-Googling subreddit, I landed on Proton Mail - trading a cap on send/receive for a cap on the number of email aliases I could set up.
|
||||
|
||||
But because Proton Mail supports the + trick? I could turn an alias like accounts into an infinite number - and that's exactly what I did. When going through every single account in my password manager, I decided to give each of them an accounts+platform email so that I could track where some of the random spam emails came from (and know who's selling my data).
|
||||
|
||||
Once I had all that done, I created a personal calendar in Proton and set up my work calendars as imports just so I could see the events. Proton offers drive storage as well, albeit with a significantly smaller limit than what I had through Google One. But it worked for my essential files - I just had to give up on the 500 outfits I had for my old VTuber model.
|
||||
|
||||
Finally, I set up FreeTube to give myself a way to continue consuming random YouTube content without letting YouTube see all of my activity.
|
||||
|
||||
## But what about work?
|
||||
|
||||
Yeah, okay. Three of my clients still have me using GMail addresses. There's only so much I can do about that, like... forwarding all of my emails from there directly to my Proton inbox, and syncing my calendars to Proton.
|
||||
|
||||
But still, sometimes I have to sign in to view a shared Google Doc. And we use Google Chat in one of my roles. So I run those exclusively through private Tor windows with Brave. It's certainly not perfect, but I work with what I've got.
|
||||
|
||||
## Don't you have an Android?
|
||||
|
||||
I do. Which, I was totally ready to flash GrapheneOS on it. Or heck, even just root it so I could toss all the Google bloat. But it turns out the Samsung Galaxy phones with the Snapdragon processors can't be bootloader-unlocked (at least not yet?). Which make both of those pretty much impossible to do.
|
||||
|
||||
I can't afford to go out and buy a new phone right now (donate to me please), and wouldn't know what to get even if I could. So I made the most of what I had and used a debloater tool to force-uninstall the stuff I didn't want. It's still there in the system files, and will come back if I do an update or a factory reset. But then I'll just remove it again.
|
||||
|
||||
And none of my Google accounts are signed in on my phone anymore (which has the added bonus of not bringing work with me everywhere I go!).
|
||||
|
||||
## I know none of this is perfect...
|
||||
|
||||
I'm not a privacy expert. I'm still doing a lot of research, refining my approaches, figuring out what "privacy-focused" apps are actually not.
|
||||
|
||||
So if you have a suggestion for how I can better lock down my stuff, while still keeping communication channels available for folks who want to commission me or contribute to my projects, please feel free to drop a comment! I'm always happy to learn new things!
|
55
posts/freelancing-is-hard.md
Normal file
55
posts/freelancing-is-hard.md
Normal file
@ -0,0 +1,55 @@
|
||||
---
|
||||
title: "Freelancing is Hard"
|
||||
date: "2024-10-12"
|
||||
summary: "The struggles of a self-employed software engineer."
|
||||
---
|
||||
|
||||
One of my clients put my contract on pause this month. They don’t have any work for me. Thankfully, I run a very heavy workload specifically so things like this aren’t quite the blow. But that’s not viable for many people (and arguably unhealthy for me).
|
||||
|
||||
> ✨ I know I make it look fabulous…
|
||||
|
||||
…but the life of a freelancer is full of challenges and risk.
|
||||
|
||||
## Sourcing Clients
|
||||
|
||||
Arguably the hardest part of being a freelancer (at least, from what I see a lot of people struggle with this step) is finding people to pay you.
|
||||
|
||||
I know it is a bit of a dead horse at this point, but networking is really key here. Most of my clients have come to me through my network.
|
||||
|
||||
But networking isn't about trying to find a job, or getting people to refer you. It's about adding value. For example, volunteering in the Hacktoberfest community created a connection that led to my role at Deepgram. Moderating Rythm created an opportunity to build their community tooling.
|
||||
|
||||
Open source contributions can also be a great way to network. But this is only effective if you commit. Making drive by contributions might seem tempting, but isn't really going to leave a mark. Having consistent, quality contributions to a specific project over a long period of time not only showcases your talent, but gives you important experience working in a team environment.
|
||||
|
||||
## Losing Clients
|
||||
|
||||
The reality is, no matter how hard you work, you’re going to end up parting ways with clients. Maybe the project they had you working on is complete. Maybe they no longer have the funds to pay you. Heck, maybe you just weren’t meeting expectations. Whatever the reason, it does happen.
|
||||
|
||||
Unfortunately, at least in the U.S., you don’t have much of a safety net. You aren’t eligible for unemployment benefits, you’ll have a hard time proving an unjust termination… So really, you need to have your own safety net. Whether that’s a significant amount of savings, or even an adjustable workload that can handle the loss (I, for one, tend to do around 80-100 hour weeks so there’s never a shortage of work).
|
||||
|
||||
However you choose to handle it, being a freelancer can very much be “feast or famine”, and you’ll want to be prepared for that.
|
||||
|
||||
## Financial Concerns
|
||||
|
||||
Aside from having a solid nest egg to fall back on, there are a few other financial concerns. Taxes are arguably the biggest one. Here in the U.S., you are the employer. So you are required to pay both the employee portion and the employer portion of income tax (“self-employed tax”). And there are penalties if you do not pay it early. Which means you have to keep accurate books of your income and estimated tax liabilities.
|
||||
|
||||
But there are also other concerns. It’s rare (perhaps even unheard of) that a company will pay into a pension or 401K for an independent contractor. Health insurance is typically not offered - you’ll need to source and pay for your own. And all of these can add up.
|
||||
|
||||
On the plus side, you get to write off business-related expenses! And depending on how you structure your business, you may be eligible for additional perks like a business line of credit.
|
||||
|
||||
## Running a Business
|
||||
|
||||
Being a freelance developer doesn’t mean the 100 hours of work I do is always code. There’s a lot of time doing business-related things. Marketing, so that I stay relevant and fresh in potential clients’ minds. Content creation (like this blog!) to generate passive income as well as providing evidence of my knowledge and expertise.
|
||||
|
||||
And, of course, there’s social media. Maintaining an active presence on as many platforms as possible, to ensure clients can see and find me and know how to contact me. None of this is paid, either - heck, sometimes I pay. It’s just part of the investment you make into running your own business.
|
||||
|
||||
## Isolation
|
||||
|
||||
Remote work often seems glamorous. Avoiding a commute, wearing pyjamas all day… But there’s a lot you miss out on when you aren’t in an office environment. I, for example, never really had the same opportunities to connect and socialise with colleagues.
|
||||
|
||||
This becomes especially more true when you’re a freelancer. You might be on a team where you’re the only developer. Or you might work directly for a client with zero technical experience. And all of that can leave you feeling somewhat isolated. It’s essential to find other ways to connect with your peers. Such as programming communities on Discord.
|
||||
|
||||
> 💡 I don’t share my story to scare you, but rather to educate and empower you.
|
||||
|
||||
There are a significant number of content creators and influencers who will pitch this as the greatest thing ever. And it is pretty bloody nice.
|
||||
|
||||
But freelancing is not all sunshine and rainbows. It’s certainly not a path to “easy money”. If you’ve read the challenges I’ve shared, and you’re still interested, that’s great! I wish you the best of luck. And if you’re feeling more comfortable with a traditional W-2 role, that’s great too! All that matters is you make an informed decision that will bring you the best life. 💜
|
39
posts/i-did-it-and-you-cant-too.md
Normal file
39
posts/i-did-it-and-you-cant-too.md
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "I did it, and you can't too!"
|
||||
date: "2024-08-09"
|
||||
summary: "Going from my first line of code to my first job in 7 months."
|
||||
---
|
||||
|
||||
"Become job ready in 6 months". "Learn to code in 90 days". If you've heard statements like this from various tech influencers, you're not alone. That seems to be the selling point lately - how to go from 0 to job ready as fast as possible. I actually did it - I went from my first `<h1>` element to my first job in 7 months. And I'm here to say: you can't too.
|
||||
|
||||
I suppose I should clarify that. Moving through your learning journey as quickly as I did, or as quickly as all of these YouTube stars promise, takes a large mix of "the right circumstances" and "a metric shit-ton of luck". Hmm... maybe it would be better if I just told my story.
|
||||
|
||||
It was April 2020. I was working my grocery retail management job. SARS-CoV-2 was just becoming a pandemic. And my employer wanted to change my job location to one halfway across town. Now, I didn't own a car at that time (still don't, tbh). And with a pandemic, I certainly wasn't going to take public transit and further risk exposure to myself and my family. So I said "screw it, I quit".
|
||||
|
||||
> 💼 I no longer had a job, or any of the responsibilities that came with it.
|
||||
|
||||
I sat around and played video games for about two weeks before I was bored out of my mind. I needed a hobby desperately, so I decided to look up free resources on learning to code. I found freeCodeCamp, and threw myself hard into the curriculum.
|
||||
|
||||
Now, I had cashed out my accrued PTO when I quit. I had withdrawn my pension (through an economic hardship withdrawal). And I had won an unemployment claim. So I was in a position where I could afford to be jobless for a while. I also had no other responsibilities; no children, no partner, it was just me myself and my computer.
|
||||
|
||||
> 💻 I had the time and capacity to spend 10-12 hours every day on the freeCodeCamp curriculum.
|
||||
|
||||
At that pace, I completed (what was, at the time) the entire core freeCodeCamp curriculum in 5 months. I was also working on my own personal projects, such as a portfolio site and a moderation bot for Discord. None of that was making me money. I was doing okay - my reserves hadn't dried up. But I also knew taking on more expenses was a bad idea. So I couldn't donate financially to freeCodeCamp.
|
||||
|
||||
I still wanted to give back, so I donated the one thing I had an abundance of now: time. freeCodeCamp's entire learning platform is open source, and I started making contributions in tandem with working on my own projects. I did this consistently, at the same 10-12 hour a day pace, for another 2 months, until...
|
||||
|
||||
> 💸 Quincy reached out directly and offered me a role on the paid staff team.
|
||||
|
||||
And that was it. In 7 months, I had gone from knowing nothing about code to my first developer role. I share this story not to brag, but to caution. Because what I want you to take away from this is. While I did work hard and seriously apply myself...
|
||||
|
||||
- I had the capacity to devote my entire schedule to my studies
|
||||
- I had the funds to be able to study instead of working
|
||||
- I was in the right place at the right time to receive a job offer
|
||||
|
||||
And this is not a common situation. Many people cannot afford to stop working. Most of the learners I run in to are doing so around an already busy schedule. They have maybe 4 hours a week to study, not 12 hours a day. If you're one of those people, of course it's going to take you longer. And that's okay!
|
||||
|
||||
> 🏃♀ This is a marathon, not a sprint.
|
||||
|
||||
Learning to code is hard. It takes time. Very few people pull it off in six months. Some take a year. Some take 4 years. Some take longer. It doesn't matter how long you take - if you keep at it and stay committed, you will succeed. And that's what really matters... reaching your goals, regardless of when!
|
||||
|
||||
> 💡 So don't feel bad if it takes you longer than 6 months. The circumstances have to be just right for that to even be possible.
|
31
posts/migrating-from-windows-to-ubuntu.md
Normal file
31
posts/migrating-from-windows-to-ubuntu.md
Normal file
@ -0,0 +1,31 @@
|
||||
---
|
||||
title: "Migrating From Windows to Ubuntu"
|
||||
date: "2024-05-10"
|
||||
summary: "Why I finally ditched Microsoft"
|
||||
---
|
||||
|
||||
I grew up on Windows. My very first computer ran MS-DOS. My schools all used Windows computers (except for a brief stint with the colourful iMac). I thought myself to be intimately familiar with how Windows works. Becoming a developer showed me just how wrong I was.
|
||||
|
||||
## Why Change?
|
||||
|
||||
When I first became a developer, I was running Windows. And only Windows. And it worked well enough for what I needed. Sure, all of the documentation for things I was using or working on was written with a *nix environment in mind, but I fumbled my way through with some Google-fu and the power of Git Bash.
|
||||
|
||||
Then Hacktoberfest 2020 rolled around. I was just getting in to open source, and I was heavily involved (I mod their Discord now :3 ), so I wanted to try my hand at contributing to the website. But it was a Rails site, and support for Ruby on Windows was abysmal at best. Which meant it was time to explore other options.
|
||||
|
||||
## Windows Subsystems for Linux
|
||||
|
||||
I'm a gamer girl. Hardcore. I knew I didn't want to give up the ease of gaming on Windows. So I explored Windows Subsystems for Linux (WSL). It worked surprisingly well. The biggest downside was that there was no GUI support at the time. Working at freeCodeCamp, that meant I couldn't run Cypress in "watch" mode. But I made it work.
|
||||
|
||||
Taking advantage of that time, I became familiar with bash and *nix commands, and came to love Ubuntu. When Windows 11 shipped with GUI support, all of my pain points were solved. I had Ubuntu for my development environment, and Windows for my gaming environment. And I didn't have to muck around with dual boot.
|
||||
|
||||
WSL had this magical feature where a web server running in Ubuntu was exposed to localhost on Windows. Made my work as a web developer significantly easier. Until one day that mysteriously broke. I had no idea how it worked, so I had no idea how to fix it. Sure, I could load the webpage in the Linux browser instance, but I wasn't authenticated on any platform in that browser, didn't have my password manager... I spent a few days mucking around trying to figure that out, and then finally gave up. Wiped my hard drive and did a full fresh install of Ubuntu.
|
||||
|
||||
## No More Windows
|
||||
|
||||
I've been on Ubuntu for a couple of months now (I think? Time is a concept.) and it's been great. My development work has been faster and more streamlined, and I have yet to run in to any issues with my workflows. Gnome provides an experience that's similar enough to Windows that it felt like home from day one. I even have an extra fancy retro terminal!
|
||||
|
||||
![A terminal with a white bezel, scanlines, and green text - similar to an old CRT monitor](https://cdn.nhcarrigan.com/blog/1737614917216.png)
|
||||
|
||||
Thanks to the advent of the Steam Deck and Valve's work with Proton, transitioning to gaming on Linux has been pretty seamless too. I've run in to a couple of games that don't run, like Demonologist (which to be fair barely ran on Windows), and some that need tweaking (which I contribute as documentation to ProtonDB), but some older games run even better. I have noticed that "heavier" (re: more graphically intense) games tend to play worse, but it's a trade-off I'm willing to make.
|
||||
|
||||
There are a few things I definitely miss. I don't play games in full screen mode anymore - Gnome crashes if I alt-tab to Discord too often. And the lack of an emoji picker trips me up more often than I'd like to admit. But overall, it's been such a positive change that I haven't really looked back. And probably never will.
|
@ -1,23 +0,0 @@
|
||||
---
|
||||
title: "Migrating Our Community to Self-Hosted Platforms"
|
||||
date: "2025-01-22"
|
||||
summary: "Why we chose to move away from anything and everything that we can't control ourselves."
|
||||
---
|
||||
|
||||
Hey friends,
|
||||
|
||||
We've been watching events unfold in our political climate, including tech leaders supporting a president that aims to oppress members of our LGBT+ community. As such, we've made the decision to migrate away from public community platforms and start self-hosting our own instead.
|
||||
|
||||
## What does this mean?
|
||||
|
||||
Well, there's a few things:
|
||||
|
||||
- First and foremost, the bulk of our communication is being moved to our [forum](https://chat.nhcarrigan.com). If you need to get in touch with us for *anything*, this is probably the best place to start. Additionally, conversations here are searchable and indexed by many crawlers.
|
||||
- Our chat is migrating over to [IRC](https://irc.nhcarrigan.com). To protect the privacy of our community members, we do *not* run a bouncer. Which means anything you send can only be seen by users who are *currently online*. This ephemeral nature makes it nice for informal chatter, but leaves the forum as the best place for long-term conversation.
|
||||
- For personal updates, we maintain our own [blog](https://blog.nhcarrigan.com). We also have a self-hosted [Sharkey instance](https://fedi.nhcarrigan.com) for smaller posts. Sign-ups are restricted to our family and polycule, but you can connect with us via any Mastodon-compliant instance!
|
||||
|
||||
## What if I don't want to join any of those?
|
||||
|
||||
That's fine! We'll still maintain a minimal presence on platforms like Discord and Bluesky. But our core focus for building our community is going to be on our self-hosted solutions, where we know our marginalised members are safe and can be protected.
|
||||
|
||||
We do hope to see you in our new home on the forum! 💜
|
@ -1 +0,0 @@
|
||||
<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
|
Before Width: | Height: | Size: 391 B |
@ -1 +0,0 @@
|
||||
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
|
Before Width: | Height: | Size: 1.0 KiB |
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
Before Width: | Height: | Size: 1.3 KiB |
@ -1 +0,0 @@
|
||||
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
|
Before Width: | Height: | Size: 128 B |
@ -1 +0,0 @@
|
||||
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
|
Before Width: | Height: | Size: 385 B |
@ -3,32 +3,47 @@
|
||||
@tailwind utilities;
|
||||
|
||||
* {
|
||||
font-family: "OpenDyslexic", monospace;
|
||||
font-family: "OpenDyslexic", monospace;
|
||||
}
|
||||
|
||||
h1 {
|
||||
@apply text-4xl;
|
||||
@apply text-4xl;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply text-2xl;
|
||||
@apply text-2xl;
|
||||
}
|
||||
|
||||
a {
|
||||
@apply underline;
|
||||
@apply underline;
|
||||
}
|
||||
|
||||
li {
|
||||
@apply list-disc;
|
||||
@apply list-inside;
|
||||
@apply text-left;
|
||||
@apply list-disc;
|
||||
@apply list-inside;
|
||||
@apply text-left;
|
||||
}
|
||||
|
||||
p {
|
||||
@apply text-justify;
|
||||
}
|
||||
@layer utilities {
|
||||
.text-balance {
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
img {
|
||||
@apply mx-auto;
|
||||
}
|
||||
|
||||
blockquote,
|
||||
blockquote p {
|
||||
@apply text-center;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border: 2px dotted;
|
||||
margin: 1rem;
|
||||
}
|
||||
|
||||
@layer utilities {
|
||||
.text-balance {
|
||||
text-wrap: balance;
|
||||
}
|
||||
}
|
||||
|
@ -15,11 +15,11 @@ const inter = Inter({ subsets: [ "latin" ] });
|
||||
|
||||
const metadata: Metadata = {
|
||||
description:
|
||||
"This page tells you everything you could ever want to know about Naomi and her consulting firm nhcarrigan.",
|
||||
"The personal musings of a transfem software engineer.",
|
||||
openGraph: {
|
||||
images: "https://cdn.nhcarrigan.com/og-image.png",
|
||||
},
|
||||
title: "NHCarrigan Announcements",
|
||||
title: "Naomi's Blog",
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
images: "https://cdn.nhcarrigan.com/og-image.png",
|
||||
|
@ -11,8 +11,8 @@ export default function Home() {
|
||||
const posts = getSortedPostsData();
|
||||
return (
|
||||
<main>
|
||||
<h1>{"Announcements"}</h1>
|
||||
<p>{"This page documents all of our organisation's announcements, in reverse chronological order."}</p>
|
||||
<h1>{"Blog"}</h1>
|
||||
<p>{"Welcome to the musings of a transfem software engineer!"}</p>
|
||||
{posts.map((post) => {
|
||||
return <div key={post.slug}>
|
||||
<Rule />
|
||||
|
Loading…
x
Reference in New Issue
Block a user