Skip to content

Instantly share code, notes, and snippets.

@dmikusa
Created May 16, 2023 22:02
Show Gist options
  • Save dmikusa/36355dd353ccc9fb6ed74b46072a2223 to your computer and use it in GitHub Desktop.
Save dmikusa/36355dd353ccc9fb6ed74b46072a2223 to your computer and use it in GitHub Desktop.

Programming Challenges

  • Pick something and implement it
  • The topics are open-ended
  • Pairing is suggested
  • Want to try some new tech, this is a great time
  • You may use any tools that you like, including code generators and AI, but make sure you can roughly explain what your code is going at the end
  • Towards the end, we'll ask people to show off their work. A demo or quick code walk through. Nothing crazy, just a couple minutes.
  • You must decide what you implement. Consider time, what you can deliver, what you can reasonably demo, and wow factor.

Network Cipher Service

Implement a cryptography service.

  • The service should network accessible, but no particular protocols are required. Implement a RAW TCP socket, a REST service, gRPC, RSocket, GraphQL, or whatever sounds fun and interesting.

  • You must design the API. There are no wrong answers, but consider the following: a value proposition (or a mock one? don't over think this), flexibility, ability to expand the API, ability to scale it, and usability (may depend on your value proposition).

  • Implement one cryptographic cipher. Don't worry, it can be simple like a ROT Cipher.

  • Other optional tasks:

    • Implement more ciphers, possibly using 3rd party libraries.
    • Implement tests.
    • Create a client library.
    • Create a GUI or CLI (can be auto generated like a Swagger UI)
    • Expose a service/client contract
    • Add authentication/authorization, user access controlls, etc...
    • Compile it to native-image
    • Containerize it

Make an API Mashup

Take some cool APIs, mash them together and do something even cooler.

Rube Goldberg Data Processing Pipeline

Love working with data? Take some, make some fun pipelines and show what you can do.

  • Find an interesting data source. There are many free on the web.

  • Set up your favorite data processing tools

  • Start making your pipelines. They don't necessarily need to be practical or optimally efficient, think Rube Goldberg machine, and do something fun & show off what you can do.

  • Optional tasks:

    • Pull together multiple data sets
    • Add tests
    • Create a UI
    • Visualize your pipelines
    • Containerize or package for deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment