Web developer playing with clouds, LAMP, Symfony, JavaScript. Currently working as a Salesforce developer as part of the Taylor & Hart team.
Kik Minev
01.

Hey there, I'm Kik Minev - web developer playing with clouds, LAMP, Symfony, JavaScript, Salesforce Apex. Currently working as a Salesforce developer as part of the Taylor & Hart team.

Why Salesforce? Pivoted to Salesforce when my colleagues needed a quick and efficient way to optimize business processes, sales and even manufacturing processes. That’s how I stepped into the Salesforce world, though most of my career has been focused on web with PHP. Strong love for the Symfony framework.

02.

My experience

Taylor & Hart - Salesforce and Symfony developer

Currently working as a Salesforce developer at Taylor & Hart where I help with accelerating buesiness processes in sales and manufacturing. I spend my day mostly writing Apex code and lightning components in Salesforce or PHP/Symfony for web features.

Oxxy - CTO

As part of Oxxy I was leading the team as a CTO. We started and shipped a drag and drop website builder that allows small business owners to launch a website without any coding skills. For my tasks I used the Symfony PHP framework, MongoDB, javascript for the web builder and AWS as an ifrastructure.

Webfactory - Web Developer

At Webfactory I spent my days mostly coding with PHP and Javascript. As part of a web agency I worked on various projects for different clients up until I started working on Protect Your Bubble. Really thankful to the colleagues that gave me the chance to work on this project and helped me develop my skills.

Webfactory / Protect Your Bubble - Team Lead

I became responsible for launching the US web site and lead a team of web developers to deliver and support the project. Duties were a bit different as I needed to work in Atlanta and lead the team overseas. Also, working with a Fortune 500 company has it's perks. Thank you all for the warm welcome in Atlanta!

Digitalus - Web Developer

Digitalus was a hosting company from The Netherlands(later aquired by another company). Here we worked with PHP and Javascript.

SiteGround

Epic times! Great start in the web industry.

03.

What I work with?

Back in the days I started coding websites from scratch using PHP and some custom frameworks. Throughout time I worked with ancient frameworks like CakePHP, Zend and others. Nowadays I mostly work with Symfony. Trying to keep an eye on the Javascript world as well.

PHP
Back in time I started with PHP from around version 4. Usually with Apache and MySQL. These days we run mostly nginx.
JavaScript
The beginings was vanilla and jQuery. Later I worked with Backbone and Angular. Now I try to keep in touch mostly with the React framework.
Symfony
I love how robost Symfony is. The initial steep learning curve is paying off with the projects. During the years I've worked with Symfony for SaaS products, CMS and eCommerce systems.
AWS
My experience with the cloud is in AWS where I mostly use EC2 and S3. I also have some experience with RDS for PostgreSQL. During the years I used EC2 to scale Symfony web projects and MongoDB cluster databases.
Git
Git is what I use for version control. Checkout my GitHub. I use Gitflow in my day to day work.
Docker
For personnal projects I will use Docker to maintain my developement environment. In some companies we also worked remotely, in the cloud. In other companies even with k9s on localhost. Depends on the company;)
Salesforce Apex
In Salesforce I usually work with Apex code to develop new features. It shares the Java syntax and object-oriented features, but it's limited by the Salesforce environment.
Ligning Components
Not very often I develop lighning components to extend the Salesforce functionality.
PhpStorm
Though I started with Notepad, moved to Notepad++, Vim, Eclipse, these days I work with PhpStorm and IntelliJ with Illuninated Cloud for Salesforce development.
↑ About me

Kik Minev

L A T E S T   P O S T S

Building a Twilio call center in Salesforce. Part 1: General overview, tools and architecture

Recently I was given the opportunity to build a call center for incoming and outgoing calls that works from inside Salesforce. The benefit of such a call center integrated into Salesforce is that the sales people will have the customer data immediately available with the incoming phone call or make an outgoing phone call directly from the customer record. I’m going to share a few words about the architecture and the problems I stumbled upon when building this. Just for the record, Salesforce provides plenty of ready made VoIP solutions that you can easily install and start using out of the box. Those solutions are not cheap, but still they are ready to use and require no development time. Still, if you want to  automate business processes and have custom actions into the callcenter it’s easier to rely on a custom solution.

Continue reading “Building a Twilio call center in Salesforce. Part 1: General overview, tools and architecture”

PHP return type ‘never’

PHP 8.1 introduces a new return type called ‘never’ that explicitely says that a method will never return a value. Similar to returning void, however after returning never you should guarantee that the program will either throw an exception or terminate itself with exit or die. If you fail to enforce the termination PHP will fail with TypeError exception. Let’s look at a few examples:

Continue reading “PHP return type ‘never’”

Mysql: Delete a row when a foreign key constraint is not allowing it

Sometimes when you work in development mode you would like to delete a row but a foreign key constraint might prevent you from doing so. Imagine that you have a table customer and a related table order. It’s possible that you will have a foreign key constraint that prevents deleting orders of specific customer without using the delete cascade option(i.e. to delete the customer as well as the orders). If for some reason, for the sake of testing something in development you want to achive this you can use the FOREIGN_KEY_CHECKS flag and disable it until you delete your order. An example with customer and order will be:

SET FOREIGN_KEY_CHECKS=0;
UPDATE customer set order_id = null WHERE id = 21;
DELETE FROM `order` WHERE id = 1; 
SET FOREIGN_KEY_CHECKS=1;

Running this query will actually allow you to delete the desired row despite having a foreign key constraing.

Include static image, javascript or other static resource in a Salesforce page

When developing Salesforce pages you might need to include your own images, javascript libraries or any other static resource. Doing this is easy but it first requires uploading the resource to Salesforce. You can do this by opening:

Salesforce Setup > Static Resouce > New

From there you need to upload the file and giving it a name that should be unique for the whole organisation. Also the max file size is 5 MB. Once the file is uploaded to your Salesforce you can include it in your template with the following coe:

<apex:includeScript value="{! $Resource.your_file_name }"/>

You just need to replace your_file_name with the name you have chosen at the time of the upload.

Symfony and Twig: how to check if flash messages are not empty

When rendering Symfony twig templates sometimes you might need to show one html element and hide another element depending if you have flash error/notice messages or not. For example if you have a page with registration form you might want to hide the form if it was submitted successfully and you only want to display a success message. For that you will need to check if the flash messages set by your controller are empty or not.

Continue reading “Symfony and Twig: how to check if flash messages are not empty”

Symfony get HTTP_X_FORWARDED_PROTO in controller

It’s often the case that people that use Cloudflare use the SSL option of cloudflare that secures the connection from the client to Cloudflare, but not from Cloudflare to the actual hosting server. In this case people might get the impression that the user is accessing the site from https but actually the hosting server is accessed with http and Symfony’s $request->isSecure() returns false.

Continue reading “Symfony get HTTP_X_FORWARDED_PROTO in controller”