이 에피소드에 관해
One of the great promises of computers is that they will make our work faster and easier, so why do we all spend so much time manually copying data from websites, or entering information into web forms, or any of the other tedious tasks that take up our time? As developers our first inclination is to "just write a script" to automate things, but how do you share that with your non-technical co-workers? In this episode Antti Karjalainen, CEO and co-founder of Robocorp, explains how Robotic Process Automation (RPA) can help us all cut down on time-wasting tasks and let the computers do what they’re supposed to. He shares how he got involved in the RPA industry, his work with Robot Framework and RPA framework, how to build and distribute bots, and how to decide if a task is worth automating. If you’re sick of spending your time on mind-numbing copy and paste then give this episode a listen and then let the robots do the work for you.
Announcements- Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
- When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With the launch of their managed Kubernetes platform it’s easy to get started with the next generation of deployment and scaling, powered by the battle tested Linode platform, including simple pricing, node balancers, 40Gbit networking, dedicated CPU and GPU instances, and worldwide data centers. Go to pythonpodcast.com/linode and get a $100 credit to try out a Kubernetes cluster of your own. And don’t forget to thank them for their continued support of this show!
- We’ve all been asked to help with an ad-hoc request for data by the sales and marketing team. Then it becomes a critical report that they need updated every week or every day. Then what do you do? Send a CSV via email? Write some Python scripts to automate it? But what about incremental sync, API quotas, error handling, and all of the other details that eat up your time? Today, there is a better way. With Census, just write SQL or plug in your dbt models and start syncing your cloud warehouse to SaaS applications like Salesforce, Marketo, Hubspot, and many more. Go to pythonpodcast.com/census today to get a free 14-day trial.
- Software is read more than it is written, so complex and poorly organized logic slows down everyone who has to work with it. Sourcery makes those problems a thing of the past, giving you automatic refactoring recommendations in your IDE or text editor while you write (I even have it working in Emacs). It isn’t just another linting tool that nags you about issues. It’s like pair programming with a senior engineer, finding and applying structural improvements to your functions so that you can write cleaner code faster. Best of all, listeners of Podcast.__init__ get 6 months of their Pro tier for free if you go to pythonpodcast.com/sourcery today and use the promo code INIT when you sign up.
- Your host as usual is Tobias Macey and today I’m interviewing Antti Karjalainen about the RPA Framework for automating your daily tasks and his work at Robocorp to manage your robots in production
- Introductions
- How did you get introduced to Python?
- Can you start by giving an overview of what Robotic Process Automation is?
- What are some of the ways that RPA might be used?
- What are the advantages over writing a custom library or script in Python to automate a given task?
- How does the functionality of RPA compare to automation services like Zapier, IFTTT, etc.?
- What are you building at Robocorp and what was your motivation for starting the business?
- Who is your target customer and how does that inform the products that you are building?
- Can you give an overview of the state of the ecosystem for RPA tools and products and how Robocorp and RPA framework fit within it?
- How does the RPA Framework relate to Robot Framework?
- What are some of the challenges that developers and end users often run into when trying to build, use, or implement an RPA system?
- How is the RPA framework itself implemented?
- How has the design of the project evolved since you first began working on it?
- Can you talk through an example workflow for building a robot?
- Once you have built a robot, what are some of the considerations for local execution or deploying it to a production environment?
- How can you chain together multiple robots?
- What is involved in extending the set of operations available in the framework?
- What are the available integration points for plugging a robot written with RPA Framework into another Python project?
- What are the dividing lines between RPA Framework and Robocorp?
- How are you handling the governance of the open source project?
- What are some of the most interesting, innovative, or unexpected ways that you have seen RPA Framework and the Robocorp platform used?
- What are the most interesting, unexpected, or challenging lessons that you have learned while building and growing RPA Framework and the Robocorp business?
- When is RPA and RPA Framework the wrong choice for automation?
- What do you have planned for the future of the framework and business?
- Tobias
- Antti
- Thank you for listening! Don’t forget to check out our other show, the Data Engineering Podcast for the latest on modern data management.
- Visit the site to subscribe to the show, sign up for the mailing list, and read the show notes.
- If you’ve learned something or tried out a project from the show then tell us about it! Email hosts@podcastinit.com) with your story.
- To help other people find the show please leave a review on iTunes and tell your friends and co-workers
- Join the community in the new Zulip chat workspace at pythonpodcast.com/chat
- Robocorp
- RPA Framework
- RCC
- Robotic Process Automation
- Zapier
- IFTTT (If This Then That)
- Robot Framework
- Selenium
- Playwright
- Conda
- Micro Mamba
- PyOxidizer
- XKCD "Is It Worth The Time?"
- XKCD Automation Curve
The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA
노트보기 🔗
전사 🔗
NOTE
Transcription provided by Podhome.fm
Created: 7/6/2024 4:15:05 PM
Duration: 2733.912
Channels: 1
1
00:00:13.264 --> 00:00:18.085
Hello, and welcome to podcast dot in it, the podcast about Python and the people who make it great.
2
00:00:18.670 --> 00:00:25.490
When you're ready to launch your next app or want to try a project you hear about on the show, you'll need somewhere to deploy it. So take a look at our friends over at Linode.
3
00:00:26.314 --> 00:00:34.530
With the launch of their managed Kubernetes platform, it's easy to get started with the next generation of deployment and scaling powered by the battle tested Linode Go
4
00:00:35.319 --> 00:00:35.819
to
5
00:00:36.608 --> 00:00:37.108
python
6
00:00:37.897 --> 00:00:39.500
podcast.com/linode. That's l I
7
00:00:43.215 --> 00:00:44.515
Go to python podcast.com/linode,
8
00:00:46.175 --> 00:00:56.149
that's l I n o d e, today and get a $100 credit to try out a Kubernetes cluster of your own. And don't forget to thank them for their continued support of this show.
9
00:00:56.690 --> 00:01:00.710
Your host, as usual, is Tobias Macy. And today, I'm interviewing Antti Karjalainen
10
00:01:01.089 --> 00:01:13.829
about the RPA framework for automating your daily tasks and his work at Robocorp to manage your robots in production. So, Antti, can you start by introducing yourself? Hey. So I'm Antti Karyalainen. I'm the CEO and cofounder of a company called Robocop.
11
00:01:14.530 --> 00:01:16.950
We are bringing open source technology
12
00:01:17.409 --> 00:01:21.855
into the world of RPA, which is all about automating business processes.
13
00:01:22.235 --> 00:01:28.210
And do you remember how you first got introduced to Python? 1st got introduced to Python. I was trying to think about this. It's way back,
14
00:01:28.930 --> 00:01:29.990
something like 2006.
15
00:01:31.090 --> 00:01:36.390
I have a software engineering background so that's when I was really starting out and Python was becoming popular.
16
00:01:37.175 --> 00:01:45.755
Python has always been there as this thing that existed in my words. I can't remember the first time I got introduced, but it's just been over there always.
17
00:01:46.090 --> 00:01:48.830
Yes. Become part of sort of the background noise of programming.
18
00:01:49.370 --> 00:01:49.870
Exactly.
19
00:01:50.330 --> 00:02:09.490
Before we get too deep into what you're building at RoboCorp and the RPA framework, can you start by just giving a bit of an overview about what robotic process automation is and some of the types of use cases that it's employed for? So RPA is really a way to automate anything that human users would do on IT systems. So it has the capability
20
00:02:09.790 --> 00:02:12.105
to mimic human behavior on systems.
21
00:02:12.485 --> 00:02:14.985
So the way I like to actually think about RPA,
22
00:02:15.285 --> 00:02:24.730
it's a form of agent based automation. So you have this software agent that can act upon any system out there. It's running on a specific location,
23
00:02:25.510 --> 00:02:28.810
might be using user credentials just like a human user
24
00:02:29.205 --> 00:02:35.305
would. But then there's nuances how it can access systems and so on. I think we're going to go deeper into that a bit later.
25
00:02:35.605 --> 00:02:40.150
But on the simple explanation side, it would be a way to reduce
26
00:02:40.530 --> 00:02:52.265
manual routine work from human users without having to change your existing IT systems too much. Yeah. So from my understanding, some examples would be going to a website, downloading an Excel file,
27
00:02:52.725 --> 00:02:59.830
changing some of the cells in there, maybe adding a formula and then saving that and then reuploading it to a different portal would be something that you might do with RPA.
28
00:03:00.290 --> 00:03:01.190
Yeah. Exactly.
29
00:03:01.615 --> 00:03:07.875
You would be surprised how much people spend their working days on really routine tasks accomplished
30
00:03:08.495 --> 00:03:09.715
with digital systems.
31
00:03:10.080 --> 00:03:15.380
Sort of this new type of manual labor that people are just used to doing. So people really even question the things that they do
32
00:03:18.565 --> 00:03:21.545
from day to day with IT systems. And, you know,
33
00:03:21.845 --> 00:03:25.465
there might be pushback from the techies saying that,
34
00:03:25.845 --> 00:03:35.525
you know, you shouldn't do that in the 1st place and so on and so on. You should redesign your systems. But but then again, when you start to look at the economics of it all, are you gonna really redesign your ERP system in order to get 1 accountant's life a bit better?
35
00:03:42.170 --> 00:03:48.909
So that's not gonna happen. So that that's where RPA steps in and and is able to pick up that work. And as developers,
36
00:03:49.395 --> 00:03:58.535
you know, our natural inclination is to say, oh, I'll just write a script or I'll use the API or whatever. So I'm wondering what are the cases where somebody might use RPA and some of the advantages that it
37
00:03:59.075 --> 00:03:59.290
has
38
00:04:00.810 --> 00:04:07.469
over writing a custom library or a Python script to be able to automate some given task and just sort of the trade offs of
39
00:04:07.775 --> 00:04:12.115
time investment and usability and sort of who the audience is for the tooling?
40
00:04:12.415 --> 00:04:17.710
So API tools started with these kind of drag and drop type of tools where you build
41
00:04:18.010 --> 00:04:19.550
a process or automation
42
00:04:20.010 --> 00:04:23.630
with just combining bunch of tasks or actions together.
43
00:04:24.090 --> 00:04:32.595
You know, they started to become more sophisticated, and now we're seeing something like Robo Club where we are actually starting to take Python based tooling and apply it for RPA.
44
00:04:33.159 --> 00:04:37.259
At the end of the day, it's really not that different from from a Python script.
45
00:04:37.639 --> 00:04:41.419
It's sort of a weaponized form of that if you if you wanna use that.
46
00:04:42.365 --> 00:04:44.465
So I wrote a medium article
47
00:04:44.845 --> 00:04:49.185
some time ago actually saying that 1 use case for RPAs in a way
48
00:04:49.580 --> 00:05:03.855
building proper governance around all the dirty hacks that coders have been doing for years. On the fundamental technical layer of what the actual script does, there's really you can you can blur the lines of just scripting with with RPA,
49
00:05:04.555 --> 00:05:13.000
about how you actually deploy inside of an organization. That's where the differences are going to start appearing. So you're going to have security governance,
50
00:05:13.380 --> 00:05:15.000
access control, scheduling,
51
00:05:15.925 --> 00:05:22.264
remote execution, and so on and so on, built on top of that script. So it's it becomes actually a maintainable
52
00:05:22.565 --> 00:05:24.185
piece of your IT infrastructure.
53
00:05:24.919 --> 00:05:36.755
Another type of automation that's been gaining ground a lot is systems such as Zapier or If This Then That for being able to tie together sort of event based work flows between different systems where
54
00:05:37.375 --> 00:05:43.155
my email might hook into my CRM, might hook into my accounting software,
55
00:05:43.620 --> 00:05:54.655
and I can use something like Zapier to say, you know, when this happens in this software, do this other thing in this other piece of software. And these different SaaS providers will have hooks into Zapier or into IFTTT
56
00:05:55.035 --> 00:05:56.815
for being able to perform these workflows.
57
00:05:57.354 --> 00:06:03.940
And I'm wondering how the functionality and use cases of RPA compare to some of those automation services and where
58
00:06:04.320 --> 00:06:08.420
something like Zapier might fall down and RPA might be the preferred tool of choice.
59
00:06:08.895 --> 00:06:15.235
So workflow automation like Zapier and and if this then that they are adjacent to RPA,
60
00:06:15.615 --> 00:06:23.830
but they don't overlap too much. Sure, you can try to use RPA in that way. Oftentimes, it just doesn't make sense.
61
00:06:24.290 --> 00:06:27.854
These tools, these APS and likes our API based automation.
62
00:06:28.314 --> 00:06:30.495
They are in a sense automated workflows,
63
00:06:30.955 --> 00:06:40.870
while RPA is coming back to that agent topic that I I mentioned. So that agent can run on your desktop, that can run inside your, corporate network on a VM.
64
00:06:41.385 --> 00:06:52.070
It can automate things like mainframe terminals if you wanted to. So it can do pretty much anything that you make it do. Some things make more sense than others to do with RPA.
65
00:06:52.530 --> 00:06:57.110
I think RPA is really about enabling those sort of long tail use cases
66
00:06:57.595 --> 00:07:03.215
while the workflow automation will try to do the mainstream stuff like combining SaaS apps,
67
00:07:03.595 --> 00:07:08.949
where the SaaS app provider hasn't, you know, gotten around to build an integration.
68
00:07:09.490 --> 00:07:36.405
In terms of your involvement with RPA and what you're building at Robocore, I'm wondering if you can just just give a bit more context of sort of what you're working on and your motivation for getting involved in this area of the industry and turning it into a business. So I've been involved with this project called Robot Framework for quite a while. Already 2013, I think I started there. We were running a consultancy that where we did a lot of software test automation back in the day.
69
00:07:36.785 --> 00:07:42.450
And and robot framework is a generic Python based test automation framework for doing end to end testing.
70
00:07:43.070 --> 00:07:45.090
So I had that background. I've been also
71
00:07:45.470 --> 00:07:50.535
involved in creating the Robot Framework Foundation, which is a nonprofit organization that governs over that project
72
00:07:50.915 --> 00:08:00.820
with over 40 member companies sponsoring it. So there's an active vibrant community around that specific tool. And I just saw the rise of RPA
73
00:08:01.280 --> 00:08:02.900
in, I think it was 2016.
74
00:08:04.000 --> 00:08:09.794
I immediately thought that, that looks exactly like test automation. What's any difference there between
75
00:08:10.335 --> 00:08:11.634
end to end test automation
76
00:08:12.255 --> 00:08:15.555
and R. P. A. Where you essentially want to do the same kind of things.
77
00:08:15.880 --> 00:08:22.940
And I started exploring really cold calling people that I could find out there doing RPA as starting to understand it.
78
00:08:23.345 --> 00:08:29.365
From the technical level, it seemed that they are in fact, pretty identical is only on the governance
79
00:08:29.825 --> 00:08:36.050
and orchestration side where the differences really start appearing, where you run test automation with something like CICD
80
00:08:36.670 --> 00:08:37.170
tooling.
81
00:08:37.630 --> 00:08:47.324
Also, it test automation. You build 100 of even 1000 of automation routines and manage them by DevOps teams. While in RPA, you might have a dozen
82
00:08:47.625 --> 00:08:48.125
automations
83
00:08:48.890 --> 00:08:53.870
that we actually call robots. It's a funny term to call something a piece of code robot.
84
00:08:54.330 --> 00:09:00.175
But the more you spend time in the industry, the more used to it you are. And I don't find it any troubling anymore.
85
00:09:00.475 --> 00:09:08.335
So I just gonna use that term bots or robots. You're gonna have, you know, a dozen bots that are maintained by 1 or 2 RPA developers
86
00:09:08.700 --> 00:09:09.600
inside of an enterprise.
87
00:09:10.380 --> 00:09:12.560
I've really started seeing that that similarity
88
00:09:12.940 --> 00:09:17.279
between this open source world that I was involved in and this new
89
00:09:17.755 --> 00:09:24.495
emerging field in enterprise software. And I wondered that, you know, is there a possibility that we could actually introduce this existing
90
00:09:25.180 --> 00:09:32.065
open source ecosystem to this new rising space of RPN and just really started pushing that. And we started on the open source side
91
00:09:32.625 --> 00:09:38.325
2018. I think that was the year when we introduced some of the RPA syntax capabilities into the framework.
92
00:09:38.945 --> 00:10:11.265
And people just got excited about that and really saw the promise of what we can do. But when you went kind of further into that and started applying into, like, proper organizations is is at larger companies. You saw that we we were lacking a lot of really tooling, the robot framework, and how it's supposed to run as an RPA solution. So I wanted to create a company that really creates a tooling that was missing in the ecosystem back then. And also, we wanted to create a lot of documentation learning material. So far, it says we built this community around,
93
00:10:11.805 --> 00:10:16.740
robot framework based open source RPA. That's how it all started. And and still on that journey.
94
00:10:17.279 --> 00:10:23.379
In terms of the end user that you're targeting with Robo Corp and the RPA framework,
95
00:10:23.875 --> 00:10:29.015
who are you directing your communications toward? Who's the person that's actually going to
96
00:10:29.395 --> 00:10:33.230
become a customer of you directly? And how does that inform the products
97
00:10:33.870 --> 00:10:35.649
that you're building and the direction that you're taking the business?
98
00:10:36.029 --> 00:10:39.010
In a way, the end user is a developer. We wanna
99
00:10:39.630 --> 00:10:49.645
really have a great developer experience. That's where it all started. So we are building tools for developers like bs code extensions and Jupyter lab based experiences.
100
00:10:50.425 --> 00:10:58.120
Also a lot of just other developer focused tooling, but the buyer isn't the developer to develop and doesn't buy our service.
101
00:10:58.774 --> 00:11:04.074
Our SaaS offering is the line of business folks who do that. So there we are balancing
102
00:11:04.454 --> 00:11:06.235
between the developer messaging
103
00:11:06.699 --> 00:11:08.560
and also the business value
104
00:11:09.019 --> 00:11:12.959
positioning that we need to do. So this is sort of a nuanced marketing
105
00:11:13.965 --> 00:11:32.175
problem that, you know, keeps going here. So we we need to communicate to both sides of the of the fence, both of the businesses make even CFOs and the CIOs and so forth. And then, you know, really have a great story to tell for the developers who who use the product. In terms of the broader ecosystem
106
00:11:32.715 --> 00:11:43.170
of RPA tools, you mentioned robot framework that started out its life as this end to end test automation platform, and you're giving it RPA capabilities through the RPA framework.
107
00:11:43.790 --> 00:11:50.295
And you mentioned there are some other businesses that are targeting the enterprise space. And I'm wondering just what is the kind of constellation
108
00:11:50.675 --> 00:11:52.774
of services and systems that are available
109
00:11:53.480 --> 00:11:56.779
for building RPA and employing it in an organization?
110
00:11:57.720 --> 00:12:02.540
And where do you see Robo Corp and RPA framework fitting in that larger ecosystem?
111
00:12:02.985 --> 00:12:06.925
If I can kind of paint the picture in a way of that full stack.
112
00:12:07.465 --> 00:12:12.880
So we created this open source automation stack that's based on Robo framework on Python.
113
00:12:13.420 --> 00:12:32.790
So on the bottom, you have Python. On top of that, you have a Robo framework. And next to Robo framework, you'll have RPA framework. So RPA framework is set of libraries that allow you to form typical RPA tasks like, you know, manipulating Excel and so forth. They're really underneath, they are a huge collection of different Python libraries
114
00:12:33.170 --> 00:12:33.990
that have been
115
00:12:34.370 --> 00:12:39.815
put in a form that are easy to consume for their RPA developer. And then on top of that,
116
00:12:40.275 --> 00:12:42.615
we have a tool chain called RCC,
117
00:12:43.315 --> 00:12:51.720
which is really part of the secret sauce that we are bringing into the open source space. And I think this is really unique approach that we have here. So RCC
118
00:12:52.580 --> 00:13:01.824
is a way for you to, in a sense, easily distribute Python based scripts that are running, you know, even hundreds of dependencies
119
00:13:02.285 --> 00:13:08.400
without any headache. So if you think about what we're doing now, we are deploying these Python based routines
120
00:13:08.860 --> 00:13:10.800
on remote machines and
121
00:13:11.465 --> 00:13:13.805
expecting them to execute their thing
122
00:13:14.105 --> 00:13:17.805
really fast, reliably without hiccups and manage dependencies
123
00:13:18.105 --> 00:13:19.085
released fluently.
124
00:13:19.785 --> 00:13:20.285
Python
125
00:13:20.950 --> 00:13:30.504
doesn't have good facilities for that out of the box. You know, you could do something like, you know, requirements files and deep in stores, but that gets a bit messy
126
00:13:31.204 --> 00:13:43.589
really, really fast. And if you try to do that over and over again, you're gonna be managing virtual environments and what haves you. So we we build RCC as a seamless open source tool chain to really
127
00:13:44.130 --> 00:13:49.915
put everything together in a way that the RPA developer doesn't need to deal with that headache
128
00:13:50.215 --> 00:13:57.890
of managing packages and environments. It just works. So that's the open source stack. Anything that you can do things like create
129
00:13:58.510 --> 00:13:59.250
new projects,
130
00:13:59.710 --> 00:14:02.505
run them, package them and deploy them.
131
00:14:03.065 --> 00:14:14.450
And then on top of that, we have a host of editors and tools. Obviously you can use the editor of your choice, but we have bs code extension for robot that makes it a bit easier to manage all that.
132
00:14:14.910 --> 00:14:23.535
And also we have a Jupyter based environment called Robo Corp Lab, which comes essentially with a single installer that you can deploy anywhere.
133
00:14:24.075 --> 00:14:30.654
And you'll have batteries included there. You can start building immediately. That's for that kind of new users coming into the ecosystem.
134
00:14:31.130 --> 00:14:37.630
That's all free and open source and publicly available. And on top of that, a platform that you use to operate and orchestrate
135
00:14:38.010 --> 00:14:40.735
your robots when you want to do a proper deployment,
136
00:14:41.195 --> 00:14:45.535
then we have RoboCop Cloud for that. And that's a cloud native platform for really
137
00:14:45.915 --> 00:14:49.600
running, monitoring and orchestrating those robots in production
138
00:14:50.060 --> 00:15:11.060
then. In terms of the kind of complications and challenges that developers might run into when building these RPA systems and deploying them to end users. You mentioned some of the things like managing the dependencies and the libraries and getting Python running on the system. And so that's what the RCC tool chain is aiming to provide. But beyond that, what are some of the complexities
139
00:15:11.440 --> 00:15:17.375
that developers of RPA tools might run into as far as handling credentials or
140
00:15:17.995 --> 00:15:24.740
educating end users on how to be able to customize the flows to be able to fit their specific use cases? And what is the
141
00:15:25.200 --> 00:15:25.700
granularity
142
00:15:26.160 --> 00:15:47.080
of detail that somebody who's building these RPA systems might go to as far as just saying, here is the entire system. You just click a button and it does its thing, or is it, you know, here are the building blocks. You just need to add these pieces of syntax, and then you can customize it to be able to fit your workflow, you know, within this kind of constrained space.
143
00:15:47.565 --> 00:15:54.145
Regarding credential management and these kind of things we provide that through robocop cloud. So that's a common thing that we wanted to solve for everyone.
144
00:15:54.660 --> 00:15:58.760
You know, when you start an RPA project, you'll start up with a process definition
145
00:15:59.220 --> 00:16:05.645
of some sort. So you have the current process that you need to to go and automate. You know, the auditor will go and say,
146
00:16:06.025 --> 00:16:10.685
tell you that I need to go in every month and take screenshots of SAP
147
00:16:10.985 --> 00:16:11.805
and Salesforce
148
00:16:12.250 --> 00:16:24.095
and make sure that those things match and then store them somewhere on a network drive. It takes me, you know, 3 to 4 hours, let's say on a weekly base. Can you help me out? And then they'll show you what they're doing
149
00:16:24.635 --> 00:16:27.055
as an RPA developer. You will need to take that
150
00:16:27.355 --> 00:16:28.415
as is process.
151
00:16:28.795 --> 00:16:34.360
Kind of try to think about, can you make it a bit better somehow? Can you improve the process itself?
152
00:16:34.899 --> 00:16:40.395
And then when you're satisfied with the design, you need to translate that into a working robot,
153
00:16:41.015 --> 00:17:00.305
working piece of script. In a way, you'll start looking through the libraries that are in drop a copy ecosystem or in the robot framework ecosystem. You kind of see, okay, I need to do it in a browser automation here, I might want to have something for SAP. You look through the documentation, get understand what kind of keywords they offer and really start putting it together.
154
00:17:00.660 --> 00:17:02.760
The best case is that that's really straightforward.
155
00:17:03.139 --> 00:17:17.615
Within a few hours, you test it and you deploy it. But always bump into something that there's a weird system from the late nineties that you need to interact with and it's gonna be kind of just challenging getting any handle on that thing.
156
00:17:18.039 --> 00:17:27.020
For that kind of purpose, we have things like image based automation, so you can match image templates in that UI and try to automate it on the surface.
157
00:17:27.565 --> 00:17:31.105
Then we are even going a bit further than that. And we actually
158
00:17:31.485 --> 00:17:33.265
developing deep learning based
159
00:17:33.645 --> 00:17:39.570
systems that can classify UI elements and automate them that way. So try to make that
160
00:17:39.870 --> 00:17:41.169
process a bit more
161
00:17:41.549 --> 00:17:44.370
manageable if you need to do that level of automation.
162
00:17:44.995 --> 00:17:54.375
So there's a whole range of stuff. You sometimes you need to be this reverse engineering master in a way. If you go and automate some web app that doesn't have any any proper
163
00:17:55.060 --> 00:18:07.154
API to it or any proper controls. You might need to go deep and understand how the dam is built and and what kind of x path you want to craft in order to get in there and really make it robust and reliable.
164
00:18:07.455 --> 00:18:21.875
So you need to know a ton of things about a lot of different systems, how they're built and be able to reverse engineer them at times to get the most reliable and robust solution. So that's really all about RPA. It's a and a special kind of development challenge.
165
00:18:22.335 --> 00:18:32.440
Digging a bit deeper into RPA framework and the Robo Corp stack itself, can you give a bit more detail as to sort of the system architecture and
166
00:18:32.899 --> 00:18:51.450
the set of sort of libraries and utilities within the Python ecosystem that you're relying on and just some of the ways that the overall scope and design of the project has evolved since you first began working on it? Yeah. RPA framework is sort of sub piece of all the thing that we build. So as I described, we have to build host of of
167
00:18:52.015 --> 00:19:00.675
projects, but API framework is 1 key component in the sack that allows you to do a lot of these actions that I expected of API systems.
168
00:19:01.100 --> 00:19:04.559
So we typically leverage existing Python projects
169
00:19:05.260 --> 00:19:06.480
for Excel manipulation,
170
00:19:06.940 --> 00:19:08.080
the spy Excel
171
00:19:08.655 --> 00:19:15.395
and for image based automation. There are a host of different kind of projects out there. Browser automation, we leverage
172
00:19:15.990 --> 00:19:19.930
selenium underneath, and that's wrapped into robot framework keywords
173
00:19:20.310 --> 00:19:21.770
to make it easy to consume.
174
00:19:22.310 --> 00:19:26.315
We also have playwright support right now. So Playwright is pretty
175
00:19:26.695 --> 00:19:27.195
interesting
176
00:19:27.575 --> 00:19:32.235
way to automate a browser and makes a bit life a bit easier than compared to Selenium.
177
00:19:32.570 --> 00:19:37.470
We have support for that as well. So it's it's more about the in a way,
178
00:19:37.929 --> 00:19:40.830
RPA framework is more about the sort of breadth
179
00:19:41.155 --> 00:19:45.095
than than the depth of the project. So you need to be able to design
180
00:19:45.635 --> 00:19:46.535
these keywords
181
00:19:46.995 --> 00:20:01.755
that are really ergonomic to use, cover a lot of the typical use cases and these keywords underneath these rubber framework keywords underneath, they translate into Python calls into different kind of libraries. So that's really how RPA framework has been built.
182
00:20:02.134 --> 00:20:13.150
I think the version is right now we have something like 9 point something version. So you can imagine that there has been a lot of iteration going on over the past year and a half as as we've been building it. And we try to incorporate a lot of our customers and users feedback. You know, somebody has a use case around, let's say, Excel, they report, they
183
00:20:18.315 --> 00:20:19.055
You know, somebody
184
00:20:19.595 --> 00:20:32.460
has a use case around, let's say, Excel, they report back, hey, guys, I'm having difficulty with this kind of use case. Can you help me? And we see that opening up RPA framework is the best way to answer that. And so we'll just put it in there. And so that really drives
185
00:20:33.080 --> 00:20:35.955
that project. It's a huge set of keywords
186
00:20:36.335 --> 00:20:45.290
for our framework. And underneath that, that's actually usable with Python as well. There's a Python API available. So you can actually use just plain Python to access some of the RPA
187
00:20:45.910 --> 00:20:52.650
framework functionality as well. In terms of the developer experience, as you mentioned, you can just do this directly in Python.
188
00:20:52.950 --> 00:20:57.835
And if you're also relying on some of the components from Robot Framework, do you have
189
00:20:58.215 --> 00:21:15.585
an API into that system to be able to do it all natively in Python as well? Or do you use sort of the specialized syntax that Robot Framework provides? And what's the dividing line between when you might wanna do it all in Python versus when you might want to rely on the customized syntax for the robot framework?
190
00:21:15.965 --> 00:21:24.060
Excellent question to have. So robot framework, the way I think about it myself, it's a way to simplify automation developer. It's really this procedural
191
00:21:24.440 --> 00:21:54.485
syntax that's easy to understand on the top level. So, you know, if I need to go to a website and click something there, what I'll do with Robo framework is I'll include 1 library, the browser library, and then I'll just say open browser, click. And that's that It's few lines, and I don't need to understand how that thing does it underneath, what kind of web driver is using and so forth, and what version of selenium is compatible there. So it just makes it a bit easier. We need to do any kind of heavy lifting.
192
00:21:54.890 --> 00:22:04.975
You start manipulating a lot of data, let's say, then you spend us. That's what it's meant for. From Robot Framework, you can call natively into Python code. So you can have Robot Framework files and Python Python code. So you can have Robot Framework
193
00:22:05.515 --> 00:22:10.495
files and Python files next to each other, and you can just call from Robot Framework into Python,
194
00:22:11.100 --> 00:22:18.960
return objects as you need. So it's really fluent to switch between these 2 modes. But what really robot framework allows
195
00:22:19.295 --> 00:22:31.210
you to have in addition to that simple syntax, that's kind of new user friendly. So even if you don't know Python, you can start using that pretty easily. But that also kind of brings 1 additional
196
00:22:31.990 --> 00:22:37.450
point to the table, which is logging. So you have really good logging facilities. So
197
00:22:37.855 --> 00:22:43.075
it'll create this detailed trace of what happened on a kind of a visual format
198
00:22:43.455 --> 00:22:48.150
that's easy to follow. And so you'll have that for each execution of the robot
199
00:22:48.530 --> 00:22:54.665
that gets stored as well in RoboCop Cloud. So if something goes wrong, you can dive straight into that log
200
00:22:55.145 --> 00:23:08.270
and pinpoint your probe in a matter of seconds, or then you know, you oftentimes need to build an audit trail to show what the robot did at what time so so you have that as well. So it's all about, you know, that ease of getting into the scripting,
201
00:23:08.810 --> 00:23:13.585
the ability to pull from readily available keywords without having to understand all the
202
00:23:21.505 --> 00:23:22.245
great logging.
203
00:23:22.640 --> 00:23:32.505
But if you wanna do something complicated, just do it in Python. That's my advice always. Like when when it starts to look ugly on the robot framework script site, that's the time to move, move to Python.
204
00:23:35.525 --> 00:23:41.784
Software is read more than it is written, so complex and poorly organized logic slows down everyone who has to work with it.
205
00:23:42.309 --> 00:23:51.529
Sourcerie makes those problems a thing of the past giving you automatic refactoring recommendations in your IDE or text editor while you write. And yes, I even have it working in Emacs.
206
00:23:52.294 --> 00:24:01.920
It isn't just another linting tool that nags you about issues. It's like pair programming with a senior engineer, finding and applying structural improvements to your functions so that you can write cleaner code faster.
207
00:24:02.380 --> 00:24:08.145
Best of all, listeners of podcast dot in it get 6 months of their pro tier for free if you go to python podcast dotcom/sorcery
208
00:24:09.085 --> 00:24:10.065
today. That's
209
00:24:10.525 --> 00:24:15.920
s o u r c e r y, and use the promo code in it when you sign up.
210
00:24:18.960 --> 00:24:21.460
And in terms of the level of complexity
211
00:24:21.920 --> 00:24:31.845
of these workflows, as you mentioned, there's a tipping point where you decide, okay, I'm gonna switch from using Robot Framework and move it into Python. But for workflows that are naturally segmented,
212
00:24:32.465 --> 00:24:52.260
what is the capability for being able to chain together multiple robots into a more kind of complex and fully featured workflow beyond just, you know, you might have 1 that's does 2 or 3 steps that are, you know, fairly rote and somewhat time consuming, but relatively simple. And then, know, I wanna be able to actually tie together,
213
00:24:52.800 --> 00:25:10.070
you know, 5 or 6 different robots where the output of 1 step is actually the input to 3 other different robots that have different responsibilities or things like that? So for that, we build what we call data pipelines into RoboCop Cloud. So that allows you to run these tasks or these workloads in steps
214
00:25:10.530 --> 00:25:16.725
that each step can fit into another step and so forth and processes can be chained into other processes
215
00:25:17.265 --> 00:25:18.565
by passing on data.
216
00:25:19.025 --> 00:25:26.490
So we really built that into the management platform side of it all. I know some people are using like external databases to facilitate
217
00:25:26.790 --> 00:25:31.370
switching states between processes and so forth. But if you want to kind of keep it simple,
218
00:25:31.885 --> 00:25:32.545
then RoboCop
219
00:25:33.005 --> 00:25:36.145
has that covered. But that's kind of typical in RPA
220
00:25:36.445 --> 00:25:38.305
where you might have processes
221
00:25:38.605 --> 00:25:52.794
that need to, let's say, collect data from, you know, 5 different sources and that data might come over the span of multiple days. And then when you have everything in place, you can continue working on something and kick off another stage. And so
222
00:25:53.174 --> 00:25:58.394
that's how you typically build these processes that are long lasting all the time and build them together.
223
00:25:58.740 --> 00:25:59.799
For people who
224
00:26:00.100 --> 00:26:23.080
have a specialized use case where RPA framework and robot framework have the majority of the functionality, but there's this bespoke system that I need to be able to integrate with. What are the options for being able to add new components to RPA framework or be able to integrate into that runtime from Python to be able to maybe integrate it into a larger application or pull in some additional functionality
225
00:26:23.380 --> 00:26:30.995
that isn't there yet? Yeah. So it's really common that you'll build some sort of a Python library next to your RPA project.
226
00:26:31.510 --> 00:26:37.450
Even though Robo framework itself has 100 of 1000 of users around the world, Python has over 7, 000, 000.
227
00:26:38.150 --> 00:26:43.795
So every molecule in the universe probably has a Python library to it. So you can really leverage that,
228
00:26:44.515 --> 00:26:45.255
that extensive
229
00:26:45.715 --> 00:26:51.830
community there and lean into that. So when you have that bespoke thing that you need to attach to,
230
00:26:52.290 --> 00:27:00.525
you can write a piece of Python code to do that and expose that piece as a Robo framework keyword. That's really it's a simple API.
231
00:27:01.065 --> 00:27:11.920
So you can expose that to your robot framework syntax, and you can simply call to it. Or you can have that piece of the workflow be done a 100% in Python. So up to you really as a developer.
232
00:27:12.300 --> 00:27:13.360
As far as
233
00:27:13.660 --> 00:27:14.160
the
234
00:27:14.795 --> 00:27:25.122
open source aspects of RPA framework and RCC and kind of the dividing line between it and Robocorp, as you mentioned, you have this management platform but then you
235
00:27:26.241 --> 00:27:26.741
also
236
00:27:27.860 --> 00:27:29.650
have these open source components. And
237
00:27:30.395 --> 00:27:33.295
but then you also have these open source components. And I'm wondering
238
00:27:33.674 --> 00:27:39.054
what are the dividing lines between something that you're going to sell as a product versus, you know, release to the community
239
00:27:39.630 --> 00:27:43.970
and your overall approach to governance of the open source aspects of this ecosystem?
240
00:27:44.510 --> 00:27:53.915
Open source is really important part of what we're building. I'm a firm believer in that. I don't think there's any other way to build software than to lean into open source really nowadays.
241
00:27:54.615 --> 00:28:11.715
Everything that you use as a developer to build a robot and, you know, make it run and so forth, that's open source. So the dev tools and the whole automation stack starting from Robo framework and the RPA framework and then going to RCC, they are Apache 2 license. So really permissive
242
00:28:12.015 --> 00:28:13.555
open source license there.
243
00:28:14.050 --> 00:28:23.635
The the RoboCop cloud platform that you have for deploying these robots to run either in the cloud or then locally as well. You can deploy them locally through an agent.
244
00:28:24.275 --> 00:28:32.935
That's really a managed service that we as a company then provide with SLA included and everything that comes with that. So have
245
00:28:33.390 --> 00:28:33.970
a lot
246
00:28:34.429 --> 00:28:35.010
of governance
247
00:28:35.550 --> 00:28:36.370
and security
248
00:28:37.230 --> 00:28:40.370
and compliance requirements that come with larger organizations
249
00:28:41.605 --> 00:28:48.985
in order to really be able to respond to those. We we provide that as a managed service. So there's a big clear line is is
250
00:28:49.320 --> 00:28:54.780
anything that's RoboCop Cloud and the orchestration platform there. That's really our commercial end of the things.
251
00:28:55.320 --> 00:28:58.355
And outside of that, it's open source. So RCC
252
00:28:58.735 --> 00:29:02.274
is in a way, it's a bridge between those 2 worlds.
253
00:29:02.575 --> 00:29:03.554
We build it
254
00:29:03.855 --> 00:29:04.355
initially
255
00:29:04.850 --> 00:29:07.190
to solve our own problems, how we can
256
00:29:07.650 --> 00:29:11.910
easily create projects and then run them anywhere without any
257
00:29:12.284 --> 00:29:13.585
pre installed dependencies,
258
00:29:13.885 --> 00:29:17.664
without actually even requiring Python to be there in in the first place.
259
00:29:18.205 --> 00:29:21.585
And then be able to deploy those routines across
260
00:29:22.059 --> 00:29:28.800
100 and thousands of different environments and be able to update them seamlessly and so forth. This kind of management headache
261
00:29:29.405 --> 00:29:43.330
that was the first question that we asked from ourselves when we were envisioning the company and what we wanted to build. We thought to ourselves, man, that's gonna be a problem. Like, has anyone solved that? So when we started working, we ended up solving it, and we thought that
262
00:29:43.790 --> 00:29:44.929
this might be actually
263
00:29:45.505 --> 00:30:26.945
useful for some other people out there as well. And that's really RCC is the bridge that we decided to then open source. And it's a large part of our own IP that we've been able to bring. And I think that if you put some some marketing effort behind it, it should be something that others in the Python world, you know, even even people who are not interested in RPA 1 bit should be able to look into and and say that, man, this is a useful project. We need to have this. When I was looking at it, I noticed that it's written in Go, which because of the fact that you're targeting this as something that's easy to just drop on a system and get up and running is sort of a natural choice because of Go's tool chain for being easily statically compile things. And I'm curious
264
00:30:27.360 --> 00:30:31.860
if there were any kind of challenges or complexities that you ran into interoperating with
265
00:30:32.240 --> 00:30:44.695
Go as sort of the base layer and then being able to bootstrap Python into then executing all these other workflows and sort of packaging up and managing the dependencies and just some of the complexities that you ran into there? They're actually leaning into
266
00:30:45.000 --> 00:30:47.900
conda over there for package managing quite a bit,
267
00:30:48.360 --> 00:30:51.180
and we are using something called MicroMamba internally
268
00:30:51.800 --> 00:30:53.100
to manage conda environments.
269
00:30:53.555 --> 00:30:57.015
I'm working with the actually the original author of that project
270
00:30:57.395 --> 00:31:05.640
to tightly integrate that into the chain. Lucky for me, I haven't I haven't been the 1 to implement that. So I don't know all the pain and sweat and tears
271
00:31:06.020 --> 00:31:16.545
to go into RCC, but I can watch the depth. That's plentiful. So what it does underneath the hood is it keeps track of all the dependencies and files that you have
272
00:31:17.005 --> 00:31:21.299
cached locally and is able to pull the required environment
273
00:31:21.679 --> 00:31:24.820
together really fast when you need to run something.
274
00:31:25.440 --> 00:31:32.565
And so it's actually pretty efficient way to manage things. Like if you have, let's say that we are running in the cloud side, we are running
275
00:31:32.945 --> 00:31:35.524
hundreds of different types of Python environments
276
00:31:36.225 --> 00:31:41.400
all the time. If you have them as separate environments installed, it's gonna probably consume.
277
00:31:42.020 --> 00:31:44.040
These are big libraries, so it consumes
278
00:31:44.435 --> 00:31:47.255
thousands upon thousands of gigabytes of actually data
279
00:31:47.955 --> 00:31:50.295
to store these hundreds of different individual
280
00:31:50.755 --> 00:31:53.175
environments with huge dependency loads.
281
00:31:53.480 --> 00:32:02.860
With RCC, it actually compresses into just few gigs. So it doesn't store anything twice there, and it manages all that under the hood pretty elegantly.
282
00:32:03.595 --> 00:32:08.634
Actually, there's few patents that we have pending for some of the stuff that goes into us. You see, but,
283
00:32:09.274 --> 00:32:18.630
but yeah, I mean, we we spend a considerable amount of time on that. That's all I can say. So we we we know we know too much about Python dependence management.
284
00:32:20.924 --> 00:32:25.345
Yeah. I'd be interested to see how this plays out in relation to things like pyoxidizer
285
00:32:25.965 --> 00:32:30.419
and some of the other approaches that are out in the community for being able to statically compile
286
00:32:30.880 --> 00:32:31.460
a hermetically
287
00:32:32.000 --> 00:32:35.299
contained Python environment and runtime and all the dependencies.
288
00:32:35.825 --> 00:32:39.925
It actually with the latest release, it's gonna do some of that same stuff.
289
00:32:40.305 --> 00:32:44.965
Some instances, we have the requirement to ship a static instance of a robot.
290
00:32:45.530 --> 00:32:49.150
So when we're talking about really high security stuff like government
291
00:32:49.450 --> 00:32:50.670
and the sort of
292
00:32:51.210 --> 00:32:56.125
government and military side of things, they don't really allow you to start loading
293
00:32:56.585 --> 00:32:57.645
packages dynamically
294
00:32:57.945 --> 00:33:14.835
from pipe and package index or anything like that. That's really out of the question. So we just need to exactly her medical seal and everything and make sure that they are approved and scanned and and so forth and and ship that as the robot. So that's something that the RCC is built to be able to handle as well.
295
00:33:15.135 --> 00:33:18.434
In terms of the use cases and the
296
00:33:18.799 --> 00:33:24.580
sort of implementations of the different robots and workflows that people have built using RPA Framework and Robocorp,
297
00:33:24.880 --> 00:33:27.595
what are some of the most interesting or innovative or unexpected ways that you've seen it employed? I think what what's amazing with it is,
298
00:33:35.434 --> 00:33:35.845
grinding routine, it can automate away. So,
299
00:33:36.530 --> 00:33:38.150
grinding routine, it can
300
00:33:38.610 --> 00:33:39.750
automate away.
301
00:33:40.130 --> 00:33:45.430
So I've heard that, you know, people are doing, like, health care insurance claim automation
302
00:33:46.405 --> 00:33:52.265
at a hospital's way. It just frees away, like, half a day every day from somebody's work.
303
00:33:52.645 --> 00:33:55.705
But I also know of a bank in the Nordics
304
00:33:56.230 --> 00:33:57.690
that they use this technology
305
00:33:57.990 --> 00:34:08.045
to automate a way, a routine that they had to do. So they had to actually go through all of their business applications and and update the end users, the the customer's
306
00:34:08.665 --> 00:34:09.405
phone records
307
00:34:09.785 --> 00:34:11.965
due to a record or a change that was pending.
308
00:34:12.270 --> 00:34:13.810
So they use a framework
309
00:34:14.430 --> 00:34:17.490
to build that automation and they actually ended up saving.
310
00:34:17.950 --> 00:34:20.425
I think they quoted this to me. So they saved
311
00:34:21.145 --> 00:34:23.085
7 years of their customers
312
00:34:23.465 --> 00:34:30.350
waiting time on the phone within 1 month. So having that kind of result, think about it 7 years of just people
313
00:34:30.970 --> 00:34:32.430
waiting on the phone
314
00:34:32.810 --> 00:34:36.030
and being able to get rid of that is pretty amazing.
315
00:34:36.385 --> 00:34:52.760
Sort of the perennial promise of computers is that it's supposed to save us all of this time, and yet so many of us end up wasting a huge amount of our time on very tedious and menial tasks that the computer is supposed to do for us. That's definitely great to see that, you know, there there are some cases where that promise is actually being realized.
316
00:34:53.220 --> 00:34:53.720
Exactly.
317
00:34:54.215 --> 00:35:09.550
In your own experience of building and growing the RPA framework and Robocorp and sort of the business and community around all of it, what are some of the most interesting or unexpected or challenging lessons that you've learned? Running a startup, obviously, is a lot of hard work. There's no way around it.
318
00:35:10.010 --> 00:35:14.315
I will say this to everyone who's about to join the company. I tell them that, look,
319
00:35:14.934 --> 00:35:23.619
we live in dark years, so 1 year over here will be equivalent to 7 years in a regular company. I think that holds true. Oftentimes
320
00:35:24.640 --> 00:35:31.185
the timelines are so condensed. You need to achieve a lot of things in just a short time and it constantly under pressure
321
00:35:31.645 --> 00:35:43.160
to perform and and grow the business. So I wouldn't change this for anything I have to say, but it's definitely a unique set of challenges and something that you you really can't prepare for
322
00:35:43.700 --> 00:35:44.360
in advance.
323
00:35:47.964 --> 00:35:59.630
We've all been asked to help with an ad hoc request for data by the sales and marketing team. Then it becomes a critical report that they need updated every week or every day. Then what do you do? Send a CSV file via email?
324
00:35:59.930 --> 00:36:07.464
Write some Python scripts to automate it? But what about incremental sync, API quotas, error handling, and all of the other details that eat up your time?
325
00:36:08.005 --> 00:36:20.625
Today, there is a better way. With Census, just write SQL or plug in your dbt models and start syncing your cloud data warehouse to SaaS applications like Salesforce, Marketo, HubSpot, and many more. Go to python podcast.com/census
326
00:36:22.045 --> 00:36:25.825
today to get a free 14 day trial and make your life a lot easier.
327
00:36:28.849 --> 00:36:31.990
Another thing that I'm curious about is how much you're using
328
00:36:32.530 --> 00:36:33.990
RBA framework and Robocorp
329
00:36:34.530 --> 00:36:46.555
to be able to build out and maintain Robocorp itself and just sort of how much of your own work you're using to be able to perpetuate the work that you're doing? I typically say that every company will have some sort of a routine thing
330
00:36:47.680 --> 00:36:49.780
that's automatable with RPA.
331
00:36:50.160 --> 00:36:53.905
It's not just for the largest of the large enterprises out there.
332
00:36:54.465 --> 00:36:59.045
Something like a startup will be so fast moving that you you're not gonna have
333
00:36:59.425 --> 00:37:02.645
static processes that are gonna be sitting there in place
334
00:37:03.140 --> 00:37:06.599
for long enough to kind of get in anyone's way usually
335
00:37:06.900 --> 00:37:12.440
or then you do them on purpose the wrong way. Kind of you do purposely things that don't scale
336
00:37:12.805 --> 00:37:21.220
because that's the fastest thing to get there. So, you know, we have some nagging things in payroll, for instance, that we need to do every month.
337
00:37:21.700 --> 00:37:28.520
We've been wanting to automate a way. We just simply haven't been able to get to that. But what we actually have in place is
338
00:37:29.165 --> 00:37:32.465
I think we have 1 bot that handles Slack invitations
339
00:37:33.005 --> 00:37:40.660
because Slack didn't have any good way to automate that. So we have 1 robot in place to do that. Don't test Slack. They probably shut it down.
340
00:37:41.039 --> 00:37:43.619
But but then we also have 1 robot that'll
341
00:37:44.160 --> 00:37:49.815
check offices security system each night and let us know if somebody forgot to turn it on.
342
00:37:50.275 --> 00:37:52.615
So these are pretty trivial things, but
343
00:37:52.915 --> 00:38:19.280
these are the ones that I know of at least. We might have something like scraping the web for some data here and there, but these are the ones I know of and they have been fairly fairly long standing and running and serving as well. It's pretty fun to have those. So for people who are looking at the things that they're doing in their day to day and starting to think, oh, this might be a good opportunity for RPA or RPA framework. What are the cases where it's the wrong choice, and
344
00:38:19.615 --> 00:38:24.994
you might be better served either just continuing to do something manually or using a different approach to automation?
345
00:38:25.375 --> 00:38:26.914
I would refer to that xkcd
346
00:38:27.295 --> 00:38:31.940
comic that's out there. It's there's this matrix of how much time it takes for you
347
00:38:32.320 --> 00:38:37.220
to automate versus how much it will save, and it'll take you just tell you the breaking point.
348
00:38:37.575 --> 00:38:41.275
So I started that XKCD comic and then oftentimes
349
00:38:41.815 --> 00:38:43.755
RPA is sometimes popularized
350
00:38:44.055 --> 00:38:51.910
as something that, you know, should be on everyone's desktop. It should be there for every business user in a company that they should automate away their routines.
351
00:38:52.755 --> 00:38:53.255
Oftentimes,
352
00:38:53.795 --> 00:38:54.775
your personal
353
00:38:55.474 --> 00:39:02.819
routines are, you know, not so time consuming that you would wanna apply RPA to them. So it's oftentimes
354
00:39:03.119 --> 00:39:04.180
when you go into
355
00:39:04.800 --> 00:39:09.994
things that run across people or across organization that you're gonna find this sort of larger
356
00:39:10.375 --> 00:39:11.275
and more rewarding
357
00:39:11.734 --> 00:39:14.234
automation tasks that you can deploy.
358
00:39:14.535 --> 00:39:22.790
So on the personal level, there might be some things like I know a guy who used to book his tennis courses, like tennis appointments with a bot.
359
00:39:23.410 --> 00:39:31.285
But beyond that, it's really rare to see like actually like somebody running it on their desktop if it's not, like, web scraping a bunch of stuff for them
360
00:39:31.665 --> 00:39:39.340
or something like that. So this there might be definitely better solutions out there for simple point tasks like that. So always
361
00:39:39.640 --> 00:39:40.780
check before you
362
00:39:41.115 --> 00:39:52.029
apply it if you have some other way to do it. There are definitely a ton of times where RPA is the right choice, but, you know, don't try to replace API with it if you're not that kind of person who likes to maintain stuff,
363
00:39:52.650 --> 00:39:58.029
if it's not a hobby for you, and use it wisely where it's sort of has its strengths.
364
00:39:58.365 --> 00:40:04.225
As you continue to work on Robo Corp and the tool chain for the IP framework and RCC,
365
00:40:04.525 --> 00:40:08.160
what do you have planned for the future of the business and the platform?
366
00:40:10.799 --> 00:40:21.984
Difficulty is trying to limit the scope of all the things that we may be engaged in instead of just figuring out new ways to burn more capital. So I guess staying focused is number 1.
367
00:40:22.285 --> 00:40:27.369
Right now, we are really keen on getting started with our enterprise users. So we've been
368
00:40:27.750 --> 00:40:44.569
working hard to get the the platform in a state where it can pass all the strictest requirements of the largest of the large enterprise users out there. We are we are starting some of those deployments right now. That's super exciting. And then maybe the next stage that I'm really excited about as well is
369
00:40:45.190 --> 00:40:47.769
our partner network. So we have roughly
370
00:40:48.235 --> 00:40:54.735
40 or 50 active partners globally building on top of Robo Corp. We are adding new ones almost daily nowadays,
371
00:40:55.680 --> 00:40:56.820
but really enabling
372
00:40:57.200 --> 00:41:16.550
partners to build business on top of RoboCop and the platform that we created. That's something that I am super excited about. We have a lot of new things that we are building on that side, which essentially allows some of these partners to run what we call robot as a service. And that's a great way to operate for mid market users specifically.
373
00:41:17.090 --> 00:41:19.750
So I think the robot as a service wave is something
374
00:41:20.214 --> 00:41:40.165
once we have conquered the enterprise side of of things or started a journey, we will turn our attention to the robot as a service in in full force. Are there any other aspects of RPA in general or the work that you're doing at Robo Corp and on RPA framework and RCC that we didn't discuss yet that you'd like to cover before we close out out the show? Yeah. I mean,
375
00:41:40.465 --> 00:41:42.645
there's a lot to uncover there and it's,
376
00:41:42.945 --> 00:42:09.450
you know, it I'm envious of the people who are building a point solution that you can click and and buy and that's it. It does a thing for you, and that's the end of the story. But RPA and building this kind of developer ecosystem and develop a stack of open source developer tooling and a cloud platform. Everything is it has a lot of things to uncover there. So I think we went through the basics, but I think 1 last thing would be that if anyone is interested in getting into RPA more,
377
00:42:09.830 --> 00:42:11.530
we have great documentation
378
00:42:11.910 --> 00:42:12.650
on robocop.com/docs.
379
00:42:14.855 --> 00:42:16.714
There's even a free certification
380
00:42:17.015 --> 00:42:26.420
course that you can take. The first level 1 is gonna take you just a while to complete. The level 2 is gonna be a bit more demanding, but I challenge everyone to
381
00:42:26.720 --> 00:42:30.819
try to get a stab at it and try to see if they're interested in learning of RPA,
382
00:42:31.345 --> 00:42:36.484
what it's like, and those certification courses are great way to get into it. On the point of certification,
383
00:42:36.865 --> 00:42:39.045
what are some of the types of organizations
384
00:42:39.424 --> 00:42:39.924
or
385
00:42:40.305 --> 00:42:40.740
jobs
386
00:42:41.140 --> 00:42:48.119
that where that certification would be useful or that people might be looking to that? Good question. RPA developer market is
387
00:42:48.585 --> 00:42:52.684
growing fast. So our partners who work on the mid market side,
388
00:42:53.305 --> 00:42:59.650
they are basically limited in just getting RPA developers hired. That's the limiting factor as you might imagine.
389
00:43:00.110 --> 00:43:08.895
Enterprise is the same thing. You know, getting RPA developers to join is limiting fact. I'd say that know, if you have some experience in scripting, you're
390
00:43:09.355 --> 00:43:15.214
interested in gaining new skills there and, you know, starting your career there,
391
00:43:15.550 --> 00:43:19.410
getting into RPA might be actually a great step towards learning
392
00:43:19.790 --> 00:43:35.920
new skills. And because if you start building on something like RoboCop, you'll learn Robot Framework, you also learn Python, you get skills that way you can actually take them to other places as well. So that might be a great place to enter the world of software in broader terms
393
00:43:36.460 --> 00:43:49.085
is in high demand right now in many, many places. Well, for anybody who wants to learn more about that or get in touch and follow along with the work that you're doing, I'll have you add your preferred contact information to the show notes. And so with that, I'll move us into the picks.
394
00:43:49.450 --> 00:43:51.070
And this week, I'm going to choose
395
00:43:51.530 --> 00:43:54.750
the WandaVision series. I just watched those recently.
396
00:43:55.050 --> 00:44:17.365
So only 9 episodes. So it's a little mini series, so you don't have to invest a bunch of time into it. But it's just a really well executed story and interesting and few good twists to it. And it's interesting how they weave it in with the rest of the Marvel Cinematic Universe. So definitely worth taking a look at that if you are looking for something to watch. And with that, I'll pass it to you, Antti. Do you have any picks this week? My pick is gonna be a movie.
397
00:44:17.745 --> 00:44:21.925
I rarely watch movies, but I watched this last week. It was The Tenet.
398
00:44:22.385 --> 00:44:23.925
And if you're able to
399
00:44:24.360 --> 00:44:27.420
watch that and understand it the first go, good luck.
400
00:44:28.760 --> 00:44:49.265
So that was a mind bender. Well, thank you very much for taking the time today to join me and share the work that you're doing. It's definitely very interesting problem area and a very approach to it. I appreciate all the work that you're doing to make it open source and accessible to more developers as well. So thank you for all the time and effort you've put into that, and I hope you enjoy the rest of your day. Great. Thanks for having me.
401
00:44:51.885 --> 00:44:57.150
Thank you for listening. Don't forget to check out our other show, the Data Engineering Podcast at dataengineeringpodcast.com
402
00:44:58.569 --> 00:45:00.430
for the latest on modern data management.
403
00:45:01.210 --> 00:45:02.670
And visit the site of pythonpodcast.com
404
00:45:03.609 --> 00:45:07.155
to subscribe to the show, sign up for the mailing list, and read the show notes.
405
00:45:07.535 --> 00:45:12.515
And if you've learned something or tried out a project from the show, then tell us about it. Email host at podcastinit.com
406
00:45:13.295 --> 00:45:14.260
with your story.
407
00:45:14.880 --> 00:45:18.980
To help other people find the show, please leave a review on Itunes and tell your friends and coworkers.