Nikos Mitrakis Listen in as we journey through the life and career of Nikos Mitrakis, Salesforce Developer and architect at Acmantix. This episode offers an insightful exploration of Nikos’s journey, highlighting his passion for programming and how he found his way to Salesforce. Join us as Nikos discusses his open-source framework, Forceea Data Factory, an innovative tool he created that helps average developers create complex data.

Further along, we dive into the nitty-gritty of Forceea. We discuss its capabilities, including its ability to create static and serial data as well as complex reference data and outline its main use cases for developers and users in a sandbox environment. Hear about the benefits of using templates for modification and how the tool optimizes the process of creating complex data. 

Tune in for a compelling conversation that showcases the evolution of programming and its limitless possibilities.

Show Highlights:

  • What Forceea Data Factory is and what its capabilities are
  • The uses of Forceea, especially for developers needing to create data for unit tests and users in a sandbox environment
  • The tool’s efficiency in creating complex data swiftly and the advantages of using templates for modification are highlighted
  • The future of Forceea

Links:

Episode Transcripts

Nikos Mitrakis:
Can you imagine a 10 megabytes hard disk? It was almost empty because it was a huge space at that time.

Julián Duque:
That is Nikos Mitrakis. Salesforce Developer and Architect at Acmantix. I’m Julian Duque, your host for the Salesforce Developer Podcast. And here in the podcast we share stories and insights from developers for developers. Today, we are going to talk with Nikos about Forceea Data Factory, an open-source framework he created. But before, we will start just as we left off, and we often do, with his early years.

Nikos Mitrakis:
Yeah. I go back to ’80s when I shared a computer lab in the first year of university. I was studying physics, and we had the lab with PCAT. It was the second version of IBM PC with 10 megabytes hard disk. Can you imagine a 10 megabytes hard disk? It was almost empty because it was a huge space at that time. And we also had the-

Julián Duque:
Yeah. Of course.

Nikos Mitrakis:
… Mac. The first Mac. 128 kilobytes with a floppy disk. And the Mac Draw and Mac Write was something totally innovative at that time because a mouse and a user interface like this was totally different from the PC we was using for development. And we had some exercises with the Pascal computer language. It was a very good language to start programming, and I think, at the end of the year, I bought the Amstrad PC, a home PC, with 84 kilobytes of RAM.

Julián Duque:
84.

Nikos Mitrakis:
84. Kilobytes. Kilobytes. Now, I have 32 gigabytes in my laptop.

Julián Duque:
It sounds so incredible, the amount of computing power we had back in the days compared to what we have today.

Nikos Mitrakis:
Yeah. That’s true.

Julián Duque:
You started directly with Pascal doing computer programming, or you were doing different operations with the computer before getting into programming?

Nikos Mitrakis:
I first started working with a computer the first year of the university. And I was working with Pascal, as I said perviously, for the computer lab exercises. But also, I started doing different things with my Amstrad home computer using the basic computer language. Every home computer had a different version of basic, but we could do little things with it. I did like to play computer games. I was playing some games from Grizzly, but it wasn’t the main focus. The main focus was to write some programs, to write… You know? To start exploring the possibilities and what a computer could offer. And it was a really amazing experience because I have to say that I was very surprised by the capabilities and what a computer could give.

Julián Duque:
Nice. You mentioned that you were using that lab for physics. It’s okay. You were studying physics back in the day?

Nikos Mitrakis:
Yes. I was studying physics, but also in the same university department was a computer science department. So, I started taking different subjects from this department. So, I started with simple, let’s say, introductory subjects. And then, I proceeded to more advanced, and it was something in parallel with my physics studies.

Julián Duque:
Nice. Nice. Okay. That’s great. And from your college days, studying with your physics and Pascal, how was that transition to start working professionally with programming?

Nikos Mitrakis:
Yeah. It’s a very interesting journey because after the university, actually, I didn’t start a professional career as a developer. For different reasons-

Julián Duque:
Oh.

Nikos Mitrakis:
Yeah. For different reasons … Sometimes, we like something, we have some passion, but for different reasons in the life, we take a different way. So, practically, what I did after my university years, I started with computer sales. I was selling computers. I was repairing computers and providing service-

Julián Duque:
Oh, okay.

Nikos Mitrakis:
And also, providing training for kids and young adults. And it was ’90s at that time. And after that, after about 8 years, practically, I started another, let’s say, another occupation, another journey. And I moved to sales. I was a sales director in a computer shop. And then, I was an account manager. Selling and doing push sales, [inaudible 00:05:37] in computer software, business development systems, and things like this. And practically, I was always wanted to do something different. I was always wanted to start a professional career as a developer, but it was a different journey in my life. I took a different direction.
So, in the first years of 2010, especially in 2014, I was working in a company in Greece as an account manager doing sales and push sales. And practically, this company started as a Salesforce partner in Greece. And it was the first time I actually started working with Salesforce. Obviously, it was something that … I would say love with first sight. I was really astonished by the capabilities of the work with Salesforce. I started working during nights, during weekends, during holidays. I started, obviously, with administrative things to understand the system. And then, started working with Apex and VisualForce at the time. And practically, I created a managed package. I called it GR Pack, and it was a vertical package with solutions for the Greek language. [crosstalk 00:07:00] grammar cases of the Greek language, which are complicated.
So, it was … For example, from your name, it will find the saint that’s related to your name. Because, in Greece, we celebrate the saint by [inaudible 00:07:16] birthdays. And for example, it knows, from my name, that I celebrate the 6th of December. So, a salesperson or service representative would tell me … the [inaudible 00:07:30] that we usually do in Greece.
It was a quite complex managed package at the time. And it practically introduced me to the Apex and the complexities of the language and the capabilities. And yeah. Pretty much, it was the start of my Salesforce journey.

Julián Duque:
Wow. And this was a passion project of yours, or you did it in part of your job?

Nikos Mitrakis:
Oh, no. It was a totally personal project. I was working out-of-hours work. Yeah. And during nights, as I told you, during weekends, it was a personal … I was also preparing. I was studying for some administrator certification. So, in the next three years, I took the administrator, the advanced administrator, and the Sales Cloud certifications. And at the end of 2016, I wanted to really move to a professional career as a Salesforce developer. I believed I had the capabilities and the knowledge at the time.

Julián Duque:
Beautiful. And that’s, for me, the best way to learn. When you have a passion project and you start building it until you see result … I mean, it seems it wasn’t a simple one.

Nikos Mitrakis:
You mean the GR Pack? The package I-

Julián Duque:
Yeah.

Nikos Mitrakis:
… developed at the time?

Julián Duque:
Yeah. The one you built.

Nikos Mitrakis:
[crosstalk 00:08:58], it was quite complex. It was quite complex because … The problem is that the grammar cases for the Greek language are very complex. And also, all the logic I had to build … It was quite complex. It was many thousands of line. Not huge, but still, it was, for me, quite challenging. And I managed … [inaudible 00:09:21] before the fall of ’16 to finish this package and to see it actually work. And this was the first real project of mine starting working with Salesforce.

Julián Duque:
Nice. And it is still exists? It is still maintained, or nothing more?

Nikos Mitrakis:
Yeah. I just moved it to AppExchange, practically. Now, it’s a free AppExchange package. I changed the name. I call it GRtools. I enhanced it to give more capabilities, did a series of factoring. Because after many years, I had a little bit more experience. So, many things are different 2015 and ’14 and ’16. I had to modify a few things, but still, it’s a free AppExchange app at this moment.

Julián Duque:
Beautiful. For our Greek listeners out there, we will be sharing the link of this package, pretty much, on the show notes. This is great! So, speaking of packages, let’s talk about Forceea.

Nikos Mitrakis:
Mm-hmm. Sure.

Julián Duque:
Tell me about Forceea. What it is and what type of problems can we solve with it?

Nikos Mitrakis:
Yeah. So, previously, we discussed about my desire to move to a professional role as a developer in 2016. So, I was given this opportunity by Johnson & Johnson in Ireland. So, in January 2017, I relocated with my wife to Ireland, to Limerick. Limerick is the third biggest city of Ireland, a beautiful city. And that [inaudible 00:11:08] of Johnson & Johnson, practically, I was in the first team, the first three developers that started the Salesforce team working with different projects like EMEA, [inaudible 00:11:20], and so on.
And in February, after one month in Ireland, I was wondering if I could start another project of my own but not so vertical as the previous. I would like some horizontal to give something to the community and also start working with more advanced Apex. So, I saw that most of the companies used specific logic when they created data factories with static methods, with some logic that is difficult to expand, difficult to use. So, I had the idea to start a data factory, but I wanted to do something different.
So, I invented a domain-specific programming language, which I call Dadela. And this language was used by Forceea. The package I started was a GitHub open-source package, obviously, and used Dadela with Forceea to start giving capabilities to the average developer without having specific knowledge of how to create complex data, to give many capabilities for everyone to create [inaudible 00:12:35] data as they want.

Julián Duque:
Interesting. This domain-specific language, Dadela, is the compiler also in Apex or … How does it work?

Nikos Mitrakis:
Yeah. Practically, we use it as-is. Practically, it’s a string that you pass in a specific method, the [inaudible 00:12:57] method. You pass the field name and the string, which is something like random space type number from 1 to 100, scale 0. This is a very typical command that generates random numbers from 1 to 100, using 0 decimal place, practically, creating another integers. It’s a string that Dadela tries to, practically, has a [inaudible 00:13:25] and tries to understand the syntax, if there are any syntax errors. It’s quite complex. Practically, it creates, let’s say, specific data that holds all the commands, all the parameters, all the validation it does. And after the user has given all the definitions he wants or she wants, it creates data, starting parsing the data, creating data with a specific logic.

Julián Duque:
That’s beautiful! What type of use cases are the ones that are suitable for the data factory, for Forceea? What can it do?

Nikos Mitrakis:
Yeah. The [inaudible 00:14:10] to work the use cases we would recommend to our listeners, every developer or user who wants to create data with Salesforce … Let’s say. What are the general capabilities of Forceea?

Julián Duque:
Okay. Yeah.

Nikos Mitrakis:
Yeah. Practically, it uses Dadela in order to generate data but can create static data. When we say static, we mean the same value for every record or serial data. For example, one, two, three, four, five is something serial. It [inaudible 00:14:45] you want. Also, random data. And also, it can create other things like [inaudible 00:14:52] from one thing to the other or data mocked IDs and things like this.
And also, lookup data. This is very important because, in Salesforce, we use a lot of [inaudible 00:15:04], so it has the capability, also, to create complex [inaudible 00:15:09]. And practically, we have to do big categories of use cases.
The first one is for a developer who wants to create data for their unit tests. Okay. We create a testing class in Salesforce. You have some test methods, and we want to create data. And this is the first use case because, practically, with Forceea, we create [inaudible 00:15:38] best practice to create a new class. I call it DataFactory, but the name is relative. We can call it whatever we want. And in this class, we create templates. What’s a template? Practically, it’s a map. Imagine a [inaudible 00:15:52] map with a key and a value. The key is whatever we want. For example, a name like accounts, opportunities, whatever we want. And the value is something very specific to Forceea. It’s an FObject. An FObject is a Forceea object. Practically, whatever we need in order to create records for specific objects. For example, account, opportunity, or opportunity line items.
So, when we create this template, we’re using encapsulation logic. We create something simple. For example, for contacts, and then we create an account. First, we create the account. And then, we relate the account with a [inaudible 00:16:38]. And then, we create the opportunities and relate accounts to opportunities. So, every new template may encapsulate another template and so on, which means that it has a usability mind. We can reuse templates, and this is very important. Encapsulate one into another and, practically, with this logic, we can create very complex structures which create too complex data. But for a new developer, for someone who doesn’t want to go into details, you don’t have to know the details. You just use the template. You create data very easily because Forceea doesn’t insert data. It just creates the structural data. And then, insert it very easily.
And the most important is that when you want, for example, to modify something … For example, let’s say you want to modify a specific field or delete something, remove a definition, or add something new or create data in a different way, then it’s very, very easy to get a template, go exactly to the field you want, modify whatever you want without knowing all the internal logic, internal details, and complexities in order to create all this probably huge structure of objects because … For example, I want to create opportunity, I have tO create, previously, many other opposites. It’s a very complex logic. But when you use templates, it’s something very simple. You can very easily modify whatever data you want to modify, fields you want to modify.
This is the basic structure and logic of Forceea. So, the first use case is this. To create data for test methods.

