Skip to content
View jowillianto's full-sized avatar
  • South Korea
  • 23:04 (UTC -12:00)

Block or report jowillianto

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.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
jowillianto/README.md

Hi, I'm Jonathan ๐Ÿ‘‹

I graduated double major in Mechanical Engineering and Computer Science from KAIST ๐Ÿ‡ฐ๐Ÿ‡ท.

I am very keen in robotics and system programming related topics. One of the courses I really liked the most while I was an undergraduate student is about concurrency.

I used to really like C++ as a programming language and is now moving on to Rust as it is more modern and has a built in package manager.

Open Source Contributions

Reflect CPP is a Moderna C++ Library that allows for pydantic style (i.e. serde style) serialisation in C++. By only declaring structs, one can serialize whole structs into JSON and many more other structures.

Hobby Projects

Modern C++ modules based CLI Application Library. Batteries included, parses argument and attach actions to arguments made. Use only the import keyword without any includes.

Modern C++ modules based testing library. Batteries included, perform asserts on std::expected, create new tests with macros (sadly this means includes), and add your tests to CMakeLists.txt with a function. This includes sanitizers, etc..

Modern C++ modules based subprocess spawning, spawn childs with system code and results returned through std::expected, no more worrying about any exception being thrown obnoxiously. Since, in this library, only std::bad_alloc will be obnoxiously thrown.

Moderna C++ modules based library for IO into file descriptors. Most of the functions described here are noexcept and results are as usual returned through std::expected. This way, no need to worry about obnoxious parsing error thrown during parsing.

Developing with C++ modules requires the newest of compilers. cpp-module-toolchain installs everything in a docker container and allows you to compile for the linux os.

Rust port of moderna-cli, uses very similar structures with a few upgrades.

This is still under works, still private. This is a C++20 coroutine based asyncio abstraction. It will include an event queue and lockfree structures. Currently, an atomic shared pointer (that is lockfree, with tagged pointers) implementation is already inside. A testing with the Michael-Scott queue and this atomic shared pointer reveals an at least 5 times speedup compared to its mutex counterpart. However, further testing is still being conducted. Stay tuned.

Stance on Programming

I have currently used a variety of programming languages and can vouch that I have a good command of each one of them. I know C++, Rust, Python, Scala, Typescript and Javascript. If I am going to rank the languages from best to worst in terms of usability, I would rank them as follows: Rust, C++, Typescript, Scala, Javascript, Python. I really like how explicit rust is with their error handling. The bane of programming comes from when you use Python, Javascript or Typescript and there is an exception that is thrown by a specific library you are using, this exception is very implicit and is hidden until you test a specific code paths. Hence, having explicit return codes like Result in Rust and std::expected in C++ is good when you want to program for long hours. Of course, testing is still needed, however, it is easier to reason about correctness if errors are not implicitly thrown. Additionally, a lot of developers use exception as a means of flow control, this is also not very good in practice since it is not why exceptions are created for. Exceptions should really be reserved for exceptional cases or non-recoverable errors such as when memory cannot be allocated by the OS anymore or argument errors.

Programming Skills

Languages

  • ๐Ÿ‡ฐ๐Ÿ‡ท: kind of fluent
  • ๐Ÿ‡ฎ๐Ÿ‡ฉ: born here haha
  • ๐Ÿ‡จ๐Ÿ‡ณ: spoken from birth, optimistically fluent.
  • ๐Ÿ‡ฌ๐Ÿ‡ง: spoken from birth, fluent.

Pinned Loading

  1. jowi-cli jowi-cli Public

    C++23 based library to write command line based applications.

    C++

  2. jowi-process jowi-process Public

    C++23 based library for spawning subprocesses and processes.

    C++

  3. jowi-test-lib jowi-test-lib Public

    A Simple and Light C++23 modules based C++ testing library.

    C++ 4

  4. jowi-generic jowi-generic Public

    Generic Structures that a lot of programs use.

    C++

  5. jowi-io jowi-io Public

    C++

  6. file-lock file-lock Public

    Multiprocess Safe File Locking System for C++23 with a Python Wrapper

    C++ 2