diff --git a/app/components/AlphabetFilter/AlphabetFilter.js b/app/components/AlphabetFilter/AlphabetFilter.js index 22b31496..75961bd5 100644 --- a/app/components/AlphabetFilter/AlphabetFilter.js +++ b/app/components/AlphabetFilter/AlphabetFilter.js @@ -1,20 +1,27 @@ -import { ChevronUpIcon, ChevronDownIcon } from '@chakra-ui/icons'; -import { Button, Center, SimpleGrid, Flex } from '@chakra-ui/react'; -import React, {useState} from 'react'; +import { ChevronUpIcon, ChevronDownIcon } from "@chakra-ui/icons"; +import { Button, Center, SimpleGrid, Flex } from "@chakra-ui/react"; -const AlphabetFilter = ({selectedLetter, setSelectedLetter, isMobile = false, isExpanded, setIsExpanded}) => { +const AlphabetFilter = ({ + selectedLetter, + setSelectedLetter, + isMobile = false, + isExpanded, + setIsExpanded, +}) => { const visibleChar = isMobile && !isExpanded ? 7 : 26; - const alphabetsCharCodes = Array.from(Array(visibleChar)).map((element, index) => index + 65); + const alphabetsCharCodes = Array.from(Array(visibleChar)).map( + (element, index) => index + 65 + ); const filterAlphabetsStrings = alphabetsCharCodes.map((charCode) => - String.fromCharCode(charCode) + String.fromCharCode(charCode) ); // custom code for merging const gridClasses = {}; const filterProjects = (letter) => { - if(letter === selectedLetter) { - setSelectedLetter('') + if (letter === selectedLetter) { + setSelectedLetter(""); } else { setSelectedLetter(letter); } @@ -29,75 +36,107 @@ const AlphabetFilter = ({selectedLetter, setSelectedLetter, isMobile = false, is setIsExpanded(true); }; - if(setIsExpanded) { + if (setIsExpanded) { gridClasses.borderBottom = "0.5px solid #E2E3E3"; gridClasses.pb = "1rem"; gridClasses.width = "100vw"; + gridClasses.height = "280px"; } const collapseCode = isExpanded ? (
- -
- ) : ''; + borderX="1px solid #E2E3E3" + justifyContent="center" + alignItems="center" + cursor="pointer" + > + + + ) : ( + "" + ); - if(isMobile && !isExpanded) { + if (isMobile && !isExpanded) { return ( -
- - {filterAlphabetsStrings.map((letter) => ( -
- -
- ))} - -
-
-
-
+ ))} + +
+ +
+ + ); } return ( - - {filterAlphabetsStrings.map((letter) => ( -
- -
- ))} + + {filterAlphabetsStrings.map((letter) => ( +
+ +
+ ))} - {collapseCode} -
+ {collapseCode} +
); }; -export default AlphabetFilter; \ No newline at end of file +export default AlphabetFilter; diff --git a/app/components/Blog/ArticleCard.tsx b/app/components/Blog/ArticleCard.tsx index f1402f90..05e61767 100644 --- a/app/components/Blog/ArticleCard.tsx +++ b/app/components/Blog/ArticleCard.tsx @@ -28,6 +28,8 @@ const ArticleCard = ({ image, slug, title, excerpt }: CardProps) => { borderRadius="8px 8px 0 0" alt={`${title}'s cover image`} height="280px" + objectFit="cover" + objectPosition={{ lg: "top", base: "top" }} /> { ml="1.2rem" textTransform="capitalize" > - all articles + all creators {filteredArticles.length === 0 ? ( - We couldn't find any article with this title: + We couldn't find any creators with this title: {searchTerm} @@ -110,14 +110,14 @@ export const ArticleList = ({ data }: ArticleProps) => { ) : ( - You're at the end of our articles list + You're at the end of our creators list )} - {/* */} + {/* */} ); diff --git a/app/components/Blog/BlogPost.tsx b/app/components/Blog/BlogPost.tsx index 655a5b17..6925ea75 100644 --- a/app/components/Blog/BlogPost.tsx +++ b/app/components/Blog/BlogPost.tsx @@ -38,13 +38,15 @@ export const BlogPost = ({ mb="8rem" flexFlow="column" justifyContent="center" - px={{ base: ".5rem", md: "22rem", lg: "32rem" }} mt={{ base: "-8rem", md: "-8rem", lg: "-20rem" }} + px={{ base: ".5rem", md: "8rem", lg: "12rem", xl: "32rem" }} > cover image { width={{ base: "22.875rem", sm: "22.875rem", - md: "22.875rem", - lg: "74.938rem", + md: "44.875rem", + lg: "58.938rem", xl: "74.938rem", "2xl": "74.938rem", }} diff --git a/app/components/ProjectsHero.tsx b/app/components/ProjectsHero.tsx index c4bc54d7..5a632f46 100644 --- a/app/components/ProjectsHero.tsx +++ b/app/components/ProjectsHero.tsx @@ -18,8 +18,8 @@ const ProjectsHero = ({ onChange }: ProjectsHeroProps) => { width={{ base: "22.875rem", sm: "22.875rem", - md: "22.875rem", - lg: "74.938rem", + md: "44.875rem", + lg: "58.938rem", xl: "74.938rem", "2xl": "74.938rem", }} diff --git a/app/components/SearchArticles.tsx b/app/components/SearchArticles.tsx index 2a2e122d..2a7f20c4 100644 --- a/app/components/SearchArticles.tsx +++ b/app/components/SearchArticles.tsx @@ -31,7 +31,7 @@ const SearchArticles = ({ onChange }: SearchProps) => { onChange(e)} _placeholder={{ color: "#B8BAB9", fontSize: "sm" }} /> diff --git a/app/components/featured-articles/feature-article-main.tsx b/app/components/featured-articles/feature-article-main.tsx index 522105be..374b1a9d 100644 --- a/app/components/featured-articles/feature-article-main.tsx +++ b/app/components/featured-articles/feature-article-main.tsx @@ -11,7 +11,7 @@ const FeaturedArticleMain = ({ image, slug, title, excerpt }: CardProps) => { width={{ base: "22.875rem", sm: "22.875rem", - md: "22.875rem", + md: "44.8rem", lg: "36.5rem", xl: "36.5rem", "2xl": "36.5rem", @@ -21,7 +21,7 @@ const FeaturedArticleMain = ({ image, slug, title, excerpt }: CardProps) => { sm: "28.688rem", md: "28.688rem", lg: "42.438rem", - xl: "42.438rem", + // xl: "42.438rem", "2xl": "42.438rem", }} padding={{ base: 5, sm: 5, md: 5, lg: 6, xl: 6, "2xl": 6 }} @@ -35,7 +35,7 @@ const FeaturedArticleMain = ({ image, slug, title, excerpt }: CardProps) => { width={{ base: "20.375rem", sm: "20.375rem", - md: "20.375rem", + md: "44.375rem", lg: "33.5rem", xl: "33.5rem", "2xl": "33.5rem", @@ -57,10 +57,12 @@ const FeaturedArticleMain = ({ image, slug, title, excerpt }: CardProps) => { { fontSize={{ base: "1rem", sm: "1rem", - md: "1rem", + md: "1.8rem", lg: "1.5rem", xl: "1.5rem", "2xl": "1.5rem", @@ -85,7 +87,7 @@ const FeaturedArticleMain = ({ image, slug, title, excerpt }: CardProps) => { lineHeight={{ base: "1.75rem", sm: "1.75rem", - md: "1.75rem", + md: "2rem", lg: "2rem", xl: "2rem", "2xl": "2rem", @@ -96,10 +98,11 @@ const FeaturedArticleMain = ({ image, slug, title, excerpt }: CardProps) => { { fontSize={{ base: "0.875rem", sm: "0.875rem", - md: "0.875rem", + md: "1rem", lg: "1rem", xl: "1rem", - "2xl": "1rem", + "2xl": "1.1rem", }} lineHeight="1.75rem" color="#949796" diff --git a/app/components/featured-articles/feature-article-other.tsx b/app/components/featured-articles/feature-article-other.tsx index eaddc409..5f4161b6 100644 --- a/app/components/featured-articles/feature-article-other.tsx +++ b/app/components/featured-articles/feature-article-other.tsx @@ -71,6 +71,7 @@ const FeatureArticleOther = ({ slug, title, image, excerpt }: CardProps) => { "2xl": 8, }} objectFit="cover" + objectPosition={{ lg: "top", base: "top" }} /> diff --git a/app/components/featured-articles/index.tsx b/app/components/featured-articles/index.tsx index 6db671bd..3f05d946 100644 --- a/app/components/featured-articles/index.tsx +++ b/app/components/featured-articles/index.tsx @@ -9,27 +9,34 @@ export interface FeaturedArticleProps { const FeaturedArticles = ({ data }: FeaturedArticleProps) => { return ( - + - Featured Articles + Featured Creators - ( -

( +

{children} -

+ ), + + // Paragraphs p: ({ children }: { children: React.ReactNode }) => (

{children}

), + + // Blockquotes + blockquote: ({ children }: { children: React.ReactNode }) => ( +
+ {children} +
+ ), + + // Figures + figure: ({ children }: { children: React.ReactNode }) => ( +
+ {children} +
+ ), + + // Captions for figures + figcaption: ({ children }: { children: React.ReactNode }) => ( +
+ {children} +
+ ), + + // Lists + ul: ({ children }: { children: React.ReactNode }) => ( +
    + {children} +
+ ), + + ol: ({ children }: { children: React.ReactNode }) => ( +
    + {children} +
+ ), + + // List items + li: ({ children }: { children: React.ReactNode }) => ( +
  • + {children} +
  • + ), + + // Links + a: ({ children, href }: { children: React.ReactNode; href: string }) => ( + + {children} + + ), + + // Code blocks + code: ({ children }: { children: React.ReactNode }) => ( + + {children} + + ), }; diff --git a/app/components/pages/ProjectsPage.js b/app/components/pages/ProjectsPage.js index 2729ff27..91e84d41 100644 --- a/app/components/pages/ProjectsPage.js +++ b/app/components/pages/ProjectsPage.js @@ -54,10 +54,14 @@ const ProjectsPage = (props) => { const { replace } = useRouter(); const projectHeroRef = useRef(null); - const observerOptions = { - root: null, - rootMargin: "-80px", - }; + + const observerOptions = React.useMemo( + () => ({ + root: null, + rootMargin: "-80px", + }), + [] + ); useEffect(() => { const observer = new IntersectionObserver(([entry]) => { @@ -74,7 +78,7 @@ const ProjectsPage = (props) => { // return () => observer.unobserve(projectHeroRef.current); // unobserve is causing the depth error, but disconnect removes everything. Will figure it out return () => observer.disconnect(); - }, [isStuck]); + }, [isStuck, observerOptions]); // get more projects on scroll React.useEffect(() => { @@ -161,8 +165,9 @@ const ProjectsPage = (props) => {
    @@ -173,9 +178,10 @@ const ProjectsPage = (props) => { { {[25, 55, 70, 91, 154, 200].map((index) => ( - + ))} @@ -71,7 +74,7 @@ export const Home = ({ data, projects }) => { color="#292F2E" textTransform="capitalize" > - articles + Creators @@ -114,7 +117,7 @@ export const Home = ({ data, projects }) => { @@ -134,7 +137,7 @@ export const Home = ({ data, projects }) => { - + diff --git a/app/creators/AuthorProjects.tsx b/app/creators/AuthorProjects.tsx new file mode 100644 index 00000000..99db9139 --- /dev/null +++ b/app/creators/AuthorProjects.tsx @@ -0,0 +1,15 @@ +import { useProjects } from "@/app/utils/projects"; + +export default async function AuthorProjects({ author }: { author?: string }) { + const { filterProjects } = await useProjects(); + + const authorProjects = filterProjects().byAuthor(author ?? ""); + + console.log(authorProjects); + + return ( +

    + Hey theere. These are the projects for this author +

    + ); +} diff --git a/app/creators/[slug]/page.tsx b/app/creators/[slug]/page.tsx index 119561fc..50e78d59 100644 --- a/app/creators/[slug]/page.tsx +++ b/app/creators/[slug]/page.tsx @@ -19,7 +19,7 @@ export async function generateMetadata({ params }: Props): Promise { type: "article", description: `${excerpt}`, siteName: "madeinnigeria.dev", - images: `https://madeinnigeria.dev/images/${coverImage}`, + images: `https://madeinnigeria.dev${coverImage}`, }, }; } diff --git a/app/creators/articles/documenting-your-project.mdx b/app/creators/articles/documenting-your-project.mdx deleted file mode 100644 index 6effffe3..00000000 --- a/app/creators/articles/documenting-your-project.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Building your personal Project Documentation." -excerpt: "In Part Three of this series, Monica explains how to build a second brain of knowledge you’ll use over and over." -publishDate: "2024-01-18" -coverImage: "/images/unsplash.png" ---- - -THey said you people should start documenting your projects o. If you like no hear word. diff --git a/app/creators/articles/dream-big.mdx b/app/creators/articles/dream-big.mdx deleted file mode 100644 index d29bba89..00000000 --- a/app/creators/articles/dream-big.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Dreaming big to unify Africa’s Open Source community." -excerpt: "In Part Three of this series, Monica explains how to build a second brain of knowledge you’ll use over and over." -publishDate: "2024-01-19" -coverImage: "/images/dreambig.jpeg" ---- - -### Nothing much. Just dream big. - -You've been asked to dream big, so dream big! diff --git a/app/creators/articles/emisho-victor.mdx b/app/creators/articles/emisho-victor.mdx new file mode 100644 index 00000000..5a02e13d --- /dev/null +++ b/app/creators/articles/emisho-victor.mdx @@ -0,0 +1,34 @@ +--- +title: "Designing for open source: Emisho Victor" +excerpt: "A Product and creative designer that found his way into open source as a means to challenge himself, and test his metal against the rest of the world." +publishDate: "2024-03-01" +coverImage: "/images/creators/emisho/featured.jpg" +--- + +Hi everyone! I'm Emisho Victor, and I’m a Product & Creative Designer with four years of professional experience. From a small and quiet town, my childhood was filled with lots of cartoons, fantasy and sci-fi movies, video games and tons of David Attenborough (whom I absolutely LOVEEE btw) documentaries. I guess these are the some of the major things that opened my mind to the endless possibilities the world has to offer, and that also contributed to even where I am today. + +When I’m not, and even while I’m still designing, you can still find me ranting & nerding alot over music of various genres (Rock/Metal, OSTs, etc). I also love to talk a great deal about Video Games, Anime, Music Bands, Composers and random stuff. + +## Discovering myself +Early on, I had a friend who helped me get started with using Coreldraw during class breaks in school. Learning and practicing on school computers, I would go on to abuse this newfound power to make absurd edits like cropping my head and pasting it on an Iron Man outfit, lol. When I eventually moved on to using Photoshop, the edits only got even more ridiculous as I remember making one image of me with wings and a fireball in my hand 😂. Those served as the foundational years for me, and I’d later go on to work as a full-time graphics designer for a small tech firm in 2019. I did the job for 2 months and then realized that I did not want to be a graphics designer, so I quit. + +While I was still figuring out what I’d do with my life, I came across the term “UI/Ux Design”. I started reading about it and realized I actually loved this sort of design, and so I gave it a try and here we are 4 years strong. I currently work as the Founding Product Designer at Plumter Inc. Additionally, I also regularly dabble into Creative Web Design/Animation, and share tutorials showcasing my creative process on my [YouTube Channel](https://www.youtube.com/@EmishoVictor). + +![Emisho Victor](/images/creators/emisho/card.png) + +## Contributing Design to Open source +I found my way to open source when a friend shared a tweet by AceKYD with me, the tweet was a call for designers interested in working on the design for an open source curation platform. At that time, I was unemployed, bored and in need of a fresh challenge, so I took it up. + +Working on Made In Nigeria was my first time working or contributing to anything closely related to open source. I saw this as an opportunity at to test my metal against that of other designers while also hoping to learn a thing or two from the work of the finalists. Unfortunately, all that did not eventually happen because I ended up being the finalist so that was kinda ironic. + +While working on this project, I had to think alot about how to best present the plethora of projects which would be featured on the site in a clean yet meaningful manner. I also considered ease of navigation, discoverabilty of projects and all that and let these influence my design decisions for the platform. + +This was quite the experience and I am always very open to working on more open source projects, so feel free to reach out anytime if you ever are looking for a designer to help out on one. I’m Emisho Victor everywhere on the internet. + +## Recommendations for other designers +As a general advice to designers out there, I think it's important to explore designing for other spaces other than the usual. Prioritize seeking opportunities for growth and personal development, and offer design help where you can and where the opportunity presents itself, e.g you could offer to help a developer with their portfolio. It’s an avenue for personal growth and development and also a way to sow a seed of goodwill. + +This next advice will sound generic, but enjoy the process and fall in love with your craft. It’s what will keep you going on the very hard days. + +___ +Connect with Emisho on [Twitter](https://twitter.com/Emishonowayi) \ No newline at end of file diff --git a/app/creators/articles/meet-the-devs.mdx b/app/creators/articles/meet-the-devs.mdx deleted file mode 100644 index d71182fc..00000000 --- a/app/creators/articles/meet-the-devs.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Meet the devs: An interview with Matthew Ogunbiade." -excerpt: "Risus hac integer tempor elementum ultricies maecenas lectus. Iaculis urna sit felis, feugiat purus. Tincidunt netus blandit euismod eu. Faucibus" -publishDate: "2024-01-20" -coverImage: "/images/matthew.png" ---- - -### Heloo mdx blog of Made In Nigeria Devs diff --git a/app/creators/articles/omolara-adejuwon.mdx b/app/creators/articles/omolara-adejuwon.mdx new file mode 100644 index 00000000..739963df --- /dev/null +++ b/app/creators/articles/omolara-adejuwon.mdx @@ -0,0 +1,49 @@ +--- +title: "Building and sharing in Open Source: Omolara Adejuwon" +excerpt: "Inspired by how open source has created some of the most useful tools in the industry, Shedrack wants to do his best to carry on the culture." +publishDate: "2024-03-02" +coverImage: "/images/creators/omolara/omolara.png" +--- + +Hi, my name is Omolara Adejuwon. I am an Android engineer currently based in Canada. My coding journey started years ago the night my dad bought a personal desktop computer. I remember installing software like Mavis Beacon that teaches how to type, and games like Solitaire, Spyder and some other nostalgic PC software at the time. I did a lot of things with the PC, and I became curious as to exactly how they work. + +This curiosity was something I later explored while waiting for admission into the university. I went out to learn how to repair and diagnose computers. This experience was way off software development but It taught me a great deal about how the computer works. The motherboards, graphic cards, network cards, cables, and Wi-Fi; we had a field day with these topics. But everything changed when I got into university and in my second year at OAU, we got introduced to FORTRAN. + +## A career in tech? + +FORTRAN was super abstract. It damped my energy for programming as I wasn’t getting anything from the classes and the concepts seemed to fly over my head. After that particular semester in 200 Level, I got in contact with my classmates and with their help, I finally knew what the deal with FORTRAN was. Then things started changing, I picked up JAVA and quickly grew to other languages - learning and scaling like it was nothing. This was my origin story. + +> I did a lot of things with the PC, and I became curious as to exactly how they work. + +Think about what the internet looks like now and what it looked like 10 years ago. There is a huge gap in the quality of the tech we use today and the internet in comparison. I had to overcome challenges like access to the internet, power and even the status quo. Software engineering wasn’t the cool thing 10 years ago and my parents did not see the way this was going to work. Oil & Gas was where it was happening but for me, it wasn’t. + +I got an offer from Total in 2013 for an internship position, went in the first day and never came back. I remember getting a call from the HR person asking why I was absent that day. I just didn’t see myself fitting into that space. Eventually, my parent trusted my decision to pursue software engineering fully and I think it turned out well. + +## Building, sharing, and open source. + +Open Source wasn’t a thing I came into with intention. Everything started with the passion for sharing. It was just me working on projects over the weekend, pushing it out for people to see and asking for feedback. Sharing it also on Twitter maybe it might help somebody. And because I was also a consumer of lots of projects and popular libraries then, it was natural to just share. My goal was not to contribute to open source, I just wanted to share what I was building and that was exactly what I did with SlackWord. + +![Omolara](/images/creators/omolara/larikraun.jpg) + +SlackWord was a fancy app I built to help me get the meaning of words my colleagues used during conversations. Slack was just getting popular at the time and it allowed developers to build bots on top of its service to extend its features. So, I was like, there is a dictionary API, there was Slack, Let me spend a few hours hacking something together and see what I can come up with. After testing with my colleagues, I shared it with more people outside work and the response was satisfying. + +> My goal was not to contribute to open source, I just wanted to share what I was building. + +Open source generally has just made me more of the engineer I am today. The fact that I can easily open people's projects, see what they are building and how they structure their projects has been a big help in improving my skills. It has made my journey easy and my growth easy. It takes a bit of discipline and boldness, to be honest. But once you can break the initial limitation and start sharing, it starts getting good from there. + + + +## Advice to Software Developers + +I'd advise other software developers to keep contributing to open source. It doesn't have to be you writing code, sometimes it might just be you maintaining the project, opening pull requests, or even buying a coffee for the author or maintainer of the library or open source project that is helping your life. + +It can be as simple as that. It helps them focus because, to be honest, many people are not being paid for doing what they are doing. It goes a long way to say - I see you, thank you for building this. This is my token, you know, so you can either be monetary or even if you decide, open a PR to that project and contribute updates to it. + +## Conclusion + +Open source is here to stay. It's not going anywhere. And I just want to say thank you to everyone who's taking time out of their everyday life to build something that helps thousands of developers outside. I know that there are lots of communities and conferences happening these days around open source, so this points to the fact that it's here to stay. + +People are getting more and more involved in building projects and enriching the community. And that's one thing I'm very excited about, that we are not being selfish developers. So, yeah, thank you so much for having me. +___ + +Connect with Omolara on [Twitter](https://twitter.com/_larikraun) and [GitHub](https://github.com/larikraun) \ No newline at end of file diff --git a/app/creators/articles/paystack-plugin.mdx b/app/creators/articles/paystack-plugin.mdx deleted file mode 100644 index 4dafa431..00000000 --- a/app/creators/articles/paystack-plugin.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Announcing Paystack's plugin for Gravity Forms" -excerpt: "Maecenas proin arcu convallis fames. Ut ultrices in vel telluest. Metus nec tellus ut sed adipiscing est urna, sem ipsut il morem tut..." -publishDate: "2024-01-14" -coverImage: "/images/paystack-plugin.png" ---- - -Heloo mdx blog of Made In Nigeria Devs. Paystack Mafia - -### The Paystack Geng! diff --git a/app/creators/articles/prosper-otemuyiwa.mdx b/app/creators/articles/prosper-otemuyiwa.mdx new file mode 100644 index 00000000..df05e073 --- /dev/null +++ b/app/creators/articles/prosper-otemuyiwa.mdx @@ -0,0 +1,57 @@ +--- +title: "Building a career in open source: Prosper Otemuyiwa" +excerpt: "Prosper's drive to contribute to open source is paving the way for others in the community. He shares his journey and predictions for the future." +publishDate: "2024-03-03" +coverImage: "/images/creators/unicodeveloper/speaking.jpeg" +--- + +Hey guys! I'm Prosper Otemuyiwa - also known as [unicodeveloper](https://twitter.com/unicodeveloper). I'm a Technology Advocate involved in different aspects of the software ecosystem for over a decade. From speaking at conferences all over the world, to building software, training people to become software engineers, starting a software company, developer advocacy, and investing in software companies. + +I've been able to build open source packages that millions of people have used across the world. It has been a privilege to be able to dive into the different realms of software development. + +Currently, I'm a co-founder at [Eden](https://ouredenlife.com/) - a company I started in Lagos and Nairobi to help people live a better live. I'm also a Senior Developer advocate at Novu, part of the core team and helping people use Novu sdks with ease. + +## Getting into tech + +I got into tech because I couldn't gain admission into Unilag. I wanted to study medicine like most of us back then 😂, but didn't meet the cut off. I had to spend one year at home and used this period to do A-Level lessons. + +The following year, I applied instead for Computer Science. I had lost interest in medicine and although Computer science wasn't a heavy-favorite course that a lot of people were excited about studying like it is today, I was taught QBasic back in secondary school and I loved it. + +So I figured maybe Computer Science might be the one for me. However in my first year, I didn't understand programming - it was like a tough black box. + +I wanted to graduate with first class, that was the aim - but of course I didn't graduate with first class 😂 - so by going through some of the courses my seniors in school had done, I discovered that I needed to do a lot of programming. So during my 100 level holiday, I went to New Horizons - it used to be an ICT school for people to learn programming and networking - I learnt Java, I understood it and I was wowed. + +I came back to school they taught us Java and it was even cooler.From there I started PHP, JavaScript and that was the beginning of a beautiful story. + +## Building a career in open source + +I discovered open source in 2015 while working at Andela. I was a technical trainer - teaching people to code, taking them from zero to hero. Then, I discovered Laravel. I decided to take a peek at the source code and tried submitting a PR. Due to slow response in getting my PR merged, I decided to start creating Laravel packages. + +> Open source has put me on a global platform, allowing me connect with devs around the world and opened doors for me +> +> \- Prosper Otemuyiwa + +It was quite difficult finding projects to contribute to in the beginning so I started doing my own stuff, people were contributing and that gave me enough confidence to go to other projects to contribute. + +In 2016, I worked on Laravel Paystack, I wrote about it and put it on Twitter. The impressions were great and usage of the package blew up after that. As Paystack added new functionalities, people started sending in new PRs to the repo, creating issues and asking questions. Soon, people started sending me emails to help them with integrations. + +Another interesting project was the Laravel hackathon starter I built. It blew up in even greater proportion than the Paystack package. I remembered trending on GitHub for over a week. + +![Prosper speaking at a conference](/images/creators/unicodeveloper/prosper-1.jpeg) + +## Contributing to open source in developing countries + +A big issue I've noticed with open source, especially in developing countries like Nigeria is trying to change the perspective of people so they can contribute or use a project. Access to stable electricity is another possible big issue. + +To get started with contributing, you can start with SDKs. Look for a service that has an API, that has no SDK. There are companies with APIs without sdks, go ahead and create sdks in various languages that you use and people will thank you for it. + +A major drive for contributing to open source is moving from the consumption mindset to the creator mindset. People have paved the way forward for me, how do I replicate it for others coming too? That has been my drive. That's my contribution to the community. Making life easier by creating. Never stop learning and keep standing on the shoulders of giants. You don't have to start everything from scratch. + +A key takeaway for any developer reading this: read many things, get your hands dirty. Over the course of a decade, I've been writing, building open source, building close source, building communities, speaking, working on new things. Explore! That's the word. Try out many things, some will stick, some will be lessons to get better. Also, contribute to open source, be consistent with it, it will take you to places you can never imagine. + +## A couple predictions for the future + +I am currently keeping tabs on advancement in the field of AI. I remember my talk in Nairobi in 2023 about "AI for the rest of us". I foresee lots of companies will be built the open source way. We're now seeing companies started from open source projects and able to monetize a premium version off it. Communities will shift from just physical spaces to more virtual meetups. I also think we're going to be able to connect softwares to the human neural system very soon. APIs for the human body 😅. + +___ +Connect with Prosper on [Twitter](https://twitter.com/unicodeveloper) and [GitHub](https://github.com/unicodeveloper) \ No newline at end of file diff --git a/app/creators/articles/shedrack-akintayo.mdx b/app/creators/articles/shedrack-akintayo.mdx new file mode 100644 index 00000000..50544df9 --- /dev/null +++ b/app/creators/articles/shedrack-akintayo.mdx @@ -0,0 +1,27 @@ +--- +title: "Growing with open source: Shedrack Akintayo" +excerpt: "Inspired by how open source has created some of the most useful tools in the industry, Shedrack wants to do his best to carry on the culture." +publishDate: "2024-03-01" +coverImage: "/images/creators/shedrack/featured.jpg" +--- + +Hello! My name is Shedrack Akintayo - A Devops Engineer and Developer Advocate. I grew up with 3 siblings in a small town in the northern part of Nigeria, I really enjoyed it there and how close knit the community there was. Everybody wanted to either be a musician or a footballer at the time while I was growing up, but I found software development interesting because I had always fancied computers and when my dad got me a laptop that changed everything. + +Currently, I work as a Community Manager for eBPF and Cilium at Isovalent. On the side, I run a non-profit called DevRel Community Africa. The community is meant to help foster and grow the presence of developer relations in Africa. + +## My journey into open source +I've been hearing about open source since the start of my career, thanks to the folks in the tech ecosystem in Nigeria talking about it. That propelled me to check out projects I could contribute to. There was a funny moment that I still laugh at every time I remember - I opened an issue in one of the Sugar Labs repos and said their design wasn’t great and I’ll send a PR with an update. I was met with a very strict response because it didn’t make sense to do that but I was still navigating the open source space as a first time contributor so I was naive. + +A major challenge I faced was confidence. I didn’t think I was qualified enough or know enough to contribute to open source but I realized that it didn’t matter because the highest thing that can happen is your PR not getting accepted - nothing else! It doesn’t take away anything from me. If it gets rejected, we go again! + +I currently maintain the goignore project. I was learning golang and wanted to try out my hands at solidifying my knowledge. I noticed that i had to always manually create a .gitignore file for every single time I created a new project, so I decided to automate this process with goignore and thought it would make sense to also open source the project so that other people learning golang can also contribute. In addition, I'm a contributor to Cilium also. + +My advice to software developers is that at every stage in your career, you should contribute to open source. It helps increase your skill level, allow you collaborate with people from various aspects of life and most importantly, it enables you to build things that might be useful to people. Just start doing what you want to do even though you have no plan. Doers run the world and you should make it a habit. Nothing is more satisfying than seeing people solve problems with a tool you built/contributed to it’s development. + +> Open source has created some of the most useful tools in the industry, we should do the very least to carry on the culture. + +Open source has played a huge impact in my immediate community. I’ve seen people get incredible opportunities in their careers because of their contributions to open source. For the world, Linux is one of the most important piece of software in the history of computing. The project is open source and we’ve seen a lot of important aspects of the world today that is powered by Linux. This alone attest to the great impact of open source in the world. + +I’m excited about the cloud native space recently, I’m trying to understand how the infrastructure that powers a good number of applications work. +___ +Connect with Shedrack on [Twitter](https://twitter.com/coder_blvck) and [GitHub](https://github.com/hacktivist123) \ No newline at end of file diff --git a/app/creators/articles/women-in-oss.mdx b/app/creators/articles/women-in-oss.mdx deleted file mode 100644 index 34a91d15..00000000 --- a/app/creators/articles/women-in-oss.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Women In Open Source: Interview with Bolanle Osunbiyi" -excerpt: "In Part Three of this series, Monica explains how to build a second brain of knowledge you’ll use over and over." -publishDate: "2024-01-17" -coverImage: "/images/osswomen.jpeg" ---- - -Women and their doings! Its plenty! diff --git a/app/creators/page.tsx b/app/creators/page.tsx index eebc729a..7309ab85 100644 --- a/app/creators/page.tsx +++ b/app/creators/page.tsx @@ -9,8 +9,9 @@ export const metadata: Metadata = { "Stories about the creators within the Nigerian Open Source community who make this project possible", openGraph: { type: "website", - siteName: "madeinnigeria.dev", - images: "https://madeinnigeria.dev/images/", // we'd need an image to use as a preview when this page is shared on the internet. + url: "https://madeinnigeria.dev/creators", + siteName: "Made in Nigeria", + images: "https://madeinnigeria.dev/images/min-cover.png", description: "Stories about the creators within the Nigerian Open Source community who make this project possible", }, diff --git a/app/layout.tsx b/app/layout.tsx index 23b3c7cb..68dbeb95 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -16,6 +16,13 @@ export const metadata: Metadata = { title: "Made in Nigeria", description: "A curation of awesome open source tools built by Nigerians for the world.", + openGraph: { + type: "website", + siteName: "Made in Nigeria", + images: "https://madeinnigeria.dev/images/min-cover.png", + description: + "A curation of awesome open source tools built by Nigerians for the world.", + }, }; export default async function RootLayout({ diff --git a/public/images/creators/emisho/card.png b/public/images/creators/emisho/card.png new file mode 100644 index 00000000..3711092a Binary files /dev/null and b/public/images/creators/emisho/card.png differ diff --git a/public/images/creators/emisho/featured.jpg b/public/images/creators/emisho/featured.jpg new file mode 100644 index 00000000..9ffb416e Binary files /dev/null and b/public/images/creators/emisho/featured.jpg differ diff --git a/public/images/creators/omolara/larikraun.jpg b/public/images/creators/omolara/larikraun.jpg new file mode 100644 index 00000000..da374020 Binary files /dev/null and b/public/images/creators/omolara/larikraun.jpg differ diff --git a/public/images/creators/omolara/omolara.png b/public/images/creators/omolara/omolara.png new file mode 100644 index 00000000..ae185c03 Binary files /dev/null and b/public/images/creators/omolara/omolara.png differ diff --git a/public/images/creators/shedrack/featured.jpg b/public/images/creators/shedrack/featured.jpg new file mode 100644 index 00000000..637bb95e Binary files /dev/null and b/public/images/creators/shedrack/featured.jpg differ diff --git a/public/images/creators/unicodeveloper/prosper-1.jpeg b/public/images/creators/unicodeveloper/prosper-1.jpeg new file mode 100644 index 00000000..67d38d03 Binary files /dev/null and b/public/images/creators/unicodeveloper/prosper-1.jpeg differ diff --git a/public/images/creators/unicodeveloper/speaking.jpeg b/public/images/creators/unicodeveloper/speaking.jpeg new file mode 100644 index 00000000..073ded47 Binary files /dev/null and b/public/images/creators/unicodeveloper/speaking.jpeg differ diff --git a/public/images/min-cover.png b/public/images/min-cover.png new file mode 100644 index 00000000..2d283a4c Binary files /dev/null and b/public/images/min-cover.png differ