Daniel Krol
portfolio (github) • dan@danielkrol.com • Download as PDF
Senior Software Developer
Values: Clean code, Clean data, Clear team communication.
Skill highlights: Python, Go, Node.js, TypeScript, Blockchain, OpenStreetMap, Linux, Functional Programming
Work History
Cointr.ee
Software Development Contractor - Mar 2024-Aug 2024
Cointr.ee is a platform for creators to accept cryptocurrency donations, and for fans to post messages to their favorite creators.
- Add ZCash support: Allowing transparent ZCash donations to be posted to the site.
- Bug Fixes: Fix UI bugs, duplicate emails, and BCH donations not being detected.
- Upgrade Dependencies: Get React and Firebase Functions up to date. Address reverse-incompatible changes. Test plan for regressions.
- Usage Statistics: Create a script that can be run to give site owners a view of how the site is used.
Semicolons
Software Development Contractor - Feb 2024
Semicolons is a platform for funding open source projects.
- Research Project - Worked with data scientist to study dependency relationships between software packages. Used sources such as Software Bill of Materials.
Software Engineer - Oct 2021-Nov 2022
Contributed to and lead various projects related to blockchain and distributed/peer-to-peer systems, including:
- Wallet Sync Server: Protocol design and Go server implementation for LBRY non-custodial cryptocurrency wallet sync. Syncing encrypted wallet between client and server with a single password, securely, without losing data.
- ActivityPub Integration: Researched and worked on ActivityPub integration for LBRY, to enable federated social features such as comments, likes and follows.
- JavaScript Wallet: Created proof-of-concept implementation of LBRY wallet in JavaScript for signing transactions in the browser.
Sandstorm Community Project
Open Source Web Application Developer - Oct 2021-Dec 2023
Developed applications for Sandstorm, an open source platform for self-hosted web applications, both as a volunteer and as a contractor.
ElectionBettingOdds.com
Software Development Contractor - Oct 2020-Oct 2022
ElectionBettingOdds.com is an aggregator of betting odds on the outcomes of key events, usually elections, from various betting websites. I made various improvements to the site, including:
- Electability Feature: Implemented the “Electability” feature, factoring in odds for primary and general election victory.
- Data Sources: Greatly improved the flexibility in adding and combining betting websites as data sources.
- Error Handling: Improved error handling and tolerance.
- Data History Format: Made data history format more robust and useful.
Etherpad
Open Source Developer - Apr 2020-Jul 2020
Contributed to Etherpad, a prominent open-source web-based word processor, implemented in JavaScript. Projects included:
- WebRTC Plugin: Fixed error messages and ensured cross-browser compatibility, enhancing user A/V chat experience within collaborative documents.
- Color Picker: Corrected user’s avatar color in shared documents, implemented validation test coverage.
- Test Suite: Identified and resolved inaccuracies in cookie reset mechanisms during tests, eliminating potential false positives and reinforcing the reliability of test results.
- Developer Documentation: Refined WebRTC plugin documentation, streamlining the onboarding process for future contributors.
Mix.com - Curation-based content recommendation
Platform Engineer - Nov 2016-Sept 2019
I was part of the backend/API team at Mix.com, an application that recommends content based on user curation. The components I worked on were written in Go and Node.js.
The major part of my job was coordinating with the Recommendation Service team on taxonomy of topics, architectural decisions, and turning user events into feedback for future recommendations.
Basis (an Intel company) - Activity and sleep tracking
Backend Engineer - Apr 2015-Nov 2016
I was part of a small team that managed the API (Python/Flask) for an athletic watch at Basis, part of Intel’s now defunct wearables division.
The most interesting project I was involved in was smoothly transitioning each user to an updated sleep data stream. This was complicated by users having different firmware versions, time zones, and other factors. In the end we mostly avoided interruptions in both individual sleep events and daily aggregates.
Some of my responsibilities included:
- Representing user activities to phone apps.
- Deploying servers via SaltStack.
- Keeping system metrics.
Senior Engineer - Jul 2011-Nov 2014
Python/Django engineer at Brilliant.org, from founding to 1 million signups:
- Helped design backend and database schema for the initial STEM problem solving interface.
- Created UI framework on top of Django that facilitated in-page component updates via ajax, but degraded seamlessly to no-JavaScript for old browsers.
- Integrated analytics and A/B testing, connecting user events to various 3rd party analytics services.
Backend Python/Django developer for Alltuition, which offered streamlined student loan services.
- Improved loan consolidation rate prediction system.
- Conducted Mechanical Turk based research project.
- Created Python Client Library based on 3rd party API spec.
Other Contracting
Datamaglia - Dec 2014-Feb 2015 - Python/Django development
Voyager Tech - May 2011-Jul 2011 - Python/Django development
Shelfworthy - Apr 2010-Oct 2010 - Python/Django development
Reuseit - Nov 2009-Dec 2009, Feb 2011-Jul 2011
PHP/SQL development. Feature/bug fixes for site, store and shipping systems.
Brilliant - Oct 2020-Jul 2021
Planning and writing interactive online computer science course material.
Open Source Projects
See: Open Source Portfolio
Education
- 2001-2005
- B.S., Computer Engineering Illinois Institute Of Technology (Chicago, IL)
- 2014
Functional Programming Principles in Scala Coursera (Online)
See: Course Record
- 2014
- Erlang Camp A weekend-long crash course in Erlang and OTP (Austin, TX)
Skills
Languages
Python
Go
Node.js
TypeScript
Haskell
Django
Flask
PostgreSQL
Angular/React
Ansible
SaltStack
Docker
AWS/Firebase/Netlify
Kafka
Operating Systems
- Ubuntu/Debian
- QubesOS
- OSX
Other
Test Driven Development
Functional Programming
WebRTC
Blockchain
WebSockets
OpenStreetMap/Leaflet
Interests and Activities
- Juggling
- Biking
- Editing OpenStreetMap
<dan@danielkrol.com>