{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/DjdgS0PcLkGqEL0VyWBY/oIEADXBQ4nofQ4NLdDVi/sCvm2kdEl-2.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{Link as a}from\"framer\";import{motion as i}from\"framer-motion\";import*as r from\"react\";export const richText=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/e(\"h4\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h4\",{children:\"Natural checkpoints, versioned tasking, and other smart workflow design decisions\"}),/*#__PURE__*/e(\"p\",{children:\"During large processing workflows, things can and will go wrong. Memory errors, missing data, network issues, just to name a few. These processing errors cost time and money, resulting in inefficient compute resource utilization, reduced developer productivity, and increased egress costs from redundantly fetched external data dependencies.\"}),/*#__PURE__*/e(\"p\",{children:\"Many workflow orchestrators don\u2019t account for re-entrant execution at all. If something goes wrong, the whole processing has to be re-done. Or, a new workflow has to be developed for every failure that is able to resume from that particular partial state, and explicit checkpoints have to be added to the workflow to persist partial states. Not only does this take valuable time, it should be retired as a historical problem \u2013 there is no need to settle for this model.\"}),/*#__PURE__*/e(\"p\",{children:\"Accounting for all possible errors beforehand is not possible, so it\u2019s vital to be ready to act with the right resources to thoroughly investigate, rewrite, and deploy.\"}),/*#__PURE__*/t(\"p\",{children:[\"This is precisely why we designed our workflow orchestrator differently. \",/*#__PURE__*/e(a,{href:\"https://docs.tilebox.com/workflows/introduction\",motionChild:!0,nodeId:\"sCvm2kdEl\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Tilebox Tasks\"})}),\" form natural checkpoints, and the idempotent nature of them enables efficient re-entrant execution. If something goes wrong, full observability enables developers to quickly dive in and figure out the problem. And it's all ready-to-go out of the box.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"334\",src:\"https://framerusercontent.com/images/PyJXLXT24bC6WbfCKlPNGb4FnNY.svg\",srcSet:\"https://framerusercontent.com/images/PyJXLXT24bC6WbfCKlPNGb4FnNY.svg?scale-down-to=512 512w,https://framerusercontent.com/images/PyJXLXT24bC6WbfCKlPNGb4FnNY.svg?scale-down-to=1024 1024w,https://framerusercontent.com/images/PyJXLXT24bC6WbfCKlPNGb4FnNY.svg 1529w\",style:{aspectRatio:\"2640 / 668\"},width:\"1320\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/t(\"em\",{children:[\"A long running workflow may fail after a lot of the processing work is already completed.\",/*#__PURE__*/e(\"br\",{})]})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"334\",src:\"https://framerusercontent.com/images/WOS49BchEt7xu5vvMZr37UN5ew.svg\",srcSet:\"https://framerusercontent.com/images/WOS49BchEt7xu5vvMZr37UN5ew.svg?scale-down-to=512 512w,https://framerusercontent.com/images/WOS49BchEt7xu5vvMZr37UN5ew.svg?scale-down-to=1024 1024w,https://framerusercontent.com/images/WOS49BchEt7xu5vvMZr37UN5ew.svg 1529w\",style:{aspectRatio:\"2640 / 668\"},width:\"1320\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/t(\"em\",{children:[\"One approach to recover from such failures is to just re-run the whole processing, essentially duplicating all the work that has already been computed.\",/*#__PURE__*/e(\"br\",{})]})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"334\",src:\"https://framerusercontent.com/images/cZr07Cs3MSKAd1RC9k9uEnyVOA.svg\",srcSet:\"https://framerusercontent.com/images/cZr07Cs3MSKAd1RC9k9uEnyVOA.svg?scale-down-to=512 512w,https://framerusercontent.com/images/cZr07Cs3MSKAd1RC9k9uEnyVOA.svg?scale-down-to=1024 1024w,https://framerusercontent.com/images/cZr07Cs3MSKAd1RC9k9uEnyVOA.svg 1115w\",style:{aspectRatio:\"2640 / 668\"},width:\"1320\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/t(\"em\",{children:[\"Another approach to handle such failures is to develop a new workflow capable of picking up partial results from a previously failed run. While this preserves compute resources, it does take valuable development time.\",/*#__PURE__*/e(\"br\",{})]})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"334\",src:\"https://framerusercontent.com/images/arxsHyaNxDNY3PC1gIB3gLgSLII.svg\",srcSet:\"https://framerusercontent.com/images/arxsHyaNxDNY3PC1gIB3gLgSLII.svg?scale-down-to=512 512w,https://framerusercontent.com/images/arxsHyaNxDNY3PC1gIB3gLgSLII.svg 609w\",style:{aspectRatio:\"2640 / 668\"},width:\"1320\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Tilebox re-entrant execution eliminates the necessity for manual recovery tasks and reduces downtime while simplifying the workflow.\"})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"After the issue is identified and fixed, versioned tasks allow gradual rollout without disrupting existing clusters / workflows. Then the workflow orchestrator is able to resume the failed job from the state it was in previously to the failure. Re-entrant processing can be manually triggered or configured using automated retries, giving developers another layer of operational resiliency.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"Join us on \",/*#__PURE__*/e(a,{href:\"https://discord.com/invite/Rd4MFYdnht\",motionChild:!0,nodeId:\"sCvm2kdEl\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"discord\"})}),\" for the latest releases, challenges, and Tilebox tips.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText1=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"In-house space data pipelines are finicky, to say the least. A patchwork that is often rebuilt for every major upgrade. Workflows that are impossible to iterate because they are baked into Infrastructure as Code. Infrastructure redundancies that consume unnecessary time and resources, like fixed cluster sizes, the overhead of booting up Docker containers for every task, or difficulties in rolling out updates while keeping production up. The inefficiencies are many, but they are all a result of incompatible design across environments, temporary fixes, and data type limitations.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"There has been no standard or best practices for space data pipelines. To reach profitability and meet the expectations of real world applications it needs a \",/*#__PURE__*/e(\"em\",{children:\"space-data native framework.\"})]}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s how we designed ours:\"}),/*#__PURE__*/e(\"h4\",{children:\"Datasets\"}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s start with the critical foundation of data access and storage. Common database models such as Postgres and even specialized time-series databases like InfluxDB are amazing pieces of engineering, but on their own come with constraints that become real obstacles for space data pipelines, particularly regarding Earth Observation. One lacks support for textual data, the other supports geometries but has limited support for spatial indexing, a critical capability of any data catalog, and a very common reason for performance limitations of the data catalogs of the world.\"}),/*#__PURE__*/e(\"p\",{children:\"Instead of wasting time waiting for results or consuming all your CPU on table scans, a framework designed intentionally for these pipelines needs to have:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Support for real-time metadata indexing with customizable data types\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Support for arbitrary data types, including strings, polygons, coordinates\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Fast, reliable spatio-temporal indexing*\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A very high performance API to support large queries of telemetry, metadata, or lightweight payload data\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Backwards compatible typing and customizable datasets, or catalogs\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Standards compliant (STAC) output interfaces where desired\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Tilebox affords engineers the freedom to create and edit their own data types \u2013 instead of the database schema \u2013 without breaking existing software and datasets. Spatio-temporal queries are orders of magnitudes faster than comparable systems. This is essential for streamlined scalability. As operations expand, so will capabilities.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"540\",src:\"https://framerusercontent.com/images/mzOCazv1uq2eI14yKYAorHss0.png\",srcSet:\"https://framerusercontent.com/images/mzOCazv1uq2eI14yKYAorHss0.png?scale-down-to=512 512w,https://framerusercontent.com/images/mzOCazv1uq2eI14yKYAorHss0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/mzOCazv1uq2eI14yKYAorHss0.png 1920w\",style:{aspectRatio:\"1920 / 1080\"},width:\"960\"}),/*#__PURE__*/e(\"h4\",{children:\"Workflows\"}),/*#__PURE__*/e(\"p\",{children:\"While many companies are still figuring it out on the ground, others are preparing for edge computing. Any space-data native framework has to work in orbit. And, we think, everywhere else. Across clouds, mixed environments, and multiple clusters. Data fusion requires this level of flexibility, plus it empowers any team to work with the exact data they need no matter where it\u2019s stored. This expedites processing and analysis, which creates increased revenue opportunities for time-sensitive data.\"}),/*#__PURE__*/e(\"p\",{children:\"Efficiency is a key requirement for space data, as its source is far away and its volume is massive. Reducing downlink, transfer, and storage costs is one side of the equation, the other is job resilience. Executing workflows on Spot Instances is a necessary cost-savings for large-scale satellite data processing. But what happens when that Spot Instance goes down? What if a job breaks?\"}),/*#__PURE__*/e(\"p\",{children:\"Resiliency affects everything: compute costs, latency, data security.\"}),/*#__PURE__*/e(\"p\",{children:\"Manually developed monitoring tools are one of those inefficient redundancies software teams shouldn\u2019t be wasting their time on building and managing. Even Tilebox leverages a service for this, Axiom.co; pre-integrated with Tilebox to deliver the fastest, most thorough distributed observability across your workflows, with a generic OpenTelemetry exporter available as well.\"}),/*#__PURE__*/e(\"p\",{children:\"Identifying the break is the first step, re-entrant processing is the second step. Tilebox saves all work up to the breakpoint and automatically initiates a retry, keeping you up and running without manual intervention and rescheduling. And for large workflows, Tilebox supports auto-scaling clusters.\"}),/*#__PURE__*/e(\"p\",{children:\"These are not conveniences, they are vital functionalities for a successful space data pipeline.\"}),/*#__PURE__*/e(\"h4\",{children:\"Future-Proof Your Pipeline\"}),/*#__PURE__*/t(\"p\",{children:[\"The right tooling makes all the difference. Space data engineers need flexibility, resilience, and purpose-built functionality to stay focused on delivering rather than pipeline maintenance and repair. We are building Tilebox for you and the future of space data services. So, create an account and explore our work \u2013 and give us feedback on your ideal tooling. It\u2019s time to evolve space data management with high-performance software made for space data.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"*Fast, reliable spatio-temporal indexing function is currently in closed beta and will be released soon. Join our \"}),/*#__PURE__*/e(a,{href:\"https://discord.com/invite/Rd4MFYdnht\",motionChild:!0,nodeId:\"sCvm2kdEl\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:/*#__PURE__*/e(\"em\",{children:\"discord community\"})})}),/*#__PURE__*/e(\"em\",{children:\" for updates on our latest releases.\"})]})]});export const richText2=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"iSEE's ADLER-1 and ADLER-2 missions, a collaborative endeavor lead by \",/*#__PURE__*/e(a,{href:\"https://isee-space.ai/\",motionChild:!0,nodeId:\"sCvm2kdEl\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"iSEE\"})}),\" and involving the Austrian Space Forum, Spire Global, and GRASP Global, aimed to significantly advance our understanding of the space debris environment. These missions acquired key in-situ data using advanced sensors, a critical step in addressing the challenge of orbital debris. Building upon the valuable insights provided by models like the established ESA MASTER (Meteoroid and Space Debris Terrestrial Environment Reference), which effectively utilize data from larger debris particles and historical passive impact detector data, the ADLER missions contribute a crucial new dimension.\\xa0\"]}),/*#__PURE__*/t(\"p\",{children:[\"By deploying radar instruments and impact detectors, ADLER directly gathers data on debris distributions encompassing smaller sizes, from centimeter- and millimeter-sized particles down to micrometer-sized dust. This in-situ data significantly complements the existing knowledge base and offers valuable empirical validation for model refinements. This post explores how Tilebox played a crucial and sometimes unexpected role in enabling \",/*#__PURE__*/e(a,{href:\"https://isee-space.ai/\",motionChild:!0,nodeId:\"sCvm2kdEl\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"iSEE\"})}),\" to achieve this ambitious goal. Efficient infrastructure is no longer just a convenience; it's the bedrock upon which ambitious scientific endeavors are built.\"]}),/*#__PURE__*/e(\"h4\",{children:\"The Data Pipeline Challenge\"}),/*#__PURE__*/e(\"p\",{children:\"iSEE expertly managed the development and deployment of the orbital debris monitoring mission, while specialized partners focused on payload instrumentation and operational intricacies. However, a critical element remained: the software to process the anticipated data. Tilebox was brought on board to provide this crucial link, a robust data pipeline.\"}),/*#__PURE__*/e(\"h4\",{children:\"Real-World Validation with the Datasets Prototype\"}),/*#__PURE__*/e(\"p\",{children:\"Interestingly, the ADLER missions utilized an early version of Tilebox Datasets, even before our workflow orchestrator was fully realized. This provided an invaluable opportunity for real-world testing and feedback, directly influencing the subsequent development of the technology.\"}),/*#__PURE__*/e(\"h4\",{children:\"Overcoming Unexpected Data Volumes\"}),/*#__PURE__*/e(\"p\",{children:\"A pivotal moment occurred shortly after launch. The ADLER team discovered their payload was collecting a far greater volume of data than initially projected, a testament to its sensitivity. This presented a significant technical challenge, as processing this unexpectedly large dataset on a single computing node proved infeasible. This spurred a change of priorities within Tilebox. \"}),/*#__PURE__*/e(\"p\",{children:\"We swiftly implemented an early version of what is now Tilebox Workflows to enable intuitive and flexible parallel processing for complex workflows. The associated intensive refactoring not only addressed the immediate scaling issue but also yielded incredible efficiencies within our API. The optimized Datasets API performed so well that, surprisingly, the ADLER team retained the option to revert back to single-node processing if necessary. This highlighted the power of confronting real-world challenges to drive technological progress.  \"}),/*#__PURE__*/e(\"p\",{children:\"Part of the Tilebox ethos is to face the deep tech problems holding satellite data processing back head on \u2013 from fast, versatile data management to the complexities of space-data native workflow orchestration. In the case of the ADLER missions our relentless effort to create intuitive, resilient access methods without sacrificing performance and versatility is what provided immense value and significantly sped up the progress of the scientific teams. \"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"998\",src:\"https://framerusercontent.com/images/AYOJdCYtGZFA586P4sDircgU10.jpg\",srcSet:\"https://framerusercontent.com/images/AYOJdCYtGZFA586P4sDircgU10.jpg?scale-down-to=512 512w,https://framerusercontent.com/images/AYOJdCYtGZFA586P4sDircgU10.jpg?scale-down-to=1024 1024w,https://framerusercontent.com/images/AYOJdCYtGZFA586P4sDircgU10.jpg?scale-down-to=2048 2048w,https://framerusercontent.com/images/AYOJdCYtGZFA586P4sDircgU10.jpg 3191w\",style:{aspectRatio:\"3191 / 1997\"},width:\"1595\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"iSEE's ADLER-1 and ADLER-2. Image courtesy of the Austrian Space Forum (\"}),/*#__PURE__*/e(a,{href:\"https://adler.oewf.org/\",motionChild:!0,nodeId:\"sCvm2kdEl\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:/*#__PURE__*/e(\"em\",{children:\"OeWF\"})})}),/*#__PURE__*/e(\"em\",{children:\").\"})]}),/*#__PURE__*/e(\"h4\",{children:\"Accelerating Research with Accessible Data\"}),/*#__PURE__*/e(\"p\",{children:\"As ADLER continued to generate valuable data, the business needs evolved, requiring the onboarding of data scientists. Here, the impact of accessible, well-structured data became evident. Empowered by Tilebox, these data scientists could directly query and access the precise data required for their algorithms. The result was impressive: within just two days, they produced research reports based on their analysis. This demonstrated the transformative potential of readily available data and intuitive tooling for accelerating insights.\"}),/*#__PURE__*/e(\"h4\",{children:\"Unlocking Business Value from Space Data\"}),/*#__PURE__*/t(\"p\",{children:[\"The ADLER missions, powered by Tilebox, offer a compelling model for organizations engaged in space-based data initiatives. For those grappling with increasing data volumes and the need for rapid insight generation, the \",/*#__PURE__*/e(a,{href:\"https://isee-space.ai/\",motionChild:!0,nodeId:\"sCvm2kdEl\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"iSEE\"})}),\" experience provides valuable lessons in optimizing data workflows. Tilebox demonstrably reduces the time and cost associated with transforming raw satellite data into actionable intelligence, allowing teams to concentrate on core objectives and accelerate innovation. This efficiency is achieved through automated ingestion and structuring, eliminating data silos and enabling rapid data access, paired with powerful yet intuitive workflow orchestration. This capability unlocks opportunities for near real-time analysis, advanced application development, and efficient data sharing, as exemplified by the emergence of \",/*#__PURE__*/e(a,{href:\"https://isee-space.ai/\",motionChild:!0,nodeId:\"sCvm2kdEl\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"iSEE\"})}),\". \"]}),/*#__PURE__*/e(\"p\",{children:\"From a business standpoint, Tilebox enables organizations to maximize the return on investment in their space assets and data infrastructure. This translates to faster development cycles for new services, improved decision-making based on timely data, and the potential to generate new revenue streams through effective data utilization. The ADLER missions serve as a concrete illustration for organizations seeking to optimize space data operations and achieve tangible business results.\"}),/*#__PURE__*/e(\"p\",{children:\"The ADLER team leveraged Tilebox Enterprise, a customizable plan that provides greater flexibility, capacity, and support for high throughput missions.\"}),/*#__PURE__*/e(\"p\",{children:\"Ready to realize the full potential of your space data? Explore how Tilebox can transform your data pipelines and empower your team.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "Link", "motion", "richText1", "richText2", "__FramerMetadata__"]
}
