1943 views
<center> <img src="https://i.imgur.com/o2N65sv.png" height="80px" style="border-radius: 50%; border: 3px solid black; padding: 1px; display: block"> # Nick Sweeting: Blog & Projects This is a list of my blog posts, talks, communities, projects, and more... (in various stages of completion) <small>😁 Instead of making a bunch of separate pages I decided to make one big messy index of it all.</small> --- <img src="https://i.imgur.com/8RBkBYL.jpg" style="opacity: 0.9; border-radius: 14px;"> --- <small style="font-size: calc(10px + 0.2vw)"> <img src="https://i.imgur.com/ZH24tfU.png" style="width:4%;opacity: 0.2; margin-right: 4%;"> [About](#About) | [Writing](#Writing) | [Speaking](#Public-Speaking) | [Communities](#Communities) | [Work](#Work) | [Education](#Education) <img src="https://i.imgur.com/ZH24tfU.png" style="width:4%;opacity: 0.2; margin-left: 4%;"> </small> </center> <style> .rainbow { color: white; } .rainbow:hover { animation:rainbow 4s infinite; } @keyframes rainbow { 0% {color: #ff0000;} 10% {color: #ff8000;} 20% {color: #ffff00;} 30% {color: #80ff00;} 40% {color: #00ff00;} 50% {color: #00ff80;} 60% {color: #00ffff;} 70% {color: #0080ff;} 80% {color: #0000ff;} 90% {color: #8000ff;} 100% {color: #ff0080;} } .glow { opacity: 0.2; } .glow:hover { animation: glow 3s ease infinite; } @keyframes glow { 0% {opacity: 0.2} 50% {opacity: 0.6} 100% {opacity: 0.2} } </style> # Table of Contents [TOC] <center> <small style="font-size: calc(10px + 0.2vw)"> <br/> <img src="https://i.imgur.com/ZH24tfU.png" style="width:4%;opacity: 0.2; margin-right: 5%;"> Find me on Twitter <a href="https://twitter.com/theSquashSH">@theSquashSH</a> for questions/comments/updates! <img src="https://i.imgur.com/ZH24tfU.png" style="width:4%;opacity: 0.2; margin-left: 5%;"> </small> </center> --- # About <center> <img src="https://i.imgur.com/WVaiB03.jpg" style="opacity: 0.92; border-radius: 4px; margin-bottom: -60%; position: relative; z-index: 1; box-shadow: 4px 4px 4px rgba(0,0,0,0.04);"> <img src="https://i.imgur.com/TIqOHmV.jpg" width="45%" style="border-radius: 14px; box-shadow: 4px 4px 4px rgba(0,0,0,0.3); position: relative; z-index: 100;"> <br/><br/> <div style="position: relative; z-index: 200; color: #ddd; text-shadow: 4px 4px rgba(0,0,0,0.15); font-weight: 200;"> <a href="https://nicksweeting.com" class="rainbow">Nick Sweeting</a> | <a href="https://twitter.com/theSquashSH" class="rainbow">@theSquashSH</a> | <a href="https://github.com/pirate" class="rainbow">@pirate</a> </div> <br/><br/> **Hi! I'm [Nick](https://keybase.io/nikisweeting).** I'm a [traveller](https://matadornetwork.com/travel-map/ea7a0f6b7453fa760b10472ec376f296-1533588043), [bicycle enthusiast](https://docs.sweeting.me/s/how-to-ride-a-bicycle), [music addict](https://docs.sweeting.me/s/music), [full-stack developer](#Work), and [entrepreneur](#-Monadical--OddSlingers-Co-Founder--CTO-2016---2019). I am currently running a full-stack Python/JS [consulting shop](#-Monadical--OddSlingers-Co-Founder--CTO-2016---2019) with my [co-founder](https://cowpig.github.io/about), with a focus on [internet archiving](https://monadical.com/projects#main), [eSports / poker](https://monadical.com/projects#main), and [mesh networking](https://monadical.com/projects#open-source) ([hire us!](https://monadical.com)). </center> --- <center style="font-size: 26px; max-width: 100%;"><br/> <img src="https://i.imgur.com/3OchxMc.png" style="width:12.8%" class="glow"> &nbsp; <a href="https://docs.oddslingers.com/s/montreal"><img src="https://i.imgur.com/k16LaKs.png" style="width:9%; margin: 0px 10%;" class="glow"></a> &nbsp; <img src="https://i.imgur.com/EpjL5RG.png" style="width:10.5%" class="glow"> <br/><br/> </center> On most days I can be found in the gravy-soaked wintery embrace of [Montréal](https://github.com/cowpig/Montreal-Guide/blob/master/README.md), but I've been known to temporarily inhabit [other cities](#Cities) that have good public transit, bicycle accessibility, friendly people, and mountains nearby. When not on a bicycle, I can sometimes be seen pushing typo-fix commits at ridiculous hours of the night, or working on [poker](#-Monadical--OddSlingers-Co-Founder--CTO-2016---2019), [internet archiving](https://archivebox.io), [mesh networking](https://github.com/pirate/mesh-networking), and [security](#-Security) projects. <br/> <center style="font-size: 26px"> <a href="https://www.recurse.com"><img src="https://i.imgur.com/1oZSyNd.png" style="width:8%; margin-right: 6%;" class="glow"></a> <a href="https://github.com/pirate"><img src="https://i.imgur.com/zyQEzk1.png" style="width:30%; margin-left: 6%" class="glow"></a> <br/><br/> </center> I'm a self-directed learner, I prefer unstructured osmosis of skills from peers to structured top-down education. I attended the [Recurse Center](https://recurse.com) in NYC in 2014 (a "writers retreat for programmers"), and it quickly become one of my [favorite groups of people](#Communities) on Earth. I enjoy surrounding myself with passionate people and [extracting their knowledge](https://docs.sweeting.me/s/life-goals#Learn) about programming, neuroscience, electrical engineering, physics, machining, philosophy, math, and anything else they're excited about! Specialization is for insects, learn all the things! I've [worked](#Work) a range of jobs from [bicycle mechanic to startup founder](#-Non-Software-Jobs-Mechanic-DJ-AV-Technician-2010-2019) and in cities everywhere from [Bogotá to Shanghai](#Cities). Counting from my first few paid coding gigs in high school, I've been doing product development for about 7 years, with 4 of those years outside the US. But... I'm still at the foothills of [where I want to be in 10 years](https://docs.sweeting.me/s/life-goals). ### Related Sites - Co-founder: [@cowpig](https://cowpig.github.io/about) - Partner: [@VanLifeMedic](https://vanlifemedic.com) - Family: [@mom](https://dunham-family.com), [@dad](https://stevesweeting.com), [@brother](https://github.com/onaxs) ### Contact Me Whether you want to work together or just want to reach out and chat, don't hesitate to contact me. You can message me via: - [Email](https://nicksweeting.com/#contact) (watch the animations on the game canvas to see my email revealed) - [Twitter DM](https://twitter.com/theSquashSH) - [LinkedIn Message](https://www.linkedin.com/in/nicksweeting) - [Keybase](https://keybase.io/nikisweeting) (for identity/content sensitive communication only) - Signal/WhatsApp/iMessage (message me on another service to request my cell number) --- <center> <a href="https://vanlifemedic.com/art.html" class="rainbow"> <img src="https://i.imgur.com/cB5hnvJ.jpg" style="width: 75%; border-radius: 14px;"><br/><small style="display:block; margin-top:-30px; opacity: 0.9; text-shadow: 2px 2px 4px rgba(0,0,0,0.2)">Photo credit: @VanLifeMedic</small> </a><br/> </center> --- # Writing <img src="https://i.imgur.com/eBpo3i0.jpg" style="opacity: 0.9; border-radius: 14px; width: 30%; float: right;margin-top: 66px"> The posts below were originally published on different sites depending on their intended audience, but they're always mirrored to a canonical version I keep here on docs.sweeting.me. - Website: [nicksweeting.com](https://nicksweeting.com) - Github: [@pirate](https://github.com/pirate) - Twitter: [@theSquashSH](https://twitter.com/theSquashSH) - Medium: [@theSquashSH](https://medium.com/@theSquashSH) - HackerNoon: [@theSquashSH](https://hackernoon.com/@theSquashSH) - OddSlingers Blog: [labs.OddSlingers.com/articles](https://labs.oddslingers.com/articles.html) - Monadical Blog: [Monadical.com/blog](https://monadical.com/blog) - Wordpress: [Invalid Patent Blog](https://invalidpatent.wordpress.com) The ones in bold are the more **noteworthy** or detailed posts. ## Tech Writing <img src="https://i.imgur.com/q6Tm2i4.png" height="30px" style="vertical-align: -20px; float: right; opacity: 0.7"> ### <img src="https://i.imgur.com/mcyhlFJ.png" height="30px" style="vertical-align: -5px"> Security - 2018-10: [Breach Response Guidelines for Companies](https://docs.sweeting.me/s/breach-response-guidelines) - 2017-09: **[Equifax Security Incident](https://docs.sweeting.me/s/equifax-security-incident)** - 2017-02: **[Cloudbleed Security Incident](https://docs.sweeting.me/s/cloudbleed-security-incident)** - 2016-12: [How an Attacker Can Lock You Out of iCloud](https://docs.sweeting.me/s/attackers-can-lock-you-out-of-icloud) ### <img src="https://i.imgur.com/wmYKuAO.png" height="30px" style="vertical-align: -10px"> Backend - 2018-10: **[Database Integrity in Django: Critical Data & Distributed Systems](https://github.com/pirate/django-concurrency-talk)** - 2018-09: **[Storing Database ORM Operations as Data Instead of Code](https://docs.sweeting.me/s/storing-orm-operations-as-data)** - 2018-06: [Django + JS Performance Tuning](https://docs.sweeting.me/s/django-and-js-performance-tuning) - 2018-04: **[Architecting a Concurrent-Safe Banking Service in Django](https://docs.sweeting.me/s/architecting-a-banking-service)** - 2016-08: [Two Approaches to Concurrent-Write Safety in Django](https://docs.sweeting.me/s/approaches-to-concurrent-write-safety-django) ### <img src="https://i.imgur.com/jUPoQHH.png" height="30px" style="vertical-align: -8px"> Frontend - 2019-01: [The Anatomy of HTML, CSS, and JS](https://docs.sweeting.me/s/anatomy-of-html-css-js) - 2018-10: **[An Overview of Animation Programming](https://docs.sweeting.me/s/overview-of-animation-programming)** - 2018-06: [Inferno vs React](https://docs.sweeting.me/s/inferno-vs-react) - 2017-12: [Writing Shorter React-Redux Containers](https://docs.sweeting.me/s/writing-shorter-react-redux-containers) - 2017-07: **[Shape Your Redux Store Like Your Database](https://docs.oddslingers.com/s/using-redux-like-a-database)** - 2017-02: **[Reconciling Backend Templates With Frontend Components](https://docs.oddslingers.com/s/reconciling-templates-and-components)** - 2016-02: [Sharing State Between Redux Reducers](https://docs.oddslingers.com/s/sharing-state-between-redux-reducers) ### <img src="https://i.imgur.com/Hq25p5y.png" height="30px" style="vertical-align: -8px"> Ops - 2019-05: **[The Missing WireGuard Documentation](https://docs.sweeting.me/s/wireguard)** - 2019-05: [Don't Distribute Packages Via `curl | sh`](https://docs.sweeting.me/s/against-curl-sh) - 2018-10: [Setting Up FreeNAS on a Dell r610 Server](https://docs.sweeting.me/s/freenas-on-dell-r610) - 2018-09: **[An Introduction to the `/opt` Directory](https://docs.sweeting.me/s/an-intro-to-the-opt-directory)** ### <img src="https://i.imgur.com/DJo2lY7.png" height="30px" style="vertical-align: -8px"> Hardware - 2012-04: **[Thermite](https://docs.sweeting.me/s/thermite)** - 2012-04: **[Lucid Dream Goggles](https://docs.sweeting.me/s/lucid-dream-goggles)** - 2012-03: [Guess What Element I Am](https://docs.sweeting.me/s/guess-what-element-i-am) - 2012-02: **[The Ceilingizer](https://docs.sweeting.me/s/the-ceilingizer)** - 2012-02: [Peculiar Romance](https://docs.sweeting.me/s/peculiar-romance) - 2012-02: [Butane](https://docs.sweeting.me/s/butane) - 2012-02: [Bike Booster Rocket](https://docs.sweeting.me/s/bike-booster-rocket) ### <img src="https://i.imgur.com/Ntgj9AH.png" height="30px" style="vertical-align: -7px"> Other - 2019-03: [On DCOs and CLAs in Open Source](https://docs.sweeting.me/s/against-dcos) [WIP] - 2019-02: [Monadical Stack Study Guide](https://docs.oddslingers.com/s/monadical-study-guide) - 2019-01: [Effective Refactoring](https://docs.sweeting.me/s/effective-refactoring) - 2017-08: **[The Full-Stack Developer Checklist](https://docs.sweeting.me/s/full-stack-developer-checklist)** - 2017-06: [On Premature Optimization](https://docs.sweeting.me/s/premature-optimization) - 2016-05: **[Map of All the Computer Science Subfields](https://docs.sweeting.me/s/map-of-computer-science-subfields)** --- <img src="https://i.imgur.com/mnglxW6.jpg" style="opacity: 0.9; border-radius: 14px; width: 100%;"> --- ## Non-Tech Writing <img src="https://i.imgur.com/yxV5uVm.png" height="30px" style="vertical-align: -20px; float: right; opacity: 0.7"> ### <img src="https://i.imgur.com/NuCOvzr.png" height="22px" style="vertical-align: -4px"> Living Documents Documents I keep up to date as time progresses. - **[Life Goals](https://docs.sweeting.me/s/life-goals)** - [Favorite Blogs](https://docs.sweeting.me/s/favorite-blogs) - [Music Curation](https://docs.sweeting.me/s/music) - [Math to Learn](https://docs.sweeting.me/s/math-to-learn) - [Books to Read](https://docs.sweeting.me/s/books-to-read) - [Concerts & Shows to Attend](https://docs.sweeting.me/s/concerts-and-shows) - [Movies & TV Shows to Watch](https://docs.sweeting.me/s/movies-to-watch) - [Programming Language Reviews](https://docs.sweeting.me/s/programming-languages) - **[Management Principles Handbook](https://docs.oddslingers.com/s/principles-handbook)** ### <img src="https://i.imgur.com/Ve3dlC8.png" height="22px" style="vertical-align: -4px"> One-Off Posts Non-programming blog posts and snippets. - 2019-05: [Why I Ask Stupid Questions](https://docs.sweeting.me/s/ask-stupid-questions) - 2019-05: [A better English](https://docs.sweeting.me/s/improved-english) - 2019-02: [Montréal Guide](https://docs.sweeting.me/s/montreal) - 2019-01: **[Multiverse Theory](https://docs.sweeting.me/s/multiverse-theory)** - 2018-12: **[The Money Party](https://docs.sweeting.me/s/the-money-party)** - 2018-11: [On Citites](https://docs.sweeting.me/s/on-cities) - 2018-11: [On Aging](https://docs.sweeting.me/s/on-aging) - 2018-06: **[Emotion and Memory](https://docs.sweeting.me/s/emotion-and-memory)** - 2017-05: [Medellin Co-Working Spaces](https://docs.sweeting.me/s/medellin-coworking-spaces) - 2017-04: [NYC Bicycle Destinations](https://docs.sweeting.me/s/nyc-bicycle-routes) - 2017-02: [How to Ride a Bicycle](https://docs.sweeting.me/s/how-to-ride-a-bicycle) - 2016-01: [Taking iTunes a Step Further](https://docs.sweeting.me/s/taking-itunes-a-step-further) - 2015-11: [Notes from CodeNeuro 2015 Conference](https://docs.sweeting.me/s/codeneuro-2015) - 2012-07: **[Youth Talk: A Maker-Space for Teens in Shanghai (make512)](https://docs.sweeting.me/s/youth-talk-shanghai-make512)** - 2012-05: [Augmented Reality Social Network](https://docs.sweeting.me/s/ar-social-network) - 2012-03: [The Case Against Torture](https://docs.sweeting.me/s/the-case-against-torture) - 2012-02: [Filing a Patent](https://docs.sweeting.me/s/filing-a-patent) --- <img src="https://i.imgur.com/ceWST3O.jpg" style="opacity: 0.9; border-radius: 14px; width: 100%;"> --- # Public Speaking I've spoken at a handful of conferences, meetups, and events around the world. From Shanghai, to Portland, San Francisco, NYC, Montreal, Bogota, and Medellin, I enjoy travelling and being an active member of many tech and non-tech [communities](#Communities) around the world. I haven't given many talks yet, but I aim to give more in the future about internet archiving, Python, and mesh nets! ### Security - 2018: **[Breach Security Podcast](https://www.carbonite.com/podcasts/breach/s02e04-Equifax-data-breach) interviewee regarding Equifax Breach** - 2018: Assorted Monadical internal security presentations - 2015: Assorted DrChrono internal security presentations ### Programming - 2019-05: [Internet Archiving Talk](https://docs.sweeting.me/s/internet-archiving-talk) @ [RC Never Graduate Week](https://recurse.com) 2019 in NYC - 2019-02: **[Django Concurrency Talk](https://github.com/pirate/django-concurrency-talk) @ PyCon Colombia 2019 in Bogotá** - 2018-11: [Django Concurrency Talk](https://github.com/pirate/django-concurrency-talk) @ Talk Night for Django NYC + Python New York - 2018-10: **[Django Concurrency Talk](https://github.com/pirate/django-concurrency-talk) @ PyGotham 2018 in NYC** - 2015: Assorted Recurse Center Mountain View Meetup presentations - 2014: Assorted Recurse Center project-day presentations ### Entrepreneurship - 2019-02: [OddSlingers 1-Minute Pitch](https://www.youtube.com/watch?v=rBtr1m8K17Y) - 2018-02: [FinTech SV OddSlingers Pitch](https://www.youtube.com/watch?v=wpS_LVFAmYE&) @ CryptoCurrency [Investing Panel](https://www.fintechsv.com/demos/nick-sweeting-cto-oddslingers-pitch-cryptoinvesting-panel/) in Mountain View - 2018-02: **[PitchForce](https://www.eventbrite.com/e/pitchforce-san-francisco-tickets-41218997130) 1st Place Winner for OddSlingers** - 2018-02: **[Pitch Globally (shark-tank style)](https://www.eventbrite.com/e/pitch-globally-sharktank-stylerunwaysf-tickets-41197052493#) 1st Place Winner for OddSlingers** - 2018: Pitched at assorted pitch events, startup meetups, and crypto meetups in SF & NYC ### Other - 2013: **Led electronics workshops as [make512](http://make512.weebly.com/) president in Shanghai** - 2013: [CISSMUN](https://www.cissmun.org/) Security Council representative for Lebanon at MUN conf. in Shanghai - 2012: [BEIMUN](http://www.beimun.org/) representative for OPEC at international MUN conf. in Beijing - 2011: [Fudan International School](https://en.wikipedia.org/wiki/Fudan_International_School) debate team member in Shanghai --- <img src="https://i.imgur.com/G0CkDvG.jpg" style="opacity: 0.9; border-radius: 14px; width: 100%;"> --- # Communities I've participated in a bunch of communities around the world with varying degrees of involvement, but I'm most proud of helping build the few that will hopefully continue after I stop being involved. ### Online Communities - **Internet Archiving: [ArchiveBox](https://github.com/pirate/ArchiveBox/wiki/Web-Archiving-Community) lead, occasionally active in [IIPC](http://netpreserve.org/) and [Archive.org](https://archive.org) groups** - **Mesh Networking: Semi-active in meshnet development and LoRa groups** - Cybersecurity: Armchair infosec Twitter enthusiast, also see [Equifax](https://docs.sweeting.me/s/equifax-security-incident), [Cloudbleed](https://docs.sweeting.me/s/cloudbleed-security-incident), and [others](https://pirate.github.io/security-growler/) ### Meetups & Groups - **[Bogota & Medellin Tech](https://colombia-dev.org/meetups): Occasionally speak at / attend [Python](https://www.meetup.com/Python-Medellin/) & [JS](https://www.meetup.com/MedellinJS/) events** - [make512](http://make512.weebly.com/): Founded a makerspace community for students in Shanghai - [Bay Area Night Cycling](https://www.meetup.com/Bay-Area-Night-Cycling): Founded a night biking meetup in the SF Bay Area 2014-2016 - [Django NYC](https://www.meetup.com/django-nyc) & [NYC Python](https://www.meetup.com/nycpython/events/255468112/): Attend meetups occasionally when time permits - [Papers We Love](https://paperswelove.org/) SF, NYC, Montreal: Attend meetups occasionally when time permits - [XinCheJian](https://xinchejian.com/): Used to be a member of this Shanghai based hackerspace before moving away - [NoiseBridge](https://www.noisebridge.net/) & [NYC Resistor](https://www.nycresistor.com/): Admirer from a distance, very occasionally attend events ### Academic Communities - **[Recurse Center](https://recurse.com): Summer 2014 alumni and active community member** - [Concordia International School Shanghai](https://www.concordiashanghai.org/): Attended 2012-2013 - [Sunset High School Oregon](https://www.beaverton.k12.or.us/schools/sunset): Attended 2013-2014 - [Fudan International School Shanghai](https://en.wikipedia.org/wiki/Fudan_International_School): Attended 2011-2013 - Homeschool, SCIS, YCIS, Escola Nausica, P.S. 75 - [MUN](https://www.cissmun.org/): Delegate at multiple conferences and events 2012-2013 See the [Education](#Education) section for more... ### Cities I'm currently in [Montréal](https://docs.oddslingers.com/s/montreal), Canada, but these are some other places I've enjoyed living in. - **New York City, NY, USA (hometown, 8+ years)** - Barcelona, Spain (1 year) - **Shanghai, China (7.5 years)** - Portland, OR, USA (1 year) - **San Francisco Bay Area, CA, USA (2 years)** - Bogotá, Colombia (3 months) - **Montréal, Canada (2 years)** - **Medellín, Colombia (8 months)** [Click here to see a full travel map](https://matadornetwork.com/travel-map/ea7a0f6b7453fa760b10472ec376f296-1533588043). **Current languages:** English (native), Chinese (beginner/intermediate), Spanish (beginner). **Language wish list:** French, German, Russian, Danish. --- <img src="https://i.imgur.com/6GYgSpn.jpg" style="opacity: 0.9; border-radius: 14px; width: 100%;"> --- # Work Here's a selection of my past work, including personal software projects, full time jobs, freelance/consulting, and volunteering/activism work. <img src="https://i.imgur.com/wAAotFA.png" style="width: 40%; margin-top: 30px; float: right; opacity: 0.8"> - [Personal Projects](#Personal-Projects) - [Still Actively Developed](#Actively-Developed) - [No Longer Actively Developed](#Not-Actively-Developed) - [Jobs](#Jobs) - [Full-Time](#Full-Time-Work) - [Freelance / Consulting](#-Freelance-Clients-Independent-Consultant-2012---2016) - [Activism / Volunteering](#-Volunteer--Activism-Work-Independent-Researcher-2012-2019) - [Non-Software Jobs](#-Non-Software-Jobs-Mechanic-DJ-AV-Technician-2010-2019) For more see my [LinkedIn](https://www.linkedin.com/in/nicksweeting) and [Github](https://github.com/pirate) profiles. --- ## Personal Projects Projects are listed by year started, **bolded** ones are bigger/more interesting projects. This list doesn't include projects I've only forked or made smaller contributions to, it's just projects where I've written all or most of the code. All code can be found on [Github](https://github.com/pirate), and almost all is licensed as MIT or ["The Nick License"](https://docs.sweeting.me/s/the-nick-license). ### Actively Developed - 2019: [Docker Compose Backups](https://gist.github.com/pirate/265e19a8a768a48cf12834ec87fb0eed) A script to *fully* backup docker apps (incl. unnamed volumes). - 2019: [Django Turbo Response](https://gist.github.com/pirate/79f84dfee81ba0a38b6113541e827fd5) Extend HttpResponse w/ streaming partial fragments and more. - 2019: [Django HTTP2 Middleware](https://github.com/pirate/django-http2-middleware) A Django layer to add HTTP2 push and preload headers. - 2019: **[WireGuard Docs](https://github.com/pirate/wireguard-docs#the-missing-wireguard-documentation) Unofficial config and usage documentation for the WireGuard VPN.** - 2018: **[ArchiveBox](https://archivebox.io) Internet archiver that uses Chrome, wget, and more.** [Github](https://github.com/pirate/ArchiveBox) <center> <img src="https://i.imgur.com/iIsZ0gQ.png" width="40%"> <img src="https://i.imgur.com/viklZNG.png" width="50%"> <br/> </center> - 2018: [CodiMD CLI](https://github.com/hackmdio/codimd-cli) Utility to import and export notes from a HackMD/CodiMD server. - 2017: [Mac Keyboard Brightness](https://github.com/pirate/mac-keyboard-brightness) CLI utility to control keyboard and screen backlight level. - 2014: **[Mesh Networking](https://pypi.org/project/mesh-networking/) Python library to test flexible network topologies.** [Github](https://github.com/pirate/mesh-networking) - 2014: **[FreeVPN.Club](https://freevpn.club) Free IKEv2 VPN for students with censored internet.** [Github](https://github.com/pirate/china-vpn) - 2014: [Fish Functions](https://github.com/pirate/fish-functions) Collection of 250+ custom Fish Shell functions I've written over time. - 2013: [Experiments](https://github.com/pirate/experiments) Catch-all repo for random Python, Haskell, Rust, and JS experiments. - 2012: **[NickSweeting.com](https://nicksweeting.com) My personal website and blog.** [Github](https://github.com/pirate/nicksweeting.com) ### Not Actively Developed Still working, runnable software, but these projects are no longer getting new features. - 2017: **[Sites Using Cloudflare](https://github.com/pirate/sites-using-cloudflare) List of all sites on CloudFlare during Cloudbleed.** - 2017: **[StoryCoin](https://github.com/pirate/StoryCoin) Rust blockchain implementation that writes a distributed story.** - 2016: **[Crypto Trader](https://github.com/pirate/crypto-trader) Cryptocurrency trading bot with example strategy.** [Github](https://github.com/pirate/crypto-trader) - 2016: [Gzint](https://pypi.org/project/gzint/) Python library to store huge integers compressed in memory. [Github](https://github.com/pirate/gzint) - 2016: [Mac Global Autocomplete](https://github.com/pirate/macOS-global-autocomplete) Typing suggestions that work across all fields systemwide. - 2015: [OpenSpritz](https://nicksweeting.com/spritz/) Speed reading aid that puts words right where your eye expects. [Github](https://github.com/pirate/OpenSpritz) - 2014: [Spellchecker](https://github.com/pirate/spellchecker) Job application take-home project to do a spellchecker in Python. - 2014: [WebRTC Chat](https://pirate.github.io/WebRTCChat/) WebRTC-based chat that works without STUN servers. [Github](https://github.com/pirate/WebRTCChat) - 2014: [Scan.html](https://nicksweeting.com/scan.html) browser-based local network IP scanner using WebRTC APIs. [Github](https://github.com/pirate/nicksweeting.com/blob/master/scan.html) - 2014: [Inject Luxinate](https://github.com/pirate/inject-luxinate) Browser extension that injects download buttons into media pages. - 2014: [Python Throws](https://github.com/pirate/throws) Proposal for new conditional exception handling syntax in Python. - 2013: **[Mesh Botnet](https://github.com/pirate/mesh-botnet) macOS orchestration botnet based on [Violent Python](http://books.google.com/books/about/Violent_Python.html?id=2XliiK7FKoEC) book.** - 2013: **[Security Growler](https://pirate.github.io/security-growler/) macOS app to warn about system security alerts.** [Github](https://github.com/pirate/security-growler) - 2013: [C++ & Data Structures](https://github.com/pirate/Cpp-Data-Structures) Solutions for class assignments at Sunset HS in Oregon. - 2013: [make512](https://make512.weebly.com/) MakerSpace group for teens in Shanghai. [Github](https://github.com/make512) --- <img src="https://i.imgur.com/wyZpOvu.jpg" style="opacity: 0.9; border-radius: 14px; width: 100%;"> --- ## Jobs My past full-time employers, a selection of my past consulting & freelance clients, my activism/volunteering gigs, and non-tech jobs I've done over the years. - [Full-Time](#Full-Time-Work) - [Freelance](#-Freelance-Clients-Independent-Consultant-2012---2016) - [Activism / Volunteering](#-Volunteer-Independent-Researcher-2012-2019) - [Non-Software Jobs](#-Non-Software-Jobs-Mechanic-DJ-AV-Technician-2010-2019) For more, see my [LinkedIn](https://www.linkedin.com/in/nicksweeting) and [Github](https://github.com/pirate) profiles. --- ### Full-Time Work #### <img src="https://oddslingers.com/static/images/logo.png" height="40px" style="vertical-align: -14px"> Monadical / OddSlingers: *Co-Founder / CTO* **(2016 - 2019)** - **[Monadical](https://monadical.com) Software consultancy shop based in Medellin, Colombia.** [Github](https://github.com/Monadical-SAS) - **[Redux Time](https://github.com/Monadical-SAS/redux-time) Framework for pure functional, declarative animation in JS.** - [Warped Time](https://github.com/Monadical-SAS/warped-time) Time synchronization library for managing multiple machine's clocks. - [Django Channels Router](https://github.com/Monadical-SAS/django-channels-router) Library that provides a class-based routing layer for channels. - **[OddSlingers](https://labs.oddslingers.com) Fast, free, online poker platform with an eSports twist.** - **[OddSlingers Poker](https://oddslingers.com) Free site with thousands of users in 80+ countries.** - [OddSlingers Labs](https://github.com/Monadical-SAS/labs.oddslingers.com) Public facing company & product site. [Github](https://github.com/Monadical-SAS/labs.oddslingers.com) - [Puppetmaster](https://github.com/pirate/puppetmaster) Social media toolkit for timing posts across many accounts and sites. > For the past two years, we've been building a gaming platform that will allow people to enjoy a new level of engagement with Esports streamers. 3.1 million hands played on the site so far! #### <img src="https://i.imgur.com/COfrPCq.png" height="38px" style="vertical-align: -12px"> Mavrx: *Engineering & Data* **(2016)** - [Mavrx](https://mavrx.co) FOCS aerial photography flight planning and tracking system. [Github](https://github.com/pirate/FOCS) - **React/Redux based flight route planning UI (aka "FOCS")** - Tornado/SQLAlchemy based backend - Django glight completion tracking and data pipeline > An exciting data-science + agriculture company that does analysis of satellite, plane, and drone imagery to give farmers reports on crop yield and other important alerts. I worked with a small team to develop the system which routes and manages flight plans to gather aerial imagery. The flight planning team operated a country-wide marketplace for pilots to get freelance gigs imaging our fields. The FOCS system we developed was the central interface for designing flight routes, assigning them, and tracking their level of completion. I wrote the majority of the React/Redux front-end, and portions of the Tornado-based backend. #### <img src="https://i.imgur.com/YHr9RRc.png" height="38px" style="vertical-align: -12px"> DrChrono: *Full-Stack Engineer* **(2014 - 2016)** - [DrChrono](https://drchrono.com) / [OnPatient](https://onpatient.com) Web and iPad EMR/EHR solution for private practices. [Github](https://github.com/pirate/drchrono-web) - **Marketing engineering (SEO/SEM, Analytics, Emails, Asset Design, etc)** - Public site - Lots of internal features & bugfixing - Pricing and feature locking UX and details system - Ticket tracking system integration with HIPAA compliance flow to speed up support - Medical template building copy/paste - API Integration with billing providers - HackerOne Bug Bounty Program - Medical document file sync engine with Box - [MDHunter](https://github.com/pirate/mdhunter) Doctor-finding sales lead-generating web scraping platform. - **Web scraping platform that imported from 6+ lead sources for sales** - Build lead analytics sync engine with Close.io, Salesforce, Marketo, and other services - Lead lifecycle reporting > In a small healthcare startup competing against monoliths like Athena, our team of 8 developers had to iterate quickly and work on all layers of the stack. > - primary engineer for marketing tasks, working with marketing VP and sales > - architect & develper of an internal leads CRM pipeline, with a team of BDR sales people relying on the leads it produced > - bug bounty / security triager > - full-stack product engineer > Working with a legacy codebase with a massive suface area taught us to refactor efficiently, do deep-dive debugging across large swaths of code, and add new functionality quickly without breaking everything. To improve security, I handled triaging all the HackerOne bug bounty reports and gave internal security presentations to the development team. #### <img src="https://i.imgur.com/DP391ax.png" height="38px" style="vertical-align: -12px"> ExpoSpot / Hotspot: *Co-Founder / CTO* **(2013 - 2014)** - **[ExpoSpot](https://archive.sweeting.me/archive/1531665936/expospot.nicksweeting.com/index.html) Platform for expo analytics by doing indoor radiolocalization.** [Github](https://github.com/TheHotspot/hotspot) - [The Hotspot](https://github.com/TheHotspot) Platform for bars and restaurants to track and increase patron engagement. > We created a conference guidebook app to track conference attendees and provide value to the both the expo/vendors and event visitors. Using bluetooth beacons, we could accurately track event participants as they moved around venues, provide interactive experiences to visitors, and feed meaningful analytics to the organizers. Because vendors pay to promote themselves in the app, the expo actually receives revenue generated by our platform. Instead of having to pay us development fees, we simply take a share of the revenue generated with $0 cost to the expo. We attracted the attention of several expos who wanted to use us for analytics, and I worked with my business co-founder Justin Kravitz and a several others to develop web, iOS, and Android prototypes. Being the sole engineer for a greenfield platform with tight deadlines, I learned a lot about architecting apps from the ground up quickly, while ensuring they were modular, testable, and reusable enough to last years into the future. Apart from coding, I spent much of my time working with designers on user experience and marketing and doing other co-founder tasks like product-management and hiring. #### <img src="https://i.imgur.com/LlQOzPH.png" height="38px" style="vertical-align: -12px"> DeliveryHero China: *Junior Full-Stack Developer* **(2013)** - [DeliveryHero China](https://deliveryherochina.com) Web platform for ordering food delivery in Shanghai. [Github](https://github.com/pirate/DeliveryHeroChina) - **Internal & public mobile frontend** - Internal & public desktop frontend - Django backend - International localization > I worked as a Junior Django developer, developing the Delivery Hero mobile webapp, API endpoints, and new features. In a team of 3 developers we each had to juggle and improve all layers of the stack to support a rapidly growing food delivery platform in Shanghai. I gained lots of experience in django and javascript, learning to quickly iterate on pages and push frequently. I also polished my git skills and used tools including gunicorn, lighttpd, supervisord, piwik, gettext, and I18N. #### <img src="https://i.imgur.com/1W7aJZ6.png" height="38px" style="vertical-align: -12px"> DBond IT: *Mac Repair Technician & Internal Tools Developer* **(2013)** - [DBond](https://dbond.net) IT infrastructure company serving small-to-medium size businesses in Shanghai. - **Mac hardware repair** - TCP/IP Networking setup - Virtual Machine Administration - Software deployment orchestration - **Development of new internal ticketing system** > I worked as the sole Apple support technician in a Windows-dominant IT infrastructure company. I performed hardware repairs on Macs ranging from simple HD replacements to full overhauls and hard drive forensics. I also had sysadmin duties on their virtual machine platform, ticketing system, and customer-facing support platform. After finding several inefficiencies in the internal system, I was given permission to design and develop a replacement (similar to Zendesk). I gained experience in VM administration, installing and maintaining networking hardware, iptables, and other enterprise devops. --- ### Other Work #### <img src="https://i.imgur.com/YDCJnd0.png" height="38px" style="vertical-align: -12px"> Freelance Clients: *Independent Consultant* **(2012 - 2016)** - 2014: MarkBurdonWoodcraft.com (PDX) - 2014: StaceyWillSellIt.com (PDX) - 2014: Artflak.com (PDX) - 2014: TheHotspot.com (PDX) - 2014: SteveSweeting.com (NYC) - 2013: MathiasPLD.com (NC) - 2013: TheChildAcademy.com (Shanghai) - 2013: NewtonChina.com (Shanghai) - 2013: MMP.HK (Hong Kong) - 2012: SolutionsJournalism.org (NYC) - 2012: ModSquadCycles.com (NYC) - 2011: [Paul Pangaro](http://www.pangaro.com/) (NYC) > I did freelance Wordpress and Django consulting and development for a variety of clients while completing school and transitioning to full time development work. My clients were varied, from real estate businesses and bike shops to larger app startups. Through lots of freelance web-development consulting, I initially learned Wordpress and Drupal, refined my HTML and CSS, then progressed onto PHP and Python + Django for more advanced projects. I adapted quickly and learned a wide range of new skills for each project. I owe a lot of my development skills to the real-world experience gained by building a series of highly varied sites under tight deadlines. #### <img src="https://i.imgur.com/HW3AL2r.png" height="50px" style="vertical-align: -15px"> Volunteer: *Independent Researcher* **(2012-2019)** Information freedom, network resiliency, security activism, and volunteer work: - 2018: [ArchiveBox](https://archivebox.io) allows people to archive internet content before it gets censored - 2017: [CloudBleed Security Research](https://docs.sweeting.me/s/cloudbleed-security-incident) to create a list of affected to start checking - 2017: [Equifax Security Research](https://docs.sweeting.me/s/equifax-security-incident) to raise awareness of bad incident-response practices - 2016: [iCloud Security Research](https://docs.sweeting.me/s/attackers-can-lock-you-out-of-icloud) to get Apple to fix a potential DoS on iCloud users - 2014: [FreeVPN.Club](https://freevpn.club) A free VPN service offered to students behind the Great Firewall - 2014: [Security Growler Development](https://pirate.github.io/security-growler/) To help users stay aware of services on their machine. - 2014: [Mesh Network Protocol Development](https://github.com/pirate/mesh-networking) To develop resilient, decentralized networks. - 2014: [WebRTC Anti-Censorship/MiTM Encrypted Chat](https://pirate.github.io/WebRTCChat/) To allow secure chat without servers. - 2013: [Roots & Shoots volunteer in Shanghai](https://www.linkedin.com/company/shanghai-roots-&-shoots/) - 2012: [LEGO Robotics volunteer teaching in Shanghai](https://goo.gl/maps/G8AQPTiWrau) > Having spent significant time growing up in China with censored internet, I'm a big proponent of open source and freedom of information and communication, and my projects generally reflect that by being about information archiving, security awareness, and privacy. #### <img src="https://i.imgur.com/QcBogKF.png" height="38px" style="vertical-align: -12px"> Non-Software Jobs: *Mechanic, DJ, AV Technician* **(2010-2019)** - 2010 - 2019: [Occasional DJing](https://soundcloud.com/thesquash) for parties and events (Shanghai, PDX, SF, NYC) - 2010 - 2013: [Occasional light & sound engineering](https://soundcloud.com/thesquash) for Jazz concerts (Shanghai) - 2013: [Giant Bicycles](https://www.giant-bicycles.com/int) Mechanic & Retail (Shanghai) - 2013: [Specialized Bicycles](https://www.specialized.com) Mechanic & Retail (Shanghai) - 2013: [Mac Repair Concordia](https://github.com/pirate/django-concurrency-talk/files/2863996/Mac.Repair.Concordia.Poster.pdf) Founder & Repair Technician (Shanghai) - 2012: [MODSquad Bicycles](http://modsquadcycles.com/) Retail & Apprentice Mechanic (NYC) --- <img src="https://i.imgur.com/6GYgSpn.jpg" style="opacity: 0.9; border-radius: 14px; width: 100%;"> --- # Education While I learn best from self-directed research and unschool environments surrounded by earnest peers, I've also attended several traditional schools and taken a few online classes in various subjects. The classes I did not fully complete are marked (partial). ### Advanced Education In-person courses and MOOCs that were roughly undergrad level or above. - **[Recurse Center](https://recurse.com): Summer 2014 alumni and active community member** - [C++ & Data Structures](https://www.pdx.edu/computer-science/cs163) (Portland CC: CS163) [Github](https://github.com/pirate/Cpp-Data-Structures) - [Neuroscience: Drugs & The Brain](https://www.coursera.org/learn/drugs-and-brain) (Caltech: Henry A. Lester on Coursera) - [Mathematics for Computer Science](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/) (MIT OpenCourse: 6.042J) - [AP Computer Science](https://www.concordiashanghai.org/academics/high-school/math#fs-panel-13833) (CISS: AP Curriculum using Java) - [Modern Physics: Quantum Mechanics](https://itunes.apple.com/us/podcast/modern-physics-quantum-mechanics-winter-2012/id496370704?mt=2) (Stanford: Leonard Susskind on iTunes U) (partial) - [Developing iOS 8 Apps with Swift](https://itunes.apple.com/us/course/developing-ios-8-apps-with-swift/id961180099) (Stanford: Paul Hegarty on iTunes U) (partial) See notes and exercises for some of these courses under [Writing](#Writing) & [Personal Projects](#Personal-Projects)... ### Meetups, Workshops, and Conferences In-depth educational events that I've learned a significant amount from. - **[Never Graduate Week](https://recurse.com): Week-long unconference at the Recurse Center** (NYC) - [Papers We Love:](https://paperswelove.org) Meetup where members present technical papers in detail (SF, NY, MTL) - [CodeNeuro:](http://codeneuro.org/) Multi-day educational neuroscience + comp-sci [workshops](/s/codeneuro-2015) (San Francisco) - PyCon Colombia 2019 - PyGotham NYC 2018 - SIGMA Malta 2018 - JSConf Colombia 2017 - PyCon 2015 Montreal - !!Con (on my wishlist) - And a bunch of smaller assorted meetups and events... See the [Communities](#Communities): [Meetups & Groups](#Meetups-amp-Groups) section for more... ### Early Education High school and below. - Portland, Oregon: [Sunset High School](https://www.beaverton.k12.or.us/schools/sunset): Attended 2013-2014 - Shanghai, China: [MUN](https://www.cissmun.org/): Delegate at multiple conferences and events 2012-2013 - Shanghai, China: Debate team member for multiple events 2011-2013 - Shanghai, China: [Concordia International School Shanghai](https://www.concordiashanghai.org/): Attended 2012-2013 - Shanghai, China: [Fudan International School Shanghai](https://en.wikipedia.org/wiki/Fudan_International_School): Attended 2011-2013 - Shanghai, China: Homeschool, [SCIS](https://www.scis-china.org/), [YCIS](https://www.ycis-sh.com/en/): Attended 2008-2013 - Barcelona, Spain: [Escola Nausica](http://www.escolanausica.cat/ca/) - New York City: [P.S. 75](https://www.ps75pta.org/) --- <img src="https://i.imgur.com/ZgyInWH.jpg" style="opacity: 0.9; border-radius: 14px; width: 100%;"> --- <center> [Website](https://nicksweeting.com) | [About](#About-Me) | [Github](https://github.com/pirate) | [Twitter](https://twitter.com/theSquashSH) | [LinkedIn](https://www.linkedin.com/in/nicksweeting) | [Medium](https://medium.com/@theSquashSH) | [SoundCloud](https://soundcloud.com/thesquash) <small> This blog runs on: [CodiMD (Github)](https://github.com/hackmdio) & [NickSweeting.com (Github)](https://github.com/pirate/nicksweeting.com)<br/> Nick Sweeting © 2019</small> </center>