Julián Duque:
Nice. And it supports … You mentioned standard objects, but it also supports custom objects, as well?

Nikos Mitrakis:
Yes. Custom objects. Obviously, all the standard objects. And also, it supports Big Objects.

Julián Duque:
Oh, Big Objects, as well? Nice.

Nikos Mitrakis:
Yes. You can create data for Big Objects. Practically, it’s very, very fast. I remember one time, when I was using the Developer Edition, which has 1 million free records for a Big Object, but it [inaudible 00:18:48] very fast. It allows you to create many more millions. So, I started setting records. I found 50 million records in just a few minutes. But then, I had to delete it again in order to reset it and start again. It was very nice.

Julián Duque:
This is powerful. Any other feature that Forceea supports?

Nikos Mitrakis:
Yeah. Practically, let’s discuss about the second category of use cases.

Julián Duque:
Yes.

Nikos Mitrakis:
It is for people who want to create real records in Sandbox. I wouldn’t say production, but I would say, for example, in a developer’s Sandbox, a scratch org, or, let’s say, UAT Sandbox because the developers want to start a working user story. Having specific, correct data in their Sandbox or scratch org. Also, the users who tried to pass, let’s say, one or more use stories from UAT. They want [inaudible 00:19:52] data. And sometimes, with Sandbox, it’s not available in a company. For Sandbox, it’s not a good idea because it may have production data, which, sometimes, we don’t want to reveal to every user.
So, when we create a complex script using the existing data factory, it has capability to create data asynchronously. Practically, it sources back to Apex, and it can create many, many millions of records very fast and very complex data to populate any org. Obviously, a scratch org doesn’t have many gigabytes because some have specific megabytes, or you can create some [inaudible 00:20:38] of thousands of records. But you don’t need so many records. But a partial sandbox, for example, has much more capacity so you can create more complex structures. For example, you may create some [inaudible 00:20:52] record sheet. If [inaudible 00:20:55] is selective. So, if it is fast or it has issues or the reports have issues … Say, you have, let’s say, 10 [inaudible 00:21:02] of records.
So, there are many, many use cases you want to create real data, real records from developers, software users, for [inaudible 00:21:11], for example, to test if everything’s okay. And have a stress testing in the specific Sandbox, having millions of records, having lots of data volume, for example.

Julián Duque:
Nice. Beautiful. This is giving me ideas on projects that I have worked before, especially when I’m testing, as you mentioned, on a staging environment, on a Sandbox, sometimes, I don’t see certain errors or performance issues because I am not using the amount of data I’m expecting on a production environment. And if I have a similar amount of data, I will be able to capture those errors before it happens in production. So, this is going to be very powerful for those use cases.

Nikos Mitrakis:
Yeah. Also, Forceea gives the capability to delete records asynchronously. Because when [inaudible 00:22:07] say, “Tell me your records of different objects in a sandbox” to system reports to whatever test we want, then sometimes we want to delete data and insert them again with different values. For example, if something has changed. And Forceea can do the opposite. I mean, not only to insert data but also can delete data synchronously, which means that it is quite versatile, quite flexible to provide the full width of services to the user to insert, delete, and also update data.

Julián Duque:
Nice. Forceea … You mentioned before, you wanted to get into more professional development. This is not specifically a passion project. Are you using these, also, in your company or in production environments?

Nikos Mitrakis:
Yeah. We were using Forceea at Johnson & Johnson and I know Forceea is used in many other big companies, but it’s an open-source project. So, everyone can go to the GitHub site page and download and have Forceea code and use it. But also, there is a specific package, an unlocked package, which is very easy to install. To use in CLI or use in some other ways. So, it’s a unlocked package. You can see the code. You can modify, if you like, a few things. But still, it’s not a good idea to deviate from [inaudible 00:23:42] package because the next version will have more capabilities, and then you do personal changes in specific code, this will be [inaudible 00:23:51].

