{"version":"1.0","provider_name":"Time Atlas Labs","provider_url":"https:\/\/blog.timeatlaslabs.com","author_name":"Aapo Kyr\u00f6l\u00e4","author_url":"https:\/\/blog.timeatlaslabs.com\/author\/5d4ee0c9350a26b9\/","title":"TAL Tech Blog: Software Architecture - Time Atlas Labs","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"sJkwlyQWJn\"><a href="\&quot;https:\/\/timeatlaslabs.com/blog\/tal-tech-blog-software-architecture\/\&quot;">TAL Tech Blog: Software Architecture&lt;\/a&gt;&lt;\/blockquote&gt;<iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/blog.timeatlaslabs.com\/tal-tech-blog-software-architecture\/embed\/#?secret=sJkwlyQWJn\" width=\"600\" height=\"338\" title=\"&#8220;TAL Tech Blog: Software Architecture&#8221; &#8212; Time Atlas Labs\" data-secret=\"sJkwlyQWJn\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\">&lt;\/iframe&gt;&lt;script&gt;\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;\"undefined\"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i&lt;o.length;i++)o[i].style.display=\"none\";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):\"link\"===t.message&amp;&amp;(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n\/\/# sourceURL=https:\/\/timeatlaslabs.com/blog\/wp-includes\/js\/wp-embed.min.js\n&lt;\/script&gt;\n","description":"In this series of technical blog posts, we will write about the interesting (we think) technology behind the Time Atlas app. This post discusses the overall architecture of the app, which is quite unconventional. When we started working on the app in late 2024, we had two main requirements in mind: Choosing the Language: Go [&amp;hellip;]","thumbnail_url":"https:\/\/timeatlaslabs.com/blog\/wp-content\/uploads\/2026\/03\/arch-diagram-2.jpg","thumbnail_width":1440,"thumbnail_height":810}