{"id":4752,"date":"2019-10-25T10:52:41","date_gmt":"2019-10-25T08:52:41","guid":{"rendered":"https:\/\/www.almtoolbox.com\/blog\/?p=4752"},"modified":"2019-10-27T10:58:08","modified_gmt":"2019-10-27T08:58:08","slug":"free-gitlab-ci-cd-serverless-utilization","status":"publish","type":"post","link":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/","title":{"rendered":"Free-of-Charge Serverless Computing Using GitLab CI\/CD"},"content":{"rendered":"<p><b>In short: GitLab CI\/CD lets you run your programs without the need to maintain your own computer, free of charge.<\/b><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4754\" src=\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg\" alt=\"serverless\" width=\"700\" height=\"396\" srcset=\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/2019\/10\/serverless.jpg 700w, https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/2019\/10\/serverless-150x85.jpg 150w, https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/2019\/10\/serverless-300x170.jpg 300w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">A few months ago, we started distributing, to some of our customers, Excel sheets listing GitLab features. How did we create those sheets? We wrote a script, which used GitLab API to extract information from GitLab release notes and with that information we built the Excel sheet. From time to time we ran that script on one of our private computers.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Lately we have decided to start running our script automatically, using serverless computing on one of public clouds.<\/span><\/p>\n<div class=\"alm-box alm-contact\">\n<h4><span style=\"font-weight: 400;\">What is Serverless Computing?<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Serverless computing, sometimes called Function-as-a-Service (FaaS), is a cloud-computing execution model, which allows developers to run their programs without a need to take care of physical or virtual machines and other resources. Pricing is based on the actual amount of resources consumed by an application, rather than on pre-purchased units of capacity.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">(Note that although this mode is called &#8220;serverless&#8221;, the server does exist somewhere, in a cloud provider&#8217;s data center, but users are freed from the need to manage it)<\/span>\n<\/div>\n<p><span style=\"font-weight: 400;\">\u00a0After some testing we have found out that for our needs we can use the serverless approach totally free of charge by exploiting GitLab shared CI runners.<\/span><\/p>\n<h3><b>How does it work?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Let&#8217;s start with the fact that GitLab allows you to create a private repository on their cloud (gitlab dot com) free of charge.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Moreover, GitLab provides free shared servers (&#8220;runners&#8221;) to run your programs in continuous integration (CI). That means that you can configure your GitLab project so that on every change in your Git repository, your software will run on one of GitLab-provided free servers. You can also start a CI run manually (without making any changes in the repo), schedule it in advance (like in <\/span><i><span style=\"font-weight: 400;\">crontab<\/span><\/i><span style=\"font-weight: 400;\">)\u00a0 or even trigger it by an external program using GitLab API.<\/span><\/p>\n<h3><b>GitLab CI Runners<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">As we said above, GitLab puts free shared CI runners at the disposal of the community. There is a limit of 2,000 minutes per month per single project, which is a significant quantity of CPU time and lets you run quite a lot of things.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">All this means that you get serverless computing service, i.e.\u00a0 a capability to run your programs in the cloud, without worrying about CPU, memory, etc., and all that free of charge!<\/span><\/p>\n<h3><b>How do you create environment for running your software on public runners?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">GitLab public runners are actually Docker containers, running minimal Ubuntu Linux. There is a good chance that when you will want to compile a program or run a script, you will not find there the compiler or the interpreter you need. To overcome this problem you can request a specific Docker image to be installed in your container. In addition, in the runtime you can install all necessary libraries.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In our case, we needed a Python interpreter plus Python modules for accessing GitLab and for writing Excel files.\u00a0 Therefore we requested that the runner be loaded with the Python image and that afterwards the above modules be installed.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Below is an example of an Excel sheet created by our program:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4757\" src=\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/gitlab-all-features.jpg\" alt=\"gitlab-all-features\" width=\"1008\" height=\"552\" srcset=\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/2019\/10\/gitlab-all-features.jpg 1008w, https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/2019\/10\/gitlab-all-features-150x82.jpg 150w, https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/2019\/10\/gitlab-all-features-300x164.jpg 300w, https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/2019\/10\/gitlab-all-features-768x421.jpg 768w\" sizes=\"auto, (max-width: 1008px) 100vw, 1008px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">In a similar way, you can run a script or test almost in any language. For example, you can test the code you have written,\u00a0 process data you have collected, deploy artifacts you have created to other servers (as an implementation of Continuous Deployment), etc.<\/span><\/p>\n<h3><b>Summing up: What did we gain?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">We gained the ability to run a program in the cloud, without a need in having a server, whenever we want (24\/7), privately (without exposing our code to anybody), and all that free of charge!<\/span><\/p>\n<h3><b>Is this solution suitable for everybody?<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Not necessarily. It is important to remember that you cannot fully rely on public free runners&#8217; response time and performance, especially at peak times when thousands of developers from all around the world run their programs on the same servers (imagine the traffic on the Coastal Road at 8am, and you will understand what we mean). Therefore we don&#8217;t think our solution is suitable for time-critical applications.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can solve the performance problem by using private runners. Those can reside either on-premises or on a public cloud. You may also prefer private runners if you need more CPU time than what you get for free, more computing power, auto-scaling, tighter security, etc.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You may also prefer using GitLab Enterprise edition, which provides more CI\/CD features than the free one. To learn about them, you are invited to download the above mentioned Excel file, which we built using GitLab CI&#8230;<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In short: GitLab CI\/CD lets you run your programs without the need to maintain your own computer, free of charge. A few months ago, we started distributing, to some of our customers, Excel sheets listing GitLab features. How did we create those sheets? We wrote a script, which used GitLab API to extract information from [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":4754,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[65,166,172,215],"tags":[],"class_list":["post-4752","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-case-study","category-gitlab","category-gitlab-ci","category-serverless"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Free-of-Charge Serverless Computing Using GitLab CI\/CD - ALMtoolbox News<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Free-of-Charge Serverless Computing Using GitLab CI\/CD - ALMtoolbox News\" \/>\n<meta property=\"og:description\" content=\"In short: GitLab CI\/CD lets you run your programs without the need to maintain your own computer, free of charge. A few months ago, we started distributing, to some of our customers, Excel sheets listing GitLab features. How did we create those sheets? We wrote a script, which used GitLab API to extract information from [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/\" \/>\n<meta property=\"og:site_name\" content=\"ALMtoolbox News\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/almtoolbox.israel\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-25T08:52:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-10-27T08:58:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"396\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Tamir Gefen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Dikla\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tamir Gefen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/\"},\"author\":{\"name\":\"Tamir Gefen\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/person\/409e35aa3486f92208065230bb6ebb63\"},\"headline\":\"Free-of-Charge Serverless Computing Using GitLab CI\/CD\",\"datePublished\":\"2019-10-25T08:52:41+00:00\",\"dateModified\":\"2019-10-27T08:58:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/\"},\"wordCount\":777,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg\",\"articleSection\":[\"Case Study\",\"GitLab\",\"GitLab CI\",\"Serverless\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/\",\"url\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/\",\"name\":\"Free-of-Charge Serverless Computing Using GitLab CI\/CD - ALMtoolbox News\",\"isPartOf\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg\",\"datePublished\":\"2019-10-25T08:52:41+00:00\",\"dateModified\":\"2019-10-27T08:58:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#primaryimage\",\"url\":\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg\",\"contentUrl\":\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg\",\"width\":700,\"height\":396,\"caption\":\"serverless\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.almtoolbox.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Free-of-Charge Serverless Computing Using GitLab CI\/CD\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#website\",\"url\":\"https:\/\/www.almtoolbox.com\/blog\/\",\"name\":\"ALMtoolbox News\",\"description\":\"All the news of ALMtoolbox\",\"publisher\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.almtoolbox.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#organization\",\"name\":\"ALMtoolbox\",\"url\":\"https:\/\/www.almtoolbox.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2015\/10\/logo.png\",\"contentUrl\":\"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2015\/10\/logo.png\",\"width\":410,\"height\":190,\"caption\":\"ALMtoolbox\"},\"image\":{\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/almtoolbox.israel\/\",\"https:\/\/www.linkedin.com\/company\/almtoolbox\/\",\"https:\/\/www.youtube.com\/user\/GoMidjets\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/person\/409e35aa3486f92208065230bb6ebb63\",\"name\":\"Tamir Gefen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d3d4df00aa386b2805c42441dfebcedd46abf25846febb352f00c11524d994c4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d3d4df00aa386b2805c42441dfebcedd46abf25846febb352f00c11524d994c4?s=96&d=mm&r=g\",\"caption\":\"Tamir Gefen\"},\"sameAs\":[\"https:\/\/x.com\/Dikla\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Free-of-Charge Serverless Computing Using GitLab CI\/CD - ALMtoolbox News","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/","og_locale":"en_US","og_type":"article","og_title":"Free-of-Charge Serverless Computing Using GitLab CI\/CD - ALMtoolbox News","og_description":"In short: GitLab CI\/CD lets you run your programs without the need to maintain your own computer, free of charge. A few months ago, we started distributing, to some of our customers, Excel sheets listing GitLab features. How did we create those sheets? We wrote a script, which used GitLab API to extract information from [&hellip;]","og_url":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/","og_site_name":"ALMtoolbox News","article_publisher":"https:\/\/www.facebook.com\/almtoolbox.israel\/","article_published_time":"2019-10-25T08:52:41+00:00","article_modified_time":"2019-10-27T08:58:08+00:00","og_image":[{"width":700,"height":396,"url":"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg","type":"image\/jpeg"}],"author":"Tamir Gefen","twitter_card":"summary_large_image","twitter_creator":"@Dikla","twitter_misc":{"Written by":"Tamir Gefen","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#article","isPartOf":{"@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/"},"author":{"name":"Tamir Gefen","@id":"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/person\/409e35aa3486f92208065230bb6ebb63"},"headline":"Free-of-Charge Serverless Computing Using GitLab CI\/CD","datePublished":"2019-10-25T08:52:41+00:00","dateModified":"2019-10-27T08:58:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/"},"wordCount":777,"commentCount":0,"publisher":{"@id":"https:\/\/www.almtoolbox.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#primaryimage"},"thumbnailUrl":"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg","articleSection":["Case Study","GitLab","GitLab CI","Serverless"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/","url":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/","name":"Free-of-Charge Serverless Computing Using GitLab CI\/CD - ALMtoolbox News","isPartOf":{"@id":"https:\/\/www.almtoolbox.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#primaryimage"},"image":{"@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#primaryimage"},"thumbnailUrl":"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg","datePublished":"2019-10-25T08:52:41+00:00","dateModified":"2019-10-27T08:58:08+00:00","breadcrumb":{"@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#primaryimage","url":"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg","contentUrl":"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2019\/10\/serverless.jpg","width":700,"height":396,"caption":"serverless"},{"@type":"BreadcrumbList","@id":"https:\/\/www.almtoolbox.com\/blog\/free-gitlab-ci-cd-serverless-utilization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.almtoolbox.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Free-of-Charge Serverless Computing Using GitLab CI\/CD"}]},{"@type":"WebSite","@id":"https:\/\/www.almtoolbox.com\/blog\/#website","url":"https:\/\/www.almtoolbox.com\/blog\/","name":"ALMtoolbox News","description":"All the news of ALMtoolbox","publisher":{"@id":"https:\/\/www.almtoolbox.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.almtoolbox.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.almtoolbox.com\/blog\/#organization","name":"ALMtoolbox","url":"https:\/\/www.almtoolbox.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2015\/10\/logo.png","contentUrl":"https:\/\/www.almtoolbox.com\/blog\/wp-content\/uploads\/\/2015\/10\/logo.png","width":410,"height":190,"caption":"ALMtoolbox"},"image":{"@id":"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/almtoolbox.israel\/","https:\/\/www.linkedin.com\/company\/almtoolbox\/","https:\/\/www.youtube.com\/user\/GoMidjets"]},{"@type":"Person","@id":"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/person\/409e35aa3486f92208065230bb6ebb63","name":"Tamir Gefen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.almtoolbox.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d3d4df00aa386b2805c42441dfebcedd46abf25846febb352f00c11524d994c4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d3d4df00aa386b2805c42441dfebcedd46abf25846febb352f00c11524d994c4?s=96&d=mm&r=g","caption":"Tamir Gefen"},"sameAs":["https:\/\/x.com\/Dikla"]}]}},"_links":{"self":[{"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/posts\/4752","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/comments?post=4752"}],"version-history":[{"count":6,"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/posts\/4752\/revisions"}],"predecessor-version":[{"id":4761,"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/posts\/4752\/revisions\/4761"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/media\/4754"}],"wp:attachment":[{"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/media?parent=4752"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/categories?post=4752"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.almtoolbox.com\/blog\/wp-json\/wp\/v2\/tags?post=4752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}