Julián Duque:
Nice. So, it is open-source. This means me, as a Salesforce developer, if I am using Forceea and I find, maybe, a way to improve it or I find an issue, can I contribute to the project?

Nikos Mitrakis:
Sure. Sure. At the moment, I don’t have any other developer to contribute to the project. Even though I really would love to see other developers invest some time with Forceea. Forceea is a very much [inaudible 00:24:27]. But still, the good can be better and the better can be best. So, I always believe there are ideas and many ways to improve something. So, if someone really wants to invest some of his or her time on Forceea, I would really love to see how [inaudible 00:24:48]. And Forceea. It’s a lot of effort from my side. I spend more than 2,000 hours on Forceea. Probably near 2,000. [crosstalk 00:24:59].

Julián Duque:
2,000?

Nikos Mitrakis:
Yeah. Hours. It’s a project with 30,000 lines of code. It’s very complex, very demanding. It has a lot of capabilities. We could discuss, one day, about the capabilities of Forceea. There’s a user guide. I call it Success Guide with 470 pages with details about how you use it. It’s quite complex. It’s not just something simple. But still, everyone can contribute to Forceea, and I love seeing people spending time and investing on it.

Julián Duque:
Just checking at the report right now, the first commit was six years ago. So, this is not a recent project. You have been really spending quite amount of time on making this better and better.

Nikos Mitrakis:
Yeah. I think it was on May 2017. I’m not sure about the month, but it was definitely before the summer. At the time, it was very simple. When I say [inaudible 00:26:05], it’s really funny. It had the main idea, the main capabilities, generally speaking. But it has nothing to do with what Forceea can do today. It was quite simple at that time. Just a few thousand lines of code. Now, it’s really huge.

Julián Duque:
And also, this tells a lot about an open-source project. Last commit was just four months ago. So, it’s keeping up-to-date. It’s being fixed. It’s being improved. So, for the folks out there that are listening, that are looking for a great solution for data factory, they can look at Forceea! Go ahead. And if you find any areas to improve, I’m pretty sure, as Nikos said, they are truly happy to have you all, the Salesforce community, contributing to this project.

Nikos Mitrakis:
Absolutely.

Julián Duque:
Fantastic! So, Nikos, tell me. Now changing a little bit of a subject, it seems you have been, almost your whole life, working in tech. What else do you like? Tell me one hobby of yours. What do you do while you are not working on Salesforce or building these amazing open-source tools?

Nikos Mitrakis:
Yeah. I love music, especially I love jazz. So, for example, last year, I bought an alto saxophone and started playing the saxophone.

Julián Duque:
Wow!

Nikos Mitrakis:
I think I’m not so bad. Okay? It’s not so easy to play saxophone. But still, I think I have improved myself during the last few months. I also have a guitar. [inaudible 00:27:49] two guitars. [inaudible 00:27:50] my wife’s and not mine. One acoustic and one classic. I have a piano. I love music in general, so music is the second big love of my life. Talking about Salesforce the first one, the second is music, especially jazz.

Julián Duque:
Nice. Your wife also plays? You mentioned that she has the guitar.

Nikos Mitrakis:
Yes. She was a student when she bought it, but she doesn’t play really. So, yeah. I’m lucky I have this guitar. It’s not very expensive, but still, it’s very nice. It has very sweet sound. So, she likes hearing music. She likes watching me to play or hearing me to play, but she doesn’t play.

Julián Duque:
Beautiful. Nikos, thank you very much for joining us on the Salesforce Developer Podcast. I loved learning about these great open-source tools that all the Salesforce Developer community are building. And I hope all the people that are listening start using Forceea for your data factory needs.

Nikos Mitrakis:
I thank you so much for the invitation, for the opportunity to discuss about my passion, about Salesforce, about Forceea, and about jazz.

Julián Duque:
And that’s it! If you want to learn more about this show, head on to developer dot Salesforce dot com dash podcast, where you can hear all the episodes and read the show notes. Thank you everybody and talk to you the next time. Bye bye.

Get notified of new episodes with the new Salesforce Developers Slack app.