Skip to content
View DanCouper's full-sized avatar

Block or report DanCouper

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
DanCouper/README.md

Daniel Couper

Web platform engineer (10+ years) | UI/UX, accessibility, design systems, performance, security, full stack

Experience

Two things have shaped my career. I have always used my design background to inform how I approach development, which my frontend specialisation reflects. And I've worked hard to gain a wide understanding of all levels of the web stack and, more generally, many different paradigms. This has meant I can contribute meaningfully at every level, even when I'm not writing the code.

  • I've mostly worked in highly regulated industries (gaming, finance-adjacent). In these industries, compliance and operational resilience are of paramount importance.
  • A common theme during my career has been architecting and managing white-label systems. I find the complexity of using one codebase to serve many brands and clients interesting. It also meshes nicely with the creation of design and component systems, another area in which I've often worked.

Frontend

I've been writing HTML, CSS and JavaScript since long before I became a software engineer. I studied design, then worked as a designer for five years. From there, I transitioned to web design, then to software engineering.

  • I have experience using most major libraries and frameworks (modern and legacy). For UI, I have generally used React but I can quickly get up to speed with other libraries/frameworks.
  • I've a deep knowledge of accessibility, testing, performance tuning, architectural patterns and security.
  • My background often puts me in roles that connect designers and engineers. I can speak the language of both, and can translate between the two.

Backend

I can usually get up to speed on a codebase quickly, no matter the programming language. I have worked as a dedicated backend developer in several roles. I've also typically contributed to API design in my frontend roles.

My strongest server-side language is Elixir (often using Phoenix Framework). I am comfortable with Node/Deno, Ruby on Rails and various Rust solutions (Axum primarily). I have experience of Python, Go, OCaml and a little C#.

I'm more than comfortable with relational databases and SQL (primarily Postgres and SQLite). I'm comfortable with several NoSQL technologies, like Redis, DynamoDB, and Mnesia. I tend to know which tech to pick in a given situation, anyway.

For most of my career, I've worked with cloud services as a matter of course, primarily AWS. I'm comfortable with containerisation, deployment, CI/CD and the basics of DevOps.

Programming Languages

Languages I am most productive in:

  • JavaScript. A language I have worked with for around 15 years. Primarily that has been in service to client-facing frontend code (UI or the layer below the UI).
  • TypeScript. Almost all JS code I write is TS; I've used it since shortly after its initial release.
  • Elixir (and by extension Erlang). A toolkit for building reliable concurrent distributed systems. A language I taught myself at my first proper software engineering job. I was looking for a more functional alternative to Ruby. So I've used it since its early days, and have worked primarily as an Elixir programmer in two of my jobs.
  • Rust. The language I build most tools in now. I wouldn't necessarily lead with it. But given the right context (in my case, focussed development tooling), this is what I would use.

There is a long list of languages I can read and write (including Ruby, Python, Go, OCaml, C# and Elm). I wouldn't lead with them, either because I did not work exclusively with them in a given job, or because my skills have atrophied over time.

I have a strong interest in functional paradigms. The languages I'm most comfortable with reflect this interest.

AI

I've used modern AI tools for years. I've seen them grow and know what they excel at. For me, they are for quick prototyping, doing repetitive tasks, checking my work, and brushing up on tech I haven't used in a while. They aren't a substitute for understanding the problem or owning the code. The lessons from decades of good design practice still apply, regardless of how the code came to be.

Popular repositories Loading

  1. natural_sort natural_sort Public

    Elixir natural sort implementation for lists of strings.

    Elixir 14 6

  2. resources-reasonml resources-reasonml Public

    List of ReasonML resources

    12 3

  3. Bettest Bettest Public archive

    A small betting app with ho hum functionality!

    JavaScript 4

  4. minesweeper minesweeper Public

    Playing with Erlang's Digraph module in the context of a small Elixir app.

    Elixir 2

  5. Dotfiles Dotfiles Public

    .

    Perl 1

  6. es6-module-starter es6-module-starter Public archive

    Babel ES2015+ Module boilerplate with testing/coverage, using AVA, NYC, Coveralls and Semaphore.

    Shell 1 2