Karlis
Purens

Software Developer Portfolio

Experience
Java Enterprise
7 years backend
Java Development
Freelance Projects
3 years freelance
Project Development
Knowledge
Languages
Java, C#, C++
JS, Bash, Shell
Databases
Oracle, PostgreSQL, Liquibase, Hibernate
Frameworks
Spring, Docker,
GWT, Cuda, Kafka
Build Tools
Maven, Gradle,
Ant, Jenkins
Servers
Azure, Jboss
Apache Tomcat
Services
APIs, REST, SOAP,
UDP, TCP, FTP
Concepts
  • MVC frameworks, client-server structure
  • DevOps experience - Azure, Docker, Kafka
  • Certificates, SSL, Data-security, Encryption
  • Writing Scripts in Bash / Shell / Python / C++
  • Gradle / Maven / Ant builds and configuration
  • Excellent knowledge of REST web-services & APIs
  • Experience with WebLogic / Tomcat / JBoss servers
  • Knowledge of Cloud Subscriptions, Events, Queues

GPT Helper

Automated AI Tool

Aug 2023 - Nov 2023

Description

Creating automated GPT helper tool.

Tool is designed to significantly improve daily workflow.

Completes user goals by clarifying and splitting them into smaller tasks.

Main advantage is the ability to modify file system using function calls. Regular ChatGPT can not modify user file-system resulting in large overhead.

Can easily select desired context using web interface. Eliminates the need for copy-pasting code to/from ChatGPT.

Core functionality implemented using Java Spring + Gradle.

Front-end displays relevant information using NodeJS + React.

Using non-blocking reactive Spring WebClient to access GPT API.

Tool is not limited to single scope or programming language. This allows performing tasks in any coding language or framework.

Technologies
  • Frontend: Component-based UI using NodeJS / React
  • Backend: Java Spring Framework with Gradle
  • Testing: Ensuring code quality using JUnit tests
  • Integrations: Integration with GPT API using WebClient

CudaSecp

Cuda Application

Jul 2022 - Oct 2022

Description

Cuda Secp256k1 Wallet / Account Recovery Tool.
Performs Secp256k1 Point Multiplication directly on GPU.
Can be used for efficient brain-wallet or mnemonic-phrase recovery.

Multi-threaded client-side written in C++.
Main thread manages client-server communication.
GPU thread executes several commands on each cuda core:

  1. Performs Sha256 hashing function on input seed
  2. Splits private key into 16 chunks (2 bytes each)
  3. Loads chunk points from pre-computed GTable
  4. Adds these elliptic curve points together
  5. Computes modular inverse - obtaining 64-byte public key
  6. Calculates compressed / uncompressed Hash160 values
  7. Searches last 8 bytes of Hash160 in the target buffer
  8. Returns found private keys in output buffer

Clients can be quickly deployed as Docker images.
Java Spring server synchronizes multiple clients.
Multiple endpoints are exposed as REST services.
Authorization endpoint manages client credentials / tokens.
File endpoint allows downloading binary target hash files.
Sync endpoint synchronizes next and done words.
PostgreSQL database + Spring JPA manages data storage.

Technologies
  • Client: C++ / Makefiles / Configuration
  • Nvidia: Cuda Computing / GPU Kernel code
  • Crypto: Seeds / Private Keys / Public Keys
  • Hashing: Hashing Functions (Sha256 / RIPEMD)
  • Network: Docker / Rest-API / Synchronization
  • Server: Java / Spring / PostgreSQL / Scheduler

Housify

Search Engine

Jan 2021 – Dec 2021

Description

Real-estate search engine: Housify.lv

Main goal of the system is to collect real-estate posters from multiple websites and display them in simple unified format.

System uses microservice architecture. Each microservice runs custom Java Spring service inside a Docker container and communicates with other containers / services.

Poster data is stored in PostgreSQL database and managed by the Poster service.

