Latest news about Bitcoin and all cryptocurrencies. Your daily crypto news habit.
The feeling of working on open source is strangely unique and fulfilling. You feel as though youâre contributing to a greater good comprised of a network of brilliant people from all around the world. Itâs a sensation that I rarely feel in my general work as a software engineer, and it reminds me of why I got into programming in the first place.
Towards that end, Iâd love to share some of the open source projects that Iâve worked on, with the hope that they will inspire someone out there to do the same!
Whether itâs finding a cool project that youâre interested in, forking it, and contributing back (guide), or if you want to get better at publishing your own open source projects, I encourage you to get out there and start committing!
Most of these projects focus on JavaScript, broken down into the following categories:
- Node.js
- React
- Puppeteer
- FFmpeg
- Crawling
- Graphics
- Koa
- Misc
Node.js
- update-markdown-jsdocâââUpdates a markdown document section with jsdoc documentation. Useful to automatically update a libraryâs readme with APIÂ docs.
- update-markdown-usageâââUpdates a markdown document section with CLI usage info via --help. Useful to automatically update a CLIâs readme with Usage docs.
- abstract-object-storageâââCollection of useful utilities for working with Google Cloud Storage.
- p-cacheâââDecorator to memoize the results of async functions via lru-cache.
- randomâââSeedable random number generator supporting many common distributions.
- id-shortenerâââEfficient id / url shortener for Node.js backed by pluggable storage defaulting to redis.
- node-compat-requireâââEasily allow your Node program to run in a target node version range to maximize compatibility.
- async-await-parallelâââNode.js module with simple concurrency control for awaiting an array of async results.
- snapchatâââNode.js client for the unofficial Snapchat API
- ip-setâââEfficient mutable set data structure optimized for use with IPv4 and IPv6 addresses. The primary use case is for working with potentially large IP blacklists.
- rect-coverâââComputes a transform between two rects just like background-size: cover. (demo)
- rect-containâââComputes a transform between two rects just like background-size: contain. (demo)
- github-is-starredâââChecks if a user has starred a particular GitHub repo.
- github-is-starred-cliâââCLI to check if a user has starred a particular GitHub repo.
- webtorrentâââStreaming torrent client for the web. âĄïž (demo) (contributor)
- owâââFunction argument validation for humans. (contributor)
- awesome-lintâââLinter for Awesome lists. (contributor)
React
- create-react-libraryâââCLI for easily publishing modern react libraries. âĄ
Create React Library (CRL) is easily one of my favorite and most used open source projects. Itâs kind of like Create React App (CRA)âs younger sibling. It even uses CRA under the hood for example usage and local component development.
- react-modern-library-boilerplateâââBoilerplate and CLI create-react-library for publishing modern React modules with Rollup and example usage via create-react-app.
Example of using create-react-library to create a reusable React component npm package.
- react-background-slideshowâââSexy tiled background slideshow for React đ„Â (demo)
- react-starfield-animation -Canvas-based starfield animation for React âšÂ (demo)
- react-particle-effect-buttonâââBursting particle effect buttons for React đ (demo)
- react-particle-animationâââCanvas-based particle animation for React đ (demo)
- react-block-imageâââReact replacement for img with more control + fallback support. đ (demo)
- react-mp3-recorderâââMicrophone recorder for React that captures mp3 audio đ” (demo)
- react-before-after-sliderâââA sexy image comparison slider for React. (demo)
Puppeteer
- awesome-puppeteerâââA curated list of awesome puppeteer resources.
- puppeteer-render-textâââRobust text renderer using headless chrome.
- puppeteer-render-text-cliâââCLI for robust text renderer using headless chrome.
Example output png produced by puppeteer-render-text.
- puppeteer-emailâââEmail automation driven by headless chrome.
- puppeteer-email-cliâââCLI for email automation driven by headless chrome.
- puppeteer-instagramâââInstagram automation driven by headless chrome.
- puppeteer-instagram-cliâââCLI for Instagram automation driven by headless chrome.
- puppeteer-githubâââGitHub automation driven by headless chrome.
- puppeteer-github-cliâââCLI for GitHub automation driven by headless chrome.
FFmpeg
- awesome-ffmpegâââCurated list of awesome ffmpeg resources with a focus on JavaScript. đ»
- ffmpeg-concatâââConcats a list of videos together using ffmpeg with sexy OpenGL transitions.
- ffmpeg-gl-transitionâââFFmpeg filter for applying GLSL transitions between video streams (gl-transitions). This is a more low-level C++ version of ffmpeg-concat that extends ffmpeg itself.
ffmpeg-concat OpenGL transitions demo (also applies to ffmpeg-gl-transition)
- ffmpeg-probeâââWrapper around ffprobe for getting info about media files.
- ffmpeg-generate-video-previewâââGenerates an attractive image strip or GIF preview from a video.
GIF created with ffmpeg-generate-video-preview.
- ffmpeg-extract-frameâââExtracts a single frame from a video.
- ffmpeg-extract-framesâââExtracts screenshots from a video using ffmpeg.
- ffmpeg-extract-audioâââExtracts an audio stream from a media file.
- ffmpeg-on-progressâââUtility for robustly reporting progress with fluent-ffmpeg.
- ffmpeg-cli-flagsâââA comprehensive list of all ffmpeg commandline flags.
- get-mp3-durationâââComputes the duration of an mp3 buffer in node or browser. (demo)
- p-exiftoolâââWrapper around exiftool for reading metadata from many different file types.
- gif-extract-framesâââExtracts frames from GIFs including inter-frame coalescing.
Example extracted frames from a GIF via gif-extract-frames.
Crawling
captcha-solver handles many different types of captchas, including Googleâs reCAPTCHA v2.
- captcha-solverâââLibrary and CLI for automating captcha verification across multiple providers.
- parse-emailâââParses mime-encoded email messages.
- parse-otp-messageâââParses OTP messages for a verification code and service provider.
- sms-number-verifierâââAllows you to spoof SMS number verification.
- getsmscodeâââAPI client for getsmscode.com.
Graphics
Before & After demo of the primitive algorithm reconstructing an image with 500 random shapes.
- primitiveâââReproduce images from geometric primitives. (demo)
- primitive-cliâââCLI to reproduce images from geometric primitives.
- phash-imâââPerceptual image hashing via imagemagick.
- phash-gifâââPerceptual GIF hashing for easily finding near-duplicate GIFs.
- dissolveâââCool 2D dissolve effect generator. (demo)
Demo of dissolve effect generator.
Koa
- koa2-mongoose-crudâââKoa 2 CRUD middleware for Mongoose models.
- koa-microâââKoa 2 microservices with batteries included.
- koa-api-boilerplateâââKoa 2 API boilerplate with batteries-included.
Misc
- MiltonâââC++ Rendering Framework w/ MLT, bidi path tracing, etc. and OpenGL Previews (undergrad thesis project from Brown â09).
(Milton) The same scene rendered using ray tracing (top left), path tracing (top right), bidirectional path tracing (bottom left), and MLT (bottom right). The brute force path traced version in the top right should be seen as a correct, reference image. Note the lack of caustics on the floor and lack of indirect illumination in the ray traced version. Discrepancies in the bidirectional path tracing and MLT renders are due to differences in tone mapping as well as implementation issues with correctly handling specular paths.
- MipscopeâââCross-platform IDE for students learning assembly on the MIPS architecture. The focus is on a convenient debugging environment, including a visual, reversible debugger.
- Gravity-spritekitâââiOS n-body simulation visualized with metaballs. Physics and graphics provided by SpriteKit.
- Gravity-cocos2dâââiOS n-body simulation combined visualized with metaballs. Physics and graphics provided by cocos2d.
Gravity visualization demo (Gravity-spritekit, Gravity-cocos2d).
Conclusion
Iâve had a lot of fun creating all of these open source modules & demos. The open source community is thriving, especially for JavaScript &Â NPM.
Hopefully, one or more of these projects will spark your curiosity to fork & experiment⊠or youâll go on to create your own open source projects that are better than mine! đ
And finally, follow me on github if you want more awesome open source goodness!
Before you goâŠ
If you liked this article, click the đ below, and share it with others so they can enjoy it as well.
My Journey Through Open Source was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
Disclaimer
The views and opinions expressed in this article are solely those of the authors and do not reflect the views of Bitcoin Insider. Every investment and trading move involves risk - this is especially true for cryptocurrencies given their volatility. We strongly advise our readers to conduct their own research when making a decision.