Coder Social home page Coder Social logo

profile

Hi there πŸ‘‹

My journey

I was born in Lithuania. I have 1 older sister and 2 older brothers. My parents are hard-working even to this day, they never stop. I grew up with little supervision and thus I managed to retain my natural curiosity. At school, I was not a social type of person. I had a hard stance on my views and I was really hard to argue with. I had only one friend, an arm wrestler, a really good one. I loved Math and Physics classes a lot. Geometry was my thing, it felt like playing games. As an extracurricular activity, I joined computer classes early on. Geometry had to slide aside. After graduating from school I immediately started studying Computer Science. What a mistake. I was ready to study but not ready to take care of myself. The Food I ate was terrible and I had exhausted my body in half a year. I could not take it anymore and drop out. Started again the next year and dropped out again. Young and stupid me. Then I joined the Lithuanian Armed Forces. I swore I would never do it when I was younger, but here I am. The year was life-changing both physically and mentally. After a year I knew what I needed to change in my life so I did not need to go to the army anymore πŸ˜ƒ. I have finished my Bachelor's and Master's degree studies in KlaipΔ—da. Being social was a thing for me now and I have joined KlaipΔ—da University Student Union.

Professional life starts

While studying for a Master's degree I found myself a job at UAB Omega Technology. A great place to start. Norwegians being the founders even more so true. The main product in Omega365 is PIMS among others. But I was more fit to work on technology, not the products. Most of the time there I have spent on Appframe: a suite of tools and a framework to create products. I have gained tremendous amounts of knowledge and experience there (~9% of my life there 🀯). SQL Server is at the forefront in Omega365. Also, .Net is all over the place: on Servers, Windows UI, and Tools. I spent in a technology department and tooling was my passion. I hope I have contributed to the success of the technology and products they create.

  • I had an opportunity to learn SQL from the best. At some point they wanted me to rewrite the SQL template engine from .Net to SQL and I did. It was challenging and fun. A sneak peek at SQL Templates at the Omega 365 documentation site.
  • Implemented automatic tracking of the dependencies: database objects, .Net libraries, Windows Apps, Web Apps... It is like dependabot but for .Net and SQL Server only. To make it automatic I needed to dive into CIL disassembly and analysis. ILSpy was used extensively to learn how compiled DLLs look inside.
  • Have Created the initial version of the code analyzer a backend to write lints for your components. My passion led me to write initial lints for SQL. Used TSQL parser under the hood. Also authored some lints for .Net libraries using Cecil.
  • Had a blast implementing the updater for them (the initial version took 2 weeks to implement). Had a chance to use technologies created by myself as the SQL Templates mentioned earlier.
  • Contributed a lot to MSI and ClickOnce build tooling. Started using WIX toolset at the time. I must say ClickOnce is my least favorite tech out there. If you can, avoid it. WIX toolset on the other hand is great. As my hobby project, I have created a solution to the author MSI packages for Godot executable

The pandemic Crysis

We all live our happy lives. And then we do not. For me, it felt like waking up from a dream. Not a bad one, but I knew I needed something else besides SQL server and .Net in my professional life. I left my happy life in Omega and started working for Vaultspeed. Automation is the thing they do. Specifically, they take on the task of porting your data models to DataVault. They have a solution to generate code so you do not have to write it by hand. The Tech stack at Vaultspeed is PostgreSQL with some Groovy code to do the code generation. Had a decent exposure to Postgres and fell in love with it. But the only thing I contributed is Spark Structured streaming proof of concept. It was a blast and an interesting opportunity. During that time I had a chance to remember Scala and adapted spark structured streaming JDBC sink to what Vaultspeed needs. They have a very rigid and I would say Academic structure of prototyping. I had to document my proof of concept end to end. Good thing I love documenting stuff πŸ˜ƒ. Too bad it is not open source...

Kids booming

Work at Vaultspeed was 99% remote. I was working from home most of the time. Being at home means you get to see all your family around. Great for family bonding not so great for the business πŸ˜ƒ. And so me and my wife, we wait for our third child... I have decided to leave Vaultspeed and take 1 year of child care. Planned so many things. A lot of spare time right?! When my daughter was 6 months I finally started getting some "spare" time. Being with my kids is great, but after my childcare ends I still have to feed them. I took on my Rust journey seriously... And started creating games πŸ˜ƒ.

Learning Rust

I tried a lot of things. Started with the Rust Book. Then jumped into rustlings exercises. Went on to the Exercism Rust track. Tried reading Rust in Action. Found Hands-on Rust and it clicked. Followed it through and the result is here. Then followed Bevy Minesweeper tutorial series, the result is here. Then I started my project - bevy roguelike. I got to write my own Rust code for the first time. Bevy engine felt right for me. You define some data structures in Rust and then write some functions to manipulate those data structures and the ones defined by Bevy. And that is it, simple and elegant. You can create any game with that. Now I am ready for the next level and starting to read Rust for Rustaceans. I know it is going to be fun!

Learning to love what you have

After my parental vacation, I did not land a "Rust" job. Instead, I came back to what I was best at - dotnet. I have joined a NordVPN Windows apps team as a Senior Engineer. An amazing energetic "Power Puffs" team. I helped implement the C# library on top of libdrop. Continuing the "Read a book" trend I grabbed "The Staff Engineer's Path" and I love it so far. At this point, one might wonder - what happened to my "Rust" love? It is still there. During my spare time I have developed xml-mut - a simple XML mutation definition language resembling SQL. There were some problems with our csproj files I did not want to tackle manually. I developed it during cold winter mornings and later I did a presentation about it at a Nord Security "Tech days" conference. Additionally, I had a chance to rediscover my passion for Roslyn code analysis. I have developed a few analyzers during our "small improvements days". In tech there is no commitment, you can love multiple things at once. Later on, I had a chance to work on IPC now as a "Staff Engineer". I helped implement Named Pipes communication between the app and windows service. It was a blast so far. Learned a great deal about cryptography, windows security, and of course windows named pipes.

Language usage Stats from GitHub

github stats

Tomas Dambrauskas's Projects

albion icon albion

Non-interactive firewall based on WFP (Windows Filtering Platform)

bevy_egui icon bevy_egui

πŸ‡ΊπŸ‡¦ Please support the Ukrainian army: https://www.comebackalive.in.ua/donate

caliburn.micro icon caliburn.micro

A small, yet powerful framework, designed for building applications across all XAML platforms. Its strong support for MV* patterns will enable you to build your solution quickly, without the need to sacrifice code quality or testability.

cargo-nuget icon cargo-nuget

A tool for packaging Native Rust libs as Nuget nupkgs

format icon format

Home for the dotnet-format command

godot.msi icon godot.msi

Test build scripts for godot tools msi packages

lsp-types icon lsp-types

Types for communicating with a language server

mediator icon mediator

A high performance implementation of Mediator pattern in .NET using source generators.

streamjsonrpc.sample icon streamjsonrpc.sample

Sample use of StreamJsonRpc that demonstrate separate client/server processes over named pipes.

xml-mut icon xml-mut

xml mutation language resembling sql

xot icon xot

Xot - XML object tree

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.