{"data":{"mdx":{"code":{"body":"function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nreturn class MDXContent extends React.Component {\n  constructor(props) {\n    super(props);\n    this.layout = null;\n  }\n\n  render() {\n    const _this$props = this.props,\n          {\n      components\n    } = _this$props,\n          props = _objectWithoutProperties(_this$props, [\"components\"]);\n\n    return React.createElement(MDXTag, {\n      name: \"wrapper\",\n      components: components\n    }, React.createElement(MDXTag, {\n      name: \"p\",\n      components: components\n    }, `At `, React.createElement(MDXTag, {\n      name: \"a\",\n      components: components,\n      parentName: \"p\",\n      props: {\n        \"href\": \"https://uniregistry.com\"\n      }\n    }, `Uniregistry`), ` we're a small team of developers managing millions of domain names for our customers. I'm writing mostly `, React.createElement(Tech, null, `Python`), `, using `, React.createElement(MDXTag, {\n      name: \"inlineCode\",\n      components: components,\n      parentName: \"p\"\n    }, `Pyramid`), `, `, React.createElement(MDXTag, {\n      name: \"inlineCode\",\n      components: components,\n      parentName: \"p\"\n    }, `SQLAlchemy`), `, `, React.createElement(MDXTag, {\n      name: \"inlineCode\",\n      components: components,\n      parentName: \"p\"\n    }, `Celery`), ` (`, React.createElement(MDXTag, {\n      name: \"inlineCode\",\n      components: components,\n      parentName: \"p\"\n    }, `RabbitMQ`), `) & `, React.createElement(MDXTag, {\n      name: \"inlineCode\",\n      components: components,\n      parentName: \"p\"\n    }, `PostgreSQL`), `. I sometimes edit our Frontend written in `, React.createElement(MDXTag, {\n      name: \"inlineCode\",\n      components: components,\n      parentName: \"p\"\n    }, `React`), `, but am not involved in much UI work/design.`), React.createElement(MDXTag, {\n      name: \"p\",\n      components: components\n    }, `I worked in the Cayman Islands 🇰🇾 office for my first four years at Uniregistry, but am now fully remote and currently based in Sierra Leone 🇸🇱 (UTC+0). I have a lovely little home office, a backup generator, and a stable 4G connection if my standard internet connection gives me any trouble.`), React.createElement(MDXTag, {\n      name: \"p\",\n      components: components\n    }, `I wrote the backend implementations for many of our trickiest ccTLDs (.cn, .de, .co.uk, .in, .io, .ca, .us, .ky). More are in the works, I promise. I've also added premium price support for many new gTLDs (.car / .cars / .auto, .app, etc.) - domains that were reserved by their registries and are not available for the normal registration price. Try searching for 'computer.school' on `, React.createElement(MDXTag, {\n      name: \"a\",\n      components: components,\n      parentName: \"p\",\n      props: {\n        \"href\": \"https://uniregistry.com\"\n      }\n    }, `Uniregistry.com`), ` to see an example.`), React.createElement(MDXTag, {\n      name: \"p\",\n      components: components\n    }, `I also wrote the middleware capturing application metrics for our web stack and backend workers and sending them off to Grafana via Telegraf & the InfluxDB stack.`), React.createElement(MDXTag, {\n      name: \"p\",\n      components: components\n    }, `I also enjoy working across our whole stack. Those emails that you get every six months/yearly to check that your registrant addresses are still valid, I built, for example. I also created the transfer reminder emails and made transfers expire after a few days. Most of my other work is hard to describe since it's deep in the backend.`));\n  }\n\n}"},"frontmatter":{"type":null,"dates":{"start":2014,"end":null,"event":null},"org":"uniregistry.com","detail":"Backend","tech":["Python","PostgreSQL","EPP","XML","Pyramid","Celery","RabbitMQ","pytest","Sentry","macOS","Debian","Ubuntu"],"role":"Software Engineer"},"fields":{"techPages":["postgresql","ubuntu","python"]}}},"pageContext":{"id":"6efbe6e1-73f8-5aad-a29c-2453e0391563","slug":"/xp/2014-uniregistry"}}