Dan Jakob Ofer
Father / Husband / Passionate Software Developer who uses AI to resolve problems (but against vibe-coding)
Current Experience
Thomson Reuters - Site Reliability Tech Lead
January 2022 – Present
Our objective is to automate all manual processes.
Artificial Intelligence
- Summarize change release reports with Claude Opus using artificial intelligence
- Vibe-coded an authorization endpoint for a RAG-chain backed chatbot that uses artificial intelligence
- Find solutions to new problems by prompting Claude Sonnet using Claude Code
- Review GitHub Pull Requests using GitHub Copilot (configured via
./.github/copilot-instructions.md) - Review GitHub Pull Requests using Claude Code using Sonnet (configured via
./CLAUDE.md) together with the GitHub MCP Server to improve both my own code and colleagues
GitHub Actions
- Use GitHub Actions to start new sprints
- GitHub Actions deploy to testing environments on cronjob schedule
- GitHub Actions to deploy to Production and User Acceptance Environments
- GitHub Actions that automatically validate that unit tests pass and code quality
Adobe Cloud Manager
Post-Deployment Lambda Actions
- Post-Deployment actions written in Python are executed on AWS Lambda Functions
- Adobe Cloud Manager executes them after a deployment has (either successfully or unsuccessfully) finished
- Clear the Dispatcher (the Apache HTTPd server) and the AWS CloudFront (CDN) caches
- Notify stakeholders by sending emails
- Notify stakeholders and developers within a Microsoft Teams channel
Datadog
- Send our logs (Adobe Experience Manager), Dispatcher, Firewall (WAF), CloudFront (CDN), automated testing, AWS S3 Buckets, and Google Lighthouse to Datadog
- Use Application Performance Monitoring (APM) to correlate logs and errors
- Use APM tags to tag heartbeat monitors and infrastructure per environment
- Trace HTTP requests from AEM to other third-party services
- Logs from automated testing and Google Lighthouse were sent to S3 Buckets
- Used the Datadog S3 Forwarder Lambda Function to send logs from S3 Buckets
- Built Grok processors to process logs into Facets and Metrics
- Built Dashboards to make data accessible to Application Teams
- Built Heartbeat monitors (using Synthetic Tests) to ensure that websites are running
- Use PagerDuty to notify by email if website or server is down
- Use ServiceNow to communicate with stakeholders
Personal Projects
I can actually prove it.
Virtual Machine and Jack Compiler
November 2024 to Present
Develop compilers and operating systems for the nand2tetris project
The Hack Computer and Assembly
September to November 2024
Design the Hack Computer and Develop an Assembler for the nand2tetris project
Snake with Graphics
April to May 2025
For the love of the Nokia phone classic
Snake with Terminal Graphics / developed in C
January to March 2025
For the love of the Nokia phone classic
Snake with Terminal Graphics / developed in Go
May 2024
For the love of the Nokia phone classic
Nearest Transit Stops
March 2024
To know where the nearest Toronto Transit Commission's stops/stations are located
Development
- Built using HTML, Sass, and TypeScript in Svelte
- A C# ASP.NET server retrieves all of the TTC's routes using
https://www.ttc.ca/ttcapi/routedetail/listroutes
- Then retrieves each routes details using
https://www.ttc.ca/ttcapi/routedetail/get
- A client-side application, in this case https://transit.ofer.to, displays the nearest stops / stations within a 500-metre radius using the browser's Geolocation
Sudoku
February 2024
A have always wanted to build an online game
Development
- Built using HTML, Sass, and TypeScript
- Used Mucahid Yazar's Sudoku game generator solution
- Players can resume their games by copying the URL
This Personal website
October 2023 – November 2023
A vanity excuse to learn how to build server-side rendered websites in Svelte
Development
- Built in Svelte using HTML, Sass, and TypeScript
- Avoid runtime penalties because pages are server-side rendered penalty
Microservice Architecture
- Configured a section where users can contact me via email
- Emails are sent using the postfix-docker Docker Container using a .NET Core 6.0 (LTS) application
Continuous Integration / Continuous Deployment
- Configured GitHub Actions with Bash scripts to automate deployments
Financier
December 2018 – December 2020
Software as a Service that analyses income versus expenses. Taking into account multiple variables, it can predict its users future financial situation, giving them insights whether they should purchase a home today with a smaller downpayment or in the future with a larger downpayment
Development
- A C# 9.0 (.NET 5.0 application) ingests the financial into a Postgresql database
- Machine-learning software understands the nature of the financial data
- A Ruby application retrieves the financial data into predefined financial statement files
- A C# 9.0 ASP.NET Core application exposes endpoints to retrieve the financial application
- A web application (written in TypeScript using React components) to display the financial analysis
Past Job Experience
Thomson Reuters - Site Reliability Senior Developer
January 2021 – January 2022
I lead a team of software developers to make developing and deploying more efficient for Thomson Reuters' marketing websites, such as Thomson Reuters' home page. We build Continuous Integration environments that enforce linting for Java, TypeScript, and SCSS; testing including code coverage. Our process is so rigorous that Thomson Reuters can afford to hire short-term vendors to build features on demand, while maintaining high-levels of software quality.
We built a release process using GitHub Actions to facilitate deployment by any vendor to our Staging environments.
We use a testing framework built with Cucumber and Selenium to validate new deployments to our Staging and Production environments to guard against regression.
Adobe Experience Manager
- Use the Checkstyle Maven plugin for Java linting
- Use Prettier and ESLint for TypeScript and SCSS linting
- Use the JaCoCo plugin to ensure high test coverage (at least 81 per cent)
- Migrated the codebase from Java 8 to Java 11
Release Process
- Designed a release process that allows any vendor to easily deploy new software
- New software is vetted by both an automated Integration Testing Framework and manually by Project Managers
- Code is reviewed by senior internal developers to using GitHub Pull Requests
Integration Testing Framework
- High test coverage gives us confidence before a new release goes live
- Create a new automated test case when a new version breaks a web page to ensure it does not repeat itself
- Used Java for the test functionality (i.e., Steps), Cucumber for the test cases (i.e., Features), and Selenium as the web driver
Thomson Reuters - Senior Software Engineer
January 2019 – January 2021
I am a principal contributor who develops and deploys Thomson Reuters’ marketing websites on the Adobe Experience Manager (AEM) platform. Accomplishments include
Adobe Experience Manager
- Consulted on the architecture of new features together with project manager, content authors, and third-party vendors
- Developed new features on Adobe Experience Manager
- Oversaw the development of new webpages such as Onvio and ONESOURCE
- Transitioned the Thomson Reuters Legal page to use Stencil Web Components
Installation
- Created a GitHub repository for creating Docker images consisting of an AEM 6.5 installation with the latest packages
- Placed the latest AEM packages (application and content) in an AWS S3 Bucket
- Wrote GitHub Action pipelines and Bash scripts to automatically update the Docker image and deploy it to JFrog Artifactory
Documentation
- Wrote documentation in both GitHub (for software developers) and on Confluence (for managers, content authors, and third-party vendors.)
- Set up coding guidelines
Continuous Integration / Continuous Deployment
- Configured GitHub Actions with Bash scripts to automate deployments to our Quality Assurance and Pre-production environments
- Set up migration scripts to automate migration of new frontend asset versions
- Configured our Adobe Experience Manager platform to deploy to Adobe Managed Services
PayOnline
- Bug fixes on Thomson Reuters' PayOnline system
Thomson Reuters - Senior Software Engineer
August 2017 – January 2019
Thomson Reuters operates a proprietary Software-as-a-Service (SaaS) platform for running their customers' web applications.
Trike Apps
January 2017 – July 2017
Trike Apps produces Bellroy's e-commerce platform to sell wallets and carry products
Development
- Implemented a smarter caching strategy
- Ensured that slower content loaded asynchronously
- Used Imgix to reduce image sizes
- Extended Bellroy’s templates (written in Liquid) to allow designers to perform A/B testing
- Implemented an integration with PayPal, allowing users to pay using PayPal Express Checkout without needing to leave Bellroy’s website