Would you like to go to https://onsiter.com/us/ instead?
Peut être disponible
(Mis à jour 2022-09-04)Senior developer
Stockholms län, Sweden
Courant English
- .net
- Node
- Distributed systems
Compétences (46)
Docker
.NET Core
NodeJS
Kubernetes
JavaScript
VS CODE
ASP.NET WEB API
TeamCity
Queues
LOGGING
Git
RabbitMQ
Terraform
MORTGAGE LOANS
Kibana
Logstash
Google Cloud
LOANS
CONTINUOUS INTEGRATION/DELIVERY
PHP
GraphQL
React
REDUX
Circle CI
Load Balancing
WordPress
CUSTOMER RELATIONSHIP MANAGEMENT
POINT OF PURCHASE
QUEUE MANAGEMENT
WCF
GCP
ADJUSTMENTS
Continuous Integration
REACTJS
MS .NET
MAINTENANCE
JQuery
TOOLING
CI/CD
Node.js
CRM
WELDING
POP
PIPELINE
CONTRACTS
REBUILD
Résumé
I'm a developer passionate about
new technology and creating
solutions providing value for the
client. In my free time, I spend time
with my kids, run, and learn to play
the guitar. Loves to keep things
simple.
Expérience professionnelle
2022-08 - Actuel
● Starting a move of services to GCP ● Regular maintenance of all the systems fixing bugs etc.
Keywords: NodeJS, Elasticsearch, Kafka, RabbitMQ, Kubernetes, Google Cloud Platform, Terraform SENIOR DEVELOPER • BONNIER NEWS • AUGUSTI 2022 - Bonnier News has merged most of its smaller media companies into one. And is working towards a single content delivery system. I am part of Expressens infra team migrating the data from the old system into the new standardized information schema. To not force changing all of the frontends an adapter API was put in front of the new system allowing the frontends to adapt to the new structure at their own pace.
Keywords: NodeJS, Elasticsearch, Kafka, RabbitMQ, Kubernetes, GraphQL
2021-04 - 2022-08
I'm currently working on the team going through the current system and making changes to support multiple markets.
Keywords: .NET Core, Kubernetes, Camunda, RabbitMQ
2019-08 - 2021-04
I worked in the team that builds the system for handling loan applications. It involves both more architectural work such as deciding where to draw service boundaries and implementation of legal requirements such as PEP checks or calculating repayment plans. As the project grew in size and the number of services increased care was taken to keep dependencies in check. Service-to-service communication is handled between services using REST and messaging. Camunda is used to orchestrate the long-running application process.
Keywords: .NET Core, Kubernetes, Camunda, RabbitMQ
2019-01 - 2020-03
Logs would from time to time go missing because of a fragile log pushing mechanism. I replaced it with an HTTP solution backed by a file buffer, pushing to logstash, improving stability.
Bluestep uses a contract-first approach when designing APIs, contracts were written using the OpenAPI Specification. A few different ways of generating clients/controllers circulated causing discrepancies. I pulled out the generation of C# code to service and wrote a CLI in Node making it really simple to use it.
During the building of the covered bonds system, a need came up for automated alarms signaling both the success and failure of the covered bonds system. No such system was easily available at Bluestep at the time. Given that we were already using application insights in Azure I set up a POC using our current logging provider Serilog to push logs to Application Insights where we could analyze them and set up rules for emails.
Keywords: Postman, Newman, Azure DevOps, Node, Serilog
2018-12 - 2019-08
With my previous docker/Kubernetes experience, I could help out the existing team a lot.
While the heavy infrastructure changes were ongoing we built a system for building a pool of loans used as a safety when the bank will sell covered bonds. I built a simple back office for the covered bonds system in angular.
Keywords: .NET Core, Kubernetes, Azure, MSSQL, Azure DevOps, Angular
2018-06 - 2018-12
Keywords: React, JavaScript, C++, Jest
2017-02 - 2018-05
I was hired to rebuild the entire site and build modularized components to re-use them in the potential future platform. I rebuilt the site with React, built backend components with .NET Core, and hosted them in Azure. The whole architecture was based on microservices. Later I also containerized all the applications and hosted them as Docker containers using Kubernetes in Azure.
Azure SQL Database was used for persistence and Azure Event Hub were used for integration between components.
Keywords: React, Node.js, ASP.NET Core, ASP.NET Web API, C#, Docker, Kubernetes, Azure SQL Database, Azure Event Hub, Azure SQL Database Elastic Pool, RabbitMQ, Microsoft SQL Server, Circle CI, Continuous Integration, Continuous Deployment, Microservices, Domain driven design, IIS, ProtoActor +46 76 180 55 48 gripenstam.com WORK EXPERIENCE
2018-04 - 2018-05
Keywords: GDPR
2018-02 - 2018-03
Not having its own license CasinoPop is using the IGC platform. The team at CasinoPop was not in control of the rabbit broker feeding data to the system from the platform, this brought with it that only one consumer could get all events. Several systems were interested in the same events, to solve this, azure event hub was used as an event ingress then doing a fanout. This allowed for all applications to receive and evaluate the events that impacted their domain, handling retries and idempotency in a way that reflected how the system was supposed to work.
I Built a back-office in react(react-admin) where the business users could set up tournaments, cashback programs, bonuses, and extract lists of customers. The back-office was powered by a Node.js app aggregating all the APIs.
Keywords: .NET Core, C#, Node.js, React, Microsoft SQL Server, Azure, Azure SQL Database Elastic Pool, Docker, Kubernetes, Azure Event Hub, RabbitMQ, Linux
2018-12 - 2018-01
During my time at Bluestep I have been part of two teams, firstly the covered bonds teams where we delivered a product for building a pool of loans to be used as security for a covered bond. Secondly, as part of the loan case team, I built systems for making the loan application process modern and efficient.
I have a passion for tooling and CI/CD and in parallel to delivering business features I have delivered a number of tools and utilities for making life easier for testers and developers.
Keywords: .NET Core, Kubernetes, Azure, MSSQL, Azure Devops, Angular, RabbitMQ, Postman, Newman, Node, Camunda, Docker, CI/CD, Microservices
2017-08 - 2018-01
This allowed a holistic approach to scaling and monitoring the site and all other applications deployed to the cluster.
I also started migrating the services to .NET Core and containerized them and set up continuous integration and continuous deployment. To begin with, no systems were built with idempotency in mind, in some cases resulting in double pay-out of bonuses, when rewriting systems this was taken care of.
Having all code running in docker I moved the CI to CircleCi allowing the removal of one VM the team had to maintain.
Having all applications in the cluster monitoring applications was made easy using a Grafana dashboard powered by data in InfluxDB. All container logs were pushed from the cluster into a hosted ELK stack, setting up alarms for errors and misbehaving applications.
Keywords: .NET Core, C#, Microsoft SQL Server, Azure, Docker, Kubernetes, RabbitMQ, Linux, Elastic Search, Logstash, Kibana, Grafana, Circle CI, Continuous Integration, Continuous deployment.
2017-02 - 2017-10
2017-05 - 2017-07
Changing and deploying the monolith without any tests was error-prone. So, I decided to break it down into smaller manageable parts using .Net Web API using the same rest dialect throughout the system.
Keywords: .NET, C#, Microsoft SQL Server, Azure, Docker, Kubernetes, RabbitMQ, Linux, ProtoActor
2017-02 - 2017-04
I also worked on load balancing the site which involved changing the session management to use a distributed Redis cache and migrating all the static content to a cookie-less domain that pointed to an azure storage container. To be able to work at a faster pace and be more comfortable in deploying I setup CI in TeamCity hosted on a VM.
2012-04 - 2017-02
2016-07 - 2016-12
During the changes to the API, I also rewrote the payout logic to remove the dependency on the NServiceBus sagas improving performance and making the domain code agnostic to where it was hosted and how it received data input.
Keywords: ASP.NET Web API, C#, Microsoft SQL Server, IIS, MSMQ, NServiceBus,
2016-05 - 2016-06
I together with my team have helped analyze the system and the analysis revealed that the way RavenDB was used to be one of the bottlenecks. The usage of dynamic indexes and distributed transactions that RavenDB offers as a feature did not scale for Betsson's needs, partly because those features were used in a way that affects the performance. At the same time, management has decided to move from RavenDB to Couchbase. My team and I have redesigned how the documents are persisted by the application which has resulted in almost rebuilding the application. Also, they have migrated all the old data from RavenDB to a new document structure in Couchbase.
The result has been an incredible increase in the performance of the system which resulted in no delays in the real-time processing of the events. I further optimized the rule registration APIs to allow bulk registration of rules in the system which was necessary when one of the brands wanted to launch campaigns for up to half a million customers and the rule registration for all of them should happen within a few minutes.
Keywords: ASP.NET Web API, C#, NoSQL, Couchbase, RavenDB, Microsoft SQL Server, IIS, MSMQ, NServiceBus, Microservices, Domain driven design
2015-09 - 2016-02
With the experience gained during initial implementation, I helped re-design and implement the core component of the customer journey system which holds the state of every customer in all the many different journeys that they are participating. The system could be perceived as something like a state machine. Much focus was put on the usage and architecture of message queues on which I had a good amount of experience. Heavy focus was also put on not repeating the same mistake of using distributed transactions which were detrimental to the message throughput.
As a result, the business could target around a hundred thousand customers in a time span of less than five minutes which was a hundred times faster. This system made it possible to target a big batch of customers in a short amount of time whenever it is necessary. For example, the business was able to target thousands of customers during the halftime of a football game.
Being the developer in the team having worked longest at Betsson at the time, I had knowledge about the domain and knew how large parts of the other platform products worked, with this knowledge I could help the team to deliver faster avoiding previous pitfalls. I have always liked testing and was driving in covering the system with tests.
Keywords: ASP.NET Web API, C#, RavenDB, Microsoft SQL Server, IIS, MSMQ, NServiceBus, Microservices, Domain driven design
2013-09 - 2015-08
The resulting actions were various types of rewards and communications through different channels such as SMS, email etc.
The product delivered involved various components. Event listeners - which listen to all the events that are published from the platform and evaluate against the rules for all live campaigns. A dynamic rule management system was built with AngularJS 1.x where rules can be administered, I was the main contributor to it. A rewards system - which acts as an integration point to trigger various types of rewards and holds all the customer rewards that are exposed through APIs for the sites to integrate and display to the customers.
Keywords: AngularJS, ASP.NET Web API, C#, RavenDB, Microsoft SQL Server, IIS, MSMQ, NServiceBus
2013-01 - 2013-08
I and the team led the investigation of the products and services that were used by different brands in Betsson Group to identify which functionalities can be centralized. One of the most common functions was the use of on-site messaging. The purpose of the system was to notify customers about basically anything from a reward to upcoming campaigns. I and the team designed and delivered a product called the "On-site-messaging system". The APIs could be used by any of the systems in Betsson to deliver messages to the customers. The system was built to cater to a huge increase in performance over the next few years because of the importance that was put on the company to engage more with customers.
The result was a huge success and the system is still in use by Betsson and handles a large number of messages every day that are sent from various different systems within Betsson and serves as a central point of integration to deliver messages to the customers on site.
Keywords: ASP.NET Web API, C#, Microsoft SQL Server, IIS
2012-04 - 2012-12
Keywords: ASP.NET Web API, C#, Microsoft SQL Server, IIS, Octopus deploy, Teamcity.
2011-05 - 2012-04
● I built and maintained a task-management system for electricians, including an android app that the electricians used out in the field.
● Apps for both Android and iOS showing job ads for a medical paper.
● An ASP.NET webforms application for a security company where the users could plan door and lock construction for upcoming construction.
● A couple of smaller Facebook apps promoting events in local malls.
Keywords: ASP.NET Webforms, C#, jQuery, Android, iOS, Microsoft SQL Server.
Parcours scolaire
2025-03 - 2025-03