[{"data":1,"prerenderedAt":1002},["ShallowReactive",2],{"page-\u002Fbuild-in-public":3,"build-in-public-blogs":4},null,[5,568,803],{"id":6,"title":7,"author":8,"body":9,"dateModified":558,"description":559,"extension":560,"meta":561,"navigation":191,"path":562,"seo":563,"stem":564,"tags":565,"__hash__":567},"blog\u002Fblog\u002Fsimplified-iflow-method-signature.md","Simplified IFlow Method Signature","Daniel Miradakis",{"type":10,"value":11,"toc":552},"minimark",[12,16,21,30,33,36,40,56,66,292,300,304,310,313,323,326,352,355,359,372,390,393,542,545,548],[13,14],"youtubeshortembed",{"src":15},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FnWEVp6913J0",[17,18,20],"h2",{"id":19},"hard-at-work","Hard at work",[22,23,24,25,29],"p",{},"I realize yet again that it's been ",[26,27,28],"strong",{},"far too long"," since my last blogpost on here! My marketing efforts for Didact over the past year have been a little topsy-turvy.",[22,31,32],{},"Previously, I would highly monitor Reddit and market Didact there as well as some other places. But over these past many months, I've been focusing on getting Didact complete as fast as I can, so I've lessoned my marketing efforts to massively increase my development and engineering throughput. These days, I am making fairly frequent posts on Didact's socials (you can find them in the Footer), particularly in my efforts to do frequent build in public updates showing my gradual progress building the platform up to v1.",[22,34,35],{},"But it was time that I make a small blogpost on here again, too! I'll keep this one pretty short.",[17,37,39],{"id":38},"overcomplicated-method-signature","Overcomplicated method signature",[22,41,42,43,47,48,51,52,55],{},"I recently realized - to my embarassement, I will admit - that one of the oldest ",[44,45,46],"code",{},"Types"," that I made in the Didact Core NuGet package, specifically the ",[44,49,50],{},"IFlow"," interface, was needlessly complicated. Specifically, I am referring to the ",[44,53,54],{},"ConfigureAsync"," method where you define a flow's metadata and orchestration behaviors.",[22,57,58,59,61,62,65],{},"The ",[44,60,54],{}," method has gone through a few changes here and there, but for the most part it's been largely the same design: a configurator is injected into the method parameters within an ",[44,63,64],{},"IFlowConfigurationContext"," object that you define metadata against using fluent API methods, and then you return that context containing that configurator in the method signature. Pretty straightforward stuff, you just take the configurator, modify it, and then return it.",[67,68,73],"pre",{"className":69,"code":70,"language":71,"meta":72,"style":72},"language-csharp shiki shiki-themes github-light github-dark","public class SomeFlow : IFlow\n{\n    public Task\u003CIFlowConfigurationContext> ConfigureAsync(IFlowConfigurationContext context)\n    {\n        context.Configurator\n            .WithName(nameof(SomeFlow))\n            .WithCronSchedule(\"weekly schedule\", \"0 0 * * 0\");\n\n        return Task.FromResult(context);\n    }\n\n    public async Task ExecuteAsync(IFlowExecutionContext context)\n    {\n        context.Logger.LogInformation(\"Simulating work...\");\n        await Task.Delay(1000);\n    }\n}\n","csharp","",[44,74,75,98,104,134,140,146,163,186,193,208,214,219,241,246,262,281,286],{"__ignoreMap":72},[76,77,80,84,87,91,95],"span",{"class":78,"line":79},"line",1,[76,81,83],{"class":82},"szBVR","public",[76,85,86],{"class":82}," class",[76,88,90],{"class":89},"sScJk"," SomeFlow",[76,92,94],{"class":93},"sVt8B"," : ",[76,96,97],{"class":89},"IFlow\n",[76,99,101],{"class":78,"line":100},2,[76,102,103],{"class":93},"{\n",[76,105,107,110,113,116,118,121,123,126,128,131],{"class":78,"line":106},3,[76,108,109],{"class":82},"    public",[76,111,112],{"class":89}," Task",[76,114,115],{"class":93},"\u003C",[76,117,64],{"class":89},[76,119,120],{"class":93},"> ",[76,122,54],{"class":89},[76,124,125],{"class":93},"(",[76,127,64],{"class":89},[76,129,130],{"class":89}," context",[76,132,133],{"class":93},")\n",[76,135,137],{"class":78,"line":136},4,[76,138,139],{"class":93},"    {\n",[76,141,143],{"class":78,"line":142},5,[76,144,145],{"class":93},"        context.Configurator\n",[76,147,149,152,155,157,160],{"class":78,"line":148},6,[76,150,151],{"class":93},"            .",[76,153,154],{"class":89},"WithName",[76,156,125],{"class":93},[76,158,159],{"class":82},"nameof",[76,161,162],{"class":93},"(SomeFlow))\n",[76,164,166,168,171,173,177,180,183],{"class":78,"line":165},7,[76,167,151],{"class":93},[76,169,170],{"class":89},"WithCronSchedule",[76,172,125],{"class":93},[76,174,176],{"class":175},"sZZnC","\"weekly schedule\"",[76,178,179],{"class":93},", ",[76,181,182],{"class":175},"\"0 0 * * 0\"",[76,184,185],{"class":93},");\n",[76,187,189],{"class":78,"line":188},8,[76,190,192],{"emptyLinePlaceholder":191},true,"\n",[76,194,196,199,202,205],{"class":78,"line":195},9,[76,197,198],{"class":82},"        return",[76,200,201],{"class":93}," Task.",[76,203,204],{"class":89},"FromResult",[76,206,207],{"class":93},"(context);\n",[76,209,211],{"class":78,"line":210},10,[76,212,213],{"class":93},"    }\n",[76,215,217],{"class":78,"line":216},11,[76,218,192],{"emptyLinePlaceholder":191},[76,220,222,224,227,229,232,234,237,239],{"class":78,"line":221},12,[76,223,109],{"class":82},[76,225,226],{"class":82}," async",[76,228,112],{"class":89},[76,230,231],{"class":89}," ExecuteAsync",[76,233,125],{"class":93},[76,235,236],{"class":89},"IFlowExecutionContext",[76,238,130],{"class":89},[76,240,133],{"class":93},[76,242,244],{"class":78,"line":243},13,[76,245,139],{"class":93},[76,247,249,252,255,257,260],{"class":78,"line":248},14,[76,250,251],{"class":93},"        context.Logger.",[76,253,254],{"class":89},"LogInformation",[76,256,125],{"class":93},[76,258,259],{"class":175},"\"Simulating work...\"",[76,261,185],{"class":93},[76,263,265,268,270,273,275,279],{"class":78,"line":264},15,[76,266,267],{"class":82},"        await",[76,269,201],{"class":93},[76,271,272],{"class":89},"Delay",[76,274,125],{"class":93},[76,276,278],{"class":277},"sj4cs","1000",[76,280,185],{"class":93},[76,282,284],{"class":78,"line":283},16,[76,285,213],{"class":93},[76,287,289],{"class":78,"line":288},17,[76,290,291],{"class":93},"}\n",[22,293,294,295,299],{},"What struck me as painfully obvious a few weeks ago was the unnecessity to return the configurator in the method signature. I finally asked myself the following question: do users ",[296,297,298],"em",{},"really"," need to return that object from the method? Doesn't the calling code in Didact Engine have access to this object already?",[17,301,303],{"id":302},"do-it-like-programcs","Do it like Program.cs",[22,305,306,307,309],{},"The answer was - as I facepalmed - obviously yes! If the intention behind ",[44,308,54],{}," is simply to modify the method-injected configurator, there is simply no need for users to have to return that configurator. The caller can grab it on its own at the completion of the method's execution inside Didact Engine.",[22,311,312],{},"Even worse, having users return the configurator might allow them to instantiate a brand new configurator, devoid of all metadata and necessary dependency-injections from within Didact Engine. It was simply a footgun that didn't need to exist, and a code smell on my end as the architect of Didact.",[22,314,315,316,319,320,322],{},"One helpful thought experiment that helped me realized this was thinking on how modern ",[44,317,318],{},"Program.cs"," files are written when someone builds a .NET web API or a generic host for some kind of console app. Throughout my personal career, and also from reading many examples online, most modern ",[44,321,318],{}," files are chains of fluent API calls against various objects or properties.",[22,324,325],{},"For example, you'll probably see something like",[67,327,329],{"className":69,"code":328,"language":71,"meta":72,"style":72},"builder.Services.AddScoped\u003CIMyService, MyService>();\n",[44,330,331],{"__ignoreMap":72},[76,332,333,336,339,341,344,346,349],{"class":78,"line":79},[76,334,335],{"class":93},"builder.Services.",[76,337,338],{"class":89},"AddScoped",[76,340,115],{"class":93},[76,342,343],{"class":89},"IMyService",[76,345,179],{"class":93},[76,347,348],{"class":89},"MyService",[76,350,351],{"class":93},">();\n",[22,353,354],{},"if someone wants to register a scoped service to the dependency injection container in a modern .NET app; property accessors and fluent API calls, nice and clean. I personally enjoy these sort of fluent API's in modern .NET versions: the method calls are legible and read like English sentences.",[17,356,358],{"id":357},"configure-and-return","Configure and return",[22,360,361,362,364,365,367,368,371],{},"So, I'm pleased to say that the ",[44,363,54],{}," method has been simplified on the ",[44,366,50],{}," interface which, again, is ",[296,369,370],{},"the main type"," that you need to define your background jobs and workflows in Didact.",[22,373,374,375,378,379,381,382,385,386,389],{},"Now, the method simply returns a ",[44,376,377],{},"Task",". I imagine most people don't need any actual async behavior within their ",[44,380,54],{}," definitions, so if that's your case, you can omit the ",[44,383,384],{},"async"," keyword on the method signature and simply end your method definiton with ",[44,387,388],{},"return Task.CompletedTask",".",[22,391,392],{},"Here's the modified example below:",[67,394,396],{"className":69,"code":395,"language":71,"meta":72,"style":72},"public class SomeFlow : IFlow\n{\n    public Task ConfigureAsync(IFlowConfigurationContext context)\n    {\n        context.Configurator\n            .WithName(nameof(SomeFlow))\n            .WithCronSchedule(\"weekly schedule\", \"0 0 * * 0\");\n\n        return Task.CompletedTask;\n    }\n\n    public async Task ExecuteAsync(IFlowExecutionContext context)\n    {\n        context.Logger.LogInformation(\"Simulating work...\");\n        await Task.Delay(1000);\n    }\n}\n",[44,397,398,410,414,431,435,439,451,467,471,478,482,486,504,508,520,534,538],{"__ignoreMap":72},[76,399,400,402,404,406,408],{"class":78,"line":79},[76,401,83],{"class":82},[76,403,86],{"class":82},[76,405,90],{"class":89},[76,407,94],{"class":93},[76,409,97],{"class":89},[76,411,412],{"class":78,"line":100},[76,413,103],{"class":93},[76,415,416,418,420,423,425,427,429],{"class":78,"line":106},[76,417,109],{"class":82},[76,419,112],{"class":89},[76,421,422],{"class":89}," ConfigureAsync",[76,424,125],{"class":93},[76,426,64],{"class":89},[76,428,130],{"class":89},[76,430,133],{"class":93},[76,432,433],{"class":78,"line":136},[76,434,139],{"class":93},[76,436,437],{"class":78,"line":142},[76,438,145],{"class":93},[76,440,441,443,445,447,449],{"class":78,"line":148},[76,442,151],{"class":93},[76,444,154],{"class":89},[76,446,125],{"class":93},[76,448,159],{"class":82},[76,450,162],{"class":93},[76,452,453,455,457,459,461,463,465],{"class":78,"line":165},[76,454,151],{"class":93},[76,456,170],{"class":89},[76,458,125],{"class":93},[76,460,176],{"class":175},[76,462,179],{"class":93},[76,464,182],{"class":175},[76,466,185],{"class":93},[76,468,469],{"class":78,"line":188},[76,470,192],{"emptyLinePlaceholder":191},[76,472,473,475],{"class":78,"line":195},[76,474,198],{"class":82},[76,476,477],{"class":93}," Task.CompletedTask;\n",[76,479,480],{"class":78,"line":210},[76,481,213],{"class":93},[76,483,484],{"class":78,"line":216},[76,485,192],{"emptyLinePlaceholder":191},[76,487,488,490,492,494,496,498,500,502],{"class":78,"line":221},[76,489,109],{"class":82},[76,491,226],{"class":82},[76,493,112],{"class":89},[76,495,231],{"class":89},[76,497,125],{"class":93},[76,499,236],{"class":89},[76,501,130],{"class":89},[76,503,133],{"class":93},[76,505,506],{"class":78,"line":243},[76,507,139],{"class":93},[76,509,510,512,514,516,518],{"class":78,"line":248},[76,511,251],{"class":93},[76,513,254],{"class":89},[76,515,125],{"class":93},[76,517,259],{"class":175},[76,519,185],{"class":93},[76,521,522,524,526,528,530,532],{"class":78,"line":264},[76,523,267],{"class":82},[76,525,201],{"class":93},[76,527,272],{"class":89},[76,529,125],{"class":93},[76,531,278],{"class":277},[76,533,185],{"class":93},[76,535,536],{"class":78,"line":283},[76,537,213],{"class":93},[76,539,540],{"class":78,"line":288},[76,541,291],{"class":93},[22,543,544],{},"Simple, clean, straightforward, just the way I want to design Didact's APIs for you!",[22,546,547],{},"Any day that I can score a win for Didact's DX is a very good day for me.",[549,550,551],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":72,"searchDepth":100,"depth":100,"links":553},[554,555,556,557],{"id":19,"depth":100,"text":20},{"id":38,"depth":100,"text":39},{"id":302,"depth":100,"text":303},{"id":357,"depth":100,"text":358},"2026-07-06","DX is an extremely important focus for Didact. Recently, a code-smell occurred to me for the IFlow interface in Didact Core. I scored a nice DX win by simplifying the ConfigureAsync method signature.","md",{"datePublished":558},"\u002Fblog\u002Fsimplified-iflow-method-signature",{"title":7,"description":559},"blog\u002Fsimplified-iflow-method-signature",[566],"Build in public","Y1Ag8VwZ2srQ-W8zoDWMWe6MU5BWzpTp_XbPRScPUX4",{"id":569,"title":570,"author":8,"body":571,"dateModified":794,"description":795,"extension":560,"meta":796,"navigation":191,"path":797,"seo":798,"stem":799,"tags":800,"__hash__":802},"blog\u002Fblog\u002Fleap-of-faith.md","Leap of Faith",{"type":10,"value":572,"toc":784},[573,577,580,589,592,610,613,617,620,624,645,649,656,659,663,670,674,681,690,694,697,700,706,709,756,760,767,770,781],[17,574,576],{"id":575},"founder-check-ins","Founder Check Ins",[22,578,579],{},"Hi there, it's been a while again! I'm so glad you're here, and I thank you for a moment of your time reading this.",[22,581,582,583,588],{},"Ironically, I wrote a blogpost in April titled ",[584,585,587],"a",{"href":586},"\u002Fblog\u002Ffounder-check-ins","\"Founder Check Ins\""," where I talked about where I've been at with Didact and how the journey has been coming along. As a solo bootstrapper, it can be quite difficult at times - more like quite slow - getting traction on everything that is required to run a devtool business and build a massively complex product like Didact. In that blogpost, I spoke about how hard I've been working on Didact, becoming radio silent too often and my desire to change that, the struggles of bootstrapping, and more. I highly encourage you to read the post if you have a spare moment!",[17,590,570],{"id":591},"leap-of-faith",[22,593,594,595,598,599,602,603,609],{},"More importantly, though, I have some ",[26,596,597],{},"very exciting news"," to share with you. This summer, I have officially gone ",[26,600,601],{},"full time"," on Didact. I am taking the leap of faith and pouring all of my heart, soul, and time into this product to bring my ",[584,604,608],{"href":605,"rel":606},"https:\u002F\u002Fdocs.didact.dev\u002Fgetting-started\u002Fwhy-build-didact",[607],"nofollow","years long dream"," of having a dotnet job orchestrator to life! And let me tell you, I absolutely could not be more thrilled to be doing this right now than I already am.",[22,611,612],{},"I made a short YouTube video about it here if you'd like to check it out:",[614,615],"youtubevideoembed",{"src":616},"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FXU6yq20JaiQ?si=R8aHInIdjzougcG7",[22,618,619],{},"I'll be posting #buildinpublic updates in the form of \"Captain's Log\" videos (I'm a big Star Trek TNG fan) on YouTube among other methods outlined later in this blog post.",[17,621,623],{"id":622},"meaningful-v1","Meaningful v1",[22,625,626,627,630,631,634,635,638,639,644],{},"I have been slowly dreaming and designing Didact for years now (yes, years). It has been an incredibly slow but extremely meaningful process. This is ",[26,628,629],{},"not"," the sort of product that I ever wanted to rush out; even for a v1, it ",[26,632,633],{},"needs"," to be ",[296,636,637],{},"actually useful"," to you as its user and have a meaningful difference from the current dotnet background job solutions that exist today. Not only that, but I require, as its founder and designer, that Didact conforms to my own expectations. As Jason Fried masterfully wrote on the ",[584,640,643],{"href":641,"rel":642},"https:\u002F\u002Fworld.hey.com\u002Fjason\u002Fversion-1-is-for-you-658422f3",[607],"Hey.com blog",", a founder should build v1 for themselves.",[17,646,648],{"id":647},"previous-launch-date","Previous Launch Date",[22,650,651,652,655],{},"I must apologize to you because I wanted to launch Didact earlier this year back around early Spring time. Life, however, got absolutely crazy for several months, ",[26,653,654],{},"and"," I realized that I needed to fill some drastic gaps in Didact's flow library workflows around that time. These two factors combined, I realized that I needed to push the launch to a later date this year, but I never got around to sending you an update about that delay. Again, my apologies for that! Life got very crazy for me for a while, but thankfully circumstances have changed to my favor.",[22,657,658],{},"Now that I am full time on this product, I have the time and capacity for this product that I never had before these past several years.",[17,660,662],{"id":661},"new-launch-date","New Launch Date",[22,664,665,666,669],{},"Because of all this, Didact's long, long awaited v1 launch is just around the corner. Specifically, I am now targeting ",[26,667,668],{},"August 2025"," as the launch date of v1, so that's about a month or so from publishing this article.",[17,671,673],{"id":672},"feedback-board","Feedback Board",[22,675,676,677,680],{},"As I mentioned above, I refuse to ship Didact's v1 without it being meaningful and useful to you as the end user. That being said, there are still a whole slew of features that I want to add to the platform in subsequent versions, and, more importantly, I know ",[296,678,679],{},"you"," are going to recommend a whole slew of features to me, too.",[22,682,683,684,689],{},"If you have some ideas for what you want to see in Didact, I would encourage you to check out the ",[584,685,688],{"href":686,"rel":687},"https:\u002F\u002Fdidact.featurebase.app\u002F",[607],"Didact feedback board",", go make a quick account, and create and upvote any feature requests that you find interesting.",[17,691,693],{"id":692},"build-in-public","Build In Public",[22,695,696],{},"As I close in on v1 and, moreover, as I continue to build and perfect Didact in its following versions, I want to explore the #buildinpublic marketing channel. I've found many fascinating, exceptional founders and fellow solopreneurs through their #buildinpublic journeys, and I've often wanted to follow suit myself.",[22,698,699],{},"Truth be told, I also find making social posts, blog posts, YouTube videos, and especially YouTube livestreams quite therapeutic. One interesting fact about me is that I'm a teacher at heart; I absolutely love explaining difficult concepts to people and seeing their eyes light up with joy when they finally comprehend that difficult something.",[701,702,703],"blockquote",{},[22,704,705],{},"I think that will be a huge advantage that I bring along with Didact: I'm a teacher at heart, so I'll be putting massive effort into the docs, YouTube, and support with users\u002Fcustomers!",[22,707,708],{},"If you'd like to follow along Didact's #buildinpublic journey or simply stay informed of the product's progress, make sure to check out the socials below:",[710,711,712,721,728,735,742,749],"ul",{},[713,714,715,720],"li",{},[584,716,719],{"href":717,"rel":718},"https:\u002F\u002Fwww.youtube.com\u002F@DidactPlatform",[607],"Didact's YouTube"," (very active)",[713,722,723],{},[584,724,727],{"href":725,"rel":726},"https:\u002F\u002Ftwitter.com\u002FDidactPlatform",[607],"Didact's X page",[713,729,730,720],{},[584,731,734],{"href":732,"rel":733},"https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fdidactplatform",[607],"Didact's subreddit",[713,736,737],{},[584,738,741],{"href":739,"rel":740},"https:\u002F\u002Flinkedin.com\u002Fcompany\u002Fdidactplatform",[607],"Didact's LinkedIn page",[713,743,744],{},[584,745,748],{"href":746,"rel":747},"https:\u002F\u002Fbsky.app\u002Fprofile\u002Fdidactplatform.bsky.social",[607],"Didact's Bluesky page",[713,750,751,720],{},[584,752,755],{"href":753,"rel":754},"https:\u002F\u002Fx.com\u002Fdmiradev",[607],"Founder's X page",[17,757,759],{"id":758},"early-adopters","Early Adopters",[22,761,762,763,766],{},"So if you're interested in Didact and want to check this ",[26,764,765],{},"amazing"," product out, then do yourself a favor and mark your calendars! August 2025 will be here soon, and I will be actively seeking conversations, interviews, and feedback from Early Adopters (that's you, hopefully).",[22,768,769],{},"Also, I wanted to provide an added perk for you: as an Early Adopter, should you want to use the premium version of Didact with its enhanced features, production support, and so on, then you will receive special discounted pricing only available to Early Adopters as my token of appreciation!",[22,771,772,773,775,776,780],{},"If you are ",[296,774,629],{}," already an Early Adopter now, it's dead simple to do: just visit the ",[584,777,779],{"href":778},"\u002Fpricing","Pricing page"," and enter your email into the newsletter\u002Fwaitlist.",[22,782,783],{},"v1 awaits!",{"title":72,"searchDepth":100,"depth":100,"links":785},[786,787,788,789,790,791,792,793],{"id":575,"depth":100,"text":576},{"id":591,"depth":100,"text":570},{"id":622,"depth":100,"text":623},{"id":647,"depth":100,"text":648},{"id":661,"depth":100,"text":662},{"id":672,"depth":100,"text":673},{"id":692,"depth":100,"text":693},{"id":758,"depth":100,"text":759},"2025-07-16","Exciting news for Didact! The founder has taken a full time leap of faith and Didact's v1 launch is just around the corner, coming August 2025.",{"datePublished":794},"\u002Fblog\u002Fleap-of-faith",{"title":570,"description":795},"blog\u002Fleap-of-faith",[801,566],"News","LH30dnqQxFcPHFRidS_tZ853zqt4UHrxEFzh7y0PwY8",{"id":804,"title":576,"author":8,"body":805,"dateModified":995,"description":996,"extension":560,"meta":997,"navigation":191,"path":586,"seo":998,"stem":999,"tags":1000,"__hash__":1001},"blog\u002Fblog\u002Ffounder-check-ins.md",{"type":10,"value":806,"toc":987},[807,811,818,829,832,835,839,846,849,852,856,866,873,879,883,889,896,899,902,909,916,920,923,926,955,964,967,971,978,981,984],[17,808,810],{"id":809},"tinkering-away","Tinkering Away",[22,812,813,814,817],{},"Welcome to my dream platform for job orchestration in dotnet! Didact is my dream, my love letter to data engineering and the dotnet community. I have been tinkering away on slowly building Didact ",[26,815,816],{},"for two years",". Wow... I have to let that sink in as I write this.",[22,819,820,821,824,825,828],{},"Two years of working through the most utterly complex, mind-bogglingly contorted set of software applications I have ever attempted to architect. Please take my word for it: building a job orchestrator, let alone building one ",[26,822,823],{},"solo"," and ",[26,826,827],{},"bootstrapped"," as I am, is borderline insane - probably positively insane in my case.",[22,830,831],{},"Unless you try to build a job orchestrator yourself, it's difficult to describe with appropriate accuracy how incredibly challenging this endeavour really is.",[22,833,834],{},"Which got me thinking...",[17,836,838],{"id":837},"radio-silent","Radio Silent",[22,840,841,842,845],{},"Most people don't know ",[26,843,844],{},"how difficult"," it is to build a job orchestrator. The sheer complexity of shipping a fullstack platform, complete with a web dashboard, REST API, execution engine, CLI, documentation, and not just making it, but making it (commercial) open source and open to the world around you is a tall order.",[22,847,848],{},"Meanwhile, I've interacted with countless people on Reddit and other forums, and I even have a list of early adopter emails and messages of various individuals who have expressed interest in this platform these past two years.",[22,850,851],{},"That is aboslutely wonderful and makes me overjoyed that people are interested in Didact, especially since I am trying to sustain and monetize it long-term. And since I'm solo, bootstrapped, and am constantly struggling with the burder of balancing marketing and building, I realized that I have a bad habit of going radio silent on you all for long periods at a time.",[17,853,855],{"id":854},"struggles-of-bootstrapping","Struggles of Bootstrapping",[22,857,858,859,861,862,865],{},"Please, please know that it is ",[26,860,629],{}," intentional - it is just ",[296,863,864],{},"extremely difficult"," to balance working a day job and simultaneously building a platform of this immense a scope by oneself. Not to mention, my personal health has taken a back seat these past several years, and for the past year and a half I have been aggressively taking it back through intense fitness.",[22,867,868,869,872],{},"It is ",[26,870,871],{},"extremely frustrating"," to have been building this platform for two years and not have a working version ready yet (though thankfully that is right around the corner), so hopefully you can understand my position that I feel I need to stop yapping, double my time building, and ship you a working v0 product.",[22,874,875,876,389],{},"I'm tired of building in isolation, darn it: I want Didact ",[26,877,878],{},"in your hands",[17,880,882],{"id":881},"check-ins","Check Ins",[22,884,885,886,888],{},"If you've read this far along, I want to thank you. Hopefully you can understand some of my frustrations and difficulties and can empathize with building and launching an open core business solo and bootstrapped like I am doing. This path is ",[26,887,629],{}," for the faint of heart, that's for sure.",[22,890,891,892,895],{},"But while I am doubled down building, I ",[296,893,894],{},"do"," nonetheless want to speak with you more frequently. I've been mulling over how to best accomplish this for the past few weeks, and what I think I've settled on is doing little weekly or biweekly founder \"check ins\" with you for a while.",[22,897,898],{},"I don't want to overdue it (like I usually do) and feel the need to make some ten minute YouTube video or write some essay-length blog update. Instead, I just want to give you a short little update every week or two.",[22,900,901],{},"\"Here's what I'm working on\", \"here's why\", \"here's what's next\", updates on target dates, and so on. I'm thinking just short little blog posts, 60-120 second YouTube shorts, things like that.",[22,903,904,905,908],{},"I have learned ",[26,906,907],{},"so much"," in building, rebuilding, and refining Didact just in these past two years. My developer knowledge has quite literally 100x from where I was two years ago. But I lament the fact that I have no diary, no consistent tweet history, no history of blog posts detailing the journey and how far I and Didact have come these past two years.",[22,910,911,912,915],{},"I wish I could go back in time and change that, but like I said above - it's ",[26,913,914],{},"really hard"," balancing all of this yourself in the early days when you're solo and bootstrapped.",[17,917,919],{"id":918},"where-to-find-me","Where To Find Me",[22,921,922],{},"So while I can't change the past, I want to try this out and set some better communication habits going forward.",[22,924,925],{},"I would really love for you to see these little check ins and tune in for my short updates, so here's where you can find me:",[710,927,928,936,944],{},[713,929,930,931,935],{},"The best place will be ",[584,932,934],{"href":933},"\u002Fblog","this blog"," on the Didact marketing site.",[713,937,938,939,943],{},"The next best place will be the ",[584,940,942],{"href":717,"rel":941},[607],"Didact YouTube channel"," where I plan to post little YouTube shorts updates.",[713,945,946,947,824,951,389],{},"I also have some dedicated socials for quick updates, mainly ",[584,948,950],{"href":725,"rel":949},[607],"Twitter\u002FX",[584,952,954],{"href":746,"rel":953},[607],"BlueSky",[22,956,957,958,963],{},"I also have my ",[584,959,962],{"href":960,"rel":961},"https:\u002F\u002Fx.com\u002FSymbisoftIO",[607],"personal Twitter\u002FX profile"," where I post updates which is a great place to keep up with me and Didact.",[22,965,966],{},"Please do follow or subscribe to these accounts if you don't already, or at the least check these blog posts every so often.",[17,968,970],{"id":969},"t-minus","T-Minus",[22,972,973,974,977],{},"Hang tight, v0 is nearly here. And once it is, I will ",[26,975,976],{},"desperately"," want your feedback on the platform.",[22,979,980],{},"I can't wait to build this platform out for you, and I'm looking forward to chatting with you more often.",[22,982,983],{},"Talk soon!",[22,985,986],{},"-Daniel, Founder of Didact",{"title":72,"searchDepth":100,"depth":100,"links":988},[989,990,991,992,993,994],{"id":809,"depth":100,"text":810},{"id":837,"depth":100,"text":838},{"id":854,"depth":100,"text":855},{"id":881,"depth":100,"text":882},{"id":918,"depth":100,"text":919},{"id":969,"depth":100,"text":970},"2025-04-10","I've been hard at work building Didact for two years, and I want to start giving you more frequent updates and check ins.",{"datePublished":995},{"title":576,"description":996},"blog\u002Ffounder-check-ins",[566],"1tRsC9u9Ky3DFOUBU_ywNus5hFaOTkjJk9qyBvvm1W4",1787366247879]