├── .github ├── pull_request_template.md └── workflows │ ├── data-validate.yml │ └── populate-readme.yml ├── .gitignore ├── .node-version ├── .npmrc ├── contribution-guide.md ├── netlify.toml ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public └── default.png ├── readme.md ├── remix.config.js ├── scripts ├── data-validate.js ├── flags.js ├── masterData.js ├── multiple-emojis.mjs ├── populate-readme.js ├── readme-template.md └── utils.js ├── server.ts ├── src ├── components │ ├── BackToTop.js │ ├── FavIcon.js │ ├── Person.js │ ├── Topics.js │ ├── header.js │ └── layout.js ├── data.js ├── entry.client.tsx ├── entry.server.tsx ├── fonts │ ├── fira_mono-regular-webfont.woff │ ├── fira_mono-regular-webfont.woff2 │ ├── fira_mono-regular_italic-webfont.woff │ └── fira_mono-regular_italic-webfont.woff2 ├── http │ └── get-index │ │ ├── index.js │ │ ├── package-lock.json │ │ └── package.json ├── images │ ├── android.png │ ├── apple.svg │ ├── flip-phone.png │ ├── gatsby-astronaut.png │ ├── gatsby-icon.png │ ├── iphone.png │ ├── linux.png │ ├── twitter-card.png │ ├── windows.svg │ └── windowsphone.png ├── pages │ └── 404.js ├── root.tsx ├── routes │ ├── index.tsx │ └── like │ │ └── $tag.tsx ├── styles.css └── util │ ├── icons.js │ └── stats.ts └── tsconfig.json /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 37 | -------------------------------------------------------------------------------- /.github/workflows/data-validate.yml: -------------------------------------------------------------------------------- 1 | name: Validate data.js 2 | 3 | on: 4 | pull_request: 5 | paths: src/data.js 6 | 7 | env: 8 | CI: true 9 | 10 | jobs: 11 | build: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v1 15 | - uses: actions/setup-node@v1 16 | with: 17 | node-version: 16.x 18 | 19 | - name: Cache/Restore node modules 20 | uses: actions/cache@v1 21 | with: 22 | path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS 23 | key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }} 24 | 25 | - name: Install Dependencies 26 | run: npm install 27 | 28 | - name: Validate data.js 29 | run: node ./scripts/data-validate.js 30 | env: 31 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 32 | -------------------------------------------------------------------------------- /.github/workflows/populate-readme.yml: -------------------------------------------------------------------------------- 1 | name: Populate readme.md from master and lint src/data.js 2 | 3 | on: 4 | push: 5 | branches: master 6 | paths: 7 | - src/data.js 8 | - scripts/readme-template.md 9 | 10 | env: 11 | CI: true 12 | 13 | jobs: 14 | build: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - uses: actions/checkout@v1 18 | - uses: actions/setup-node@v1 19 | with: 20 | node-version: 16.x 21 | 22 | - name: Cache/Restore node modules 23 | uses: actions/cache@v1 24 | with: 25 | path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS 26 | key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }} 27 | 28 | - name: Install Dependencies 29 | run: npm install 30 | 31 | - name: Lint src/data.js 32 | run: | 33 | npx eslint --fix src/data.js 34 | git add src/data.js 35 | 36 | - name: Populate readme.md from master 37 | run: | 38 | node ./scripts/populate-readme.js 39 | mv generated-readme.md readme.md 40 | git add readme.md 41 | git config --local user.email "action@github.com" 42 | git config --local user.name "GitHub Action" 43 | # commit only if any changes 44 | if [ ! -z "$(git status --porcelain)" ]; then 45 | git commit -m "chore: generate \`readme.md\`, lint \`src/data.js\`" 46 | fi 47 | 48 | - name: Push changes 49 | uses: ad-m/github-push-action@master 50 | with: 51 | github_token: ${{ secrets.GITHUB_TOKEN }} 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | 9 | # Runtime data 10 | pids 11 | *.pid 12 | *.seed 13 | *.pid.lock 14 | 15 | # Directory for instrumented libs generated by jscoverage/JSCover 16 | lib-cov 17 | 18 | # Coverage directory used by tools like istanbul 19 | coverage 20 | 21 | # nyc test coverage 22 | .nyc_output 23 | 24 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 25 | .grunt 26 | 27 | # Bower dependency directory (https://bower.io/) 28 | bower_components 29 | 30 | # node-waf configuration 31 | .lock-wscript 32 | 33 | # Compiled binary addons (http://nodejs.org/api/addons.html) 34 | build/Release 35 | 36 | # Dependency directories 37 | node_modules/ 38 | jspm_packages/ 39 | 40 | # Typescript v1 declaration files 41 | typings/ 42 | 43 | # Optional npm cache directory 44 | .npm 45 | 46 | # Optional eslint cache 47 | .eslintcache 48 | 49 | # Optional REPL history 50 | .node_repl_history 51 | 52 | # Output of 'npm pack' 53 | *.tgz 54 | 55 | # dotenv environment variable files 56 | .env* 57 | 58 | .cache/ 59 | 60 | # Mac files 61 | .DS_Store 62 | 63 | # VS Code workspace settings 64 | .vscode/ 65 | 66 | # vim workspace settings 67 | .vim/ 68 | 69 | # Yarn 70 | yarn-error.log 71 | .pnp/ 72 | .pnp.js 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | haters/ 77 | 78 | .idea/ 79 | .history/ 80 | 81 | # Local Netlify folder 82 | .netlify 83 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 16.13.1 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | fund=false 2 | audit=false 3 | legacy-peer-deps=true 4 | shamefully-hoist=true 5 | -------------------------------------------------------------------------------- /contribution-guide.md: -------------------------------------------------------------------------------- 1 | # Contributions to uses.dev 2 | 3 | ## Steps 4 | 1) Fork this repo 5 | 2) Add yourself to `/src/data.js` 6 | 3) When requesting a PR please read carefully. 7 | 4) Be nice to maintainers 8 | 9 | ## PR Guidelines 10 | - Should be updated with the latest main or master branch. 11 | - PR Title should be the name or handle of the person being added or update being made. 12 | - A bad PR title `update data.js` 13 | - A good PR Title `Adding Blake Campbell` 14 | 15 | ## What's a Uses Page? 16 | 17 | A /uses page lists a developer's setup, gear, software, and configs (what they *use*). It's a great reference for those looking to add to their library of tools or reconfigure ones they already use. 18 | 19 | **The URL MUST follow the format of use|uses|using|setup|environment at the end.** 20 | 21 | ### What Should I Include? 22 | 23 | Include the hardware you use, such as your computer and other related equipment. Include your preferred terminal, text editors, tools, frameworks, and other related software you use. If you can, include configurations for software (such as fonts and themes). The more you have on your /uses page, the more interesting it'll be to those who view it - just keep it on-topic! 24 | 25 | ## Adding Yourself 26 | 27 | * Ensure you are linking to a /uses page, **not just your website** 28 | * Ensure your data is formatted like other entries 29 | * Do not add yourself to the end of the array (add yourself somewhere random instead) 30 | * Ensure this PR has a title in the following format 31 | * ✅ Add Your Name 32 | * ✅ Add @twitterusername 33 | * ❌ Add myself 34 | * ❌ Adding myself! 35 | * ❌ Add Your Name @twitter @github 36 | 37 | ## Code Modifications 38 | 39 | * Ensure the code submitted is formatted similarly to existing code 40 | * Ensure variable, method, function, and component names are clear and concise 41 | 42 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "remix build" 3 | publish = "public" 4 | 5 | [dev] 6 | command = "remix watch" 7 | port = 3000 8 | autoLaunch = false 9 | 10 | [[headers]] 11 | for = "/build/*" 12 | [headers.values] 13 | "Cache-Control" = "public, max-age=31536000, s-maxage=31536000" 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uses", 3 | "description": "What do you uses", 4 | "version": "7.7.7", 5 | "author": "Wes Bos", 6 | "eslintConfig": { 7 | "extends": [ 8 | "wesbos/typescript" 9 | ] 10 | }, 11 | "engines": { 12 | "node": ">= 16" 13 | }, 14 | "dependencies": { 15 | "@actions/core": "^1.10.0", 16 | "@actions/exec": "^1.1.1", 17 | "@actions/github": "^5.1.1", 18 | "@babel/core": "^7.21.0", 19 | "@babel/preset-react": "^7.18.6", 20 | "@netlify/edge-functions": "^2.0.0", 21 | "@netlify/functions": "^1.4.0", 22 | "@netlify/remix-edge-adapter": "^1.0.0", 23 | "@remix-run/dev": "^1.13.0", 24 | "@remix-run/netlify": "^1.13.0", 25 | "@remix-run/node": "^1.13.0", 26 | "@remix-run/react": "^1.13.0", 27 | "@remix-run/serve": "^1.13.0", 28 | "@remix-run/server-runtime": "^1.13.0", 29 | "@types/node": "^18.14.0", 30 | "@types/react": "^18.0.28", 31 | "@types/react-dom": "^18.0.11", 32 | "country-emoji": "^1.5.6", 33 | "isbot": "^3.6.6", 34 | "joi": "^17.8.1", 35 | "netlify-cli": "^13.0.0", 36 | "normalize.css": "^8.0.1", 37 | "prop-types": "^15.8.1", 38 | "react": "^18.2.0", 39 | "react-dom": "^18.2.0", 40 | "react-helmet": "^6.1.0", 41 | "react-is": "^18.2.0", 42 | "styled-components": "5.3.6", 43 | "typescript": "^4.9.5" 44 | }, 45 | "scripts": { 46 | "build": "netlify build", 47 | "dev": "NODE_ENV=development netlify dev" 48 | }, 49 | "devDependencies": { 50 | "@types/styled-components": "^5.1.26", 51 | "eslint": "^8.34.0", 52 | "eslint-config-wesbos": "^3.2.3", 53 | "husky": "^8.0.3", 54 | "lint-staged": "^13.1.2", 55 | "postcss": "^8.4.21", 56 | "postcss-nesting": "^11.2.1", 57 | "prettier": "^2.8.4" 58 | }, 59 | "lint-staged": { 60 | "src/data.js": [ 61 | "eslint --fix", 62 | "git add" 63 | ] 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | const postcssNesting = require("postcss-nesting"); 2 | 3 | module.exports = { 4 | plugins: [postcssNesting()], 5 | }; 6 | -------------------------------------------------------------------------------- /public/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/public/default.png -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # → Visit [uses.tech](https://uses.tech) for a good time 2 | 3 | ## Please read [Contribution Guide](https://github.com/wesbos/awesome-uses/blob/master/contribution-guide.md) before submitting a PR. 4 | A list of `/uses` pages detailing developer setups, gear, software and configs. 5 | 6 | Add your own `/uses` page in [data.js](https://github.com/wesbos/awesome-uses/blob/master/src/data.js). 7 | 8 | This readme is auto-generated from the data.js file, so please don't PR this file. 9 | 10 | ``` 11 | ▄████████ ▄█ █▄ ▄████████ ▄████████ ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ 12 | ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ 13 | ███ ███ ███ ███ ███ █▀ ███ █▀ ███ ███ ███ ███ ███ ███ █▀ 14 | ███ ███ ███ ███ ▄███▄▄▄ ███ ███ ███ ███ ███ ███ ▄███▄▄▄ 15 | ▀███████████ ███ ███ ▀▀███▀▀▀ ▀███████████ ███ ███ ███ ███ ███ ▀▀███▀▀▀ 16 | ███ ███ ███ ███ ███ █▄ ███ ███ ███ ███ ███ ███ ███ █▄ 17 | ███ ███ ███ ▄█▄ ███ ███ ███ ▄█ ███ ███ ███ ███ ███ ███ ███ ███ 18 | ███ █▀ ▀███▀███▀ ██████████ ▄████████▀ ▀██████▀ ▀█ ███ █▀ ██████████ 19 | 20 | ███ █▄ ▄████████ ▄████████ ▄████████ 21 | ███ ███ ███ ███ ███ ███ ███ ███ 22 | ███ ███ ███ █▀ ███ █▀ ███ █▀ 23 | ███ ███ ███ ▄███▄▄▄ ███ 24 | ███ ███ ▀███████████ ▀▀███▀▀▀ ▀███████████ 25 | ███ ███ ███ ███ █▄ ███ 26 | ███ ███ ▄█ ███ ███ ███ ▄█ ███ 27 | ████████▀ ▄████████▀ ██████████ ▄████████▀ 28 | 29 | ``` 30 | 31 | # Awesome Uses ![Awesome][awesome-badge] 32 | 33 | * [James Auble](https://jamesauble.com/uses) — Full Stack Developer 34 | * [Mariusz Szubryt](https://szubryt.net/uses) — Frontend-oriented Product Engineer 35 | * [Colin Ramsay](https://colinramsay.co.uk/uses) — Director and software developer at Go Tripod in Cornwall 36 | * [Dennis Sauvé](https://gist.github.com/dengsauve/e344ef7d8bd0d194b602e8b2d4490f98) — DevOps Engineer w/Dev roots in the Pacific North West! 37 | * [Jana](https://janasundar.dev/uses) — Full Stack Developer & Javascript Enthusiast 38 | * [Daniel Flanagan](https://lyte.dev/uses) — Developer, platform engineer, and homelab administrator 39 | * [Akif Al Hakim](https://akif.my.id/uses) — Frontend Developer. 40 | * [Jonas Hietala](https://www.jonashietala.se/uses/) — Writer, developer and wannabe code monkey. 41 | * [Sho Koike](https://putcut.net/uses) — Software Engineer, Gamer, Podcaster 42 | * [Michal Mazur](https://cybershu.eu/uses.html) — Backend Software Engineer, Blogger, Digital Nomad, Technical Generalist 43 | * [Khafizi Noh](https://mkfizi.dev/uses) — Full-stack web developer based in Cyberjaya, Malaysia. 44 | * [Theodoros Ploumis](https://www.theodorosploumis.com/en/uses) — Full-stack Drupal developer and open-source evangelist based on Greece 45 | * [Dietrich Wambach](https://dietrichw.gitlab.io/blogfolio/uses) — Full Stack, Embedded, SRE, Python, Linux, Runner, Yoyoer 46 | * [Angel Cruz](https://angelcruz.dev/uses) — SR Backend (PHP / Laravel / WordPress) developer. 47 | * [Mina Markham](https://mina.codes/uses) — Engineer, designer, and design systems enthusiast. 48 | * [Jae Toole](https://jaetoole.me/uses) — Laravel developer, AWS enthusiast, Kubernetes lover 49 | * [Saiful Alam Rakib](https://msar.me/uses) — Laravel and React developer and Technology enthusiast 50 | * [Brandon Lim](https://justbrandonlim.com/uses) — Software Engineer based in Singapore 51 | * [Tim Bachmann](https://tiim.ch/pages/uses) — Software Engineer from Switzerland, currently working on one of my way too many side projects. 52 | * [Neil Gupta](https://www.neil.gg/uses) — Designed in California. Assembled in Chicago. I like to build things. 53 | * [Jose Munoz](https://www.josemunozmatos.com/uses) — Product Designer from Puerto Rico 54 | * [Ibrahim Nurul Huda](https://www.sarbeh.com/uses) — creates visual narratives on web development, design, and Sharia studies. 55 | * [uncenter](https://www.uncenter.dev/uses) — Open source software developer, geography nerd, and high school student. 56 | * [Ignatius Bagus](https://mauss.dev/uses) — Software Alchemist 57 | * [Bob Reus](https://bobre.us/uses) — DevOps Engineer, eBook producer, Freediver, Buddhist 58 | * [Donavon West](https://donavon.com/uses) — Spread Love {...❤️} 59 | * [Justin Mahar](https://justinmahar.com/uses/) — Extremely bald Software Architect & Content Creator 60 | * [Syofyan Zuhad](https://syofyan-profile.vercel.app/uses/) — Full Stack Software Engineer 🇮🇩 61 | * [Zach Patrick](https://zachpatrick.com/uses) — JavaScript and PHP developer 62 | * [Zilvinas Kucinskas](https://www.ziku.dev/uses/) — Full Stack Ruby on Rails Engineer and Entrepreneur 63 | * [Carlos Alexandro Becker](https://carlosbecker.com/uses) — A site reliability engineer, from Brazil 64 | * [Andy Carolan](https://www.andycarolan.com/uses/) — Illustrator, Graphic Designer, No Code, Remote 65 | * [Alex O'Reilly](https://alekzandriia.com/uses/) — Scientist turned Web developer from the Great White North. 66 | * [Martin Bean](https://martinbean.dev/uses) — Web developer and software engineer. 67 | * [Dominic Ruggiero](https://userexe.me/uses) — Student and idiot 68 | * [Lucas Mancini](https://lucasmancini.au/uses) — Software Development Engineer, specializing in Frontend 69 | * [Lars Magnus Klavenes](https://larsmagnus.co/uses) — Frontend engineer, designer and manager supercharging the web 70 | * [Maicol Santos](https://maicolsantos.github.io/#/uses) — Front End Developer. 71 | * [Carretta Riccardo](https://carrettariccardo.dev/uses/) — Software Developer & UX/UI Designer 72 | * [Antonio Sarcevic](https://sarcevic.dev/uses) — excited by ui development 73 | * [starter.place](https://www.starter.place/uses/) — Starter repos 74 | * [Josh Medeski](https://www.joshmedeski.com/uses/) — Full-stack developer and content creator. 75 | * [Simon Rogers](https://midnite.uk/uses) — Software Engineer 76 | * [Allan Im](https://allanim.com/uses) — Software Engineer 77 | * [Rev](https://cinnamoroll.me/uses) — A Software developer and artist based in Europe. 78 | * [Vijay Goswmai](https://vijaygoswami.in/uses) — Full Stack Developer from Agra, Uttar Pradesh 79 | * [Edimar Calebe Castanho](https://blog.calebe.dev.br/uses.html) — A passionate embedded systems developer from Brazil 80 | * [Ihtisham Khan](https://iihtisham.com/uses.html) — Full-Stack Web Developer | Tech Enthusiast 81 | * [Robb Knight](https://rknight.me/uses) — Developer, Podcaster, Lego Builder, Cat Owner 82 | * [Riley](https://riley-uses.netlify.app/) — Software Developer 83 | * [Ryan Freeman](https://ryanfreeman.dev/uses) — Full-stack software engineer from Dublin, Ireland 84 | * [Ivan Malopinsky](https://imsky.co/uses) — Entrepreneur, engineer 85 | * [Murendeni Mukwevho](https://mukwevhom.xyz/uses) — Software Developer breaking the bias in South Africa 86 | * [Márk Mihályi](https://markmihalyi.com/uses) — Full-Stack Engineer from Hungary 87 | * [Vít Baisa](https://vit.baisa.cz/uses) — Software engineer who likes removing code 88 | * [Marko Bajlovic](https://marko.tech/uses) — Multidisciplinary creative and developer; forever learning. 89 | * [Michael Amore](https://codewithlove.blog/uses) — Technologist, software creator, wannabe hacker. Father. Dog Lover. 90 | * [Seirdy](https://seirdy.one/about/uses/) — I write about and develop software to promote user autonomy. 91 | * [Tim Smith](https://timsmith.tech/uses) — Full-Stack Web Developer, Tech Enthusiast, creator, husband. 92 | * [Ruslan Osipov](https://ruslan.rocks/uses) — Full Stack Developer, SEO Enthusiast, Entrepreneur, work @ REA Group 93 | * [H. Kamran](https://hkamran.com/uses) — Hello world! I'm a developer who writes articles on things that interest me or I find useful, and takes photos! 94 | * [Catalin Ciubotaru](https://catalincodes.com/uses) — Frontend Developer, writes stuff, sometimes makes sense. 95 | * [Hector Saldaña](https://hectorsaldes.netlify.app/#uses) — I am a software development student at university. My favorites developments are when I am looking for a solution that help people 96 | * [Daniel Roe](https://roe.dev/uses) — Nuxt architect and open source lover 97 | * [Alberto Ventafridda](https://halb.it/uses/) — Developer, hacker. Passionate about cyber security, web development and distributed systems. 98 | * [Pujan Srivastava](https://www.pujan.net/top/uses) — Solutions Architect, I program for cloud applications 99 | * [Ahmed Adebisi](https://adebisiahmed.dev/uses) — Software Engineer, Code is a tool. 100 | * [Anh Hoang Nguyen](https://hoanganh.dev/uses/) — Full-stack Developer, DevOps, SysAdmin 101 | * [Vikash Patel](https://vk4s.github.io/uses/) — Engineer, Programmer, Web Developer 102 | * [Devika Bhapkar](https://github.com/devikabhapkar/uses) — Student,Content creator 103 | * [Shariq Raza Qadri](https://cosmicqbit.dev/uses) — DevOps & Cloud Engineer 104 | * [Stijn Elskens](https://www.stijnelskens.com/uses) — Frontend Web Developer based in Leuven, BE. 105 | * [Daine Mawer](https://www.dainemawer.com/uses) — Experienced Front-end Developer based in Cape Town, South Africa. 106 | * [Tobias Sjösten](https://www.seastone.io/uses/) — Jack of most software trades, master of a few 107 | * [Nick Reutlinger](https://nickreutlinger.de/uses) — Web Developer with Javascript and SvelteKit 108 | * [Simone Silvestroni](https://minutestomidnight.co.uk/uses) — Sound designer, web developer, bass player 109 | * [Gavin Pereira](https://gavinpereira.in/uses) — Graphic designer & frontend developer from Goa, India 110 | * [Tim Mouskhelichvili](https://timmousk.com/uses/) — Freelance Developer & Consultant from Montreal, Canada 111 | * [Jayden Garridan Bridges](https://foreverliketh.is/docs/assortments/uses/) — Teacher. Web Developer. 112 | * [Vladimir Vo](https://vldmr.website/uses) — Frontend developer with passion for great product design 113 | * [Joseph Shambrook](https://josephshambrook.dev/uses) — Front-end developer based in Edinburgh, UK 114 | * [Andy Cetnarskyj](https://www.just-andy.uk/uses) — Design Systems Designer from Edinburgh, UK 115 | * [Akash Rajpurohit](https://akashrajpurohit.com/uses) — Software Engineer 116 | * [Marko Kaartinen](https://markok.dev/uses) — Web developer / entrepreneur / geek from Kuopio Finland who makes pizza and burgers at freetime. Also some gaming and well of course personal projects. 117 | * [Bala Hantsi](https://github.com/bhantsi/uses) — Software developer, full stack developer (in training), lately focused on frontend. Enjoy traveling and gaming. 118 | * [Lasha Tatulashvili](https://lashatatu.dev/uses) — Frontend DEV from Tbilisi, Georgia 119 | * [Renan Moura](https://renanmf.com/uses) — Posts for anyone looking to go deeper into Python and find practical ways to apply it in the fields of Web Development, Data Science and Machine Learning 120 | * [Randy Daniel](https://randy.digital/uses) — (UI/UX Designer) + Developer 121 | * [David Vidmar](https://vidmar.net/uses) — Technology realist obsessed with digital challenges. IT manager, developer, software architect, technology evangelist and marketing manager. 122 | * [Lazar Miseljic](https://fuzzylogic.ltd/uses) — Front end, but doesn't mind taking a look round the back 123 | * [Marco Heine](https://marcoheine.com/uses/) — Web developer from southern germany who loves to make fast and accessible websites and write about it. 124 | * [Dennis Muensterer](https://dnnsmnstrr.github.io/uses) — Inherently lazy and striving to do less. I like making things that make things more effortless. 125 | * [Eduar Bastidas](https://mreduar.dev/uses/) — Full Stack Web Developer 126 | * [Albert Zhang](https://www.albertaz.com/uses) — Developer, Designer, Artist, Podcaster, Sports enthusiast. 127 | * [Bumhan "B" Yu](https://bald.design/uses) — "B" as in bald. Designer who writes code—with backgrounds in psychology and linguistics 128 | * [Yassine Bridi](https://yasbr.com/uses) — Developer, Designer, Creator 129 | * [Matt Burns](https://iammattburns.dev/uses) — Full Stack Developer, Lego Builder, Beer Drinker, UK 130 | * [Tom Gooden](https://tomgooden.net/uses) — Born at a very young age. Front-end developer - UX/UI designer. 🐙 131 | * [Marc-André Bombeck](https://bombeck.io/uses) — IT-Project-Manager, Network-Administrator from Germany 132 | * [Ben Lau](https://benlau.net/uses/) — Frontend web developer. From Melbourne, Australia. Now in Berlin, Germany. 133 | * [Nick East](https://www.nick-east.com/uses) — Front-end developer, UX/UI designer, Web Jedi 🧙‍♂️ 134 | * [Manuel Coiai](https://github.com/viralk/uses) — Creative front-end developer living in Pisa, Italy 135 | * [Tim Leland](https://timleland.com/uses) — Full-Stack developer and Blogger. 136 | * [Randall Wilk](https://randallwilk.dev/uses) — Full-Stack Laravel Developer. 137 | * [Reinhart Previano Koentjoro](https://reinhart1010.id/uses) — The first "IT superhero" in Indonesia who transformed to Shift this world. 138 | * [Melanie Kat](https://melkat.blog/p/uses) — Silly front-end engineer (she/her) 139 | * [Joshua Cerbito](https://www.cerbito.com/uses) — I write code, I train devs, and I play music. 140 | * [Dale Larroder](https://www.dalelarroder.com/uses) — Software Engineer, React, TypeScript and Mechanical Keyboards! 141 | * [Salma Alam-Naylor](https://whitep4nth3r.com/uses) — I write code for your entertainment. 142 | * [Bill Sullivan](https://billsullivan.name/uses/) — Engineering Manager, Senior Engineer, Novice Streamer, and Occasional Entrepreneur 143 | * [Amit Dhamu](https://amitd.co/uses) — Software Engineer, Formula 1 Addict, Tech Junkie, Hip-Hop Head 144 | * [Dominik Gallitzendörfer](https://nharox.com/uses) — Front‑end developer with a focus on UI/UX. Loves CSS and is addicted to Tetris. 145 | * [Andrei Hudovich](https://hudovich.dev/uses/) — Freelance Front-end Engineer, Web Enthusiast, Cat Lover. 146 | * [Andrej Gajdos](https://andrejgajdos.com/uses/) — Startup CTO | Tech Lead | Software Architect | Dev 147 | * [Emmanuel Gautier](https://www.emmanuelgautier.com/uses) — Solution Architect & Fullstack Developer living in France. Tech enthusiast and Data Lover. 148 | * [Pieter Boerboom](https://www.pieterboerboom.nl/uses/) — Front-end developer, blogger, tech enthusiast 149 | * [Alan Redzepagic](https://alanred.me/uses) — Front-end development, web native, tech enthusiast 150 | * [Vega Deftwing](https://opguides.info/posts/uses/) — Furry forging firmware from frustration 151 | * [Oscar Marion](https://www.oscarmarion.dev/uses) — French front-end engineer based in Brussels. 152 | * [Amr Diab](https://www.amrdiab.dev/uses) — Web Developer, open-source enthusiast, gamer, and lifelong learner. 153 | * [Thiago Avelino](https://avelino.run/uses) — 🧙‍♂️ Open Source Engineer at prestd, GitHub Star - 🏊‍♂️🚴‍♂️🏃‍♂️ Triathlete (IRONMAN distance) - 🌱 ᴘʟᴀɴᴛ-ʙᴀsᴇᴅ 154 | * [Samuel Wong](https://desktopofsamuel.com/uses) — Product Designer. Photographer. Traveler. 155 | * [Arisa Fukuzaki](https://github.com/schabibi1/uses) — DevRel Engineer, Front-end developer 156 | * [Dean Lofts](https://loftwah.github.io/uses) — Loftwah The Beatsmiff, Hip Hop Producer, Graphics, Socials, Video and Web 157 | * [Himank Barve](https://hbarve1.com/uses) — Full Stack JavaScript Developer, Open Source Enthusiast 158 | * [Matthew Tao](https://www.matthewtao.com/uses) — Computer Science student who loves CSS. Focuses on the little things that make a website delightful. 159 | * [William Chin](https://yourdigitalaid.com/uses/) — Web Developer, Product Manager, Digital Marketer, always trying to learn more. 160 | * [Marcin Dyguda](https://www.dyguda.com/uses/) — Head of Engineering, Entrepreneur-wannabe, product leader and team builder at heart 161 | * [Angélique Weger](https://angeliqueweger.com/uses) — engineering manager :: adjunct prof :: always learning 162 | * [Seagyn Davis](https://www.seagyndavis.com/uses) — Full stack human. Hobby runner. Mainly a husband and dad. 163 | * [Marc-Antoine Dion](https://marcantoinedion.com/uses) — Full Stack. Rookie cyclist. Part time blogger at @thewannabeceo. 164 | * [Simon Smale](https://github.com/SSmale/uses) — Full Stack Developer and beginner digital gardener 165 | * [Amolith](https://secluded.site/uses/) — Musician, developer, sysadmin, co-host of the Linux Lads, small business owner, and founder of not-for-profit NixNet 166 | * [Aleksey Razbakov](https://razbakov.com/uses/) — Indie Hacker. Web Developer. Salsa Dancer. 167 | * [Ayush Gupta](https://ayushgupta.tech/uses/) — React & React Native developer, passionate photographer, technical writer and occasionaly designer. 168 | * [Alvin Bryan](https://alvin.codes/uses) — Loves coding maps, graphics and games. 169 | * [Taisuke Mino](https://taisukemino.com/uses/) — Crypto Entrepreneur 170 | * [Mathias Borgmalm](https://www.mathiasborgmalm.dev/uses/) — Thinks CSS is underrated. 171 | * [Shawn D'silva](https://www.shawndsilva.com/uses) — Full Stack Web Developer, Designer and Embedded Systems enthusiast 172 | * [Sreetam Das](https://sreetamdas.com/uses) — Software Developer from India. 💜 React, TypeScript and Mechanical Keyboards! 173 | * [Maxim Villivald](https://villivald.com/uses) — Web Developer, IT Student 👨‍💻, Blogger & part time Tram Driver 🚃. 174 | * [Sven Luijten](https://svenluijten.com/uses) — Full stack developer for the web. 175 | * [Matt Holovach](https://www.coloradoseodesign.com/uses.php) — Loves SEO, improving coding skills and good food 176 | * [Bradley Shellnut](https://bradleyshellnut.com/uses) — Fullstack software engineer who loves learning new things. Also music 🎶, hiking ⛰️, and cocktails 🍸. 177 | * [Justin De Leon](https://jusdeleon.vercel.app/uses) — Coding, video games, and pizza 🍕 178 | * [Sascha Diercks](https://saschadiercks.de/uses/) — Building Solutions as Lead Frontend Developer • Designer & Maker of useful Things too • Into Design-Systems and Web-Performance 179 | * [Joshua Rose](https://jrgiant.tech/uses) — Loves Christ, loves family, loves programming, full stack dev 180 | * [Victor Pierre Alves](https://victorpierre.dev/uses) — Senior Software Engineer. I mostly code in Go these days. I live in Canada. 181 | * [Diego Costa](https://diegocosta.me/uses) — Engineering Manager and Full-stack software engineer 182 | * [Jeremiah Boby](https://jerbob.me/uses) — Python developer specialising in web tech 183 | * [Haryel Gillet](https://peaceful-leavitt-25b1d3.netlify.app/uses) — FullStack Developer focused on Backend 184 | * [Stefan Zweifel](https://stefanzweifel.dev/uses/) — Full Stack Developer trying to make the web a better place. Working mostly with Laravel and Tailwind CSS. 185 | * [Christopher Kruse](https://www.ballpointcarrot.net/uses/) — lifelong tech nerd, DevOps and Tools builder, dad, and choral singer 186 | * [Rowe Morehouse](https://rowe-morehouse.github.io/resume/uses/) — Growth · Product · Software Project Management · Frontend Dev · Design · Technical Writing · Sales 187 | * [Erik Hedin](https://www.erikhedin.com/uses/) — Full-stack Web Developer 188 | * [Alyssa Holland](https://www.alyssaholland.com/uses/) — Frontend developer with a passion for learning! Writes about programming and productivity tips. 189 | * [Andrew Gilliland](https://www.andrewgilliland.dev/uses/) — Web Developer, Co-Organizer Pensacola Devs, Certified Personal Trainer, Yacht Rocker, and Brand Ambassador for Blockbuster Video 190 | * [Adi Purnomo](https://github.com/medival/uses/) — Front End Developer x Network Engineer 191 | * [Matt James](https://mattfrankjames.com/uses/) — Senior Front-end Software Engineer & Web Design Teacher 192 | * [Patrik Trefil](https://patriktrefil.com/uses/) — Developer from Europe, Linux and open-source fan 193 | * [Marty Romero](http://martyromero.me/uses/) — Front-end UI developer 194 | * [Philip Boardman](https://brd.mn/uses/) — Software Engineering Manager, Full Stack Developer 195 | * [Sheila Leon](https://sheilaleon.tech/uses/) — Self-taught Front-end Dev, Designer & Product Manager 196 | * [Bram Smulders](https://bram.is/using) — Front-end UI developer 197 | * [Rubén Sospedra](https://sospedra.me/uses) — JavaScript Software Engineer, speaker, and trainer 198 | * [Juan Villela](https://cleverlaziness.xyz/uses/) — I like websites. Occasionally, I make them. 199 | * [Jeromey Balderrama](https://balderromey.com/uses/) — Web Developer, Designer, Photographer, Drummer 200 | * [Hamish Williams](https://hamishw.com/uses) — Multidisciplinary designer + developer. 201 | * [Dennis Mathenge](https://creativehubspace.com/uses) — Web Developer 202 | * [Antonio Della-Rocca](https://adr-enaline.com/uses) — Fullstack Web Developer 203 | * [Ali Alaa](https://www.alialaa.dev/uses) — Front-end web developer & online learning content creator. 204 | * [Devansh Bajaj](https://devanshbajaj.dev/uses) — 21 | M | Front End | Web Developer | Freelancer | Android enthusiast 205 | * [Ivan Muratov](https://binakot.github.io/resume/uses) — SOFTWARE DEVELOPER. TECHNICAL TEAM LEADER. CHIEF TECHNICAL OFFICER. 206 | * [Carlos Longarela](https://github.com/CarlosLongarela/uses/) — I enjoy solving problems and creating new stuff. WordPress lover and developer. Standards enthusiast 207 | * [Monespiseth Ly](https://pisethx.com/uses) — Frontend Developer, JavaScript Enthusiast 208 | * [Christian Oliff](https://christianoliff.com/uses/) — Front-end web developer person. 209 | * [Mauro Reis Vieira](https://mauroreisvieira.com/uses/) — Front End Developer, fully focused on JavaScript, React and Tailwind CSS 210 | * [John Irle](https://johnirle.com/blog/uses) — Graduate Student, Intern Developer at Charter and Go 211 | * [Prashant Bhapkar](https://github.com/Prashant-Bhapkar/uses) — Developer, Entrepreneur, Content Creator 212 | * [Kieran Osgood](https://osgood.dev/uses/) — Full stack developer. Curiosity in all. 213 | * [Pablo Obando](https://pabloobando.dev/uses) — A software engineer who enjoys programming and good beers 🍻 214 | * [Adam DeHaven](https://www.adamdehaven.com/uses/) — Full-Stack Software Engineer, UX Designer, runner, and cyclist based in Louisville, KY 215 | * [Nicolas M. Pardo](https://nikodermus.media/uses) — JavaScript Developer and teacher at debakatas.com 216 | * [Niko Heikkilä](https://nikoheikkila.fi/uses/) — Software Craftsman and Open-Source Advocate at Futurice 217 | * [Satyam Lachhwani](https://portfolio-satyam.now.sh/uses) — Web developer - Exploring ways to find out what's good for me. 218 | * [Matt Gregg](https://codegregg.com/uses) — Front end software engineer. Baker. Woodworker. Musician. Nerd. 219 | * [François Vantomme](https://code.strigo.cc/uses/) — Software craftsman 220 | * [Camille Hodoul](https://camillehdl.dev/uses/) — Remote fullstack developer, mostly Javascript & PHP 221 | * [Diogo Ferreira](https://diogoferreira.pt/uses) — Linux System Administrator and DevOps aficionado. Sometimes I write on the internet. 222 | * [Swapnil Agarwal](https://swapnil.net/uses/) — Software Developer turned Product Manager turned Product Designer | INFP | Avid Reader 223 | * [Zlatan Stajic](https://www.zlatanstajic.com/uses) — M.Sc. in Computer Science. Working as Software Developer. Creator of libraryfy.com. 224 | * [Brian Hamburg](https://burgbits.com/uses) — Web Developer, Designer, and Musician 225 | * [Olek Baran](https://olekbaran.com/uses/) — Front-end web developer using React and Next.js 226 | * [Emanuele Bartolesi](https://www.emanuelebartolesi.com/uses) — Microsoft 365 Architect. Microsoft MVP & GitHub Star ⭐ 227 | * [Patrick Lee](https://patricklee.nyc/uses) — Software Engineer, Engineering Manager, and Productivity tool nerd 228 | * [Sergio Martín](https://www.sergiomartin.dev/uses) — I enjoy creating and learning for the web. Standards and vanilla enthusiast 229 | * [Bryan Hickey](https://bryanjhickey.com/uses) — Full stack marketer. Front-end developer. Graphic designer. Digital marketer. Craft beer nerd 230 | * [Ajmal Afif](https://ajmalafif.com/uses) — Digital designer 231 | * [Christian Gambardella](https://gambo.io/uses/) — Solution Architect & Full-Stack JavaScript dev • Builds scalable systems • Loves Vue.js, TypeScript, Hasura + Nhost 232 | * [Erik Kroes](https://www.erikkroes.nl/uses) — Photographer and creative in the world of accessibility 233 | * [Ben Myers](https://benmyers.dev/uses/) — Web developer. Accessibility advocate. Human T-rex. 234 | * [Alex Duval](https://www.alexduval.fr/uses) — Fullstack Dev, Teacher, Freeride skier 235 | * [Dave Redfern](https://daveredfern.com/uses) — I design and develop user‑centered experiences that deliver measurable returns. 236 | * [Caro Appleby](https://caro.fyi/uses) — Indie programmer, textile artist, musician, endlessly curious 237 | * [Trevor Morris](https://www.trovster.com/about/uses) — I am a movie-loving, mountain-bike-riding web developer from the UK. 238 | * [Rizwan](https://blog.rizwan.dev/uses) — iOS Developer. Living between Marvel and DC world 239 | * [Dylan Sheffer](https://www.dylansheffer.com/posts/uses/) — Web Developer. A11y Advocate. Tea Enthusiast. 240 | * [Adil Naqvi](https://adilnaqvi.com/uses) — Mechanical engineer with a knack for coding 241 | * [Matías Hernández](https://github.com/matiasfh/uses) — Frontend Engineer, Podcaster, Father, Calisthenic Athlete 242 | * [Sean Coker](https://sean.is/using) — Creator & Thinker. Sometimes simultaneously. 243 | * [Michael Bonner](https://michaelbonner.dev/uses) — Full stack JavaScript and PHP developer in Salt Lake City, USA 244 | * [Mark Nenadov](https://github.com/MarkNenadov/uses) — Full stack developer in the deep south of Canada (LaSalle, Ontario) 245 | * [Filip Kalousek](https://blog.filipkalousek.cz/uses/setup) — Frontend Developer & Idea Maker 246 | * [Agu Valeriani](https://agustinvaleriani.com/uses) — Software developer, previously more full stack, lately focused on frontend. Enjoy traveling and gaming. 247 | * [Yash Singh](https://www.yashsingh.us/uses) — Fullstack web software developer 248 | * [Celso Palmeira Neto](https://celsoneto.com.br/uses) — Software Engineer focused on Backend development 249 | * [Gabor Gyure](https://www.gaborgyure.com/uses) — Fullstack developer with lots of love for industry and engineering in Europe. In love with boardsports, the semantic and accessible web 250 | * [Ben Brougher](https://benbrougher.tech/uses) — Full stack enterprise web devloper from the Pacific Northwest. 251 | * [Dawit Mekonnen](https://dawit.dev/uses) — Full stack developer and javascript enthusiast. 252 | * [Diogo Moreira](https://diogodmoreira.com/uses) — Professor, Software Engineer and Researcher. 253 | * [Vincent Lejtzén](https://lejtzendesign.se/uses) — Front end developer with love for design, user experience and SEO. 254 | * [Jakub Soboczyński](https://jakubsoboczynski.pl/uses) — Frontend Developer, who actively explores other technologies and paths, including backend development, and contributes to open-source projects like Raycast, while also having a passion for automation and electronic music, particularly dark techno. 255 | * [Yves Engetschwiler](http://bee-interactive.ch/uses) — Developer, cms enthusiast, bicycle traveler, content creator, Independent at Bee Interactive 256 | * [Sapan Bodiwala](https://sapanbodiwala.com/uses) — Full Stack Software Engineer 257 | * [Neil Italia](https://blog.neilitalia.dev/uses/) — UI/UX Designer + Front-End Developer Unicorn Combo 258 | * [Felix Yeboah Jefferson](https://jeffson.netlify.app/uses) — Fullstack Developer, UI Designer & a Nomad 259 | * [Anubhav Srivastava](https://theanubhav.com/uses) — Web Developer. Occasional blogger. Part time open source contributor 260 | * [Alexander Christiaan Jacob](https://alexanderchristiaanjacob.com/uses) — A guy that does things, and thinks that having a reason for doing so is largely overrated. 261 | * [Ruben Janssen](https://rubenjanssen.me/uses) — Front-end Developer, Gadget G33k, Guild Lead 262 | * [Nikola Đuza](https://pragmaticpineapple.com/uses) — Nikola helps developers improve their productivity by sharing pragmatic advice & applicable knowledge on JavaScript and Ruby. 263 | * [Josh Collinsworth](https://joshcollinsworth.com/uses) — Front end dev in love with all things Vue, Svelte, CSS, and WordPress. Works in Ruby on Rails. 264 | * [Sam Boswell](https://www.bozzie.org/uses) — CTO, Engineering Manager, IoT, info-sec, geek Sometimes mint condition. Free P&P. Warranty not included. 265 | * [Amodu Kehinde](https://amodukehinde.vercel.app/uses/) — MERN Stack Developer 266 | * [Manassarn "Noom" Manoonchai](https://garden.narze.live/uses) — Coding, Productivity, Technologies, macOS, Keyboard 267 | * [Ayoub Sousali](https://www.sousali.com/blog/uses/) — Software Developer 268 | * [Jordan Haines](https://jordanairwave.co.uk/uses.html) — Full Stack Web Developer 269 | * [Leonel Ngoya](https://lndev.me/uses.html) — FrontEnd Developer and Web Integrator 270 | * [Jay Tyrrell](https://jaytyrrell.co/uses/) — Full Stack Developer 271 | * [Richard Thames](https://richardthames.com/uses) — Emacs, podcast, and domain name enthusiast 272 | * [Eva Dee](https://includejs.dev/uses) — Web Developer. Note-taker. Trying to Do Good. 273 | * [Nikita Karamov](https://www.kytta.dev/uses) — A π-shaped Python & JavaScript developer who loves minimalism and linguistics 274 | * [Elio Struyf](https://www.eliostruyf.com/uses) — Engineering Lead / Office Development MVP / Public Speaker 275 | * [Jakub T. Jankiewicz](https://jakub.jankiewicz.org/uses/) — Front-End Developer, Blogger, Teacher, Mentor, and Open Source programmer 276 | * [Lucas Schumacher](https://aceto.dev/uses) — Fullstack Developer, IoT & DIY Enthusiast 277 | * [Jonas Jore](https://github.com/JonasJore/dotfiles/blob/master/uses-tech.md) — Fullstack Developer, Problemsolving, coffee and fancy terminaltricks! 278 | * [Marko Haberl](https://marko-haberl.com/uses) — Fullstack Developer 279 | * [Marcus Virginia](https://marcusv.me/uses) — Software engineer specializing in web tech, amateur designer, & frequent flyer 🛩️. 280 | * [sheep](https://sheepdev.xyz/uses) — software engineer from zagreb, croatia 281 | * [Mario Sanchez Carrion](https://mariosanchez.org/uses/) — Junior Web Developer Based in Miami, FL 282 | * [Anthony Del Rosario](https://adelrosarioh.me/uses) — Experienced Full Stack Software Engineer & Computers Lover 283 | * [Sythe Veenje](https://sythe.nl/uses) — Freelance Developer & Designer 284 | * [Christopher Talke](https://talke.dev/uses) — ICT Professional / Fullstack Web Developer and Skateboarder 285 | * [Brian Swank](https://swank.dev/uses/) — Combat Veteran; Software Engineer; Mentor 286 | * [Ammar Alakkad](https://ammar.codes/uses/) — Sr. Frontend Engineer 287 | * [Marko Denic](https://markodenic.com/uses/) — Web Developer 288 | * [Oleg Perchyk](https://himynameisoleg.com/uses) — Web developer - also ride bmx and cook alot. :wq 289 | * [Dhananjay Porwal](https://github.com/DhananjayPorwal/Grey-Test/blob/gh-pages/dhananjayporwal_uses.md) — Self taught Cyber Security Analyst, Graphic Designer and Front-end Developer 290 | * [Robert Michalski](https://robert-michalski.com/uses/) — Full Stack Developer going serverless 291 | * [First Kanisorn Sutham](https://heyfirst.co/uses) — Full Stack Software Engineer, Runner, Coffeeholic 292 | * [Henrik Nyh](https://henrik.nyh.se/uses) — Swedish web developer in Yorkshire, UK. 293 | * [Manoj Barman](https://manojbarman.in/uses) — Working hardly, or Hardly working.. 294 | * [Monica Powell](https://www.aboutmonica.com/uses/) — Hi! I'm a product engineer who is passionate about making open-source more accessible and community building 295 | * [Hideki Jinnai](https://github.com/dekisr/uses) — Lifelong Learner 296 | * [NaveenSingh](https://naveensingh.dev/uses/) — Full Stack Developer from India, Coimbatore 🇮🇳 297 | * [Raul Melo](https://raulmelo.dev/uses) — Developer, writer in my spare time, open-source contributor. Believes the only way to transform lives is through education. 298 | * [Ryan Harris](https://ryanharris.dev/uses) — dev @ fauna. organizer @ reactadelphia. streamer @ twitch.tv/ryan_c_harris. member of @thelivecoders. 299 | * [Axel Larsson](https://axellarsson.com/blog/what-i-use/) — Full-stack developer 300 | * [Laura Zumbakyte](https://desinni.dev/uses) — Front-end engineer, and a healthy lifestyle enthusiast. 301 | * [Chris Hufnagel](https://chrishufnagel.com/uses/) — Front End Developer & Designer 302 | * [Jeff Szuc](https://jeffszuc.com/uses) — UX Designer, Frontend Developer, Lifelong Learner. 303 | * [Maxim Zubarev](https://maximzubarev.com/uses) — Enthusiast with an opinion. I use things, press buttons, and sometimes go to places. 304 | * [Kelvin Mai](https://kelvinmai.io/uses) — Self Taught Full Stack developer, youtuber, full time nerd and aspiring functional programming polyglot 305 | * [Andrew Nguyen Vo](https://awnvo.com/uses) — Lover of code, coffee, and karaoke 306 | * [Jitendra Nirnejak](https://nirnejak.com/uses) — Developer, Designer and Blogger 307 | * [Elijah Rwothoromo](https://rwothoromo.wordpress.com/2020/05/29/uses/) — Software Developer, Poet, code and play! 308 | * [davidak](https://davidak.de/uses/) — Creating Free Software, with a focus on QA. 309 | * [Sudhanshu Bajaj](https://www.sudhanshubajaj.com/uses/) — Code. Travel. Sleep. Repeat. Magento Developer 310 | * [Enea Xharja](https://eneaxharja.com/uses) — Web Developer 311 | * [Dhanish Gajjar](https://dhanishgajjar.com/uses) — Developer 312 | * [Sampan Verma](https://www.samlovescoding.com/articles/uses) — Senior Software Developer, YouTuber, Streamer and Gamer 313 | * [Aditya Thebe](https://www.adityathebe.com/uses) — 💻 Full Stack Developer with an interest in bitcoins and blockchain. 314 | * [Travis Luong](https://www.travisluong.com/uses) — Full Stack Developer 315 | * [Michal Kolacek](https://michalkolacek.xyz/uses) — Analytics Engineer 316 | * [David Morales](https://davidmles.com/uses) — Computer Engineer. Web Developer. Teacher at ninjadevel.com 317 | * [Alex Zmn](https://www.monolog.dev/uses/) — Product Owner by day, dabbling in JavaScript, Rust and self-hosting by night. 318 | * [Kyle McDonald](https://kylemcd.com/uses/) — Software Engineer 319 | * [Alexander Sedeke](https://www.studioalex.dev/alexander/uses/) — Software Engineer 320 | * [Lea Vu](https://www.studioalex.dev/lea/uses/) — UI/UX Designer 321 | * [Habib Hinn](https://habibhinn.com/uses) — Pricipal Engineer & Senior Frontend Engineer 322 | * [Jibin Thomas](https://jibin.tech/uses) — Front-End Developer & Casual Blogger. CSS, Javascript & React 323 | * [Michael Rolfsen](https://boldandfriendly.de/uses) — Designer and Front-of-the-Front-End Dev. I suck at guitar. 324 | * [Michael Read](https://www.michaelcread.com/uses) — Full Stack Web Developer. 325 | * [Simon Aronsson](https://simme.dev/uses) — Developer Advocate, Cloud and DevOps Aficionado, Full-stack Developer 326 | * [João Pescada](https://joaopescada.com/uses) — Technologist and Consultant for web apps 327 | * [Saurabh Sharma](https://itsjzt.com/uses) — Full stack web developer making e-commerce websites and SaaS 328 | * [Wes Bos](https://wesbos.com/uses) — Maker of this site. Web Developer, Tutorial Maker, Syntax.fm Podcaster, BBQ Lover 329 | * [Frugence Fidel](https://frugencefidel.com/uses) — I'm 🇹🇿 React Developer 330 | * [Aaron Conway](https://aaronconway.co.uk/uses) — Developer who can design. A designer who can develop. One or the other! (also a podcaster @ thethirdwheel.fm) 331 | * [Artur Dudek](https://dudek.ga/uses) — Fullstack developer who loves React (Next.js) and TypeScript. Co-Host @ require.pl - a polish web dev podcast. 332 | * [Stephanie Handsteiner](https://stephfh.dev/uses) — 💻 Full-Stack Developer with a background in design. 333 | * [Mohammed Sohail](https://www.msohail.dev/uses) — A full stack web developer developing web applications in Laravel/PHP alongside Next.js, Livewire and Inertia. 334 | * [Ximena Vila Ferral](https://ximenavf.com/uses/) — 💻 🎨 A Mexican born, Texas based designer and developer. 335 | * [Daryl Sun](https://blog.darylsun.page/uses) — I play with software and videogames. Sometimes I write things. 336 | * [Julian Stark](https://julianstark.de/uses) — WordPress Web Developer & Entrepreneur 337 | * [Aris Ripandi](https://ripandis.com/uses) — Software engineer & educator. Open Source enthusiast. 338 | * [Tobias Schmidt](https://tobiasschmidt.me/uses/) — Digitalisation Expert 📠 339 | * [Gift Egwuenu](https://giftegwuenu.com/uses) — 💻Frontend Engineer and Technical Writer. 340 | * [Chandu J S](https://chandujs.dev/uses) — 💻 Full Stack Developer & Photographer from Trivandrum, India ❤️. Freelancer. 341 | * [Shubham Battoo](https://shubhambattoo.in/uses) — Software Engineer focused on Web Technologies from India. 342 | * [Mykolas Krupauskas](https://mkrup.com/uses) — A passionate software developer that helps people create value with technology. 343 | * [Arturo De la Garza](https://arturodelagarza.com/uses) — Full-stack web developer, avid learner, loves to play video games and board games 344 | * [Tuna Çağlar Gümüş](https://pikseladam.com/uses) — Senior software and systems engineer. I design things and make stuff when needed. 345 | * [Danny Solivan](https://solivan.dev/blog/uses) — Test engineer. Web developer on the side. 346 | * [Aaron Uurman](https://aaronuurman.com/uses) — Back end developer who likes to develop front end on free time 🤷‍♂️. And I also blog. 347 | * [Steve Della Valentina](https://sdv.im/uses) — Frontend engineer into blogging and digital gardening. 348 | * [Rajanand Ilangovan](https://rajanand.org/uses) — Business intelligence developer with over a decade of experience in designing and developing databases, ETL and reporting solutions. I am also a Microsoft certified trainer. 👉 https://rajanand.org/bio 349 | * [Joanna Hosking](https://joannahosking.com/uses) — Web developer, dog mom, football fanatic living in UK 350 | * [Andrew Byrd](https://www.andrewbyrd.dev/uses/) — Web dev. Girl Dad. Bodybuilder. Gamer. 351 | * [Devin Sharpe](https://devsharpe.io/uses) — Full Stack Web Developer, Typescript Enthusiast & Proud Cat Dad 352 | * [Prakhil TP](https://www.notion.so/Things-Prakhil-uses-e995e61834c242f1b739be9f8819fb0c) — Team lead, Experienced full-stack engineer & non-stop learner. :wq 353 | * [Ryan Filler](https://ryanfiller.com/uses) — Front-End Developer & Designer. Interested in performance, privacy, accessibility, and sustainability. 354 | * [Maxence Poutord](https://www.maxpou.fr/uses) — Software engineer, digital nomad, public speaker and remote worker 355 | * [Johan Hammar](https://www.johanhammar.se/uses) — Software Engineer from Sweden 356 | * [Ahmed Ibrahim](https://ahmed-ibrahim.com/uses) — Full-stack developer who believes that Passion is the key to every success. 357 | * [Martin Chammah](https://martinchammah.dev/uses) — Gatsby Fan, Full-stack web developer, architect 358 | * [James Peilow](https://jamespeilow.com/uses) — Front-end Developer, Switch owner, coffee and beer drinker 359 | * [Mostafa Hosseini](https://mostafa-hosseini.me/uses) — Fullstack Developer 360 | * [Clint Winter](https://clintgwinter.com/uses) — Full stack developer loving the Laravel ecosystem. Sometimes I write about it. 361 | * [Bob Orchard](https://boborchard.com/uses) — Semi-stack developer with a design background. Woodworker. Maker. 362 | * [Tim Eaton](https://www.timeaton.dev/uses/) — Laravel full-stack developer based in Paris 363 | * [Lucas Becker](https://github.com/runxel/uses) — Real architect who also happens to write code. 364 | * [Martín M.](https://uses.skydiver.dev/) — Dad & Developer (former skydiver) 365 | * [Jamie Bowman](https://www.mrjamiebowman.com/uses) — Full Stack Developer, DevOps, Infrastructure as Code, Penetration Testing, Blogger 366 | * [Fabian Vallejos](https://fabianvallejos.com/uses/) — Web Developer, Amateur Photographer, Writer, Occasional Gamer & Streamer, Father of Shih Tzus 367 | * [William Rodriguez](https://williamrodriguez.com/uses) — Full-Stack Developer. TALL Stack Advocate. Less is more. 368 | * [Nathanaël Cherrier](https://mindsers.blog/fr/uses) — Full Stack JavaScript and Swift Developer, Software Caftsman, from Reunion Island based in Lyon, France 369 | * [Keith Donegan](https://www.keithdonegan.com/uses/) — Irish WordPress developer, based in London, UK. 370 | * [Jang Rush](https://mmap.page/uses/) — markdown aficionado who suffers from unix porn addiction (*/*) 371 | * [John SJ Anderson](https://genehack.org/uses) — information technology executive, conference speaker, and Open Source software developer and community organizer from Salem, Oregon, USA. 372 | * [Makon Cline](https://makoncline.com/uses) — Engineer, Developer, Home Cook. I like to make useful things and share them with others. 373 | * [Pierre-Antoine "Leny" Delnatte](https://leny.me/uses/) — Developer, Bootcamp coach. Forging the next generation of webdevelopers. 374 | * [Nich Secord](https://secord.io/uses) — Full Stack Developer from the Redmond, WA area. Best skier on the mountain. Pretty good in general. 375 | * [Sebastien Elet](https://www.notion.so/Dev-environment-ec11cb5bd0594c16a3c6338e6aa4f5b9) — Full stack javascript developer which also loves ops and automation 376 | * [Marcel Hauri](http://marcelhauri.ch/uses/) — Father, husband, software developer and lecturer in application development. 377 | * [Mitchell Hanberg](https://mitchellhanberg.com/uses) — Full Stack Developer who loves working with Elixir, Ruby and JS. 378 | * [Michael Herman](https://mherman.org/about#uses) — Full-stack web developer. Software architect. Educator. Entrepreneur. Lover of Docker, Radiohead, running, and reading well-crafted project READMEs. 379 | * [Daniel Flege](https://danielflege.com/uses/) — Web Developer & Podcaster 🖥🎙 Loves Rails and Front End Stuff. My three girls are the {CSS} to my 👨‍👩‍👧‍👧 380 | * [Alok Prateek](https://alokprateek.in/uses) — Alok Prateek is a multi-talented human with over 11+ years of experiences in wide range of design disciplines. 381 | * [Dwayne Harris](https://dwayne.xyz/uses) — Freelance web and app developer in NYC with over 15 years of professional experience. 382 | * [Guru Das Srinagesh](https://gurudas.dev/uses/) — Linux kernel developer 383 | * [Michael Burkhardt](https://mihobu.lol/uses) — cloud data architect, part-time university professor, tinkerer and hobbyist 384 | * [Cory Dramsfeldt](https://coryd.dev/uses) — Web developer based in Southern California with over 10 years of professional experience. 385 | * [Kenny Robinson](https://thealmostengineer.com/uses) — Web developer that builds software to improve business processes 386 | * [Manuel Fernandez](https://github.com/teamhanded/uses) — Security Engineer 387 | * [Bojan Bedrač](https://www.improvebadcode.com/uses) — Coding the future, one line of code at a time. 388 | * [Yannick Le Roux](https://yannickleroux.com/uses) — Second career web dev, French living in San Diego, retired DJ. 389 | * [Eric Raslich](https://ericraslich.com/uses) — Boat captain, web developer, marine biologist, solving science and communication problems with web technologies. 390 | * [Sagar Soni](https://sagarsoni.dev/uses/) — Full Stack JS, PHP and WordPress Developer in day. Android & Linux enthusiast by night 391 | * [Paulo Regina](https://pauloregina.com/uses.html) — Full Stack Web Developer 392 | * [Alex Mufatti](https://codeandrun.it/uses) — Code and Run 393 | * [Varatep Buranintu](https://www.varatech.io/uses/) — Full Stack Software Engineer, IBM Edge UI Lead, Bridging the gap between humans and computers with beautiful experiences. 394 | * [Anwar Hussain](https://gist.github.com/getanwar/daa9cb57428fd56255b1759fef2754f0) — Web Developer and No-Code Maker 395 | * [Matt Litzinger](https://mlitzinger.com/uses/) — Web Developer 396 | * [Nathan Knowler](https://knowlerkno.ws/uses/) — Developer focused on making the Web accessible, beautiful, and fun. 397 | * [Asur Bernardo](https://asur.dev/uses/) — Back end developer with no aesthetic sense. Full stack with reservations. Open-source enthusiast. Continuous learner! 398 | * [Lazar Nikolov](https://nikolovlazar.com/uses) — Full-Stack Engineer, DevRel, Live Streamer, Course Creator, Open Source Advocate. P.S. Check out nikolovlazar.com/gear to see the hardware that I use. 399 | * [Vinoth Chellamuthu](https://ecevinoth.github.io/#uses) — Data Engineer 400 | * [Joff Tiquez](https://jofftiquez.dev/uses) — Web Developer 401 | * [Roberto Vázquez González](https://robertovg.com/uses/) — Javascript Engineer (10+ years experience) && CorkerSpace Co-founder, 💛js (^es6),🏄‍🧘‍🎸. 402 | * [Joe Astuccio](https://astucc.io/uses) — Front End Developer, Sailor, Stargazer, Hockey Player, and all around fun guy... but my absolute favorite thing is being a dad. 403 | * [Joe Maffei](https://joemaffei.dev/uses/) — Software engineer with a passion for Web Application Development. 404 | * [Jelle Smeets](https://blog.jellesmeets.nl/uses) — Engineering manager & blogger 405 | * [Rene Gens](https://renegens.com/uses) — android engineer, project manager, teacher, aspiring designer and author 406 | * [Matthew Scholta](https://mattscholta.com/uses) — Passionate about quality code written for humans, unlocking developer productivity, and creating a delightful user experience. 407 | * [John Smith](https://solrevdev.com/uses/) — full-time carer formally head of infrastructure and operations, senior full-stack #dotnetcore #aspnetcore #vuejs developer and software engineer https://solrevdev.com 408 | * [Chris Collins](https://chriscollins.me/uses) — I design and build digital products, hike and take photos. 409 | * [Rostyslav Ugryniuk](https://ugross.dev/uses) — Front-end Developer, Snowboarder, and Traveler. 410 | * [Alexis Janvier](https://alexisjanvier.net/uses/) — Web Developer, Open Source Contributor, Community Organizer, Proud Dad, Grateful Lover. 411 | * [Aaron A.](https://ocular-rhythm.io/uses/) — Sandwich enthusiast and programmer. 412 | * [Renee de Kruijf](https://webdesignpuntnl.com/pages/uses.html) — Javascript developer in the making. Still learning every day. Liking it a lot! 413 | * [Sumanth](https://mynameissumanth.netlify.app/uses.html) — Student. Learning web development 414 | * [Christian Leo-Pernold](https://mazedlx.net/uses) — Dad. Husband. BBQ Enthusiast. Full-Stack-Developer. 415 | * [Danilo Barion Nogueira](https://danilobarion1986.github.io/uses) — Father, developer, blog writer, classical guitar player and searching for the meaning of life! 416 | * [Emma Goto](https://emgoto.com/uses) — Frontend developer, blogger and creator of Trello power-ups. 417 | * [Cesar Gomez](https://cesargomez.io/uses) — Front-end developer 418 | * [Chris Otto](https://chrisotto.dev/uses/) — Software engineer. I enjoy JavaScript, DevOps and Testing. 419 | * [Chris Berry](http://chrisberry.io/uses) — Designer / Developer 🦄, Linux advocate, mechanical keyboard connoisseur 420 | * [James Quick](https://jamesqquick.com/uses) — Developer Advocate Engineer at @auth0 and content creator 421 | * [Federico Vitale](https://fedevitale.dev/uses) — Software Engineer based in Rome 422 | * [Vishwasa Navada K](https://vishwas.tech/uses) — Geek. Open source Enthusiast. Occasional blogger, photographer and traveler. 423 | * [Silvestar Bistrović](https://www.silvestar.codes/uses/) — Fearless web engineer, CSS developer, JAMstack enthusiast, and WordPress theme specialist. 424 | * [Adam Schwartz](https://adamschwartz.co/uses/) — Software developer, designer, film music composer 425 | * [Andy Bell](https://piccalil.li/page/uses) — Educator who focuses on design, front-end development, accessibility and progressive enhancement. I teach at and run, Piccalilli. 426 | * [Daryn St. Pierre](https://daryn.codes/uses) — Front-end developer, designer, CodePen tinkerer, LEGO enthusiast. Building VueJS applications (for a living) and eating pizza (for fun). 427 | * [Chris Lagasse](https://chrislagasse.com/uses) — Diversified programmer with emphasis in PHP, Javascript, Node.js, Vue, API integrations... cyclist, dad, lover of craft beer. 428 | * [Christoph Miksche](https://blog.m5e.de/uses/) — Startup Founder and Full-Stack-Developer with a passion for finance. 429 | * [Toon Claes](https://iotcl.com/uses/) — Class developer with passion for Git and Emacs 430 | * [Sergey Lysenko](https://soulwish.info/uses/) — Front-end developer, guitar player, MTB rider, snowboarder, runner. 431 | * [Shreyas Minocha](https://shreyasminocha.me/uses) — web. foss. privacy. archival. accessibility. 432 | * [Andrei Racasan](https://www.andreiracasan.com/setup) — Full Stack Developer with a passion for finding pragmatic solutions to technical challenges. 433 | * [Sergey Panteleev](https://sergeypanteleev.com/en/uses) — PHP 8.2 Release Manager 434 | * [Shajan Jacob](https://shajanjacob.com/uses) — Software Engineer, extroverted introvert, storyteller and a maker. 435 | * [Fidalgo](https://info.fidalgo.dev/uses) — Front end Developer 436 | * [Alexandre Ferreira](https://www.alexjorgef.com/about/uses) — Full-stack developer, open-source enthusiast 437 | * [Marco Poletto](https://poletto.dev/uses/) — Engineering Manager @ Laiye, Frontend Developer, UI engineer, Mentor 438 | * [Tim Teege](https://www.teesche.com/uses/) — Web Studio CEO, Former Frontend Dev, Blogger, Ultrarunner 439 | * [Mark Horsell](https://markhorsell.com/uses) — Software Developer - Front-end mostly, back-end and native sometimes. 440 | * [Elmar Klausmeier](https://eklausmeier.goip.de/aux/uses) — Developer and blogger, data center management 441 | * [Joel M. Turner](https://joelmturner.com/uses) — Mostly Front-End Dev, some back end 442 | * [Matt Jennings](https://mattjennings.io/uses) — web dev, hockey | tradebreaker.io 443 | * [Jake Jarvis](https://jarv.is/uses/) — Front-End Web Developer, Teacher, Cat Dad, World Wide Web Surfer 🏄 444 | * [Ángel Guerra](https://angelguerra.me/uses/) — Father. Partner. Human. Kickboxer. Ninja. 445 | * [Jason Cory Alvernaz](https://jasoncoryalvernaz.com/uses) — Web Developer, Blogger, YouTuber, and Dog Lover. Not necessarily in that order. 446 | * [Robin Bakker](https://robinbakker.nl/uses) — Web Developer 447 | * [Alessia Bellisario](https://aless.co/uses) — Web engineer, mechanical keyboard builder, plotter art maker. 448 | * [AriaieBOY](https://ariaieboy.ir/uses/) — Web Developer that loves creating and sharing 449 | * [Sunny](https://sny.sh/#uses) — Programmer, designer, musician, photographer and video editor. 450 | * [Russell McWhae](https://russellmcwhae.ca/uses) — Backcountry skier, photographer, designer, and web developer from Canada 451 | * [Karl Koch](https://www.kejk.tech/uses) — Product designer, frontend developer and musician. Building HomeHero and making other things. 452 | * [Praveen Kumar Purushothaman](https://blog.praveen.science/my-personal-development-environment/) — Cook, Cat Lover, Front End Architect, Full Stack Web Developer Evangelist & Cloud Computing Consultant. 453 | * [Praveen Puglia](https://praveenpuglia.com/uses/) — Web Developer. Love Vue & CSS. Building life one component at a time! 454 | * [Gaya Kessler](https://theclevernode.com/uses) — Freelance web developer specialising in JavaScript 455 | * [Eivind Lindbråten](https://madebymist.com/uses) — One-man studio handcrafting apps and websites 456 | * [Matthew Ernisse](https://www.going-flying.com/~mernisse/uses/) — Recovering Systems Engineer now Solutions Engineer. 457 | * [Diego López](https://codingpotions.com/uses) — Frontend developer making thins with Vue & Nuxt. Gamer and beer lover 458 | * [Andre Landgraf](https://andre-landgraf.cool/uses/) — Passionate Fullstack Web Developer 459 | * [Dave Mullen Jnr](https://davemullenjnr.co.uk/uses) — Designer, photographer, developer, multi-instrumentalist, chess player, aspiring minimalist, environmentally friendly. 460 | * [Tiffany White](https://tiffanywhite.dev/uses/) — Frontend dev, blogger, podcaster, herder of cats 461 | * [Kent C. Dodds](https://kentcdodds.com/uses) — JavaScript Software Engineer, speaker, and trainer 462 | * [Nathan Smith](https://nathan-smith.org/uses) — Full stack dev, cat dad, dungeon master. 463 | * [Joshua Ryan Velasquez](https://joshua-afk.github.io/uses) — Web Developer, Designer, Vimmer, Typist, Calisthenics, Mortal. 464 | * [Darlene Zouras](https://darzouras.com/uses/) — Front-End and UI/UX Developer, Accessibility advocate, JAMStack fan, working in the marketing and entertainment industry 465 | * [Glenn Reyes](https://glennreyes.com/uses) — Independent Software Engineer, trainer & speaker. Into sports & music. 466 | * [Yash Dave](https://amorpheuz.dev/uses/) — Web Developer who ❤s Gatsby & React. Ocassional blogger & Open Source Contributor! 467 | * [Simon Stenbæk](https://sstenbaek.dk/uses) — Helicopter pilot, web developer 468 | * [Adam Jahnke](https://adamyonk.com/uses) — Caffiend, motorcyclist, climber, recovering perfectionist. I love to make the complex simple. 469 | * [Andrew Healey](https://healeycodes.com/uses) — Software Engineer, Writer, Learner! 470 | * [Gyan Prakash Karn](https://karngyan.com/uses/) — Software Engineer, Tinkerer, Absurdist. 471 | * [Scott Tolinski](https://scotttolinski.com/uses) — Web Developer, Tutorial Maker, Podcaster, Bboy 472 | * [Tony Lockhart](https://tlockhart.github.io/portfolio/#uses) — Full Stack Developer, Designer, and Instructor 473 | * [Wojciech M. Wnuk](https://lanius.dev/uses) — Magento developer, vimmer, Linux and FOSS enthusiast. 474 | * [Leonardo Melo](https://www.leomeloxp.dev/uses) — Full stack web developer. Typescript lover, always learning new stuff. 475 | * [Lukasz Tkacz](https://tkacz.pro/uses/) — Software Architect, Senior Fullstack Developer, Scrum Master 476 | * [Gabriel Wilkes](https://azul.technology/uses/) — Full-stack developer who loves learning new things, American 10 years in Japan, soon back to the US 477 | * [Gabriel Alejandro López López](https://glpzzz.is-a.dev/#using) — Software Engineer 478 | * [Rémi Weng](https://creativedesignsguru.com/uses/) — A Full Stack JS developer using React, Next JS and Tailwind CSS. Netlify, Serverless and AWS for the backend. 479 | * [Sal Ferrarello](https://salferrarello.com/uses/) — Web Developer specializing in WordPress. Loves Git and Neovim. Good at metaphors and asking dumb questions. 480 | * [Brian Morrison II](https://brianmorrison.me/uses/) — Full stack developer, content creator, husband, father of 3 boys, lifter of weights, Destiny 2/Stadia gamer 481 | * [Tim Downey](https://downey.io/uses/) — Software Engineer - Distributed Systems, Cloud Platforms, and Web 🙃 482 | * [Josiah Wiebe](https://jwie.be/uses/) — Designer & developer, lifelong learner. 483 | * [Muhammad Oka](https://muhammadoka.dev/uses/) — Computer Science student, Cyber Security enthusiast. 484 | * [Benjamin Lannon](https://lannonbr.com/uses/) — Web Developer, Open Source Contributor, Livestreamer 485 | * [Dmytro Litvinov](https://dmytrolitvinov.com/uses/) — Full Stack Python developer from 🇺🇦 486 | * [Braden Watkins](https://bradenwatkins.dev/uses) — Student, Full Stack Developer, Lover of all things analog 487 | * [Rikin Patel](https://patelrikin.com/#uses) — Experienced Front-end developer, Passionate about Javascript 488 | * [Jed Fonner](https://jedfonner.com/uses) — Engineering VP and father who still manages to crank out a couple side projects each year. Loves Svelte and Javascript. 489 | * [Joris Hens](https://www.goodbytes.be/uses) — Web development teacher, Security and hacking enthousiast, Cook. 490 | * [Salisa Cheawcharnthong](https://www.sgennrw.xyz/uses) — Software Engineer 491 | * [Tom (ttntm)](https://ttntm.me/uses) — Web developer from Austria 492 | * [Achhunna Mali](https://achhunna.com/uses) — Software engineer and aspiring surfer 493 | * [Jorge Baumann](https://baumannzone.dev/uses) — JavaScript FullStack Developer - Content Creator 494 | * [Moncef AOUDIA](https://www.maoudia.com/uses) — Software developer - Open-source enthusiast/maintainer 495 | * [Alfian Akmal Hanantio](https://amalhanaja.dev/uses) — Software engineer specializing in android development 🇮🇩 496 | * [Adrian Marin](https://adrianthedev.com/uses) — Product-Minded Software Engineer, Digital nomad, no-nonsense enjoyer of life, friends and family. 497 | * [Jahir Fiquitiva](https://jahir.dev/uses) — Passionate and Creative Full Stack Developer 498 | * [José Hernández](https://josehernandez.tech/uses) — Mobile and Web Developer 499 | * [Christophe Querton](https://kertof.com/what-i-use) — Software Engineer, xoogler, co-founder of @accelery. Full-stack, technical debt collector. Lover of the Outdoors, BBQ, sailing. 500 | * [Adil Haddaoui](https://adilhaddaoui.com/uses) — Full stack Developer 501 | * [Vlad Holubiev](https://vladholubiev.com/uses) — Sr. Director of Technology at Shelf 502 | * [Jorge Ruvalcaba](https://jorgearuv.dev/uses) — Software Engineer & Aspiring Entrepreneur who does things. Frontend at Vest 503 | * [Michael Knepprath](https://mknepprath.com/uses) — Pokémon-obsessed Software Engineer & Designer. Twitter bots are my jam. 504 | * [Matt TK Taylor](https://tk.gg/uses) — Product Manager in news & media 505 | * [Nico Bachner](https://nicobachner.com/uses) — Student. Developer. Entrepreneur. 506 | * [Brad Garropy](https://bradgarropy.com/uses) — Self taught frontender at Adobe, into lifting and country music. 507 | * [Jeff Mair](https://jeffmair.net/uses) — Contract/Freelance Web Developer, .NET Programmer, Dad, Korean Learner 508 | * [Jeremy Collins](https://jeremycollins.net/uses) — Full-stack developer always seeking to learn more. Web and mobile technology enthusiast. 509 | * [Michael Kutz](https://miku86.com/uses/) — JavaScript developer, mentor, blogger at miku86.com and dev.to/miku86 510 | * [Bruno Brito](https://brunobrito.pt/uses) — Freelance Web Developer, Content Creator, Digital Marketing teacher 511 | * [Roy Tang](https://roytang.net/about/uses/) — Programmer, engineer, scientist, critic, gamer, dreamer, and kid-at-heart. 512 | * [Sahilpreet Singh](https://github.com/preetsahil/uses) — MERN stack developer, Leaning Devops, Web Enthusiast. 513 | * [Thomas Jensen](https://blog.cavelab.dev/uses/) — I like electronics and computers — and my wife and three kids. 514 | * [David Perkins](https://prkns.me/uses) — Dad, Designer, Developer, Dave, Keyboard enthusiast 515 | * [Aaron Dunphy](https://aarondunphy.com/uses) — Full Stack Developer, Coffee Lover and Photo Taker 516 | * [Jan Durkaj](https://jandurkaj.dev/uses) — Web developer, adventurer, and amateur photographer 517 | * [Duncan Bain](https://duncanbain.dev/uses/) — Mechanical Engineer learning to code! 518 | * [Watheq Alshowaiter](http://watheq.xyz/uses) — Web developer, Blogger, and Technical Translator 519 | * [Jason Raimondi](https://jasonraimondi.com/uses) — Full Stack Developer 520 | * [Thomas Hunter II](https://thomashunter.name/uses) — Node.js developer with a thing for distributed systems. Co-organizer of NodeSchool SF. Game developer. 521 | * [Martin Marcucci](https://www.marku.me/uses) — Computer Engineer, Professor, Embedded systems programer, ❤️(React/JS). Less gamer and more dad👪. 522 | * [Andrew McCombe](https://www.euperia.com/uses) — Experienced full stack web developer with a passion for testing. 523 | * [Smakosh](https://smakosh.com/the-tech-tools-I-use) — Full stack JavaScript Developer, blogger and speaker. 524 | * [Eihab Khan](https://eihabkhan.com/uses) — Front End Engineer & UI/UX Designer 525 | * [Mahmoud Ashraf](http://mahmoudashraf.dev/uses) — Front-End Developer, sometimes do backend stuff. 526 | * [Charlie Say](https://www.charliesay.xyz/uses) — Another bald Full Stack developer from Manchester UK 527 | * [Pouria Ezzati](https://pouria.dev/uses) — Web developer. Digs music, football and a e s t h e t i c s 528 | * [Simeon Griggs](https://www.simeongriggs.dev/uses) — Full stack developer and part time Cyclist in Newcastle upon Tyne, UK 529 | * [Stuart McColl](https://stuartmccoll.github.io/uses/) — Software developer, DevOps enthusiast. 530 | * [Jonathan Suh](https://jonsuh.com/uses) — Designer, Developer, Sneakerhead 531 | * [George Campbell](https://gibr.net/uses) — Full stack engineer at Netflix 532 | * [Sowren Sen](https://sowrensen.dev/uses) — Software Engineer 533 | * [Yoann Fleury](https://blog.yoannfleury.dev/uses) — Front End Web Developer, Blogger 534 | * [Keith Wagner](https://kpwags.com/uses) — Experienced full stack developer. Always trying to learn new and better ways of doing things. 535 | * [Sebastian Försth](https://forsth.dev/uses) — I am solving problems you did not know you had. 536 | * [Sebastian Remm](https://www.sebibasti.dev/uses) — Coding at 04am in the morning 537 | * [Chuck Munson](https://www.breadandrosesweb.com/uses/) — Web developer, blogger, writer, journalist, photographer, librarian, Minecraft addict, cooking show fanatic 538 | * [David O'Trakoun](https://www.davidosomething.com/uses/) — Software Engineer 539 | * [Dean Harris](https://deanacus.com/uses/) — Front End Developer. Husband. Skateboarder. Occasional blogger 540 | * [Michael Hoffmann](https://www.mokkapps.de/uses) — Freelance Software Engineer 541 | * [Colin Morris](https://vonexplaino.com/blog/posts/page/uses.html) — Steampunker, solution architect and web developer. Mad science works for all cases. 542 | * [Austin Gil](https://austingil.com/uses/) — 📝 Writing about code and stuff at http://austingil.com; 🛠 Building Vuetensils & Particles CSS; 🎙 Hosting @theFnCall; 🐶 Loving http://instagr.am/nuggetthemighty 543 | * [Michael Le](https://www.michael1e.com/uses/) — Software Engineer 544 | * [Kilian Valkhof](https://kilianvalkhof.com/using/) — User experience developer 545 | * [Spencer Aung](https://spenceraung.me/blog/uses) — Frontend Developer from Myanmar. Live in Seoul. Love cats and octopuses 546 | * [Dale French](https://dalefrench.dev/uses) — Full Stack Developer from South Africa. Skateboarder. Front End Enthusiast. 547 | * [Angel Taborda Chinea](https://ataborda.com/uses) — Software Developer, Teacher, JW, CTO en IO Digital 548 | * [Jordan Elver](https://elver.me/uses/) — Full Stack developer who loves Ruby, Elixir, and Rust. 549 | * [Russell John](https://russelljohn.net/uses/) — Professional Linux system administrator and highly experienced webmaster. 550 | * [Liam Richardson](https://discoliam.com/uses/) — User Interface developer focusing on Performance, A11y and CSS 551 | * [Timothy Miller](https://timothymiller.dev/uses) — Web Designer/Developer for hire. Wears lots of hats. 552 | * [Jordi Hoven](https://www.jordihoven.nl/uses) — Healthcare engineer, UX Designer, Whisky lover 553 | * [Caleb Ukle](https://calebukle.com/uses) — I'm a software developer, technology enthusiast, and simply enjoy learning new things. 554 | * [Ricardo Boss](https://ricardoboss.de/uses) — Software Developer from Germany. Loves PHP and clean code. 555 | * [Vincent Ramdhanie](https://vincentramdhanie.com/uses) — Software Developer, Lecturer, Technical Writer and Mentor 556 | * [Amir R Muntasser](https://arkm.xyz/uses/) — Web Developer, #vuenicorn wizard, Oxford comma enthusiast, and inventor of the ol' razzle dazzle. 557 | * [Pavel Melnik](https://theopract.gitlab.io/pavel-dev/uses/) — Web developer, Technology enthusiast, Energy Management System expert 558 | * [Miguel Ángel Durán](https://midu.dev/uses) — Front end passionate, Web Performance freak, casual speaker, podcast host, and gamer. 559 | * [David Llop](https://davidllop.com/uses) — Full stack developer from Girona. Open Source contributor. Always Learning. 560 | * [Alba Silvente](https://dawntraoz.com/uses) — Front-end developer, Vue & Tailwind CSS lover. Hip Hop & Afro house dancer. 561 | * [Karel De Smet](https://kareldesmet.be/uses) — Test Engineer at work. Developer in my spare time. Loves analyzing, debugging and delivering software. 562 | * [Alberto Fortes](https://albertofortes.com/uses/) — Senior Front-end developer with strong aesthetic sense. Building cool websites and apps as Front-end Team lead at Avallain. 563 | * [Josh Manders](https://joshmanders.com/uses/) — Indie Maker & Entrepreneur 564 | * [Laurie Barth](https://laurieontech.com/uses/) — Software Engineer and Educator 565 | * [Joe Previte](https://joeprevite.com/uses) — Developer Advocate on the Open Source Team at Facebook 566 | * [Harry Wolff](https://hswolff.com/uses/) — Front-end engineer and YouTuber 567 | * [Amir Ghaffari](https://amirghaffari.com/uses/) — full-stack web developer 568 | * [James Mills](https://jamesmills.co.uk/uses) — Work with PHP & Laravel at @clicksco in Dubai. Pleased to be part of the Laravel community. 569 | * [Brian Mitchell](https://brianm.me/uses) — Frontend software engineer and co-organizer of JavaScriptMN. Occasionally a lighting designer. 570 | * [Mohammad Dohadwala](https://dohad.dev/blog/uses) — Hi, I am a Full Stack Javascript Web Developer from Dubai. 571 | * [Manuel Savino](https://manuels.dev/uses) — Frontend Web Developer 572 | * [Jeffrey Way](https://laracasts.com/blog/laracasts-uses) — Laracasts Author 573 | * [Terry Godier](https://terrygodier.com/uses) — A developer and marketer of fine internet products. 574 | * [Erno Salo](https://endormi.io/uses/) — Full Stack Developer and Open Source Contributor 575 | * [Gokulakrishnan Kalaikovan](https://gokul.site/uses) — Web Developer, GDE, Open Source contributor, Speaker 576 | * [James Brooks](https://james.brooks.page/uses/) — Software Developer at Laravel and Podcaster 577 | * [Byurhan Beyzat](https://byurhanbeyzat.com/uses) — Front-End Developer. Engineer. Occasional blogger. 578 | * [Eugene Oliveros](https://jinyuz.dev/uses) — A Software Developer. A lazy software developer. 579 | * [Mike Barkmin](https://www.barkmin.eu/uses/) — I'm a passionate developer and researcher at the University of Duisburg-Essen at the chair of Computer Science Education. 580 | * [Hugo Di Francesco](https://codewithhugo.com/uses) — JavaScript developer, blogger at codewithhugo.com, co-author of 'Professional JavaScript' with Packt. 581 | * [Steve Heyes](https://steveheyes.co.uk/uses) — I like to use tech to build awesome things that makes peoples lives better 582 | * [Earl Siachongco](https://elpachongco.github.io/uses) — Building websites 583 | * [Galen Cuthbertson](https://galen.me/uses) — I build tools & tools to help understand human culture. 584 | * [Chris Jones](https://chrisjones.io/uses) — Full-time full-stack web developer. Part-time hiker, explorer, photographer. 585 | * [Mark Mead](https://markmead.dev/uses/) — Web Developer using the TALL stack 586 | * [Diego Vazquez](https://gist.github.com/diurivj/78ca931c4b20dca1e1e13982fa9c309d) — Young guy who loves code. Full Stack Web Developer. Lead Teacher @ Ironhack 587 | * [Rafael Quintanilha](https://rafaelquintanilha.com/about#uses) — Software Engineer. Blogs about Web Development, Front-end, React, UI/UX, Accessibility. 588 | * [Jenna Pederson](https://jennapederson.com/uses) — Technical entrepreneur with a passion for community and equity-building 589 | * [Talita Oliveira](https://talitaoliveira.com.br/#uses) — Software Developer. Loves CSS and Javascript. Already worked with PHP and a little with JAVA. 590 | * [Ben Leivian](https://benleivian.com/uses) — A “seasoned” full-stack developer & visual designer 🍔 591 | * [Danny de Vries](https://dandevri.es/uses) — Indie maker building products for the web and lecturer @CMDamsterdam 592 | * [David Petringa](https://david.dukesnuz.com/uses) — A web developer who very much likes working with Laravel and Vuejs. My side Hustle is blogging. 593 | * [Stephen Senkomago Musoke](https://ssmusoke.com/uses) — Software Engineer, eHealth Technologist, PHP Lover by night, Muganda, Goat Meat for Life, Coffee Drinker 594 | * [Jérémy Mouzin](https://jeremymouzin.com/uses) — Software Engineer, Tutorial Maker, Entrepreneur, Blogger 595 | * [John Cranston](https://pursuitofloot.gg/uses) — Part lead front-ender, Part vidya-streamer, All cat dad. 596 | * [Thorsten Hans](https://thorsten-hans.com/uses/) — Cloud-Native software developer from Germany. 597 | * [Adam Laycock](https://www.arcath.net/uses) — IT Engineer, Web Developer & Blogger 598 | * [Iñigo Ochoa](https://inigochoa.me/uses/) — Backend developer and amateur basketball coach. 599 | * [Łukasz Wójcik](https://lukaszwojcik.net/uses/) — Full-stack developer, blogger, photography enthusiast 600 | * [Tony Mannino](http://spaghet.me/uses/) — Full-Stack developer 601 | * [Scott Spence](https://scottspence.com/uses) — Developer, Svelte, GraphQL 602 | * [Marc Littlemore](https://marclittlemore.com/uses/) — Senior Engineering Manager @ Netlify, Node.js fan, course creator, entrepreneur, ex-videogame developer, public speaker, and sepsis survivor. 603 | * [Danielle Mayabb](https://danielle-m.dev/uses) — Full-stack developer, Accessibility Engineer, Information Architect, Generalist 604 | * [José Manuel Lucas](https://jmlweb.es/blog/2020/uses/) — Professional Frontend Engineer - Amateur musician 605 | * [Georgi Yanev](https://gyanev.com/uses/) — Software Engineer, FPV Drone Pilot, Blogger, YouTuber 606 | * [Varun Raj Manoharan](https://varunraj.in/uses/) — Co Founder - Skcript, Typescript Ninja, I cook web apps, Google Developer Expert - Firebase 607 | * [Frédéric Harper](https://fred.dev/uses) — Developer Advocate with a knack for public speaking & making videos 608 | * [Mark Tse](https://neverendingqs.com/uses/) — A back-end developer who likes to dabble in the front-end. 609 | * [Karl Horky](https://github.com/karlhorky/uses/blob/master/readme.md) — Founder, Teacher at https://upleveled.io 610 | * [Zoran Panev](https://gist.github.com/8f08557764711afbf82b75ac0ce61e79.git) — Web developer 611 | * [Marcos Mendes](https://marcosmendes.eu:2053/uses) — Technical Support Engineer, Systems Administrator, Fullstack Developer, Raspberry Pi tinker 612 | * [Steven van Loef](https://steven.vanloef.com/uses) — Web Developer, App Developer 613 | * [Richard Zilahi](https://gist.github.com/zilahir/4aaf5907999ea53711b2d554d22b0f3f) — Full stack developer, pug enthusiast, dying for pizza 614 | * [Duncan McClean](https://duncanmcclean.com/uses) — Web Developer from Glasgow, Scotland. Laravel, Statamic & Tailwind CSS 615 | * [Gus Fune](https://gusfune.com/uses/) — CTO at Off Script. Full-stack developer from Brazil, based in Sweden. 616 | * [Matthew Rebehn](https://mattaz.com/uses) — Proud Dad and Developer 617 | * [Terry Dontje](https://gist.github.com/tddontje/50e88b03eb56cbe5705ed2c7354d8f54) — Backend developer with a HPC parallel computing background. BBQ Lover and homebrewer. 618 | * [Isaac Weber](https://www.webdevike.com/uses) — Full stack, GraphQL enthusiast 619 | * [Janez Čadež](https://janez.tech/uses) — Full-Stack developer, gym enthusiast and self-improvement nerd 620 | * [Bezael Pérez](https://dominicode.com/uses) — Front-end Developer passionate. Trainer & speaker 621 | * [Jim Fang](https://airfusion.dev/uses) — Developer, Tech enthusiast, Student. 622 | * [Isaac Wyatt](https://isaacwyatt.com/uses) — Aviator, Mountaineer, SAAS/Tech, Coder, GTD & PKM Nerd, SF Bay Area to Seattle, Angel & Advisor, BBA, MBA 623 | * [Andrew Zeller](https://zeller.io/uses) — Frontend engineer and designer | SF Bay Area | Drone enthusiast 624 | * [Thomas Tuvignon](https://thomastuvignon.com/en/uses) — Front-end developer and occasional designer. 625 | * [MG Santos](https://fullybearded.com/uses/) — Full-stack (and fully bearded) developer who loves bots, automations and building stuff 626 | * [Daniel Van Cuylenburg](https://danielvanc.com/uses) — Front-end Web Developer. Love all things CSS, ReactJS, GatsbyJS, NodeJS and U.I design 627 | * [Diana García](https://dianaeli.dev/uses) — Full Stack Web Developer based in Mexico City, I love to teach and to game 628 | * [Dao Chau](https://daochau.com/uses/) — Another hard-working developer on earth. 629 | * [Chiamaka Ikeanyi](https://chiamakaikeanyi.dev/uses) — Software Engineer, Technical Writer, Poet 630 | * [Francis Sunday](https://hakaselogs.me/2020-01-10/what-i-use) — Software Engineer | Gopher | Hacker 631 | * [Jared Clifton-Lee](https://jared.clifton-lee.com/uses) — Engineer of code; manager of people; trainer of cats 632 | * [James Kemp](https://www.jameskemp.dev/uses/) — Web Developer, Blogger, Freelancer 633 | * [Bob Matyas](https://www.bobmatyas.com/uses) — Web Developer // IndieWeb 634 | * [Tom Hazledine](https://tomhazledine.com/uses) — Data visualisation tinkerer and JS enthusiast. Podcaster. Nerd. 635 | * [Jeremy Lanssiers](https://www.jeremylanssiers.com/uses/) — Full-stack developer-thinker-tinkerer. Preacher for the GNU/Linux Church. 636 | * [Jacopo DP.](https://shish.cat/uses/) — Student and PHP, Javascript developer. Learning cybersecurity 637 | * [Dávid Lévai](https://davidlevai.com/uses) — Building production-ready apps, Freelancing as a Software Dev 638 | * [Soumya Ranjan Mohanty](https://soumya.dev/uses) — Fullstack software developer, Music Lover 639 | * [Mihai Serban](https://www.mihaiserban.dev/uses) — Software engineer in constant search for new and exciting technologies 640 | * [Tom VanAntwerp](https://tomvanantwerp.com/uses) — Professional web developer, hobbyist fermenter 641 | * [Nick Janetakis](https://nickjanetakis.com/uses) — Freelance Web Developer, Web App Deployment, Tutorials, Technical death metal enthusiast 642 | * [Stefan Judis](https://www.stefanjudis.com/uses) — Web Developer, writer and speaker 643 | * [Kaleigh Scruggs](https://klgh.dev/uses) — Software Engineer who loves her senior dogs, baking, being outside and reading. Probably doing all those at once. 644 | * [Ste Grainer](https://stegrainer.com/uses) — Designer, Developer 645 | * [Jorge Calle](https://jorgecalle.co/uses) — Hello world! I am a Software Engineer and a Javascript developer from Sahagún (CO) 646 | * [Camilo Romero](https://camiloromero.dev/uses) — Full Snack Web Developer (Yeah...snack) that uses Javascript almost everywhere. 647 | * [Rhys Botfield](https://rhysbotfield.co.uk/uses) — Full-stack PHP, JS, and DevOps developer, agency director, and open-source contributor 648 | * [Quentin Laffont](https://uses.qlaffont.com) — Full Stack JS Developer, Tournament Organiser, Video-Game lover 649 | * [Adrián Alcorta Puente](https://ardi.land/uses) — Frontend developer. I love mountains, Game Boys and Post-rock music. 650 | * [Erv Walter](https://ewal.dev/uses) — Father, Husband, Web Developer, Board Game Addict 651 | * [Juanito Fatas](https://juanitofatas.com/uses) — Program Tinker 🧙🏼‍♂️ 652 | * [John Garrett](https://johngarrett.dev/uses) — Arch Duke of Computering, Full Stack Instructor 653 | * [Krzysztof Żuraw](https://krzysztofzuraw.com/uses) — Developer, nerd, co-organizer, chemex lover 654 | * [Dieter Stinglhamber](https://www.dieter.dev/uses) — I write in PHP, JS, HTML and CSS. I can talk to databases and make servers do stuff. 655 | * [Thomas Weibenfalk](https://www.weibenfalk.com/uses/) — Passionate developer, course creator, youtuber, designer and musician from Sweden 656 | * [Julio Lozovei](https://jlozovei.dev/uses) — Front-end bugs developer, writer/speaker and amateur musician from Brazil 🤘 657 | * [Shiveen Pandita](https://shiveenp.com/uses/) — Fullstack developer and blogger from Sydney 658 | * [David Leuliette](https://davidl.fr/uses) — Freelance React Native developer and bootcamp instructor specializing in cross-platform application. 659 | * [Dave Berning](https://daveberning.io/uses/) — Developer, author, rocker, Nintendo enthusiast. I also co-organize the CodePen Cincinnati Meetups. 660 | * [Jan-Lukas Else](https://jlelse.blog/uses/) — Software Developer & Blogger 661 | * [Doce Fernandes](https://doceazedo.com/uses) — Fullstack developer focused on frontend, Svelte evangelist and live coder 662 | * [Justin Poehnelt](https://justin.poehnelt.com/uses) — Software Engineer. Developer Relations. Ultrarunner. 663 | * [Jovylle Bermudez](https://jovyllebermudez.com/uses) — A Web Developer from the Philippines. 664 | * [Will Presley](https://willpresley.com/uses/) — Professional Web Dev & SysAdmin from Ohio, USA 665 | * [Silvestre Vivo](https://silvestrevivo.github.io/uses) — Full Stack developer, before architect and flamenco guitar player. 666 | * [Josef Aidt](https://josefaidt.dev/uses) — JavaScript and Garlic Bread connoisseur 667 | * [Kyle Platt](https://kyleplatt.com/uses) — Senior Software Engineer, Multi Startup Founder, Building Projects in Public 668 | * [Eric Oyanadel](https://www.oyanadel.com/uses/) — Artist - Developer - Musician 669 | * [Usman Khwaja](https://usmankhwaja.com/uses) — Front end engineer, Jamstack developer 670 | * [Abdessalam Benharira](https://abdessalam-benharira.me/uses) — JavaScript developer, UX/UI design and tech enthusiast 671 | * [David Dias](https://thedaviddias.dev/uses/) — Front-End Developer, UX/UI enthusiast, podcaster and content creator! 672 | * [Thomas Large](https://tomlarge.dev/uses) — My name is Tom! I write code 673 | * [Amit Merchant](https://www.amitmerchant.com/uses) — Maker of things. Open-source enthusiast. Blogger. 674 | * [Jesse James Burton](https://burtonmediainc.com/uses) — Software Developing Yogi from Alberta, Canada. Lets build the internet together. 675 | * [Junaid Qadir](https://junaidqadir.com/uses) — A Full Stack #Laravel Developer 676 | * [Daniel Naxon](https://naxon.dev/uses) — Full Stack Developer, Laravel Artisan. 677 | * [Yurui Zhang](https://gist.github.com/pallymore/6e12133b5c2fa2856a8a6b288e579c01) — Full-stack developer. Dark mode enthusiast. Quality software devotee. 678 | * [Aman Rawat](https://gist.github.com/amanr-dev/ceb36ff768ef85322f6d3067af33dba8) — Frontend Developer, Self taught developer, React js, Next js. 679 | * [Eduardo Reveles](https://www.osiux.ws/about/uses) — Web Engineer, Husband, Gamer. 680 | * [Thomas Maximini](https://www.maxi.io/uses/) — Freelance software developer from Germany. 681 | * [Philip Theobald](https://www.philiptheobald.com/uses/) — Guitar player, motorcyclist, software engineer, entreprenuer 682 | * [Wes Baker](https://wesbaker.com/uses) — Team Lead, Software Engineer, Board/Miniature/RPG Gamer, Miniature Painter, 3D Printer, Disney fanatic 683 | * [Dominik Matis](https://dmatis.gitlab.io/uses) — React dev 👻 Gatsby & Vue.js learner 👨‍💻 Syntax lover ❤️ 684 | * [Rubén Rodríguez](https://www.rubenr.dev/uses) — Madrid based. Front-End developer. Javascript enthusiast, SASS, Bootstrap lover. Magento 2 Certified 685 | * [Roland Szabo](https://rolisz.ro/uses) — Team Lead, ML Engineer, Board Gamer 686 | * [Mykal Machon](https://mykal.codes/uses) — Systems analyst, Software developer, generalist nerd. Blogging about all my tags and self-hosting. 687 | * [Matheus Almeida S. Anjos](https://matalmeida.netlify.com/uses/) — Passionate about programming, engaged with Javascript and Golang lover. 688 | * [Alejandro G. Anglada](https://aganglada.com/uses/) — Dad 👪🔥⚡️ Web Engineer ⚛️🚀 Building websites with #react #typescript #nodejs #graphql 👌 689 | * [Antoni Kepinski](https://kepinski.ch/uses/) — Full Stack Engineer, maintaining node-fetch and a bunch of smaller projects 🚀 690 | * [Frank Bültge](https://bueltge.de/uses/) — Alpinist, Cyclist, Optimist. I develop, support solutions, primarily with SAP at ZEISS Group and I make WordPress-based solutions at the Inpsyde 691 | * [Ray Gervais](https://raygervais.dev/uses) — Cloud Engineer, Application Developer, Blogger, Musician, Failing Linux Advocate 692 | * [Marcus Obst](https://marcus-obst.de/uses) — Webdeveloper, Music Lover 693 | * [Pawel Grzybek](https://pawelgrzybek.com/uses/) — Software Engineer 694 | * [Ryan Senn](https://ryansenn.dev/uses) — Software engineer turned business owner. Loves functional porgramming. 695 | * [Michael Beckwith](https://apiratelifefor.me/uses/) — PHP and WordPress developer/support, coffee consumer, gym monkey 696 | * [Eric McCormick](https://edm00se.codes/uses/) — Software Developer, IBM Champion, coffee lover, dabbler in all things technology, hobbyist 3d design and printing 697 | * [Ben Congdon](https://benjamincongdon.me/uses) — Golang, Python, Rust. Runs in the Cloud. 698 | * [Jens van Wijhe](https://jens.ai/uses) — Creative web developer and entrepreneur 699 | * [Jacob Herper](https://jacobherper.com/uses) — Senior Front-End Engineer with a passion for all things digital. I create amazing web apps to make the internet a better place. 700 | * [Albin Groen](https://albingroen.com/uses/) — Young self taught fullstack JavaScript developer that's really interested in the web, open source, and design. 701 | * [Ajay Karwal](https://ajaykarwal.com/uses/) — A designer, developer and UX guy from Buckingham, UK. 702 | * [Raúl Negrón](https://raulnegron.me/uses/) — Software Developer from Puerto Rico 703 | * [David A. Vives R.](https://dispuestoaaprender.com/en/uses) — software engineer, web developer, chess player, comics reader, loves reading, learning new things, sushi, bbq sauce and aioli. 704 | * [Ryan Warner](https://ryan.warner.codes/uses) — Software Engineer and Interface Designer. Leader and Mentor. 705 | * [Philipp John](https://jplace.de/uses) — Full-Stack Software Developer - Love to play on my E-Piano, reading books and practicing Yoga & meditation. 706 | * [Nicky Meuleman](https://nickymeuleman.netlify.app/uses) — Web developer, F1 fan. 707 | * [George Daneke](https://daneke.ge/uses/) — Web developer, freelancer, creator of things 708 | * [Rob Warner](https://grailbox.com/uses/) — Software Architect, Developer, Father. 709 | * [Adam Urban](https://urbanisierung.dev/uses/) — coder, father, left-handed 710 | * [Rynaard Burger](https://rynaardb.com/uses) — Mobile Software Engineer. Swift, Objective-C, former .NET & Java developer. 711 | * [Jesse Dyck](https://jessedyck.me/uses) — Web Developer and sometimes SysAdmin. 712 | * [Florian Kapfenberger](https://phiilu.com/uses) — Frontend developer from Austria who likes to create modern applications with React (Native) 713 | * [TaeHee Kim](https://roto.dev/uses) — Front-end Engineer, Bassist, Cat lover. 714 | * [Moisés Ñañez](https://gist.github.com/moisesnandres/f6ec9277c379d2bf33893cda02cebfaa) — Programmer and musician 715 | * [Maria Altyeva Schuessler ](http://mariacodes.io/uses) — Nacho Cheese Lover and Senior Full-Stack Developer, Project Manager, and Writer based out of Shanghai, China 716 | * [John Slipper](https://www.johnslipper.com/uses/) — Web Developer, mountain biker, drone enthusiast, Minecraft nerd 717 | * [Gijs Nelissen](https://lifelog.be/uses) — Founder of @prezly. Focussed on Product Management 718 | * [Arturo Campos](https://arturocampos.dev/uses) — Web Developer, dad, mountain biker, meat lover 719 | * [Esmit Perez](https://esmit.me/uses) — Software Developer, every day ☕️, sometimes 💡. Pura Vida 🇨🇷. 720 | * [Sercan Eraslan](http://sercaneraslan.com/uses) — Front-End Tech Lead 721 | * [Vlad Ilie](https://vladilie.ro/uses) — I'm a Software Engineer based in Romania, I love to juggle with technologies and put my soul in every project to get the best of it. 722 | * [Divjot Singh](https://bogas04.github.io/uses) — Web Developer, Vegan, Sikh. 723 | * [Navdeep Singh](https://navdeepsingh.in/uses) — Web Developer, Speaker, Sikh. 724 | * [Rohit Gohri](https://rohit.page/uses) — Full Stack Developer dabbling in DevOps, CI/CD 725 | * [Andrea Prus](https://avris.it/uses) — Full stack developer, blogger 726 | * [Bamuleseyo Gideon](https://medium.com/developer-circle-kampala/what-i-use-my-tools-of-trade-552655db4b8d) — Software Engineer, Facebook Developer Cirle Kamapala Lead. Front-end ❤️ 727 | * [David Anguita](https://davidanguita.name/uses/) — Software developer & consultant. Maker. Gamer by night. :wq 728 | * [Nick Taylor](https://www.iamdeveloper.com/uses/) — Just some dev from Montreal, Quebec, Canada 729 | * [Trezy](https://trezy.com/uses) — Software engineer, JavaScript livestreamer, and a wannabe cyborg. 730 | * [Kim Ingram](https://kimingram.com/uses/) — Freelance Copywriter. Website Strategist. Coffee Lover. And I code a little bit too. 731 | * [Ben Shi](https://hbish.com/uses/) — Full Stack. Engineering Leader. Believer of taking the time to learn and taking the time to teach. 732 | * [Peter Tasker](https://petetasker.com/uses/) — Programmer/developer/dad in Ottawa Ontario, Canada 733 | * [Jason Ross](https://softwarepragmatism.com/uses/) — Developer/Architect creating software in Calgary, Alberta, Canada 734 | * [Anthony Morris](https://anthonymorris.dev/uses/) — Builder, JavaScript wrangler, and wannabe stoic. 735 | * [Justin Conway](https://conwaydev.com/uses/) — Chicago-based front-end developer passionate about the web and pork. 736 | * [Gabriel Kanev](https://mrgkanev.eu/uses/) — I love solving problems. (Un)Fortunately, I am fascinated with staying organized and making life easy for everyone. 737 | * [Dan Vega](https://www.danvega.dev/uses/) — Full-Stack, Curriculum Developer. I am passionate about learning new things and teaching them to others. 738 | * [Dick Wyn Yong](https://dickwyn.xyz/uses) — Software Engineer, Content Creator and Sustainability Enthusiast 739 | * [Logan Blangenois](https://logan-blangenois.be/uses/) — Front-end developer passionate about eco-friendly (web)app and React. 740 | * [Lucas Queiroz](https://lucasqueiroz.dev/uses.html) — Backend Engineer working remotely. 741 | * [Muhammad Umair](https://gist.github.com/mumairofficial/0d97ed3dca1ba25d9f01b8db8aed42dc) — Fullstack front-end developer and designer, passionate in everything #JavaScript 742 | * [Ben Newton](https://BenENewton.com/uses) — Front End Architecht with over 25 years of experience. 743 | * [Tomek Buszewski](https://www.buszewski.com/uses/) — Developer and team leader based in Warsaw, Poland. 744 | * [Norbert Chmiel](https://github.com/Norbiox/uses) — Software Craftsman, Pythonista, Linux enthusiast. 745 | * [Benjamin Mock](https://codesnacks.net/uses/) — coder, runner, reader, maker 746 | * [Dan Holloran](https://danholloran.me/uses/) — Full Stack Developer 747 | * [Sean Boult](https://boult.me/uses) — Full stack developer who likes ReactJS 748 | * [Kevin Woblick](https://www.kovah.de/uses/) — I turn Pizza into Code and Photos 749 | * [Michal Slepko](https://michalslepko.dev/uses) — Senior web developer learning iOS development. Live coding streamer on Twitch 750 | * [Michał Miszczyszyn](https://typeofweb.com/michal-miszczyszyn-uses/) — Motivated full-stack developer not afraid to use any technology. Experienced developer and leader. He, him. 751 | * [Gleb Skibitsky](https://skibitsky.com/uses/) — Maker, mostly Unity stuff. Blockchain, VR, and Automation lover. 752 | * [Derek Mohr](https://onemohrti.me/about/uses/) — Front-end development by interest, full stack development by trade 753 | * [Haseeb Majid](https://haseebmajid.dev/uses/) — Backend software engineer 💻, Linux enthusiast 🐧 and village cricketer 🏏 754 | * [Narendra Mandadapu](https://5pagesaday.com/uses) — Fullstack Engineer, SEO Nerd, ⭐️⭐️⭐️⭐️⭐️ 5-Star Udemy Instructor, United Kingdom 755 | * [Łukasz Rybka](https://www.dragonia.org.pl/uses/) — Full Stack Developer from Poland. Public speaker, bootcamp trainer and consultant. Legacy code and CI/CD enthusiast. 756 | * [Antonio Piras](https://www.antopiras.dev/uses) — Web developer from Italy, madly in love with Javascript and everything web related. 757 | * [Maxwell Morrison](https://maxmorrison.me/uses) — Continuous leaner and freelance full stack developer 758 | * [Matt Hughes](https://matthughes.dev/uses) — Full Stack Web Developer 759 | * [Christian Ek](https://christianek.io/uses/) — Full Stack developer, tech enthusiast. 760 | * [Rail Hamdeew](https://hmdw.me/uses/) — Full Stack. Open to new technologies 761 | * [Armno Prommarak](https://armno.in.th/uses) — Frontend developer, blogger, cyclist. 762 | * [Fernando Paredes](https://fdp.io/about/uses) — iOS/macOS developer, serial hobbyist, language nerd. 763 | * [Socheat Sok](https://socheat.dev/uses/) — 🇰🇭👨🏻‍💻 Full-Stack Developer | DevOps | 🤵 Husband | 🎉 Work with @vuejs, @reactjs, @laravel, @flutter, @docker, @github 764 | * [Piyush Mehta](http://www.piyushmehta.com/uses/) — Full Stack Developer Based in INDIA 765 | * [Duncan McDougall](https://www.belter.io/uses/) — Web developer, contractor, remotely working from the South of Scotland 766 | * [Mijndert Stuij](https://mijndertstuij.nl/uses/) — Engineer. Hacker. Minimalist. 767 | * [Niels Gouman](https://nielsgouman.nl/uses/) — Tech. Start-ups. SaaS. 768 | * [Iván Olivares](https://iolivares.com/uses) — Building web experiences since 2006. Javascript Lover ❤️. 769 | * [Juan Fernandes](https://www.juanfernandes.uk/uses/) — Freelance Front-end Developer 770 | * [Kevin Simkanič](https://github.com/kevinko12323/uses) — Wordpress ninja 😎 React lover ❤️ CSS master 🧐 771 | * [Lakshmipriya Mukundan](https://gist.github.com/lakshmipriyamukundan/ddd224306ce962f4f159f1065f0f0c67) — Javascript lover, FullStack enthusiast, React Learner (current), Pet lover 772 | * [Matt Layman](https://www.mattlayman.com/uses/) — A Python developer focused on Django 773 | * [Jeremy Bunting](https://qbunt.com/uses) — Web 🤖 working remotely from the Connecticut burbs 774 | * [Chris Wiegman](https://chriswiegman.com/uses) — Engineering manager, teacher, aspiring writer and ex-pilot currently focused on WordPress, developer experience and humane and sustainable technology. 775 | * [Stan Lo](https://gist.github.com/st0012/7b018463dd041d2a4401d9fa5044bedf) — Developer at Ticketsolve, creator of Goby 776 | * [Bassem Allani](https://nextglabs.com/uses/) — Senior Fullstack Engineer & Commercial Airline Pilot 777 | * [Jérémie Bertrand](https://laedit.net/uses/) — Developer, occasional blogger 778 | * [Lee Robinson](https://leerob.io/uses) — Developer, writer, creator. Solutions Architect @ Vercel. 779 | * [Felix Kirmaier](https://www.kirmaier.net/uses/) — Frontend Developer from Unterhaching near Munich in Germany, doing mostly web performance, HTML, SCSS, JS, automated testing and TYPO3 for a living 780 | * [Matt Busche](https://matthewbusche.com/uses/) — Full Stack developer from Des Moines, Iowa, web performance enthusiast 781 | * [Zura Gabievi](https://gist.github.com/zgabievi/60e81da327c1c80cdca3f65b39baa23d) — Front-end Team Lead. 782 | * [T G Pranesh](https://www.tgpranesh.site/uses/) — Front-end Developer 783 | * [Jace Hensley](https://jacehensley.dev/uses) — Fullstack Engineer 784 | * [EJ Mitchell](https://www.cupofsquid.com/uses) — Full-time web dev @ thoughtbot. Artist. Writer. Outdoors enthusiast. 785 | * [Preston Lamb](https://www.prestonlamb.com/uses) — Full Stack JavaScript Developer and Thinkster.io Author 786 | * [Marek Maras](https://www.marek-maras.de/uses) — Self-taught Frontend developer from Hattingen, Germany with a focus on React/Gatsby. Oh and Craft Beer is Life! 787 | * [5am.is](https://5am.is/uses/) — iOS developer and designer that cares about user experience and privacy 788 | * [Seshal Jain](https://archgaelix.vercel.app/uses) — Emacs rookie passionate about aesthetic design and a beautiful, free web 789 | * [Chiko Mukwenha](https://chikomukwenha.co/2021/11/21/uses) — Frontend Engineer 790 | * [Vic Demuzere](https://vic.demuzere.be/uses/) — Go developer and Linux enthousiast at home, system administrator at work. 791 | * [Ivan Santos](https://ivansantos.me/uses) — 🍺 🤠 Node.js, Go, Terraform and Kubernetes. Distributed Systems FTW. 792 | * [Kristina Groeger](https://github.com/kr1st1nagr03g3r/uses) — 💻 👻 Over ten years of front-end development and UI / UX development and design. 793 | * [Patrick Obermeier](https://www.patrickobermeier.at/uses) — Experienced front-end developer with a solid online-marketing background on top. Lover of fancy hipster beer. 794 | * [James Dewes](https://jamesdewes.com/uses/) — Full-stack developer, software and data engineer, Yorkshire, UK. 795 | * [Paul Mowat](https://www.paulmowat.co.uk/uses/) — A passionate developer who likes learning new technologies. Currently Principal DevOps Architect @ Advanced 796 | * [Luigi Cruz](https://luigicruz.dev/uses) — Software developer with a focus on the Web. 797 | * [Felix Macaspac](https://gist.github.com/felixmacaspac/8ede14ecaeaec3790701b2ed8ea6374e) — Self-taught Frontend developer from the Philippines, and a CS student. 798 | * [Jerry Shi](https://github.com/szy0syz/uses) — Full Stack, Motivated full-stack developer not afraid to use any technology. 799 | * [Carol Gilabert](http://carol.gg/uses/) — Web developer and community organiser. 800 | * [Steve Rydz](https://steverydz.com/uses) — Developer 801 | * [Francisco Valloire](https://github.com/frajova/what-i-use) — Frontend developer, self-taught, enthusiastic and passionate about new technologies. 802 | * [Raúl Piracés](https://piraces.dev/uses) — Full Stack and passionate Software Engineer. 803 | * [Luis Contreras](https://luiscontreras.dev/uses) — Detail-oriented and passionate Software Engineer. 804 | * [Madeline Pritchard](https://www.blog.madelinepritchard.net/uses) — Film critic, writer, web developer. 805 | * [Filip Pacurar](https://pacurar.dev/uses/) — Loving husband, father of Joshua and Caleb, proud christian and enthusiast senior software developer, former CTO 806 | * [Wuttinan Sukpoon](https://github.com/mewxz029/uses) — FullStack Developer 807 | * [Kieran Robson](https://kieranrobson.com/uses/) — Information science PhD student | Hobbyist developer | Movie and TV Enthuiast 808 | * [Michael Mior](https://michael.mior.ca/uses/) — Assistant Professor and Director of the Data Unity Lab at RIT 809 | * [Johannes Konings](https://johanneskonings.dev/uses/) — Developer 810 | * [Kai Devrim](https://devrim.tech/uses/) — IT/Programming Student & Really Bad Hacker 811 | * [Josh Beard](https://joshbeard.me/uses/) — Sysadmin, DevOps, Hobbyist 812 | * [Peter Forret](https://blog.forret.com/uses/) — Photographer, tinkerer, software architect 813 | * [Scott Zirkel](https://scottzirkel.com/uses) — Making stuff up since 1977 814 | * [Nick Ali](https://nali.org/uses) — Marketer who used to be a software architect. 815 | * [Jesús Leganés-Combarro "piranna"](https://piranna.github.io/uses) — Passionate computers engineer and ex-PhD. candidate in Computers Engineering. Proud advocate of Open Source, standards, specifications, and best practices. 816 | * [Vinesh Raju](https://blog.thevinesh.com/uses/) — Mobile Application developer from India with a deep focus on UX/UI. 817 | * [Daniel Cefram Ramirez](https://rmrz.ph/uses/) — I build things through code. I make short sentences to multiple paragraphs. 818 | * [Simon Lee](https://simonhlee97.github.io/uses/) — Front end developer. Indiana Hoosier. 819 | * [James Mathias](https://artisticoutlaw.com/outlaw/uses) — Artist, Writer, & Outlaw 820 | * [Stanislav (Stas) Katkov](https://skatkov.com/uses) — Indie-hacker and developer 821 | * [Matt Walsh](https://mattwalsh.dev/uses/) — Python programmer with love for data and automation 822 | * [Hammy Havoc](https://hammyhavoc.com/uses/) — Composer for video games and picture. Cypherpunk and open source aficionado. 823 | * [Ricardo Quiroz](https://rcrd.space/uses) — Software Developer mostly with Node.js 💚 I love to write clean beautiful code even when it's unnecessary. 824 | * [Ferdinand Linnenberg](https://linnenberg.dev/uses) — Backend Developer and Open Source Enthusiast 825 | * [Will Adams](https://willadams.dev/uses) — UK developer and knife maker 826 | * [Tim Veletta](https://www.timveletta.com/uses) — Australian full-stack developer and designer 827 | * [Ryan Daley](https://www.rpdaley.com/uses/) — Software Engineer | ex-Shopify, ex-BellMedia, ex-Apple, ex-Kobo, ex-RIM 828 | * [Abul Khoyer](https://abulkhoyer.com/uses/) — Web Developer and Designer 829 | * [Manthan Ank](https://manthanank.web.app/uses) — I'm Front-End Developer, Intermediate Learner, Also as a hobby I write blogs related to Web Development. 830 | 831 | [awesome-badge]: https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg 832 | -------------------------------------------------------------------------------- /remix.config.js: -------------------------------------------------------------------------------- 1 | const { config } = require("@netlify/remix-edge-adapter"); 2 | /** @type {import('@remix-run/dev').AppConfig} */ 3 | module.exports = { 4 | ...(process.env.NETLIFY || process.env.NETLIFY_LOCAL ? config : {}), 5 | appDirectory: "src", 6 | future: { 7 | unstable_postcss: true, 8 | }, 9 | ignoredRouteFiles: ["**/.*"], 10 | server: 11 | process.env.NETLIFY || process.env.NETLIFY_LOCAL 12 | ? "./server.js" 13 | : undefined, 14 | // serverBuildPath: ".netlify/functions-internal/server.js", 15 | }; 16 | -------------------------------------------------------------------------------- /scripts/data-validate.js: -------------------------------------------------------------------------------- 1 | const core = require('@actions/core'); 2 | const { 3 | getMasterData, 4 | Schema, 5 | getStatusCode, 6 | communicateValidationOutcome, 7 | } = require('./utils.js'); 8 | const srcData = require('../src/data.js'); 9 | 10 | async function main() { 11 | // on master branch will be empty array 12 | const masterDataUrls = (await getMasterData()).map(d => d.url); 13 | // so here data will be an array with all users 14 | const data = srcData.filter(d => !masterDataUrls.includes(d.url)); 15 | 16 | const errors = data 17 | .map(person => Schema.validate(person)) 18 | .filter(v => v.error) 19 | .map(v => v.error); 20 | 21 | errors.forEach(e => { 22 | core.error(e._original.name || e._original.url); 23 | e.details.forEach(d => core.error(d.message)); 24 | }); 25 | 26 | const failedUrls = []; 27 | for (const { url } of data) { 28 | try { 29 | const statusCode = await getStatusCode(url); 30 | if (statusCode < 200 || statusCode >= 400) { 31 | core.error(`Ping to "${url}" failed with status: ${statusCode}`); 32 | failedUrls.push(url); 33 | } 34 | } catch (e) { 35 | core.error(`Ping to "${url}" failed with error: ${e}`); 36 | failedUrls.push(url); 37 | } 38 | } 39 | 40 | await communicateValidationOutcome(errors, failedUrls, data); 41 | } 42 | 43 | main(); 44 | -------------------------------------------------------------------------------- /scripts/flags.js: -------------------------------------------------------------------------------- 1 | module.exports = [ 2 | '🇦🇫', 3 | '🇦🇱', 4 | '🇩🇿', 5 | '🇦🇸', 6 | '🇦🇩', 7 | '🇦🇴', 8 | '🇦🇮', 9 | '🇦🇶', 10 | '🇦🇬', 11 | '🇦🇷', 12 | '🇦🇲', 13 | '🇦🇼', 14 | '🇦🇺', 15 | '🇦🇹', 16 | '🇦🇿', 17 | '🇧🇮', 18 | '🇧🇸', 19 | '🇧🇭', 20 | '🇧🇩', 21 | '🇧🇧', 22 | '🇧🇾', 23 | '🇧🇪', 24 | '🇧🇿', 25 | '🇧🇯', 26 | '🇧🇲', 27 | '🇧🇹', 28 | '🇧🇴', 29 | '🇧🇶', 30 | '🇧🇦', 31 | '🇧🇼', 32 | '🇧🇻', 33 | '🇧🇷', 34 | '🇧🇳', 35 | '🇧🇬', 36 | '🇧🇫', 37 | '🇧🇮', 38 | '🇰🇭', 39 | '🇨🇲', 40 | '🇨🇦', 41 | '🇨🇻', 42 | '🇰🇾', 43 | '🇨🇫', 44 | '🇹🇩', 45 | '🇨🇱', 46 | '🇨🇳', 47 | '🇨🇽', 48 | '🇨🇨', 49 | '🇨🇴', 50 | '🇰🇲', 51 | '🇨🇩', 52 | '🇨🇬', 53 | '🇨🇰', 54 | '🇨🇷', 55 | '🇭🇷', 56 | '🇨🇺', 57 | '🇨🇼', 58 | '🇨🇾', 59 | '🇨🇿', 60 | '🇩🇰', 61 | '🇩🇯', 62 | '🇩🇲', 63 | '🇩🇴', 64 | '🇪🇨', 65 | '🇪🇬', 66 | '🇸🇻', 67 | '🇬🇶', 68 | '🇪🇷', 69 | '🇪🇪', 70 | '🇪🇹', 71 | '🇫🇴', 72 | '🇫🇯', 73 | '🇫🇮', 74 | '🇫🇷', 75 | '🇬🇫', 76 | '🇵🇫', 77 | '🇹🇫', 78 | '🇬🇦', 79 | '🇬🇲', 80 | '🇬🇪', 81 | '🇩🇪', 82 | '🇬🇭', 83 | '🇬🇮', 84 | '🇬🇧', 85 | '🇬🇷', 86 | '🇬🇱', 87 | '🇬🇩', 88 | '🇬🇵', 89 | '🇬🇺', 90 | '🇬🇹', 91 | '🇬🇬', 92 | '🇬🇳', 93 | '🇬🇼', 94 | '🇬🇾', 95 | '🇭🇹', 96 | '🇭🇳', 97 | '🇭🇰', 98 | '🇭🇺', 99 | '🇮🇸', 100 | '🇮🇳', 101 | '🇮🇩', 102 | '🇮🇷', 103 | '🇮🇶', 104 | '🇮🇪', 105 | '🇮🇱', 106 | '🇮🇹', 107 | '🇨🇮', 108 | '🇯🇲', 109 | '🇯🇵', 110 | '🇯🇪', 111 | '🇯🇴', 112 | '🇰🇿', 113 | '🇰🇪', 114 | '🇰🇮', 115 | '🇰🇼', 116 | '🇰🇬', 117 | '🇱🇦', 118 | '🇱🇻', 119 | '🇱🇧', 120 | '🇱🇸', 121 | '🇱🇷', 122 | '🇱🇾', 123 | '🇱🇮', 124 | '🇱🇹', 125 | '🇱🇺', 126 | '🇲🇴', 127 | '🇲🇰', 128 | '🇲🇬', 129 | '🇲🇼', 130 | '🇲🇾', 131 | '🇲🇻', 132 | '🇲🇱', 133 | '🇲🇹', 134 | '🇲🇭', 135 | '🇲🇶', 136 | '🇲🇷', 137 | '🇲🇺', 138 | '🇾🇹', 139 | '🇲🇽', 140 | '🇫🇲', 141 | '🇲🇩', 142 | '🇲🇨', 143 | '🇲🇳', 144 | '🇲🇪', 145 | '🇲🇸', 146 | '🇲🇦', 147 | '🇲🇿', 148 | '🇲🇲', 149 | '🇳🇦', 150 | '🇳🇷', 151 | '🇳🇵', 152 | '🇳🇱', 153 | '🇳🇨', 154 | '🇳🇿', 155 | '🇳🇮', 156 | '🇳🇪', 157 | '🇳🇬', 158 | '🇳🇺', 159 | '🇳🇫', 160 | '🇰🇵', 161 | '🇲🇵', 162 | '🇳🇴', 163 | '🇴🇲', 164 | '🇵🇰', 165 | '🇵🇼', 166 | '🇵🇸', 167 | '🇵🇦', 168 | '🇵🇬', 169 | '🇵🇾', 170 | '🇵🇪', 171 | '🇵🇭', 172 | '🇵🇳', 173 | '🇵🇱', 174 | '🇵🇹', 175 | '🇵🇷', 176 | '🇶🇦', 177 | '🇷🇪', 178 | '🇷🇴', 179 | '🇷🇺', 180 | '🇷🇼', 181 | '🇼🇸', 182 | '🇸🇲', 183 | '🇸🇹', 184 | '🇸🇦', 185 | '🇸🇳', 186 | '🇷🇸', 187 | '🇸🇨', 188 | '🇸🇱', 189 | '🇸🇬', 190 | '🇸🇰', 191 | '🇸🇮', 192 | '🇸🇧', 193 | '🇸🇴', 194 | '🇿🇦', 195 | '🇬🇸', 196 | '🇰🇷', 197 | '🇸🇸', 198 | '🇪🇸', 199 | '🇱🇰', 200 | '🇸🇩', 201 | '🇸🇷', 202 | '🇸🇯', 203 | '🇸🇿', 204 | '🇸🇪', 205 | '🇨🇭', 206 | '🇸🇾', 207 | '🇹🇼', 208 | '🇹🇯', 209 | '🇹🇿', 210 | '🇹🇭', 211 | '🇹🇱', 212 | '🇹🇬', 213 | '🇹🇰', 214 | '🇹🇴', 215 | '🇹🇹', 216 | '🇹🇳', 217 | '🇹🇷', 218 | '🇹🇲', 219 | '🇹🇨', 220 | '🇹🇻', 221 | '🇺🇬', 222 | '🇺🇦', 223 | '🇦🇪', 224 | '🇺🇳', 225 | '🇺🇾', 226 | '🇺🇸', 227 | '🇺🇿', 228 | '🇻🇺', 229 | '🇻🇦', 230 | '🇻🇪', 231 | '🇻🇳', 232 | '🇼🇫', 233 | '🇪🇭', 234 | '🇾🇪', 235 | '🇿🇲', 236 | '🇿🇼', 237 | '🏴󠁧󠁢󠁥󠁮󠁧󠁿', 238 | '🏳️‍🌈', 239 | '🇪🇺', 240 | '🏴󠁧󠁢󠁳󠁣󠁴󠁿', 241 | ]; 242 | -------------------------------------------------------------------------------- /scripts/masterData.js: -------------------------------------------------------------------------------- 1 | /** 2 | * this is a stub file, do not edit it 3 | * see `scripts/utils.js` -> `getMasterData` 4 | */ 5 | module.exports = []; 6 | -------------------------------------------------------------------------------- /scripts/multiple-emojis.mjs: -------------------------------------------------------------------------------- 1 | import people from '../src/data.js'; 2 | 3 | function stringLength(str) { 4 | return Array.from(new Intl.Segmenter().segment(str)).length; 5 | } 6 | 7 | function checkEmojiLength(person) { 8 | if(stringLength(person.emoji) > 1 && person.emoji) { 9 | console.log(person.name, person.emoji); 10 | } 11 | } 12 | 13 | people.map(checkEmojiLength); 14 | -------------------------------------------------------------------------------- /scripts/populate-readme.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const data = require('../src/data.js'); 3 | 4 | /** @type {string} */ 5 | const readmeTemplate = fs.readFileSync('./scripts/readme-template.md', 'utf8'); 6 | const formatedData = data 7 | .map(page => `* [${page.name}](${page.url}) — ${page.description}`) 8 | .join('\r\n'); 9 | 10 | fs.writeFileSync( 11 | 'generated-readme.md', 12 | readmeTemplate.replace('###DATA_PLACEHOLDER###', formatedData) 13 | ); 14 | -------------------------------------------------------------------------------- /scripts/readme-template.md: -------------------------------------------------------------------------------- 1 | # → Visit [uses.tech](https://uses.tech) for a good time 2 | 3 | ## Please read [Contribution Guide](https://github.com/wesbos/awesome-uses/blob/master/contribution-guide.md) before submitting a PR. 4 | A list of `/uses` pages detailing developer setups, gear, software and configs. 5 | 6 | Add your own `/uses` page in [data.js](https://github.com/wesbos/awesome-uses/blob/master/src/data.js). 7 | 8 | This readme is auto-generated from the data.js file, so please don't PR this file. 9 | 10 | ``` 11 | ▄████████ ▄█ █▄ ▄████████ ▄████████ ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ 12 | ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ 13 | ███ ███ ███ ███ ███ █▀ ███ █▀ ███ ███ ███ ███ ███ ███ █▀ 14 | ███ ███ ███ ███ ▄███▄▄▄ ███ ███ ███ ███ ███ ███ ▄███▄▄▄ 15 | ▀███████████ ███ ███ ▀▀███▀▀▀ ▀███████████ ███ ███ ███ ███ ███ ▀▀███▀▀▀ 16 | ███ ███ ███ ███ ███ █▄ ███ ███ ███ ███ ███ ███ ███ █▄ 17 | ███ ███ ███ ▄█▄ ███ ███ ███ ▄█ ███ ███ ███ ███ ███ ███ ███ ███ 18 | ███ █▀ ▀███▀███▀ ██████████ ▄████████▀ ▀██████▀ ▀█ ███ █▀ ██████████ 19 | 20 | ███ █▄ ▄████████ ▄████████ ▄████████ 21 | ███ ███ ███ ███ ███ ███ ███ ███ 22 | ███ ███ ███ █▀ ███ █▀ ███ █▀ 23 | ███ ███ ███ ▄███▄▄▄ ███ 24 | ███ ███ ▀███████████ ▀▀███▀▀▀ ▀███████████ 25 | ███ ███ ███ ███ █▄ ███ 26 | ███ ███ ▄█ ███ ███ ███ ▄█ ███ 27 | ████████▀ ▄████████▀ ██████████ ▄████████▀ 28 | 29 | ``` 30 | 31 | # Awesome Uses ![Awesome][awesome-badge] 32 | 33 | ###DATA_PLACEHOLDER### 34 | 35 | [awesome-badge]: https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg 36 | -------------------------------------------------------------------------------- /scripts/utils.js: -------------------------------------------------------------------------------- 1 | const exec = require('@actions/exec'); 2 | const core = require('@actions/core'); 3 | const github = require('@actions/github'); 4 | const Joi = require('joi'); 5 | const http = require('http'); 6 | const https = require('https'); 7 | const flags = require('./flags.js'); 8 | 9 | async function getCurrentBranchName() { 10 | let myOutput = ''; 11 | let myError = ''; 12 | 13 | const options = { 14 | silent: true, 15 | listeners: { 16 | stdout: (data) => (myOutput += data.toString()), 17 | stderr: (data) => (myError += data.toString()), 18 | }, 19 | }; 20 | 21 | await exec.exec('git rev-parse --abbrev-ref HEAD', [], options); 22 | return myOutput.trim(); 23 | } 24 | 25 | /** on master branch will return an empty array */ 26 | module.exports.getMasterData = async function () { 27 | const options = { silent: true }; 28 | const curentBranchName = await getCurrentBranchName(); 29 | // when on a branch/PR different from master 30 | // will populate scripts/masterData.js with src/data.js from master 31 | if (curentBranchName !== 'master') { 32 | core.info('Executing action on branch different from master'); 33 | await exec.exec('mv src/data.js src/tmpData.js', [], options); 34 | await exec.exec('git fetch origin master', [], options); 35 | await exec.exec('git restore --source=FETCH_HEAD src/data.js', [], options); 36 | await exec.exec('mv src/data.js scripts/masterData.js', [], options); 37 | await exec.exec('mv src/tmpData.js src/data.js', [], options); 38 | } else { 39 | core.info('Executing action on master branch'); 40 | } 41 | 42 | // eslint-disable-next-line global-require 43 | const masterData = require('./masterData.js'); 44 | 45 | // restore `scripts/masterData.js` after was loaded 46 | if (curentBranchName !== 'master') { 47 | await exec.exec('git restore scripts/masterData.js', [], options); 48 | } 49 | 50 | return masterData; 51 | }; 52 | 53 | module.exports.Schema = Joi.object({ 54 | name: Joi.string().required(), 55 | description: Joi.string().required(), 56 | url: Joi.string() 57 | .uri() 58 | .required() 59 | .pattern(/(use|uses|using|setup|environment|^https:\/\/gist.github.com\/)/), 60 | country: Joi.string() 61 | .valid(...flags) 62 | .required(), 63 | twitter: Joi.string().pattern(new RegExp(/^@?(\w){1,15}$/)), 64 | emoji: Joi.string().allow(''), 65 | computer: Joi.string().valid('apple', 'windows', 'linux', 'bsd'), 66 | phone: Joi.string().valid('iphone', 'android', 'windowsphone', 'flipphone'), 67 | tags: Joi.array().items(Joi.string()), 68 | }); 69 | 70 | module.exports.getStatusCode = function (url) { 71 | const client = url.startsWith('https') ? https : http; 72 | return new Promise((resolve, reject) => { 73 | const REQUEST_TIMEOUT = 10000; 74 | const timeoutId = setTimeout( 75 | reject, 76 | REQUEST_TIMEOUT, 77 | new Error('Request timed out') 78 | ); 79 | 80 | client 81 | .get(url, (res) => { 82 | clearTimeout(timeoutId); 83 | resolve(res.statusCode); 84 | }) 85 | .on('error', (err) => reject(err)); 86 | }); 87 | }; 88 | 89 | // If there are errors, will fail the action & add a comment detailing the issues 90 | // If there are no errors, will leave an "all-clear" comment with relevant URLs (to ease a potential manual check) 91 | module.exports.communicateValidationOutcome = async function ( 92 | errors, 93 | failedUrls, 94 | changedData 95 | ) { 96 | let comment = ''; 97 | if (errors.length || failedUrls.length) { 98 | core.setFailed('Action failed with errors, see logs & comment'); 99 | 100 | comment += [ 101 | '🚨 We have detected the following issues, let us (contributors) know if you need support or clarifications:', 102 | ...errors.map((e) => `- ${e.message}`), 103 | ...failedUrls.map((url) => `- URL is invalid: ${url}`), 104 | ].join('\n'); 105 | } else { 106 | comment += [ 107 | '✅ Automatic validation checks succeeded for:', 108 | // Comment with the URLs of users that have changed 109 | // for easy access, way easier than taking a screenshot 110 | ...changedData.map(({ name, url }) => `- ${name}, ${url}`), 111 | ].join('\n'); 112 | } 113 | 114 | 115 | const { GITHUB_TOKEN } = process.env; 116 | const { context } = github; 117 | if (!GITHUB_TOKEN || !context.payload.pull_request) { 118 | core.error( 119 | 'Cannot add a comment if GITHUB_TOKEN or context.payload.pull_request is not set' 120 | ); 121 | core.info(`Comment contents:\n${comment}`); 122 | return; 123 | } 124 | // TODO: Re-enable a way to comment on PRs that tests passed. 125 | // const pullRequestNumber = context.payload.pull_request.number; 126 | 127 | // const octokit = new github.getOctokit(GITHUB_TOKEN); 128 | // await octokit.rest.pulls.createReviewComment({ 129 | // ...context.repo, 130 | // pullRequestNumber, 131 | // body: comment, 132 | // }); 133 | }; 134 | -------------------------------------------------------------------------------- /server.ts: -------------------------------------------------------------------------------- 1 | // Import path interpreted by the Remix compiler 2 | import * as build from '@remix-run/dev/server-build'; 3 | import { createRequestHandler } from '@netlify/remix-edge-adapter'; 4 | 5 | export default createRequestHandler({ 6 | build, 7 | // process.env.NODE_ENV is provided by Remix at compile time 8 | mode: process.env.NODE_ENV, 9 | }); 10 | 11 | export const config = { 12 | cache: 'manual', 13 | path: '/*', 14 | // Pass all assets to the netlify asset server 15 | excluded_patterns: [ 16 | '^\\/_assets\\/[^\\/]*$', 17 | '^\\/shared\\/[^\\/]*$', 18 | '^\\/build\\/[^\\/]*$', 19 | // '^\\/**\\/[^\\/]*$', 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /src/components/BackToTop.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react'; 2 | 3 | function useScrollPosition() { 4 | const [percent, setPercent] = useState(0); 5 | 6 | function handleScroll(event) { 7 | const scrollTop = 8 | document.scrollingElement.scrollHeight - 9 | document.documentElement.clientHeight; 10 | const howFar = document.documentElement.scrollTop / scrollTop; 11 | setPercent(howFar); 12 | } 13 | 14 | useEffect(() => { 15 | // listen for window scroll event 16 | document.addEventListener('scroll', handleScroll); 17 | return () => { 18 | document.removeEventListener('scroll', handleScroll); 19 | }; 20 | }); 21 | 22 | return percent; 23 | } 24 | 25 | export default function BackToTop() { 26 | const percent = useScrollPosition(); 27 | return ( 28 | 0.25 ? 'Show' : ''}`} href="#top" title="Back To Top"> 29 | ↑ 30 | 31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /src/components/FavIcon.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState, useRef } from 'react'; 2 | 3 | function useInterval(callback, delay) { 4 | const savedCallback = useRef(); 5 | 6 | // Remember the latest callback. 7 | useEffect(() => { 8 | savedCallback.current = callback; 9 | }, [callback]); 10 | 11 | // Set up the interval. 12 | useEffect(() => { 13 | function tick() { 14 | savedCallback.current(); 15 | } 16 | if (delay !== null) { 17 | const id = setInterval(tick, delay); 18 | return () => clearInterval(id); 19 | } 20 | }, [delay]); 21 | } 22 | 23 | function useWickedFavIcon() { 24 | const letters = [...'/USES!💩']; 25 | const [index, setIndex] = useState(0); 26 | const canvasRef = useRef(0); 27 | useInterval(() => { 28 | setIndex(index >= letters.length - 1 ? 0 : index + 1); 29 | const letter = letters[index]; 30 | const canvas = canvasRef.current; 31 | const ctx = canvas.getContext('2d'); 32 | ctx.fillStyle = '#203447'; 33 | ctx.fillRect(0, 0, canvas.width, canvas.height); 34 | ctx.fillStyle = '#ffc600'; 35 | ctx.font = `310px monospace`; 36 | ctx.fillText(letter, 10, canvas.height - 10); 37 | const data = canvas.toDataURL('image/png'); 38 | 39 | const link = document.querySelector("link[rel*='icon']"); 40 | link.type = 'image/x-icon'; 41 | link.href = data; 42 | }, 350); 43 | return { letter: letters[index], index, canvasRef }; 44 | } 45 | 46 | export default function FavIcon() { 47 | const { /* letter, index, */ canvasRef } = useWickedFavIcon(); 48 | return ( 49 |
50 | 57 |
58 | ); 59 | } 60 | -------------------------------------------------------------------------------- /src/components/Person.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect, useRef } from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import { name } from 'country-emoji'; 4 | import { useParams } from '@remix-run/react'; 5 | import * as icons from '../util/icons'; 6 | 7 | export default function Person({ person }) { 8 | const url = new URL(person.url); 9 | const twitter = person.twitter 10 | ? `https://unavatar.io/${person.twitter.replace('@', '')}` 11 | : null; 12 | const website = `https://unavatar.io/${url.host}`; 13 | const unavatar = person.twitter 14 | ? `${twitter}?fallback=${website}&ttl=28d` 15 | : website; 16 | // const img = `https://images.weserv.nl/?url=${unavatar}&w=100&l=9&af&il&n=-1`; 17 | const img = unavatar; 18 | const { tag: currentTag } = useParams(); 19 | return ( 20 |
24 |
25 |
26 | {person.name} { 32 | currentTarget.onerror = null; // prevents looping 33 | currentTarget.src = '/default.png'; 34 | }} 35 | loading="lazy" 36 | /> 37 |

38 | 39 | {person.name} 40 | {' '} 41 | {person.emoji} 42 |

43 | 49 | {url.host} 50 | {url.pathname.replace(/\/$/, '')} 51 | 52 |
53 |

{person.description}

54 |
    55 | {person.tags.map((tag) => ( 56 |
  • 60 | {tag} 61 |
  • 62 | ))} 63 |
64 |
65 |
66 | 67 | {person.country} 68 | 69 | {person.computer && ( 70 | 71 | {person.computer} 76 | 77 | )} 78 | {person.phone && ( 79 | 80 | {person.phone} 81 | 82 | )} 83 | 84 | {person.twitter && ( 85 |
86 | 91 | @ 92 | {person.twitter.replace('@', '')} 93 | 94 |
95 | )} 96 |
97 |
98 | ); 99 | } 100 | 101 | Person.propTypes = { 102 | person: PropTypes.shape({ 103 | github: PropTypes.string, 104 | name: PropTypes.string, 105 | url: PropTypes.string, 106 | emoji: PropTypes.string, 107 | description: PropTypes.string, 108 | tags: PropTypes.arrayOf(PropTypes.string), 109 | country: PropTypes.string, 110 | computer: PropTypes.oneOf(['apple', 'windows', 'linux']), 111 | phone: PropTypes.oneOf(['iphone', 'android', 'windowsphone', 'flipphone']), 112 | twitter(props, propName, componentName) { 113 | if (!/^@?(\w){1,15}$/.test(props[propName])) { 114 | return new Error( 115 | `Invalid prop \`${propName}\` supplied to` + 116 | ` \`${componentName}\`. This isn't a legit twitter handle.` 117 | ); 118 | } 119 | }, 120 | }), 121 | }; 122 | -------------------------------------------------------------------------------- /src/components/Topics.js: -------------------------------------------------------------------------------- 1 | import { Link, useParams, useRouteLoaderData } from '@remix-run/react'; 2 | import * as icons from '../util/icons'; 3 | 4 | export default function Topics() { 5 | const { tags, countries, devices } = useRouteLoaderData("root"); 6 | const params = useParams(); 7 | const currentTag = params.tag || 'all'; 8 | 9 | return ( 10 |
11 | {tags.map((tag) => ( 12 | 20 | {tag.name} 21 | {tag.count} 22 | 23 | ))} 24 | 25 | {countries.map((tag) => ( 26 | 33 | {tag.emoji} 34 | {tag.count} 35 | 36 | ))} 37 | 38 | {devices.map((tag) => ( 39 | 46 | {tag.name} 47 | {tag.count} 48 | 49 | ))} 50 |
51 | ); 52 | } 53 | -------------------------------------------------------------------------------- /src/components/header.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import Helmet from 'react-helmet'; 4 | import FavIcon from './FavIcon'; 5 | 6 | function Header({ siteTitle, siteDescription, siteUrl }) { 7 | 8 | return ( 9 |
10 | 11 |
12 |

13 | /uses 14 |

15 |

16 | A list of /uses pages detailing developer setups, gear, 17 | software and configs. 18 |

19 |
20 |
21 | ); 22 | } 23 | Header.propTypes = { 24 | siteTitle: PropTypes.string, 25 | siteDescription: PropTypes.string, 26 | siteUrl: PropTypes.string, 27 | }; 28 | 29 | Header.defaultProps = { 30 | siteTitle: '', 31 | siteDescription: '', 32 | siteUrl: '', 33 | }; 34 | 35 | export default Header; 36 | -------------------------------------------------------------------------------- /src/components/layout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import PropTypes from 'prop-types'; 3 | import Header from './header'; 4 | import 'normalize.css'; 5 | 6 | export default function Layout({ children }) { 7 | return ( 8 |
9 |
10 | {children} 11 |
12 |
13 |

14 | Made by Wes Bos with{" "} 15 | Remix ©{" "} 16 | {new Date().getFullYear()} 17 |

18 |

19 | Source on{" "} 20 | GitHub. Add 21 | yourself! 22 |

23 |

24 | Icons from icons8.com 25 |

26 |

27 | Domain provided by .Tech 28 |

29 |

30 | Hosted on Netlify 31 |

32 |

Rendered Fresh

33 |
34 |
35 |
36 | ); 37 | }; 38 | 39 | Layout.propTypes = { 40 | children: PropTypes.node.isRequired, 41 | }; 42 | -------------------------------------------------------------------------------- /src/entry.client.tsx: -------------------------------------------------------------------------------- 1 | import { RemixBrowser } from '@remix-run/react'; 2 | import { startTransition, StrictMode } from 'react'; 3 | import { hydrateRoot } from 'react-dom/client'; 4 | const hydrate = () => { 5 | startTransition(() => { 6 | hydrateRoot( 7 | document, 8 | 9 | 10 | 11 | ); 12 | }); 13 | }; 14 | 15 | if (window.requestIdleCallback) { 16 | window.requestIdleCallback(hydrate); 17 | } else { 18 | // Safari doesn't support requestIdleCallback 19 | // https://caniuse.com/requestidlecallback 20 | window.setTimeout(hydrate, 1); 21 | } 22 | -------------------------------------------------------------------------------- /src/entry.server.tsx: -------------------------------------------------------------------------------- 1 | import type { EntryContext } from '@remix-run/node'; 2 | import { RemixServer } from '@remix-run/react'; 3 | import { renderToReadableStream } from 'react-dom/server'; 4 | 5 | const ABORT_DELAY = 5000; 6 | 7 | export async function streamToText(stream: ReadableStream): Promise { 8 | let result = ''; 9 | const reader = stream.pipeThrough(new TextDecoderStream()).getReader(); 10 | while (true) { // eslint-disable-line no-constant-condition 11 | const { done, value } = await reader.read(); 12 | if (done) { 13 | break; 14 | } 15 | 16 | result += value; 17 | } 18 | return result; 19 | } 20 | 21 | type CachedResponse = { 22 | html: string; 23 | date: Date; 24 | } 25 | const cache = new Map(); 26 | 27 | export default async function handleRequest( 28 | request: Request, 29 | responseStatusCode: number, 30 | responseHeaders: Headers, 31 | remixContext: EntryContext 32 | ) { 33 | // check if we have a cached response in memory 34 | const cachedResponse = cache.get(request.url); 35 | if (cachedResponse) { 36 | // console.log('Serving from cache', request.url); 37 | // if we have a cached response, check if it's less than 5 seconds old 38 | const now = new Date(); 39 | const diff = now.getTime() - cachedResponse.date.getTime(); 40 | if (true || diff < 5000) { 41 | // if it's less than 5 seconds old, return the cached response 42 | responseHeaders.set('Content-Type', 'text/html'); 43 | return new Response(cachedResponse.html, { 44 | headers: responseHeaders, 45 | status: responseStatusCode, 46 | }); 47 | } 48 | } 49 | 50 | let didError = false; 51 | const chunks: Uint8Array[] = []; 52 | 53 | const body = await renderToReadableStream( 54 | , 55 | { 56 | onError: (error: unknown) => { 57 | didError = true; 58 | console.error(error); 59 | } 60 | } 61 | ); 62 | 63 | // tee the stream so we can cache it and send it to the client 64 | const [toReponse, toCache] = body.tee(); 65 | 66 | streamToText(toCache).then(html => { 67 | console.log('Caching', request.url); 68 | cache.set(request.url, { 69 | html: html.replace('Rendered Fresh', `Rendered from cache ${new Date().toISOString()}`), 70 | date: new Date(), 71 | }); 72 | }); 73 | 74 | const headers = new Headers(responseHeaders); 75 | headers.set("Content-Type", "text/html"); 76 | const response = new Response(toReponse, { 77 | headers, 78 | status: didError ? 500 : responseStatusCode, 79 | }); 80 | return response; 81 | } 82 | -------------------------------------------------------------------------------- /src/fonts/fira_mono-regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/fonts/fira_mono-regular-webfont.woff -------------------------------------------------------------------------------- /src/fonts/fira_mono-regular-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/fonts/fira_mono-regular-webfont.woff2 -------------------------------------------------------------------------------- /src/fonts/fira_mono-regular_italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/fonts/fira_mono-regular_italic-webfont.woff -------------------------------------------------------------------------------- /src/fonts/fira_mono-regular_italic-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/fonts/fira_mono-regular_italic-webfont.woff2 -------------------------------------------------------------------------------- /src/http/get-index/index.js: -------------------------------------------------------------------------------- 1 | // Enable secure sessions, express-style middleware, and more: 2 | // https://docs.begin.com/en/functions/http/ 3 | // 4 | // let begin = require('@architect/functions') 5 | 6 | let html = ` 7 | 8 | 9 | 10 | 11 | Hi! 12 | 13 | 14 | 15 | 16 |

17 | Hello world! 18 |

19 |

20 | Your new route is ready to go! 21 |

22 |

23 | Learn more about building Begin HTTP functions here. 24 |

25 | 26 | 27 | ` 28 | 29 | // HTTP function 30 | exports.handler = async function http(req) { 31 | console.log(req) 32 | return { 33 | headers: { 34 | 'content-type': 'text/html; charset=utf8', 35 | 'cache-control': 'no-cache, no-store, must-revalidate, max-age=0, s-maxage=0' 36 | }, 37 | body: html 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/http/get-index/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "begin-app-get-index", 3 | "requires": true, 4 | "lockfileVersion": 1, 5 | "dependencies": { 6 | "@architect/functions": { 7 | "version": "3.4.10", 8 | "resolved": "https://registry.npmjs.org/@architect/functions/-/functions-3.4.10.tgz", 9 | "integrity": "sha512-8pYTZihYxEilIE9dvtor7+n4pgAgEh7NchX6ySrGbLFkS2k6W7b1HJQJ9fLHuARi263sARVaJ63eXd5G7WS6Dw==", 10 | "requires": { 11 | "@architect/parser": "^1.2.2", 12 | "cookie": "^0.4.0", 13 | "cookie-signature": "^1.1.0", 14 | "csrf": "^3.1.0", 15 | "mime-types": "^2.1.25", 16 | "node-webtokens": "^1.0.3", 17 | "run-parallel": "^1.1.9", 18 | "run-waterfall": "^1.1.6", 19 | "uid-safe": "^2.1.5" 20 | } 21 | }, 22 | "@architect/parser": { 23 | "version": "1.2.2", 24 | "resolved": "https://registry.npmjs.org/@architect/parser/-/parser-1.2.2.tgz", 25 | "integrity": "sha512-z8M+bJCJLWpY/iNoXPPqsOlqF8zMgbmk3CLHIChSa3nnUlvx36a2bmTuh/+CiU/q4Ew7d6dHqpQB4SHtKt/A/w==" 26 | }, 27 | "@begin/data": { 28 | "version": "1.1.4", 29 | "resolved": "https://registry.npmjs.org/@begin/data/-/data-1.1.4.tgz", 30 | "integrity": "sha512-srUt6HFxancYgdZiolm7YIl3Hw7DqxxKHScFAb+eKQib5DxH70kXp2qtR/kPVtC4uZHWvPu7auCtIphzqqqUsg==", 31 | "requires": { 32 | "@architect/parser": "^1.2.0", 33 | "hashids": "^1.2.2", 34 | "run-parallel": "^1.1.9", 35 | "run-waterfall": "^1.1.6" 36 | } 37 | }, 38 | "cookie": { 39 | "version": "0.4.0", 40 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 41 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 42 | }, 43 | "cookie-signature": { 44 | "version": "1.1.0", 45 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.1.0.tgz", 46 | "integrity": "sha512-Alvs19Vgq07eunykd3Xy2jF0/qSNv2u7KDbAek9H5liV1UMijbqFs5cycZvv5dVsvseT/U4H8/7/w8Koh35C4A==" 47 | }, 48 | "csrf": { 49 | "version": "3.1.0", 50 | "resolved": "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz", 51 | "integrity": "sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==", 52 | "requires": { 53 | "rndm": "1.2.0", 54 | "tsscmp": "1.0.6", 55 | "uid-safe": "2.1.5" 56 | } 57 | }, 58 | "hashids": { 59 | "version": "1.2.2", 60 | "resolved": "https://registry.npmjs.org/hashids/-/hashids-1.2.2.tgz", 61 | "integrity": "sha512-dEHCG2LraR6PNvSGxosZHIRgxF5sNLOIBFEHbj8lfP9WWmu/PWPMzsip1drdVSOFi51N2pU7gZavrgn7sbGFuw==" 62 | }, 63 | "mime-db": { 64 | "version": "1.42.0", 65 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", 66 | "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" 67 | }, 68 | "mime-types": { 69 | "version": "2.1.25", 70 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", 71 | "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", 72 | "requires": { 73 | "mime-db": "1.42.0" 74 | } 75 | }, 76 | "node-webtokens": { 77 | "version": "1.0.3", 78 | "resolved": "https://registry.npmjs.org/node-webtokens/-/node-webtokens-1.0.3.tgz", 79 | "integrity": "sha512-koyo7/sqKOXyl+nfV0sNojLSgMC//VsuQXBSRZ+Whe0aYonBSQ2F/+HVSlVashJOXHYNru/4gk6eXebeYmqoUw==" 80 | }, 81 | "random-bytes": { 82 | "version": "1.0.0", 83 | "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", 84 | "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" 85 | }, 86 | "rndm": { 87 | "version": "1.2.0", 88 | "resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz", 89 | "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=" 90 | }, 91 | "run-parallel": { 92 | "version": "1.1.9", 93 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", 94 | "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" 95 | }, 96 | "run-waterfall": { 97 | "version": "1.1.6", 98 | "resolved": "https://registry.npmjs.org/run-waterfall/-/run-waterfall-1.1.6.tgz", 99 | "integrity": "sha512-dApPbpIK0hbFi2zqfJxrsnfmJW2HCQHFrSsmqF3Fp9TKm5WVf++zE6BSw0hPcA7rPapO37h12Swk2E6Va3tF7Q==" 100 | }, 101 | "tsscmp": { 102 | "version": "1.0.6", 103 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", 104 | "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" 105 | }, 106 | "uid-safe": { 107 | "version": "2.1.5", 108 | "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", 109 | "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", 110 | "requires": { 111 | "random-bytes": "~1.0.0" 112 | } 113 | } 114 | } 115 | } -------------------------------------------------------------------------------- /src/http/get-index/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "begin-app-get-index", 3 | "dependencies": { 4 | "@architect/functions": "latest", 5 | "@begin/data": "latest" 6 | } 7 | } -------------------------------------------------------------------------------- /src/images/android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/images/android.png -------------------------------------------------------------------------------- /src/images/apple.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/flip-phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/images/flip-phone.png -------------------------------------------------------------------------------- /src/images/gatsby-astronaut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/images/gatsby-astronaut.png -------------------------------------------------------------------------------- /src/images/gatsby-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/images/gatsby-icon.png -------------------------------------------------------------------------------- /src/images/iphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/images/iphone.png -------------------------------------------------------------------------------- /src/images/linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/images/linux.png -------------------------------------------------------------------------------- /src/images/twitter-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/images/twitter-card.png -------------------------------------------------------------------------------- /src/images/windows.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/windowsphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sunstrike-spec/awesome/981b673768c7da43f32d8fb3d4dff527d0d86636/src/images/windowsphone.png -------------------------------------------------------------------------------- /src/pages/404.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import Layout from '../components/layout'; 4 | 5 | const NotFoundPage = () => ( 6 | 7 |

WHAT R U DOING HERE

8 |
9 | ); 10 | 11 | export default NotFoundPage; 12 | -------------------------------------------------------------------------------- /src/root.tsx: -------------------------------------------------------------------------------- 1 | import type { LinksFunction, MetaFunction } from '@remix-run/node'; 2 | import { 3 | Links, 4 | LiveReload, 5 | Meta, 6 | Outlet, 7 | Scripts 8 | } from '@remix-run/react'; 9 | import Layout from './components/layout'; 10 | import styles from './styles.css'; 11 | import { countries, devices, tags } from './util/stats'; 12 | import twitterCard from './images/twitter-card.png'; 13 | 14 | export const links: LinksFunction = () => [ 15 | { rel: 'stylesheet', href: styles }, 16 | ]; 17 | 18 | export function loader() { 19 | return { 20 | tags: tags(), 21 | countries: countries(), 22 | devices: devices(), 23 | } 24 | } 25 | 26 | const metaData = { 27 | description: `A list of /uses pages detailing developer setups.`, 28 | siteUrl: 'https://uses.tech', 29 | author: `@wesbos`, 30 | title: '/uses', 31 | } 32 | 33 | export const meta: MetaFunction = () => ({ 34 | charset: 'utf-8', 35 | title: '/uses', 36 | viewport: 'width=device-width,initial-scale=1', 37 | }); 38 | 39 | export default function App() { 40 | return ( 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | {/* */} 58 | 59 | 60 | 61 | 62 | 63 | ); 64 | } 65 | -------------------------------------------------------------------------------- /src/routes/index.tsx: -------------------------------------------------------------------------------- 1 | import { useLoaderData, useParams } from '@remix-run/react'; 2 | import { json, LoaderArgs } from '@remix-run/server-runtime'; 3 | import React, { useContext } from 'react'; 4 | import Topics from '../components/Topics'; 5 | import BackToTop from '../components/BackToTop'; 6 | import Person from '../components/Person'; 7 | import { getPeople } from 'src/util/stats'; 8 | 9 | export async function loader({ params }: LoaderArgs) { 10 | const people = getPeople(params.tag); 11 | return {people}; 12 | } 13 | 14 | export default function Index() { 15 | const { people } = useLoaderData(); 16 | return ( 17 | <> 18 | 19 |
20 | {people.map(person => ( 21 | 22 | ))} 23 |
24 | 25 | 26 | ); 27 | } 28 | -------------------------------------------------------------------------------- /src/routes/like/$tag.tsx: -------------------------------------------------------------------------------- 1 | export { default, loader } from '../index'; 2 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | /* Fonts */ 2 | @font-face { 3 | font-family: 'Fira Mono'; 4 | font-weight: 400; 5 | font-style: normal; 6 | src: url('./fonts/fira_mono-regular-webfont.woff2') format('woff2'), 7 | url('./fonts/fira_mono-regular-webfont.woff') format('woff'); 8 | font-display: swap; 9 | } 10 | @font-face { 11 | font-family: 'Fira Mono'; 12 | font-weight: 400; 13 | font-style: italic; 14 | src: url('./fonts/fira_mono-regular_italic-webfont.woff2') format('woff2'), url('../src/fonts/fira_mono-regular_italic-webfont.woff') format('woff'); 15 | font-display: swap; 16 | } 17 | 18 | html { 19 | box-sizing: border-box; 20 | } 21 | *, *:before, *:after { 22 | box-sizing: inherit; 23 | } 24 | 25 | /* Global Styles */ 26 | :root { 27 | --purple: #b066ff; 28 | --blue: #203447; 29 | --lightblue: #1f4662; 30 | --blue2: #1C2F40; 31 | --yellow: #ffc600; 32 | --pink: #EB4471; 33 | --vape: #d7d7d7; 34 | background: var(--blue); 35 | color: var(--vape); 36 | font-family: 'Fira Mono', monospace; 37 | font-weight: 100; 38 | font-size: 10px; 39 | scroll-behavior: smooth; 40 | } 41 | 42 | body { 43 | font-size: 2rem; 44 | overflow-y: scroll; 45 | margin: 0; 46 | } 47 | 48 | h1, 49 | h2, 50 | h3, 51 | h4, 52 | h5, 53 | h6 { 54 | font-weight: 500; 55 | } 56 | 57 | a { 58 | color: var(--yellow); 59 | text-decoration-color: var(--pink); 60 | font-style: italic; 61 | } 62 | 63 | code { 64 | background: var(--lightblue); 65 | } 66 | 67 | ::selection { 68 | background: var(--yellow); 69 | color: var(--blue); 70 | } 71 | 72 | body::-webkit-scrollbar { 73 | width: 12px; 74 | } 75 | 76 | html { 77 | scrollbar-width: thin; 78 | scrollbar-color: var(--yellow) var(--blue); 79 | } 80 | 81 | body::-webkit-scrollbar-track { 82 | background: var(--blue); 83 | } 84 | 85 | body::-webkit-scrollbar-thumb { 86 | background-color: var(--yellow); 87 | border-radius: 6px; 88 | border: 3px solid var(--blue); 89 | } 90 | 91 | 92 | .PersonWrapper { 93 | border: 1px solid var(--vape); 94 | border-radius: 5.34334px; 95 | box-shadow: 10px -10px 0 var(--blue2); 96 | display: grid; 97 | grid-template-rows: 1fr auto auto; 98 | } 99 | 100 | .PersonInner { 101 | padding: 2rem; 102 | 103 | & h3 { 104 | margin: 0; 105 | 106 | & a:visited { 107 | color: var(--purple); 108 | } 109 | } 110 | 111 | & header { 112 | display: grid; 113 | grid-template-rows: auto auto; 114 | grid-template-columns: auto 1fr; 115 | grid-gap: 0 1rem; 116 | 117 | @media all and (max-width: 400px) { 118 | grid-template-columns: 1fr; 119 | } 120 | 121 | & img { 122 | grid-row: 1 / -1; 123 | font-size: 1rem; 124 | } 125 | 126 | & .displayLink { 127 | white-space: nowrap; 128 | overflow: hidden; 129 | text-overflow: ellipsis; 130 | text-decoration: none; 131 | color: var(--vape); 132 | letter-spacing: 1px; 133 | font-size: 1.2rem; 134 | text-overflow: ellipsis; 135 | max-width: 100%; 136 | overflow: hidden; 137 | 138 | &:hover, 139 | &:visited { 140 | color: var(--pink); 141 | } 142 | } 143 | } 144 | } 145 | 146 | .PersonDeets { 147 | display: flex; 148 | border-top: 1px solid var(--vape); 149 | 150 | >* { 151 | flex: 1; 152 | border-left: 1px solid var(--vape); 153 | text-align: center; 154 | padding: 1rem; 155 | display: grid; 156 | align-items: center; 157 | justify-content: center; 158 | grid-template-columns: auto auto; 159 | 160 | &:first-child { 161 | border-left: 0; 162 | } 163 | } 164 | 165 | & a { 166 | color: var(--vape); 167 | } 168 | 169 | & .country { 170 | font-size: 3rem; 171 | padding-top: 2rem; 172 | } 173 | 174 | & .phone { 175 | padding: 0; 176 | } 177 | 178 | @media all and (max-width: 400px) { 179 | display: grid; 180 | grid-template-columns: 1fr 1fr; 181 | 182 | >*:nth-child(1), 183 | >*:nth-child(2) { 184 | /* lol */ 185 | border-bottom: 1px solid var(--vape); 186 | } 187 | } 188 | } 189 | 190 | .TwitterHandle { 191 | font-size: 1.24323423426928098420394802rem; 192 | & .at { 193 | color: var(--yellow); 194 | margin-right: 2px; 195 | } 196 | } 197 | 198 | .Tags { 199 | list-style-type: none; 200 | margin: 0; 201 | padding: 0; 202 | display: flex; 203 | flex-wrap: wrap; 204 | } 205 | 206 | .Tag { 207 | background: var(--pink); 208 | margin: 2px; 209 | border-radius: 3px; 210 | font-size: 1.7rem; 211 | text-decoration: none; 212 | &.small { 213 | font-size: 1.2rem; 214 | } 215 | padding: 5px; 216 | color: hsla(0, 100%, 100%, 0.8); 217 | transition: background-color 0.2s; 218 | display: grid; 219 | grid-template-columns: 1fr auto; 220 | align-items: center; 221 | 222 | & input { 223 | display: none; 224 | } 225 | &.currentTag { 226 | background: var(--yellow); 227 | color: hsla(0, 100%, 0%, 0.8); 228 | } 229 | } 230 | 231 | .TagEmoji { 232 | transform: scale(1.45); 233 | } 234 | 235 | .TagCount { 236 | background: var(--blue); 237 | font-size: 1rem; 238 | color: white; 239 | padding: 2px; 240 | border-radius: 2px; 241 | margin-left: 5px; 242 | } 243 | 244 | .BackToTopLink { 245 | position: fixed; 246 | bottom: 1%; 247 | right: 1%; 248 | color: white; 249 | background: rgba(0, 0, 0, 0.5); 250 | cursor: pointer; 251 | border-radius: 3px; 252 | padding: 1rem; 253 | transition: opacity 0.2s; 254 | opacity: 0; 255 | text-decoration: none; 256 | 257 | &.Show { 258 | opacity: 1; 259 | } 260 | 261 | @media screen and (max-width: 500px) { 262 | display: none; 263 | } 264 | } 265 | 266 | .HeaderWrapper { 267 | text-align: center; 268 | 269 | & h1 { 270 | font-size: 6rem; 271 | } 272 | } 273 | 274 | .Main { 275 | display: grid; 276 | grid-gap: 3rem; 277 | max-width: 1900px; 278 | padding: 0 3rem; 279 | margin: 5rem auto; 280 | } 281 | 282 | .People { 283 | display: grid; 284 | grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); 285 | grid-gap: 5rem; 286 | 287 | @media all and (max-width: 400px) { 288 | grid-template-columns: 1fr; 289 | } 290 | } 291 | -------------------------------------------------------------------------------- /src/util/icons.js: -------------------------------------------------------------------------------- 1 | import iphone from '../images/iphone.png'; 2 | import android from '../images/android.png'; 3 | import windowsphone from '../images/windowsphone.png'; 4 | import windows from '../images/windows.svg'; 5 | import apple from '../images/apple.svg'; 6 | import linux from '../images/linux.png'; 7 | import flipphone from '../images/flip-phone.png'; 8 | 9 | export { iphone, android, windowsphone, windows, apple, linux, flipphone }; 10 | -------------------------------------------------------------------------------- /src/util/stats.ts: -------------------------------------------------------------------------------- 1 | import { name } from 'country-emoji'; 2 | import people from '../data.js'; 3 | type Person = typeof people[0]; 4 | 5 | function merge(prop: string) { 6 | return function (acc: any, obj: Record) { 7 | // Remove duplicated values. 8 | const values = [...new Set(obj[prop])]; 9 | return [...values, ...acc]; 10 | }; 11 | } 12 | 13 | function countInstances(acc, tag) { 14 | acc[tag] = acc[tag] ? acc[tag] + 1 : 1; 15 | return acc; 16 | } 17 | 18 | export function normalizeTag(tag) { 19 | return ( 20 | tag 21 | // Common mispellings currently seen in the data 22 | // Do we want to go this far? 23 | .replace(/frontend/i, 'Front End') 24 | .replace(/TailwindCSS/i, 'Tailwind CSS') 25 | .replace(/backend/i, 'Back End') 26 | .replace(/fullstack/i, 'Full Stack') 27 | .replace(/a11y/i, 'Accessibility') 28 | .replace(/next.?js/i, 'Next') 29 | .replace(/react.?js/i, 'React') 30 | // Or is lowercase enough? 31 | .toLowerCase() 32 | ); 33 | } 34 | 35 | export function countries() { 36 | const data = people 37 | .map((person) => ({ 38 | name: name(person.country), 39 | emoji: person.country, 40 | })) 41 | .reduce((acc, country) => { 42 | if (acc[country.name]) { 43 | // exists, update 44 | acc[country.name].count += 1; 45 | } else { 46 | acc[country.name] = { 47 | ...country, 48 | count: 1, 49 | }; 50 | } 51 | return acc; 52 | }, {}); 53 | 54 | const sorted = Object.entries(data) 55 | .map(([, country]) => country) 56 | .sort((a, b) => b.count - a.count) 57 | .filter(Boolean); 58 | 59 | return sorted; 60 | } 61 | 62 | export function tags() { 63 | const allTags = people.reduce(merge('tags'), []); 64 | const counts = allTags.reduce(countInstances, {}); 65 | // sort and filter for any tags that only have 1 66 | const tags = Object.entries(counts) 67 | // Only show the tag if this topic has 3 or more people in it 68 | .filter(([, count]) => count >= 3) 69 | .map(([name, count]) => ({ name, count })); 70 | 71 | const lowercaseTagMap = tags.reduce((acc, tag) => { 72 | const normalizedName = normalizeTag(tag.name); 73 | const currentCount = acc[normalizedName] || 0; 74 | acc[normalizedName] = currentCount + tag.count; 75 | return acc; 76 | }, {}); 77 | 78 | // Merge tags like "JavaScript" and "Javascript" based on the 79 | // count… Event though it's obviously JavaScript! 80 | const normalizedTags = tags.reduce((acc, { name }) => { 81 | const normalizedName = normalizeTag(name); 82 | if (typeof lowercaseTagMap[normalizedName] !== 'undefined') { 83 | acc.push({ name, count: lowercaseTagMap[normalizedName] }); 84 | delete lowercaseTagMap[normalizedName]; 85 | } 86 | return acc; 87 | }, []) 88 | // Sort by name first 89 | .sort((a, b) => b.name.toLowerCase() > a.name.toLowerCase()) 90 | // Sort by count 91 | .sort((a, b) => b.count - a.count); 92 | return [{ name: 'all', count: people.length }, ...normalizedTags]; 93 | } 94 | 95 | export function devices() { 96 | 97 | const all = [ 98 | ...people.map((person) => person.computer), 99 | ...people.map((person) => person.phone), 100 | ].filter(Boolean); 101 | 102 | return Object.entries(all.reduce(countInstances, {})) 103 | .map(([device, count]) => ({ name: device, count })) 104 | .sort((a, b) => b.count - a.count) 105 | .map((device) => { 106 | return device; 107 | }) 108 | } 109 | 110 | function unique(arr: string[]) { 111 | return Array.from(new Set(arr)); 112 | } 113 | 114 | const normalizedTagMap = tags().reduce((acc, tag) => { 115 | const normalizedTag = normalizeTag(tag.name); 116 | acc[normalizedTag] = tag.name; 117 | return acc; 118 | }, {}); 119 | 120 | export function getPeople(tag?: string) { 121 | return [...people] 122 | .sort(() => Math.random() - 0.5) 123 | .map((person) => { 124 | const normalizedPerson = { 125 | ...person, 126 | // Clean out people that added basically the same tags twice 127 | tags: unique( 128 | person.tags.map((tag) => normalizedTagMap[normalizeTag(tag)] || tag) 129 | ), 130 | }; 131 | return { 132 | ...normalizedPerson, 133 | id: `person-${normalizedPerson.name}`, 134 | }; 135 | }) 136 | .filter((person) => { 137 | if (!tag) { 138 | return true; 139 | } 140 | return person.tags.includes(tag) || person.country === tag || person.phone === tag || person.computer === tag; 141 | }) 142 | 143 | } 144 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["remix.env.d.ts", "./**/*", "**/*.ts", "**/*.tsx"], 3 | "compilerOptions": { 4 | "strict": true, 5 | "lib": ["ESNext", "DOM", "DOM.Iterable"], 6 | "skipLibCheck": true, 7 | "moduleResolution": "node", 8 | "esModuleInterop": true, 9 | "module": "esnext", 10 | "target": "esnext", 11 | "baseUrl": ".", 12 | "allowJs": true, 13 | "forceConsistentCasingInFileNames": true, 14 | "isolatedModules": true, 15 | "jsx": "react-jsx", 16 | "noEmit": true, 17 | "resolveJsonModule": true 18 | } 19 | } 20 | --------------------------------------------------------------------------------