- 🔭 I’m currently being a parent of 3 children 🫠. When I have a chance I tinker with Bevy or play with XML.
- 🌱 I’m learning Rust and loving it ❤️🦀.
- 💬 Ask me about SQL, .Net, C#, Named Pipes, Roslyn, Rust, Bevy, MSI, WIX toolset, CIL, Scala, Spark Structured Streaming.
- 📫 You can reach me via LinkedIn, Twitter, or email at tomas.sql@proton.me.
- ⚡ Fun fact: I first learned to dive and then I learned to swim.
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.
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
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...
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 😃.
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!
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.