Poster images are handled by Image service, which can be directly accessed by client-side apps to reduce load on API-Gateway.

Web Crawler process periodically crawls all websites, uses JSoup to read / parse the HTML content, finds new housing posters and sends them to Poster service.

Advanced features include viewing poster historic versions,
loading nearby posters and calculating statistics for specific address.

Technologies
  • Frontend: Responsive UI with customized Google Maps
  • Backend: Java Spring Microservice architecture
  • Database: Large-scale data storage (MongoDB & PostgreSQL)
  • Services: Multiple internal & external GET / POST services
  • Docker: Multiple Docker pods, each handling part of system
  • Crawler: Custom web-crawler loading & parsing HTML schema
  • Network: Fast client / server communication (WebSockets)

PDF Gen

Java Spring Service

Oct 2020 – Dec 2020

Description

Developing PDF Generator service.
Service designed to allow fast and reliable PDF generation.

Can be easily adapted for any type of PDF file:
(Contracts, Invoices, Receipts, Manifests, etc)

PDF request is sent by front-end and then validated.
Necessary information is fetched from the database.
HTML template is loaded and used to generate new PDF file.

Service uses Java Spring Boot as backend framework.
MongoDB is currently used as persistance layer.

Service includes caching to avoid generating identical PDFs.
If PDF file for specific request already exists then it is returned from cache.

Technologies
  • Platform: Java, Spring-Boot, Spring-MVC, REST-service
  • Authorization: OAuth, Validation, Encryption
  • Persistance: MongoDB, Caching, Indexing
  • PDF-Generator: HTML Templates, PDF-Box framework

Qred

Finance Project

March 2019 - May 2020

Description

Working for the largest Nordic creditor: Qred

Qred gives out loans to small businesses, but instead of having complex fees and conditions the payback process is very simple - a fixed monthly payment similar to gym membership.

Worked as full-stack Java developer with wide variety of responsibilities.

Front-end form and interface improvements using GWT and XML config.

Back-end improvements with Java, Lombok, custom mapping framework.

Database management with PostgreSQL / Liquibase / Hibernate.

Build management with Gradle, Jenkins & Linux scripts.

Transitioning towards Microservice architecture with AWS + Docker

Multiple different REST / SOAP APIs to external systems.

Daily / Hourly processes with complex transaction logic.

Accounting changes and improvements,
Parsing payment information from bank CSV / Excel files.

Handling high-value assets for partners through FTP.
Handling contract changes / templates / reports.

Technologies
  • Frontend: Form improvements with GWT, HTML, JS, JQuery
  • Backend: Core system development in Java + Custom Framework
  • Database: DB management with PostgreSQL, Liquibase, Hibernate
  • Integrations: Integrations with Nordiska, PayByLink, Bisnode, Creditsafe
  • Microservice: Extending Microservice architecture with AWS, Docker
  • FTP files: FTP file transfer and payment processing.
  • Builds: Optimizing builds with Jenkins + Gradle

Other

Java Enterprise

2014 - 2019

Description

Previous employment in various tech companies in Latvia.

Participating in multiple Java Enterprise projects.
Most projects were large-scale monolythic web applications.

Gained valuable experience working with core Java technologies,
builds, versioning, deployments and server configuration.

Most projects also had complex database structure in either Oracle or Postgres, which allowed me to become familiar with DB optimization, indexing, data-types and procedures.

Each project had one or more REST services leading to good understanding of data-flow, TCP, APIs, JSONs, common issues and best practices.

Full details can be found in my CV.

Technologies
  • Frontend: GWT, HTML, JS, JQuery, JSP, JSF
  • Backend: Java, JDBC, Hibernate, Lombok
  • Database: Oracle, PL/SQL, PostgreSQL
  • Services: Various web-services with REST, SOAP
  • Reports: PDF reports, Google charts, CSV files
  • Servers: Tomcat, Weblogic, JBOSS

Contact

Contact
Email
karlis.purens@gmail.com
×