<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged roadmap</title>
<link>https://coderlegion.com/tag/roadmap</link>
<description>Powered by Question2Answer</description>
<item>
<title>The Data Engineer Roadmap for 2026 (in an AI-Native World)</title>
<link>https://coderlegion.com/21446/the-data-engineer-roadmap-for-2026-in-an-ai-native-world</link>
<description>&lt;blockquote&gt;&lt;p&gt;This is the narrated version of our free, interactive &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/data-engineer-roadmap&quot;&gt;Data Engineer Roadmap&lt;/a&gt;. Same areas, same order, with a focus on the one thing each layer asks of you that AI can't do for you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Every data engineer roadmap written before early 2025 made the same quiet assumption: that the hard part was &lt;em&gt;writing the code&lt;/em&gt;. &lt;strong&gt;Learn SQL. Learn Python. Wire up a pipeline in Airflow. Ship it. Congratulations, you're a data engineer.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That assumption is dead. AI writes the SQL now. It writes the DAG, the PySpark job, the dbt model, the masking policy - and it writes them faster than you, at 2am, without complaining. If your roadmap is a checklist of &lt;em&gt;tools to learn so you can produce that code&lt;/em&gt;, you're training for a race that has already been run.&lt;/p&gt;
&lt;p&gt;So a 2026 roadmap has to be a different shape. Not &quot;what do I learn so I can write a pipeline,&quot; but &lt;strong&gt;&quot;what do I understand so I can tell whether the AI-written pipeline is right, and fix it when it isn't.&quot;&lt;/strong&gt; That is a map of &lt;em&gt;depth&lt;/em&gt;, not a list of tools.&lt;/p&gt;
&lt;h3 id=&quot;the-one-idea-that-makes-the-whole-map-work&quot;&gt;The one idea that makes the whole map work&lt;/h3&gt;
&lt;p&gt;Most roadmaps draw becoming-senior as &lt;em&gt;new areas appearing&lt;/em&gt;: the junior does SQL and dbt, the senior does Kafka and Spark and Kubernetes. That is not how it works.&lt;/p&gt;
&lt;p&gt;A senior engineer works the &lt;strong&gt;same areas&lt;/strong&gt; a junior does. The difference is how far into each one they go.&lt;/p&gt;
&lt;p&gt;A junior knows Parquet is &quot;the fast columnar format&quot; and can partition a table. A senior reasons about row groups, page statistics, dictionary encoding, and why a scan cost what it cost. A junior writes a Spark job. A senior debugs its shuffle and its skew. Same topic, different altitude.&lt;/p&gt;
&lt;p&gt;That matters more now than ever, because &lt;strong&gt;AI raises the floor to roughly the junior line.&lt;/strong&gt; It reliably gets you the partitioned table and the working Spark job. The depth above that line is exactly the part it can't reason about for you, and exactly where your career value now lives.&lt;/p&gt;
&lt;p&gt;So as we walk the areas, watch for the pattern: &lt;strong&gt;AI does the surface; you own the depth.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;foundations-and-sql&quot;&gt;Foundations and SQL&lt;/h3&gt;
&lt;p&gt;Joins, window functions, CTEs, Python, the command line, Git, ETL vs ELT.&lt;/p&gt;
&lt;p&gt;AI writes almost all of this now. That doesn't make SQL optional, it makes it table stakes. You learn it not to produce it, but to &lt;strong&gt;catch when the generated query is quietly wrong&lt;/strong&gt;: the join that fans out and double-counts revenue, the &lt;code&gt;WHERE&lt;/code&gt; that silently drops NULLs, the window frame that is off by one row. The senior depth is reading an &lt;code&gt;EXPLAIN&lt;/code&gt; plan and knowing &lt;em&gt;why&lt;/em&gt; a query is slow. AI hands you the query; understanding it is still yours.&lt;/p&gt;
&lt;h3 id=&quot;data-modeling-and-transformation&quot;&gt;Data modeling and transformation&lt;/h3&gt;
&lt;p&gt;Dimensional modeling, star and snowflake schemas, fact vs dimension tables, dbt models and tests. Then the depth: Slowly Changing Dimensions, grain, conformed dimensions, the One Big Table pattern, Data Vault.&lt;/p&gt;
&lt;p&gt;AI drafts the model. What it can't do is the judgement calls: what is the grain of this fact table, what does &quot;one customer&quot; mean across three source systems, which dimension is conformed across marts. The classic trap is Slowly Changing Dimensions - everyone can recite the types, almost nobody internalizes which version of a dimension their facts join to. Get it wrong and &quot;revenue by region last quarter&quot; reports a number that was never true.&lt;/p&gt;
&lt;p&gt;Replay a change timeline yourself in the free, in-browser &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/tools/scd-playground&quot;&gt;SCD Playground&lt;/a&gt;, then practice the area in the &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/curriculum/dimensional-data-modeling&quot;&gt;Dimensional Data Modeling track&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;orchestration-and-pipelines&quot;&gt;Orchestration and pipelines&lt;/h3&gt;
&lt;p&gt;Airflow DAGs, scheduling, sensors, backfills, retries, idempotency. Senior: scheduler and executor internals, data-aware scheduling, lineage, freshness SLAs, being on-call.&lt;/p&gt;
&lt;p&gt;AI generates the DAG, and it is good at it. What it doesn't generate is the &lt;em&gt;understanding of failure modes&lt;/em&gt; the job actually requires, because the real work here isn't the happy path, it's the 3am page. Why did this task hang? Why did the backfill double-write? Is this retry safe, or did it just send the same email twice? Idempotency is a property you reason about, not a snippet AI sprinkles in. See the &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/curriculum/orchestration-and-pipelines&quot;&gt;Orchestration and Pipelines track&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;storage-and-file-formats&quot;&gt;Storage and file formats&lt;/h3&gt;
&lt;p&gt;Parquet, row vs columnar, compression, object storage, partitioning. Senior: row groups, page statistics, predicate pushdown, encoding, the small-file problem, the internals of ORC, Avro and Arrow.&lt;/p&gt;
&lt;p&gt;This is where AI is least useful and depth pays the most, because &lt;strong&gt;why a scan costs what it costs is a property of the bytes on disk, not the query text.&lt;/strong&gt; AI reads and writes Parquet fine. It can't tell you why two files with identical rows differ tenfold in scan cost - that is row group sizing, encoding choice, and whether min/max statistics let the engine skip pages.&lt;/p&gt;
&lt;p&gt;Point the free &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/tools/parquet-viewer&quot;&gt;Parquet Viewer&lt;/a&gt; at your own files (100% in-browser, nothing is uploaded) to see the row groups and statistics yourself. Track: &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/curriculum/storage-and-file-formats&quot;&gt;Storage and File Formats&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;data-lakes-and-table-formats&quot;&gt;Data lakes and table formats&lt;/h3&gt;
&lt;p&gt;Lake vs warehouse vs lakehouse, Iceberg and Delta, time travel, schema evolution. Senior: ACID and snapshot isolation internals, compaction, catalogs, the Iceberg-vs-Delta-vs-Hudi tradeoffs.&lt;/p&gt;
&lt;p&gt;AI scaffolds the table operations happily. The part that bites, and that it won't warn you about, is &lt;strong&gt;what happens when two writers commit at once.&lt;/strong&gt; Snapshot isolation, optimistic concurrency, conflict resolution, compaction fighting your ingest job: that is distributed-systems reasoning, not autocomplete. Track: &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/curriculum/open-table-formats&quot;&gt;Open Table Formats&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;ingestion-and-streaming&quot;&gt;Ingestion and streaming&lt;/h3&gt;
&lt;p&gt;Batch ingestion, Kafka basics, producers and consumers, event time vs processing time. Senior: exactly-once semantics, consumer group rebalancing, Change Data Capture, stream processing in Flink or Kafka Streams.&lt;/p&gt;
&lt;p&gt;AI writes the producer and the consumer. Where it goes quiet is &lt;strong&gt;where data-quality bugs are actually born&lt;/strong&gt;: the gap between event time and processing time that makes your windowed aggregates wrong, the rebalance that reprocessed a batch, the &quot;exactly-once&quot; guarantee that was only ever at-least-once because of how you committed offsets. Track: &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/curriculum/ingestion-and-transport&quot;&gt;Ingestion and Transport&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;distributed-compute&quot;&gt;Distributed compute&lt;/h3&gt;
&lt;p&gt;Spark DataFrames, transformations vs actions, lazy evaluation. Senior: shuffle and partitioning, broadcast joins and data skew, Catalyst and codegen, memory and fault tolerance.&lt;/p&gt;
&lt;p&gt;AI writes the transformation. It cannot tune the &lt;em&gt;execution&lt;/em&gt;. Why did this job spill to disk? Why is one task taking 40 times longer than the other 199 (hello, data skew)? Should this join broadcast or shuffle? That reasoning, about how a logical DataFrame becomes physical work across a cluster, is squarely yours. Track: &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/curriculum/compute-engines&quot;&gt;Compute Engines&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;query-engines-and-olap&quot;&gt;Query engines and OLAP&lt;/h3&gt;
&lt;p&gt;What OLAP is, warehouse vs query engine, ClickHouse, Trino. Senior: MergeTree and projections, federation and pushdown, execution models, cost-based optimization, real-time OLAP, &lt;code&gt;EXPLAIN&lt;/code&gt; literacy.&lt;/p&gt;
&lt;p&gt;AI writes the SQL the dashboard runs. Why that dashboard is &lt;em&gt;slow&lt;/em&gt;, and how to fix it at the engine rather than by rewriting the query, is senior work. It lives in how the engine sorts and merges data, what it can push down, and what its optimizer chose. Track: &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/curriculum/query-engines-and-olap&quot;&gt;Query Engines and OLAP&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;semantic-and-metrics-layer&quot;&gt;Semantic and metrics layer&lt;/h3&gt;
&lt;p&gt;Metrics and dashboards, the semantic layer, data-quality tests. Senior: data contracts, schema registries, metric governance, reverse ETL.&lt;/p&gt;
&lt;p&gt;AI drafts a metric definition. What it can't do is the &lt;em&gt;organizational&lt;/em&gt; work of making &quot;revenue&quot; mean exactly one thing across finance, sales and product. That is a human contract - negotiated, governed, enforced - and it is the layer where data finally becomes shared business language instead of seven conflicting spreadsheets.&lt;/p&gt;
&lt;h3 id=&quot;governance-quality-and-cloud&quot;&gt;Governance, quality and cloud&lt;/h3&gt;
&lt;p&gt;PII basics, GDPR and CCPA, cloud, CI/CD for data. Senior: masking and tokenization, row and column access control, right-to-erasure across a lakehouse, infrastructure as code, data observability at scale.&lt;/p&gt;
&lt;p&gt;AI flags the obvious PII column. What it can't design is right-to-erasure across a lakehouse with time travel and immutable snapshots - that is architecture, not autocomplete. The masking itself is full of guarantee-breaking gotchas: an unsalted hash is a lookup table, a redacted ZIP that keeps five digits still re-identifies people. Generate the DDL with the free &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/tools/pii-masking-generator&quot;&gt;PII Masking Policy Generator&lt;/a&gt;. Track: &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/curriculum/pii-data-governance&quot;&gt;PII and Data Governance&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;so-will-ai-replace-data-engineers-&quot;&gt;So, will AI replace data engineers?&lt;/h3&gt;
&lt;p&gt;It raises the floor and moves the value up.&lt;/p&gt;
&lt;p&gt;AI now does the old junior checklist well: queries, DAGs, glue code, boilerplate pipelines. What's left for you is the durable part - reasoning about the system. Why a scan costs what it costs. What happens when two writers commit. Why a job spilled to disk.&lt;/p&gt;
&lt;p&gt;AI doesn't replace the engineer who understands that depth, it gives them leverage. They direct the AI through the surface work and spend their judgement on the part it can't reach. The engineer who only knew the surface is the one under pressure now, because the surface is free.&lt;/p&gt;
&lt;p&gt;That is the whole premise of the map. You touch every area early - junior and senior work the same areas. What stretches out over a career is how deep you go into each, and the deep end is precisely the part AI can't shortcut for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/data-engineer-roadmap&quot;&gt;Open the full interactive Data Engineer Roadmap&lt;/a&gt;&lt;/strong&gt; to see every topic on a single timeline, with a &quot;Going senior&quot; toggle that reveals the depth in each layer. Then if you want to practice that depth on real engines instead of slideware, that is what the &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/curriculum&quot;&gt;curriculum&lt;/a&gt; and the free &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/tools&quot;&gt;in-browser tools&lt;/a&gt; are for.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Originally published on the &lt;a rel=&quot;nofollow&quot; href=&quot;https://petascalelabs.com/blog/data-engineer-roadmap-2026&quot;&gt;Petascale Labs blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/21446/the-data-engineer-roadmap-for-2026-in-an-ai-native-world</guid>
<pubDate>Sat, 27 Jun 2026 09:09:07 +0000</pubDate>
</item>
<item>
<title>[ROADMAP] Beyond the CSV: Statements as a Product Surface</title>
<link>https://coderlegion.com/13909/roadmap-beyond-the-csv-statements-as-a-product-surface</link>
<description>&lt;hr&gt;
&lt;h2 id=&quot;beyond-the-csv-statements-as-a-product-surface&quot;&gt;Beyond the CSV: Statements as a Product Surface&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Part 10&lt;/strong&gt; looks past today’s CSV importers at &lt;strong&gt;broker statements&lt;/strong&gt; (often PDF). The architecture below is &lt;strong&gt;directional&lt;/strong&gt;: we are spelling out constraints and a credible pipeline, not announcing a finished PDF-to-portfolio feature in production.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-you-can-use-today&quot;&gt;What you can use today&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Broker adapters and universal CSV&lt;/strong&gt; — importer package and in-app CSV flow. Heavy parsing stays &lt;strong&gt;in the browser&lt;/strong&gt;; where cloud-assisted mapping exists, only &lt;strong&gt;bounded&lt;/strong&gt; previews go upstream (for example headers plus a small sample of rows).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ask AI context&lt;/strong&gt; — always the &lt;code&gt;buildPortfolioContext&lt;/code&gt; string (Parts 2–3), no matter how trades entered the app.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id=&quot;why-pdf-is-harder-than-csv&quot;&gt;Why PDF is harder than CSV&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Layout&lt;/strong&gt; — multi-column tables, repeated headers, page breaks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Noise&lt;/strong&gt; — footnotes, disclaimers, mixed fonts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scans&lt;/strong&gt; — OCR errors break deterministic parsers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trust&lt;/strong&gt; — people should &lt;strong&gt;confirm&lt;/strong&gt; extracted rows before anything merges into a ledger—the same bar we set on universal CSV mapping.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;target-pipeline-when-we-ship-it-&quot;&gt;Target pipeline (when we ship it)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Extract&lt;/strong&gt; — client-side or trusted worker → row-like text or tables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Map&lt;/strong&gt; — the same schema discipline as CSV (still &lt;strong&gt;bounded&lt;/strong&gt; if the cloud helps).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parse deterministically&lt;/strong&gt; — &lt;code&gt;Trade[]&lt;/code&gt; in the same spirit as today’s &lt;code&gt;genericParse&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review&lt;/strong&gt; — explicit user confirmation before merge.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Scope.&lt;/strong&gt; This installment is engineering intent and product reasoning. &lt;strong&gt;End-to-end PDF statement import&lt;/strong&gt; is not described here as something you can do in the live app today; when we ship it, we will say so in release notes and product copy, not only in a serial essay.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Part 10 of &lt;strong&gt;Sovereign Engineering&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Read the full &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.pocketportfolio.app/book/sovereign-intelligence&quot;&gt;Sovereign Intelligence&lt;/a&gt; book or &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.pocketportfolio.app&quot;&gt;try the app&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/13909/roadmap-beyond-the-csv-statements-as-a-product-surface</guid>
<pubDate>Wed, 06 May 2026 11:33:00 +0000</pubDate>
</item>
<item>
<title>[Article] Divooka, Where We Are</title>
<link>https://coderlegion.com/4760/article-divooka-where-we-are</link>
<description>&lt;blockquote&gt;&lt;p&gt;Many years from now, when power users, researchers, and historians look at this article, they will see how it all started and glimpse the vision behind our work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;/h3&gt;
&lt;p&gt;Ah, vision - a fascinating subject, and a quality not appreciated by all. Like the ability to dream, to imagine, and to dwell in the realm of mathematics and technicality. For imaginative minds, it's dangerous to wander too far; without standing on solid ground, one can hardly make real progress. Often, it pays to be hands-on.&lt;/p&gt;
&lt;p&gt;Divooka is (or is becoming) a complete, general-purpose, high-level, multi-paradigm, flexibly typed, modern visual programming language/system, complete with package management, standard libraries, application frameworks, graph editors, IDE, CLI executor, code generator &amp;amp; compiler, derived frontend apps, examples, documentation, and accompanying tutorials and training materials. We've achieved the majority of this already, so it's not an exaggeration to list them now. What's more, there are still ideas I haven't put into words.&lt;/p&gt;
&lt;p&gt;It's hard to do one thing well, and to achieve all of this with limited resources, we need a good strategy. Of course, the strategy itself is a secret I won't share - it's fairly simple, really, but requires determination and execution power. After a year since incorporation last July, it's useful to review and recap what we've done and where we are.&lt;/p&gt;
&lt;p&gt;In this article, I'll focus on the period from January to August 2025, but to give a complete picture, I find it instructive to look back and highlight outcomes from last year and key lessons learned.&lt;/p&gt;
&lt;h3 id=&quot;early-2024&quot;&gt;Early 2024&lt;/h3&gt;
&lt;p&gt;2024 was about the modernized inception of what Divooka is today.&lt;/p&gt;
&lt;p&gt;Neo was reviewed a third time, and we managed to trim down most legacy code. It was time to think more broadly about the concept of &quot;general-purpose visual programming,&quot; rather than just a demonstration for data analytics. A new repository was created for modern development. &lt;strong&gt;&lt;em&gt;Gospel&lt;/em&gt;&lt;/strong&gt; was conceived.&lt;/p&gt;
&lt;p&gt;Talks with investors and prospective entrepreneurs mostly confirmed that this subject is hard, and we learned there are countless low-code platforms in China. That is good.&lt;/p&gt;
&lt;p&gt;A disagreement with a co-creator helped me settle the fact that we would definitely go desktop-first and worry about the web later.&lt;/p&gt;
&lt;p&gt;The conception of &lt;strong&gt;&lt;em&gt;Quadrinity&lt;/em&gt;&lt;/strong&gt; and the flexible office software framework inspired me to quit my job and move forward.&lt;/p&gt;
&lt;h3 id=&quot;july-sep-2024&quot;&gt;July–Sep 2024&lt;/h3&gt;
&lt;p&gt;During initial incorporation, development was highly focused, and Divooka, though very simplistic, was a well-defined, easy-to-perceive single tool with only a handful of nodes. With Haopu's help on plotting, it quickly looked like a handy little utility for data analytics - &lt;strong&gt;a subject matter we should continue to explore and focus on in the future&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;At the same time, to prepare for public preview and an angel investor meeting, I spent a month making prototypes for many potential application areas, including experimental libraries and web use. Due to lack of sophisticated integration and completeness, I doubt these prototypes made as strong an impression as I hoped.&lt;/p&gt;
&lt;p&gt;On the marketing side, the concept of a case competition was pitched during this time, but it never materialized later in 2024 due to slow progress on software completion and the dashboard library.&lt;/p&gt;
&lt;h3 id=&quot;sep-dec-2024&quot;&gt;Sep–Dec 2024&lt;/h3&gt;
&lt;p&gt;With the promise of investor funding, I decided to expand operations and start hiring contractors to work on various aspects of the overall Divooka platform, including GUI design, website improvements, and preparation for first practical use. In a &lt;a rel=&quot;nofollow&quot; href=&quot;https://medium.methodox.io/divooka-my-vision-for-the-future-of-visual-programming-99b4b11ff9b6&quot;&gt;previous article&lt;/a&gt;, I mentioned that end users were unlikely to use Divooka directly during initial adoption. To elaborate:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lack of comprehensive DSL libraries at this stage.&lt;/li&gt;
&lt;li&gt;Overall complexity and learning curve as a general-purpose programming language.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;While we could have focused on DSL, the second point made it unlikely to gain traction (given how unknown we were) and not commercially feasible any time soon. Thus, we needed more specific, tool-like, highly focused, direct end-user GUI applications.&lt;/p&gt;
&lt;p&gt;For that reason, we published &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://methodox.itch.io/fantasy-planet-painter&quot;&gt;Fantasy Planet Painter&lt;/a&gt;&lt;/strong&gt;. We also planned to publish Arcadia, but timeline issues prevented it.&lt;/p&gt;
&lt;p&gt;It was during this period that we conceived what was previously known as &lt;strong&gt;&quot;ZFA,&quot;&lt;/strong&gt; while &quot;fighting&quot; for the trademark of &quot;Zora&quot; in Canada. Due to delays with investment funding, personnel management, and other corporate matters, we didn't make significant progress on the modern &lt;strong&gt;Morpheus&lt;/strong&gt; framework or ZFA at that time.&lt;/p&gt;
&lt;p&gt;In conclusion, during these busy four months, there was not much I would call technical progress. Most efforts were miscellaneous but time-consuming. I also learned it was better to take more matters into my own hands.&lt;/p&gt;
&lt;h3 id=&quot;jan-aug-2025&quot;&gt;Jan–Aug 2025&lt;/h3&gt;
&lt;p&gt;January to August has been much more fruitful and productive, despite major distractions in January, May, and July. With help from Aaron, Allan, and ChatGPT - and without the communication burden of contractors and external collaborators - progress has been slow but steady. More importantly, I've had time to investigate highly technical matters and build foundational work.&lt;/p&gt;
&lt;p&gt;The Web Summit in May and internal training from April to July helped us greatly polish the Neo graph editor, stabilize Neo's internal serialization format, and establish Divooka for general-purpose use.&lt;/p&gt;
&lt;p&gt;Ecosystem-wise, I've done plenty of investigation and prototype work on Python integration, build automation, code refactoring, and preliminary work on online services.&lt;/p&gt;
&lt;p&gt;There has been extensive work on Neo and Neo-first features, including general GUI improvements, bug fixes, plugin framework enhancements, &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250728-multi-graph-navigation-gui-2h08&quot;&gt;subgraph work&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250710-generics-in-divooka-49e6&quot;&gt;generics&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250510-dealing-with-lambda-3ff9&quot;&gt;lambda support&lt;/a&gt;, multilingual framework setup, &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250708-procedural-context-visual-debugger-in-divooka-4fb7&quot;&gt;procedural context&lt;/a&gt;, and other experimental work. Related to this is the improved Neo serialization format, which is becoming more robust and stable. &lt;strong&gt;&lt;em&gt;We haven't yet worked on package management.&lt;/em&gt;&lt;/strong&gt; Although we are trying to make it DiDS-conformant, it's still far from achieving a single final format.&lt;/p&gt;
&lt;p&gt;DSL-wise, there has been initial work on &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Oista&quot;&gt;Ol'ista&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Glaze&quot;&gt;Glaze!&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/SlidePresent&quot;&gt;Slide Present&lt;/a&gt;, and &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Novella&quot;&gt;Novella&lt;/a&gt;. Many utilities were also created for ChatGPT and GenAI services, including interfaces for &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/oyzLJae3foY?si=NBGaeh1hDTrYsiCZ&quot;&gt;Nvidia NIM&lt;/a&gt;, &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/V9HC-RErzkY?si=xTcgxoMYH7mjz6_S&quot;&gt;ComfyUI&lt;/a&gt;, and Hugging Face inference services. Different users have different demands, and &lt;strong&gt;it's hard to focus on any specific library without a pilot project&lt;/strong&gt;. While we do have internal pilot projects, they are large in scope and still require groundwork, so Divooka hasn't yet played a significant role. &lt;em&gt;I do want to seek external collaboration on this - but at the moment resources are constrained.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;On the plotting front, as of early August, Aaron has made significant progress on the &lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Divooka/Topics/Plotting&quot;&gt;mid-level plotting API&lt;/a&gt;, making Divooka's plotting library almost &quot;self-sustainable,&quot; able to meet a wide range of demands.&lt;/p&gt;
&lt;p&gt;Although data analytics is arguably not our only focus, use case investigations have improved in-memory DB handling, refactoring, and preliminary libraries for PostgreSQL ingestion. One architectural challenge is expression interpretation: &lt;strong&gt;we decided long ago that, at least for data analytics, it's not efficient to rely entirely on node interfaces - some coding is desirable&lt;/strong&gt;. The main focus is SQL snippets through our in-memory DB library, though at times LINQ expressions and in-place C# scripting have been useful. However, concerns with the latter are robustness, error tolerance, predictability, increased distribution size, and future program export compatibility.&lt;/p&gt;
&lt;p&gt;The data analytics API also faces the challenge of whether to focus on OOP or tabular data as intermediate formats. Sometimes one is more convenient than the other, which increases development costs to maintain both. Eventually, we will likely keep both but prefer exposing the tabular format in Divooka.&lt;/p&gt;
&lt;p&gt;A more complete picture of &quot;data analytics&quot; in Divooka would extend into data science and machine learning. There's plenty of research to do here, &lt;strong&gt;including choosing a foundational library, gradually building our own infrastructure, and developing graph-friendly, visual-programming-first APIs&lt;/strong&gt;. This will have to wait until next year.&lt;/p&gt;
&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;
&lt;p&gt;The most visible outcome is that Neo is receiving significant updates. On the programming language front, Divooka's function libraries are growing as the language becomes more capable, flexible, and production-ready. Once we start working on package management, it will be more prepared for practical day-to-day use. However, package management requires a fully functional online service first.&lt;/p&gt;
&lt;p&gt;Meanwhile, we are actively exploring more &lt;em&gt;&quot;direct-user-facing&quot;&lt;/em&gt; applications, which I'll discuss in future posts.&lt;/p&gt;
&lt;p&gt;We could use a lot of help on DSL work, and that's the plan as the foundations solidify and architectural decisions become clearer.&lt;/p&gt;
&lt;h3 id=&quot;references&quot;&gt;References&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Wiki Entries on related subjects:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Glaze&quot;&gt;Glaze!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Novella&quot;&gt;Novella&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/Oista&quot;&gt;Ol'ista&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/Frameworks/SlidePresent&quot;&gt;Slide Present&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;DevLogs on Divooka/Neo progress:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-2025801-procedural-context-type-338k&quot;&gt;DevLog 2025801: Procedural Context Type&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250711-flappy-bird-in-divooka-sneak-peak-40j8&quot;&gt;DevLog 20250711: Flappy Bird in Divooka! (Sneak Peak)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250710-generics-in-divooka-49e6&quot;&gt;DevLog 20250710: Generics in Divooka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250708-procedural-context-visual-debugger-in-divooka-4fb7&quot;&gt;DevLog 20250708: Procedural Context Visual Debugger in Divooka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250619-modularization-improvements-48bi&quot;&gt;DevLog 20250619: Modularization Improvements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250612-olista-web-framework-16mf&quot;&gt;DevLog 20250613: Ol'ista Web Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250610-plotting-in-divooka-7f8&quot;&gt;DevLog 20250610: Plotting in Divooka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250510-dealing-with-lambda-3ff9&quot;&gt;DevLog 20250510 Dealing with Lambda&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/progress-share-graph-local-lambda-calculus-4dj2&quot;&gt;Progress Share 20250509: Graph Local Lambda Calculus in Divooka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Introductory to Visual Programming with Divooka Textbook:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Access it &lt;a rel=&quot;nofollow&quot; href=&quot;https://methodox-technologies.github.io/TextbookIntroductoryVisualProgramming/&quot;&gt;online here&lt;/a&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Additional references:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/methodox/devlog-20250805-divooka-node-graph-file-formats-19p8&quot;&gt;DevLog 20250805: Divooka Node Graph File Formats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://wiki.methodox.io/en/Releases/Roadmap&quot;&gt;Public Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/1TuS7ChBb98?si=wmVuuUglw0yljMYQ&quot;&gt;State of Divooka&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;glossary&quot;&gt;Glossary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;DSL: Domain-specific Library&lt;/li&gt;
&lt;li&gt;DiDS: Divooka Document Specification&lt;/li&gt;
&lt;li&gt;DiOS: Divooka Open Standards&lt;/li&gt;
&lt;li&gt;Gospel: The new, revived, modern incarnation of Parcel, gateway into Divooka; Now a new graph editor frontend for Divooka&lt;/li&gt;
&lt;li&gt;Neo: The Windows graph editor for Divooka&lt;/li&gt;
&lt;li&gt;Morpheus: The cross-platform GUI framework and graph editor architecture for Divooka&lt;/li&gt;
&lt;li&gt;Quadrinity: A way to perceive office suite software as a single framework consisting of multiple views, like Blender's workspaces&lt;/li&gt;
&lt;li&gt;ZFA: Zora Frontier Architecture&lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Divooka</category>
<guid isPermaLink="true">https://coderlegion.com/4760/article-divooka-where-we-are</guid>
<pubDate>Sat, 16 Aug 2025 19:42:13 +0000</pubDate>
</item>
</channel>
</rss>