From 9eb3d53c7ab41214eedaec6a2c83f720a47b5ce7 Mon Sep 17 00:00:00 2001 From: Maria Oros Date: Mon, 18 May 2026 16:42:28 -0500 Subject: [PATCH] ADD blog content --- _build/.doctrees/blog/index.doctree | Bin 4005 -> 4056 bytes ...26-05-18-ag-forecasting-case-study.doctree | Bin 0 -> 7729 bytes _build/.doctrees/environment.pickle | Bin 44464 -> 59412 bytes .../2026-05-18-ag-forecasting-case-study.md | 19 + _build/html/blog.html | 132 ++++- _build/html/blog/2026.html | 132 ++++- _build/html/blog/2026/atom.xml | 44 +- _build/html/blog/archive.html | 41 +- _build/html/blog/atom.xml | 44 +- _build/html/blog/author.html | 70 ++- _build/html/blog/author/maria-oros.html | 561 ++++++++++++++++++ _build/html/blog/author/maria-oros/atom.xml | 51 ++ _build/html/blog/author/openlambda-team.html | 32 +- .../html/blog/author/openlambda-team/atom.xml | 2 +- .../html/blog/author/tyler-caraza-harter.html | 561 ++++++++++++++++++ .../blog/author/tyler-caraza-harter/atom.xml | 51 ++ _build/html/blog/category.html | 51 +- _build/html/blog/category/case-studies.html | 561 ++++++++++++++++++ .../html/blog/category/case-studies/atom.xml | 51 ++ _build/html/blog/category/releases.html | 32 +- _build/html/blog/category/releases/atom.xml | 2 +- _build/html/blog/drafts.html | 32 +- _build/html/blog/index.html | 85 ++- _build/html/blog/language.html | 41 +- _build/html/blog/language/en.html | 132 ++++- _build/html/blog/language/en/atom.xml | 44 +- .../2026-05-18-ag-forecasting-case-study.html | 561 ++++++++++++++++++ .../blog/post/2026-05-18-hello-world.html | 53 +- _build/html/blog/tag.html | 117 +++- _build/html/blog/tag/agforecast.html | 561 ++++++++++++++++++ _build/html/blog/tag/agforecast/atom.xml | 51 ++ _build/html/blog/tag/announcement.html | 32 +- _build/html/blog/tag/announcement/atom.xml | 2 +- _build/html/blog/tag/asgi.html | 561 ++++++++++++++++++ _build/html/blog/tag/asgi/atom.xml | 51 ++ _build/html/blog/tag/case-study.html | 561 ++++++++++++++++++ _build/html/blog/tag/case-study/atom.xml | 51 ++ _build/html/blog/tag/fastapi.html | 561 ++++++++++++++++++ _build/html/blog/tag/fastapi/atom.xml | 51 ++ _build/html/blog/tag/openlambda.html | 132 ++++- _build/html/blog/tag/openlambda/atom.xml | 44 +- _build/html/genindex.html | 3 +- _build/html/index.html | 3 +- _build/html/objects.inv | 3 +- _build/html/search.html | 3 +- _build/html/searchindex.js | 2 +- _toc.yml | 3 +- blog/post/2026-05-18-hello-world.md | 13 + 48 files changed, 6128 insertions(+), 62 deletions(-) create mode 100644 _build/.doctrees/blog/post/2026-05-18-ag-forecasting-case-study.doctree create mode 100644 _build/html/_sources/blog/post/2026-05-18-ag-forecasting-case-study.md create mode 100644 _build/html/blog/author/maria-oros.html create mode 100644 _build/html/blog/author/maria-oros/atom.xml create mode 100644 _build/html/blog/author/tyler-caraza-harter.html create mode 100644 _build/html/blog/author/tyler-caraza-harter/atom.xml create mode 100644 _build/html/blog/category/case-studies.html create mode 100644 _build/html/blog/category/case-studies/atom.xml create mode 100644 _build/html/blog/post/2026-05-18-ag-forecasting-case-study.html create mode 100644 _build/html/blog/tag/agforecast.html create mode 100644 _build/html/blog/tag/agforecast/atom.xml create mode 100644 _build/html/blog/tag/asgi.html create mode 100644 _build/html/blog/tag/asgi/atom.xml create mode 100644 _build/html/blog/tag/case-study.html create mode 100644 _build/html/blog/tag/case-study/atom.xml create mode 100644 _build/html/blog/tag/fastapi.html create mode 100644 _build/html/blog/tag/fastapi/atom.xml create mode 100644 blog/post/2026-05-18-hello-world.md diff --git a/_build/.doctrees/blog/index.doctree b/_build/.doctrees/blog/index.doctree index dab9c09d07ba8cc362b173aaefac7e13839dd6d8..8f5d0940f727ca3983c6315e2eb84636f64fdb78 100644 GIT binary patch delta 384 zcmZ1~e?y+7fpzNHjVzih)_y$-NjdrH`UUyLCHh7NMrOJOrn-g}x*4fCIr+Nf`9(P? zQ`)8^_V8rpCFhi;q^4!&q!v$!osvU4W?wU0}T=bv0A5qgfpbG z*d{yiSTKH>T+L%7{u!GIS*(+f@My|(XS5afaONfErj}F|01XCe?(QtkPz2I#n>l&I z8SC>(@{>!7Qd1R@^Ycm)GxLfSic-^3i&FEFQx!_`74q`)QY$ixOEUA)6;kq(OLJ56 zN)#S7%)lBNiRo$iMXAY&#U;8xB2~Azq%@`SQNv7y=v1IBdO(9?pffgxjZ b9+Nhkbe1EKJ^4PL%w%PLEk^sve*ED8Agqpu delta 298 zcmWlSJxjwt06=>tEea^%_{OI=$@{q^dJ8%1>)>13umXPM6>I=qQrJ;u3ETT$nK9zA=kk;ZEA&|^R4dTrCp4>b zGE1@@=7d;`Bc<))#_LTQ_3y%quzS*f;``2iUNg>a0znQ7f*?{*ERDCjy6V)aQ|El= zt5XlA{`~y;3HQ$~>r|?Eug!xXP6D9|I~yc^9*Ni#kBS$6U)(QN?Oeupb&_YkDC`7! z_)>*ICgS35VV9`8QK4>E<7c$+jY{I-a5*KX<;>k;RnFNdqf979KH2rlF}s|mq4GJ6 zV(VNBcFW|!;1au3`#YKFQJ>t-7~ZE(g8OjV;(qmgn`$?=-{P@A6cX^<662HXQ{7bh7p~&D38UGD$y~8sjGKdtI*N}74 z(DfurvCOQV1ap41Z09TFinAh0CD%%iuHdb2WdWr>p0(eSw8{~&0k6^q$a5R=Jo%dZ zF&s=j1K0lve$V0e0)8*TdE`&!&)_r*@|;}5u+DJbCK1V_>z#R{o3YND^R>pq_h!zw zjy9*AhU-M!6!wHPQCQfyy(qk-Q%;~Un`Q#8drvsk)@zlVdgrfCz@@H~P$Q@8ec`=n(%9U+Pe;5r?XQ zpj{j9gW}l4#Acqce!@ehG&2c{_>N#aW&+XP>SxI=!MGMKba{jLngt>alL7CBf*}Dk zu+CODZ@joxf_1sT7ean>W^Ah=8d8T~u$tQm$f_CQtxtxJ|lA5vH2uy6Hpfi2%@O6umrTJ;6;5 zbx9zybuAZfI#1nnT16`4S!GXBN4G2I`{2{>=l(o?@R$Gj9cse&w?_|OipJ#%-oF@) ze>grdaZ~v4fN+2S5^&ZKtPGxuctqY-ejdV^5Kkldel!Ny>gE2`iV7eE0|ZzIA`!4I zyc>@B;latBA#Uz$HJSYGsx&6mmpYw5tM)EZeOm;12NL17Wr!d;hCJ>Pd!z1OF%>_F zI(N2O6)|XCxpl3>``(Ds9#7SqZPsW@;Dbeu#y0U7=6K8+5W?pOD5eZkQ5p&tC3w^9 z=3BRJv&-*YL%b0nTm|pM8>}alFCmY?U@--wW*=U@_4c)9ZCv+NI}<#BWxx+L@hcH` zDEEM0(PCjSoq$h;Ax!wJPE`hi2J7qG_W>YD_AD7>3sUR(uxH@DZUdn@(Vw7>bJ7m# zG-d+~Vx&V|!a(9Q4x!Q{%?S_Q8yE>--4)$dnk8Uu5zw>`5b}3;AIpIjl5x$hZ1cDe zZ~;7)RKO6BKB*Y0HKBvqYq0M%q!XfjbOLt?8r0H9*`TDczNAb69MuG*lqU(VM{*o+x8{^R z)MXq_5BVWd2lyfKh3iHCJ0@PT?E36nbHy>Q}&)h^+*esP=cc{pZ)eWJREih>+z5LD){>%?N4 z6C`U0-lZ`@>r>6JnzB4bj!ijIEt$s(QDSq|l1Vbmmz7tBg+IAwpEMvmy7W)au`BR7 zSNNMUiQ!>!eZtPyeMErQoGg0GF8O&zWkqjTL|mv_%3`9O#aWpGA2r#PVUe|mm@y&_ z3OoHi4|7xzYc^x2liZ*lR&2=S4LjEtvBC$4~4c6@TMA^7g>dqv8|0 zq)`n`Jw&l%+7S3u*@6R!Yw^exyt+7w`Kkd`wRFQSWP%XT3+W6}Tt9B-fsVu1DZ3)} z6s%})I@WckDLWO2Zr;aqODF)uup)YZqDN?%!*=+BmPGog7&i033sG2z`zTxGrq_DC zg@b-!pC13{i7ZPpPXeQWi`W5D)kno^xwQOvJW9QxOTw_O!JV^E9U+0suEjY!?S9jgYLN$thk_t_ zof3PAb`@-aUn~uyfgE4{=L50Sl?LoT)&NU0#Tz^)?!ys7)KE4(uf}t zIRq~!m)$`wR>Jh$8~}t4)mbswoZ($W5l)}Q^;vrkJ{jSJTm|QF0bW^(eP~bVL2LlA zQuSqsA60C_gj|0?<7UBlzs?cW8isnpy_c_EnBe$Yn)V#{3G_kntc*8U*_jZdck;A& z=raG9tp0z@$G1hf>w zV2(3BdhK{3;wtpOcTgFl+m%o3N_GDPUk!UDraiQiNS1UzV`ob=LHNQGRa{aQ4+reN zFwSpQpj3H(LS7TlZ46!GETfzl_(>j{7CmXYZu-IguBcJ&yZN${7ccz0CiU*QOu+J~ z?OO<(H&4-b3-e@yi zbZg+&f@auP%GL_mO07co)=I9yYT;hFHCxZ_$rapk&b_%D)C=`S-ED>oFWq$M70qx} zrRtVb#cXLjpG{8|>Rw|!U8pp}#hGz77e%FYtAb{|xf>BdEyo6WeIs7KH{dPt2E8F~ zskcnU<|^fh!elcX)Xg{k#amQF)aONkTW?6O-NSXa926?$pt&D?TA^}g>XpgKqC4KG z*DK{_IIKf+mFkoU>nTkI^-LL1S>iXUQ+2nN8Lw0hz-x-|+;MbuX_U95VPfiF)wOcA zh{|%!aJ5R8MrgWFMvU@Doyp|gpfG7QhP7qto?AjCi?ZXz3Oat4u1vQ`k`%Lb_i!^j zTSt`|MT|lvmnk<&<8G}`o@}~dZ!ue*Y-A@<)O;6p3=}K5Y|+gC)`Uygqx?ZLi~dv^ zwVa#5h*t8<9riWq6R9Vr&^mO!j2RSUblb! zQngZ6bMco|@6;*xw>p)_GSX00W3GGLDaPuv8}?Ld72nMP1+2V9xtwyguecL`C4JpLrN~%%P`z=kau0!a}YBX%cmKhfoW26i!Mg5 z>1_!Y)hqez6kUDd%1o5%Kr?4yfi`Mx#!R@(M4{-iMOXnxFca!W(??9)(IZ$4N1LHD z>DDoa>zQn^SUHrLXxx4GRHk0bmIKTzS-R8Vd6qwe#!uGVAjss3*&uL(=5*L!$_8Ac zz$aKPg>s&2Vo=ZJpfNE~I4sz3VY(I&Um|>@7P}GhFUrMin`$qIm$w>JDP^#nF|j8eq(V zr3RH`#%qNTah-0x+(uXOge9Hwa+@>&NG84rt8gdMM2e7iW zDaTgujDy7wRrA&frmQ7&gK2VJdF z49X3K$+QG5s$-AAAolL%uLSjD2XIr^d2-nH`gatty_Y8$(+JNmWe*ohsGNINma8aJ zER^wa%adr#Shy4|@bn(UbUT9TePu;h-b_}5VZmKn(aDu|lwR9`0Ibg- zC)pS0`&rDVUZGY<2a$wWfbj&f6r|w-5^4%(un&6Kpb!8@6wyAfQp__4mW^9&jI#%V zMsK{XSJQF*60SG+h4f(I#93`kr63X3P451iPCcs;90z(4<0Y;guaU2PUYHqaxTBiccL2M9S?$ztn;K`$- znmPt*8U<_&(QLbI0(w|F8w3qt6-}@n3s*7FsvwG3!H7I&OR7?2g}#3u=|LjhB57h_?c zKuL-Y&%`EzrsNVmu9Ey*BB>_OR@6dzV^9KoYeFuQ5LJK~gORXD7ugJVpE89e^!KPV zJn&qX+x)&$E>x4b_E}^!YV#d)ReXG?i3`7Vt_sJx7G z9gPm6qtP*Rw9_GUlt<9SY>Ez`qw4rM%2|U7glN&nF9Uv8FKcY&wXB&^;VPMDpgHTA zMinHx3kprBUNt2HAXY3JwUPAj#5M}jPL7>w{$TCbbJ2TiCOE|eqVFRAv1h7|}^VAcvx!9oKOhpZ4N zD#D2vyO5LZTH(>E3&KF5l4IdYNf`%a1OtLW_o zR&=FYoRVXoDFdyS0XW-ARC7xp8gvR0Q+5SRM|!6|B}5;iFShcsJX8Q$rQA@vOU}#I zK!AY=K~vASl6p8|@W_VMS1gpk1CSIetrS8RWP*c}%(}vg2yhh5aT5=R^M!-y=t$v! zqQTO#QYutvlV&?0H1V#4ciT+5c6 zBMdw0)U#lt)FpvauQ-^I034G>=~T0inu47zd-i}EpaAAnCcqs4ZN$8~W|dj>IdG0_ z-L-R%K;x*hH)_!{RkhD_4uO%UTB>GAp1DW+BdDtOFyn~Ive8syfQ!iy)E(fqvg=%} zyOS0#J2--axeH(tnkr3J+DeuN&u|k{0^1^xor9Lja1|z;5#1M42}cnns5Y7wAMT4u7W&;<;$olnHN;yaE38M-ul*?|7 z5V%rCd(_#2BhWb5TbL1U8H3B|=_mrtDFkQ+4uoz#?c7!<7M*d|sgkdO`G7ejRoA_2 z-8lp}=#>5F88A$vC~3;hWGy=`sbvOb%X#!$rmRyfV0#HT=n^Fbshs6?byfvLmv;(f zr_!ib8+B_K<%qTg4OK&l-fST*#72JS|OxP~RD zR6B@hIN%uHje1~IOdLwUY$Iw(CMHf{?FOZ60Y*Vd7hbs0Ar1j4u$34@g3JUsh$M1) zuBvgOUzXyP{W4+z;ns?C$aRE!<6x*AR)fyP^&n28uD~HwFT82n?rkYxEX4r7@LDN} zB?F9XG8>6jTyR0B7Tbw$Qq7jMb{C?yO$4u7Ka$?Ce%*R07Ptf>s*&R?JbALQ~s^>RU8W;&Z$KuGzO5GX&nShDN7~oc%s*%9E zu~Jua(W;YEVkAyt77@o7%OEY($H=;U<#p?ANXr~UDJ(TDo)HCn1xW&rgQSw(bB|*; zTzPdHcKVZPSK%`PY`ey$cGjs^m@rN*cCqIUn4H%}Bb>L9wyJdgo$$P0A!TWwFCD zI+`6DjMyts=QM+m$jK5gUh!PIAofKGb*EX&1syP8D>!EXg;iP$a>OV}FUX-BS?^qZ z_0`V0bthZ8THO)WxtYX)6dUM`9$S!_IY5=bJ`=L~urZY#zk$^XyyxIFGFbqPukuNW z2E@^_N(YsaJ93blC_ZSa?DBSNxj*Tph1Fw2#Rq3ytuwWvK|ygKfWUXlR*Vf5$Fu@~ zF-i1Bpb%kZ4^|3!2Mp^cV~H3lq!QN`>ZGzI1@y z+a1}o(MesRW`BYruu_5;0FN)mh#5_?fa{uOqstVp4ybc#27m=|J795x;y7}7nlp-5 zhja;s=NK+jJnDW^GC5CRQMGcO&GMuN+ggBX#k1YolfEnj}iY&ZOXjUDtmxtpL#73-QOqFwahI~Qz z!Ng?(A52LBPI#pOUM^ow`vFfc2W#oFTOTb~DeIK9*IhR129F=b_@_#xVk*a$ATcTux3)poacT@3qGJZeeqwLtN$Vt}>c(nL39>o}h zlXs6*;W8|05Qf1`Xw?>q(VF2VH1$&Hq>8%7v`Hrw|2=v>Kp>TE20^&g2=DYnz#uF$ zL6iZD^Z^57!Wv{vPlwBmpUYFL0~`y_i9%z(fjUD7FZxUqEi4!#5v*XDoPEQsJ9ao@ zn|E$=uG+S9^UXW1+q`w_?rnSaT!Up2=Tbs&oSL&GOvW9X$8NlJ^Nq-|W5;#HLK@O( zBwr!|b1^3J3B#Kt#?8 zif5Lx)DWQMfj&8FqY|8b=&6?I-?;E)wq)`T=2cjp= zzc|HOoOBNp#Y4XVr)r*Pus1=v5Y@R4?528U9|>iEF2E21D|tuuVPU(6$WjCee`Ful z1If35lGCF{^o|o8jVs#cL1b7H6_O)S*@Q|pKVj4&uI9Ymn2ZG;AiFRMj7wbWYy-*K zJusU=xLOUK#ZZd`FT*NI1b7;;5k2%$N`XME>^@AhO08Bo6aZJ~*&*}Tl1`XetHK4( zVb(4qVwD4uC8Iny4%9msnK)V}NTzy}Nksa<(h##3!05ylfmt^c=chOs$PCjz%2IQ2 z9tVrnbF(5sLxy2H7UT~2RgiaDq4h$^1!8J$e~cY^s8TyXA>8&wc4)SogMf#7)md?| zI?(Fm{AXMM*&j(7-T!0~iZDfnvpzg8PE*4wz#aouR>m~x#_MXIQ<_^=Isr?jQD*lk zY;yBx&Kj#6Z1A74Y)vpv8b<8mRp&6On`N7&($! ztAOBVnRU}r3S5XBe+i2Omhke^7E6cKY_KtbL?>tspY1AfhCL|qDt z^RYRMAY{$0R`+3H)yM4+D4uRA#wxk10XReOofl;et@1J* zUZfMv)`1IkI!!xq?O<&|a^Tjeou~CfR$zS;UC%96L5`I3;PQh|!PXlG=iP&3sf#+r zBFJbPm;q%Rtd4{;5i&9gw*R;cxIedX|5R51#%&d zDizA0XlkWc`C@e(DfvK#E4p>5$mhljhh1E7l{lc*Yj{MKQz7eSw^3<=UfP;7Rv zy>+d!WvD<5Ml^7KT19Mh(%C##ipZkU`C6q)aX9vsL_Vn1Vnq&aAv2ceN6u`B657&a zJZex_36=kxL_(h1GNNU~Qjht4Ag{bFem{Pu{Q-QB`Ag(GDBmG`5xrFXEK@(j`0$%&E)SS`X*Z1X8Bp z1x*-IS+MvrCG5bYv(Azrvr8+LN?8Kf1y@O&Y-$-$yBS~+s%~%pO1NBN>;Vv>O~D<( zv9J#KZ{897A8p=eD$~QQl{f|Ds7!$%&)K7uJd4?JFq9FcI%G#FeZx+f@?bLwlRXVktriW6|0LX#ia$R!XhWmCWE`5+>sPU$B}%#3>#F=?N^ORH}hfNY|cHENISXCwA6{j&YGs*b&&`vpI?<LR#Qx%DsLGwlw3$}aZKZ}nk`_Mo)uLr zXQ<*rF^NBsKEBNL?~{InW`YYfTlBX;0h#{0u&2Zjt!V>d$6-X>;su5 z=c;prG!XDbYihNxt-1-@U5C_cilMgEodGO&SvBV%ri2q2Xzl_|H_#KH1|qb25xZVG ztXc>t;DiVE%|f-+5}q0qLe7Jb2KNn@Pq4UBkf|5cI?+jF6hQQ-G*H&&ZGt-1Ag8fT zqjpG(?R8ch2c{VHR;@_R6rGV9C}{+vsTx8Vmb5m*spvbNL50vw1aB$GfT?#B=Ykt7 zuAm=KpxwwrVYud|k#{r;&Kj>h1fx9Q;(!KT;OM34%hH!e0l>jz5VEX3-VvE3?3&?a zftS7X@mHiayO%!g?$OKLTk=6z%UCMYN}KL&DsceTMcbzUtXtIdP;Xs^rXOxDU*|Q-6iQw=_^LD z{nkfaoV4<(Y$1TDey?4U4GmuoBrd0fBY-(X*5D&JUt9%0%?3BDvlP{ zNpaG+i}0Y(;pz(*kDwvPMIS{mK}W)YZ1GTbD!^eTOHO2OOfD`-OX7`bt_l$ECI*`e zMB}(3Ai5<>qhK|QF)7o^1u|1`zYcHUsEJ8KUQ^739f5k}RJDSNpe&5)`*8;e=Ma!v z@HL1!h&6-@XOLu)IK{eQIp~0lnOyWo+I{A&Om)j3HxZZ%3vUgGwpD- zM+n1%T$V&0gUrXm^X)8}awAJY_crtiM;JB;|pjC&3oIT_Q5E$uWUjSfdILX%x(H9^@{Y;Q$f;lvs4Q&`!!IWWO z1-Z2rE#b_27y_*EDo#Ga8-buywws$MN+-ZDAokd8f){;+Uv2;v?c&AY3j_t5pev7cC^15N0A(G-SqBpW494I9I4*@UFA4En!O5Hvtx_-$ z^gTXw>TG{pag;@0yil41#~k}N#tCH%n@A}g*o3S(brg*983sI$G+;Ynv@mf&JcFKu z{yA4G+b0Jgbqm3aj0D9fkhcPfdVqAamadJn(%C8qf}TA{v=eFK%b#RMbLx$FJN%cB zuI=5bxzj4q7&q7+B$7$u?Z6g*r2q~Vt5-RC_EvIx$93gRTmTDSeffqC@%78paE2iL3iP<2Y}rR)|OJj zf66cL2S%cBH(lAcFtC(T(A}@rq#XE3OsV0OrV4cz`G z_<1cp==sO+qtbV3e0$!{T6y09w<-9|syG3|V-sM=PNr~-a&t-mpW*-#CRzXetlIwo zzQ_Cz;w#UJ!bJdV9Mb*HgQHob2oE~xlpIH%Wn<;yx2jCfai zSA`33-yUoZ?`rQF|Ho(=oY&%hESN(err_D^UFZK)gJZPewlZ;j zqNMwenXqR>u1w^5rk6F*<53H8kt^@HrtcHpq)F*{1>?NJdxA;ej~Um2D1Xr_nUs|% zuxEI+i=x~QdJmZ_FOC9V5+!^%a)A-7XU0ptml@~Fy;m6L>rFNK zvK)74*`>naTUsYD$QbnX4bhE4?@jQ&(R-8pzS(;VfAyU|wHJ6-NsziRs0mW<8VOTZ z^9(81^hPCAUl9a<4Ptcc{yMSVv!U3jZjO7`F}3$r?``t?cK!Pf?`@`A?_6(O?}}XS z_TFOx-|M|kJN*YSm;Hx0p;_byybqc*AKJdaI6oW#@gwnU`>27O_p$9~n3Ny)K4Eo) zXGFCTACuBQr5pNb{reg3vl9L}@AGEneZl*paem4BZR7kC?;F|~-`o&sEpNO*0%$}EU_c7!8 zN#y#e_dh1^lTqN$rcKz-qp)9?F#inTzo>!!yo7H)e5Mut0^73?9#fdV$o4F@Jw5RF zz5FNu_zv9{SOFKp9Tl{O5f@ppYvGO>a4{p+S+OHT+%dCJa=zf9~@MO46dm|05OARZ)#Q0Y-%T-ps z&2S&{7cJl><6m!kw!kxOVzx?*-UGJ50t!YM$qOfb=;$>Pyh zFg~BY1IAaRuVj2>`YOg(g=70XDex{jA0y5hor}a7z^VFNhs$r^BjJbOSTC-_a77v+ z5;BDlmFI5bqPZQ4VR<7O=M9iA#$HEEzTo($cZ7t&4+j~%YqHztfr^phkDyQm?t6?2 zR&a3ogRGmfqUh3MgjPf^Lo`NOiKq^(z@BoA|3ysI@Ugp~bxRH~6vd)@*GlK9qAZjQ z?koi4k7diy)d^tnN44-M+T}kBA8GHi>ATnXo&$#h&T|?5JQMzWI8?8GBT8`}Q{2yw zUINGHp0)xWfZOaH{tFlpTCp#*V_(FG2d&tL=zg&k@DjQowgO%acZ5t{!-&^fv9F{1 z^;W#cTzw=vlC^zF9i9d@#JS~1}&9>x+X4l~jgU>KXU zpga9{Ntur*l=NcT9f_qHI+8PwlcmN%qhusyZ+_VuisirCL{Z@Ye z1GeXb@JyRzAF^UXOMe6Mx~fvw0eP+3XzN{wt_?QoC~j%gSH(VrsI24Kx(Rv;rj6mb zaVAPqL~{ZX4%|Wj&pztBr5_TdQbt5@;MU;#FuLJ?gdZL7QMx~71$-QC(`)d#+=HSq zaa`h%vU^E};e*8$qmvQmS&5P0x{OhZoS=yPKY{9^?dg-2CtRvEFydl5(4}U}{FIf` z|1>=QXZX<@>SyWxoE7kSy1!rre39-iSpmOI_wQH%Uxqu{==0@{*vy$vI71Z z?kMly*q*;-s&86JzXNxKLcYt0N37Vtr~7+W!1v*fO8y6UBFfqSKk!8*{eXG?kssa0 ze}X$gr2h=h_OF58b_1Kp)+98T|;r z%+ie*XpLUNfI)tAilNpNOA)aBF(!IhYxFPzBKRzCja^~Ku5686Wyh|zJ!iHiJNx;I(@DZ0~Ez$o3Dtbi-&wg>Yn1Vj_~YTI)SlU~b@MhiF6eUlZio$ej{ z=>G47JL>KjBX(J_x4^Aw%csJrNb=oGu*XVuE8I~TPh-SwR_yI?tBg-)=p9y6hVExt z0a?1ot$-Zd5gy3f9v7Yn3KQ@|Etq7oG3+CroxT8%@AIR3USh1!d}W4Ktf(s8cUb{7 zx&teqPIto!I7s&)E8sBPQIn=@&)x7ueL4b9yfW{BFY44$JKeM3iHdtRJlp4+j@(P1 zVITR=fiEiJx$yYU<41S;`E>t=6>uNi+ZUPW`{9c+AA={Va@vl003QDZ{ODpsxJ{QD zV2KW@OFvMsfN?HSmWS;GUIWr0)Q+oVDF|B(DFV&bjajAyhm^D>ttkWuSu{Bm3t1vd zoo9mKxXXL0x95H+KY>R}<7t6X2Qel!cFDam(is8t;YK3!d^VdsoSiEj&dT2p(=%|= z6H*6@o8D1M6G=F0+A#{Gi6A9DxQV|{WmV8ph?(E;(rzW zeM&4O0dHWyg(MmysZhH(L{h$%DTP*#QpV-Jo{@vn&p7ba47}vzIxkhdjv3c<%xK9f zBfOVD6yl5p z-KaDe$lcxt1p{SR*8~fAnO>V#jmnCZ+}R9m?lp>~iXnx-t6GXv`bo|03)||)l3|9{ zWJF^1tqQ6`rUA-)E!oANFs2Ag-cpqmCYMGOGoN1s-b!BxpRh3R5%5%U#M3%HyghSYO6ut28< zL%-UzlunJX;hc4|cn~5+H1a{{!vSrJSyrI&?;^y4-p)~aAKbj8(+`EK zGc@7J>&Ki~P!yn1O3&qDJ4@XfW<+~ruTcxuH9dlw!iBoy(o6rZ5rks6b>wrnY_DuT zEmHi9?HggCRy4J-sh`mZ{J)XZ{=7xZG~zG7@Ahl`h5TXk-?m5ZTs}|5&qMq-JH+={ z@qc&R#(dFg3`^sLn7QfwR%*756NYUb)@@(GMt{v;$)9-`6z)nCpaU1}g~b^B02kn= zpO)Q}Kpo=P@Uc5-n%voi`(+!Qy+BhnSlg*(@6M)f!qTDsXsTe8s&G&%Oj$EWp=PaWliG`oR!>9rv9^w_QXRt< z+SW1uY;?J`TM2D7y9>R$alHk-K)ZGG&&rm|m?$~9)_dGm`WK?6V^FbNEZ9(xh)g)a zkh~ETq{TLrQU-}sYWix~LyD*)$=C}+b46f%YHj(Ku`%=hU9P4n|89YaQzCh&lsi%woBm2BH6DC@p~YO22hIj|9Mig514>mJF|| zqwo89D@Z6xxO!n^){K8CYEl;R{l~+JBfu5-L5H4% zpYXiR(7nyU9CHI##GD&qofT*EEjQ~{`_~|)zY`y{*uNIP9Q4ijMJZd<&o=dQqx!j7 zej5IE{Q5iaL1VZ=XK74Q)rEQ^N1LkhJ5a`{RLgD!P7rm?(j;45^m?i!+9PrQT((OzoG>?tA!ljSmd#~nb9|-%>eKjb z>dA>|y9IaNoUOROz<9CXHUofvGuaXULHIGBU#xx}RzELQKQEUbJ)b`Y2%^nG#2Sth%g z&v8}bK)|Tpv26_?UrmJx0#$f$U>w@Ft}=!aot0bgiy+KCYD{LRQ8+^~XeaCQ0|;z| zlEYzWlZ&ktV9P8lzE!;$GONb)MO5)j$pqDPhq4v^`CUN59;MllA89Qr{KB;Iv2Zb3 z*r*knY76RD*W3hK!~Bd|p;jkUm0u$8yTG@dpr=awjFjkq3_qPVgc1MKGsO5`oGIcf zGero*hp0IUB1FGGkia89K+e+w(QxS+9$cVCXsXrg_AgPR0>t;>>ISs_x1u5*>9UB> zS`ex+-eOCbPIC6}jTmPnUx6JF*kG)HfO2pX5|;9+mGy~18Crb0 z24(FU*uYHjrbG%SokkU=1ygKIimgeZH7POm)HYNDXwfMSRj(8=CUiq{0i5{J?qz7-T+A=>XmFwxvqK5$#*g>jhr68(@!tE80_RCXvfGu} zy9#-?GY2F&$hWy-k$d`hsV zXrzbataZM=)^VOfW38L_+;}rAwmP`}pH6J0OL|TdsKYDQ96~Eou)(TYnbO=;T>h$( z%uQ7yrYdfZ^PWF=t}v~XqVb)!eYX$oJVm;9akoXp>wJL};eQ?*9~g{E01%(CH6KxP z70K(16P*Ns6*EO;{`NphFNW{-LsUPjaN|DQVOpZ48bZgCRr^FV8&{iJ?i5-V5BtI9 zHP;Zq=Uq5itk9fAd>?U87pX5O;_`fSArZD|lD80fD-;GaAwONLS;yfs=kOwXLXaLy z!i6WR#-|G;8slNLn7b$*q%$sVIBF1r1m*UF(>4m{u2B>lnvfFHI%op# zu8T?Cwzcs6ZXp>D#v|PpaoPuC=?#q)R4 zs}1b^sQeTO;+}4cXa##0)KW}vslB_4BH~s&z1#Vt2`&-+%|txRJtJx+5%;#1`E(CX z5TM?lrGD;JKhIS^&zGOhLN#`$BheMM3DvG|nF6y{sV3sgLbYq9#7FTkyb@|LP!GyG zxA3~Uw!4y8rxT|OuHmXRco?0Pr|^nzT)AGXx1wIfY|V8EW`AE)#521rqFunYUrL&B zT6fD8?Ad__51<^G0R01~%SMs2l(qS)*rmOnepnZRrpt7L-{BDbQ9x|#i*I?cN z+@z(;C&V8(0SHA(Q?k%4{=f)K2x*!LcmI<7wT?=ZNTuwvbbF429kb=%5A81X;E zo_&;`PvGM|YU~7mD&ZR}X7T$pxuXrDteIPU{>>yQBNbuy#^5f}q6@YB- z?bNPQPgva!JIIz64S0ClxGZfyRSu^p;q_pKJV&0d$rA76-y z_*(_R8G(1)CGD@rJdL=0v)8U#Ej_bV^4JMni|NSf>*)il&$6WTet>K&?9AU&X18zw zKq)~R-kwfYS%d%G?cja1W$@yqH~R?a@&8m*#9y6CD~$Hu zjI(F1IV5wg2)F@LXf9Uk>t-TDt<|~?b=g?%ghwl0trvA$L_FXZbXx?col$*!)CT-S zv?y<#qcNmX=WG~vcel`s$8cA-MZ{ycquV0X7{X*PvtcKi@vyu>iX(yWJSpzAI{xQVGGCse@?muVRitW(K7 z6s4EXYK+uIYT1vLw2)s?EfNX7$L&0k_3&z54ezx;Ngt(;h}?%)S6JXfQUZOX8Xpo$ zF7}b6i+wDVK6dS)MmR`u5XzSOF1*PJQ}fy!Wg-+$Mew~rUfg2!;k=yu42YG!V5&6E zhjPwpxgD2FXH3-MJt~d4eIQ#SE{FvMoUO`}o5!IB02!F^U+)$nDICMCQX1cY1J{Xg zOF(mq$HdI#m~3Bo6pt_C+R?D!nlZN-GUHQXW1l0kG7*ZaJfgS3(Zgd5xb$W601CXT zSQ)1!4Gx?CK8`%pgZtv^hy+59_S#8$bLLVaM@eNwJ{>4CW6=0`#f>42Z~>m)fn&sf zF@`5RrxlLXY6MCDVWdbx(SJFD#{5_C3mfBv*sj{HDxfxGEWq9Z(810r0Bk}w*KkQ@ z%zve1rPWXkPXAR1nGXA6Xza(8DFM)y_=X7Jqip zJrN!b;L7!6Y?0oyaIt*z3_gB@OEfo2QTI2;aeup)&#Q|c4Vg+sK3tA@1Xbbu>VFTv{`c_- zm+TbKI(7kz)l;2K|6inK9dZrqkw-q|R!~#bny9L^;&8<+V%OhksV%%Hz6F+Qxknw} z=2G*+{|VbWCj=6JwA!lJx+AUTp#L*gHPhC7Kb9}_z+k3Vy?(-(z%kSV35yB;NZ&u< zBX$u8MGZ>C{U?3@W#ZT;buoc1M6+gfKY_0MATH4uWfAo4v7m`N7V;qxxKz}l6dsAV@mIhRQA)^g#lt?HsC=EH+9F5HtZDis5NX+JtYxE0SP z@ES351bXHzH%|oX=US=tkLB4%6qC_AMK}N)$D7S!z8tYDv2)U_yE58nEW0D(%wz;> zXVcina8)v{1U&(48jLwN8Kdq4Tk&Tl<9X3Gx9OMJN8fvd%MGJ@tB@P0THki(&!d7xzkZ&7c#8l+D0LH+WVetJo4 z6@je;aAA8+KD@L#8DhP;G+;ls#C7m@D16NSmVCd>Z$r%obB!Gq#5+H)v|JG(a%I}Q ztRz;BK+4esHmM=?lq6JHmYSE7lr|EerCyjO{q_eNVuibjyQFViHPh zMA7;aY(de?)3i@>PIzWBZdU6nMLw-K@fEn1cZUYe6D!f9L(4n9IJCkJRWFpxJv*f?LFbOA^lWm^6{W0a&W#L!?=xKhU`GZ=;h6WdYYDjkPeY`+*JcBI19I+8B~ z*)Il(Q7LfM63+yQVX4rxd7@H8W13-h4*6+%_L#||<^^xfVL`#iNRNz2|{S zUIau9VB>IpHrO?|GY)|rFJAHbxN$z*+|u9kgGI~bz1}k*!h#Km#R_HO3M{A_xtZ(# z6a-e-V;=n2kE+zAPHf$+_cE2RMk1pQ7C`s-iLQWMIeBM8>JjIqBzR0CP~&uLlj~Tzp0c~ zdn13;kmMzJ_Q!i(=g5)PE6H<1S|>m;C&YRJ5bxpWy@{W<@TbK$ zHrlPi9cy4^(E*}?|~QWi^VCLbce(O+ErN6=m}PC4a}WDcYyeQ zqf@U*?Nz+K#wL~6lwCVuM5&y2lws_NDW?j4hEuJe0YTc?%X|0Wq2am`E+s{2kQu#2 zfAF{fp0jf%To|!Lb6Fs)VVH8^3mR3aE+~`=VEJ3k3DSv4fBVb+caG9`?)}YQ`Eg31 zjYR`kiE~G$#S43>wUwL@v2^_h^nf{KQ0yzoI5+y_zsrft+&Ml{r-{27Gh9H9|FancJqxuo80K1gldbMt5x&xXg1&cM3aHEAbqE%6vSX`=}; z)g5_*Y$Fg)E{nD46zWa^&jyO!F|6Nu;OyQ86JNZ8*x(Zr=0+l*=M{1u%5$)g%Usui zb0;q&#(m?pzckr9Sp7Ji1bjr(Est`S#T#nuEU-dQ!CPpsu#rB+ zo*GnY7ZM=1p;S{J#tZ`^1Bj;68eHC>47Lu@zP)`-gs2i z#>h@#&1pVrBlJVvfK&a(7dtlfkcpV+)kAm|g$ zl)x6}9;aEcNw(RwNg_)`U~g)hrFna;88TJ$%Y;rCZbc_a2!Tv}66x-hhYfXgpiVMNVicLp_&Em>0WE9WM4 z>CCW@3}v4%G)ClF@N3b2ChP?AtjA+^{&(AzHvu>z=qx})rq z(lWuW9rnoqh6#6|?6R0AcJSey@UghR@7j@~vFp53EmR%a=EE6; zDi_g4EqlQ2zlI}V(j6QVOXJQtLUDT2h>r#;jJ-zZet(ga=f;I(#WbusC9aD2KS;$YgbZ>nppP;TE1e;(DE! zD1S1E)#wnCqqR?6vEm|-=G3N(vwjEjo!;|oZnni@6mEHRAUio;d1U!P$_rP*j=NDy z;yYlIG#n2}5?+L;SL#qq5gQUZjSJ)VcnCn*%6&8VGa=-`H83X3^AglhGa(S7QzbCA za~}>u(MeP{1kMpu%=lIa4rC>S^w9#p%T`l%*lu6{ykw9Tui`z1JP{-xAYOg#RiMi9>F!R)O%gE%$lJh?dOZGPWH0aDfNF z6wwo?DH`+LqQyW{`;c=(F98PKZAnjTW7a)-g2lEXmG=bH} zosdH}Bmr`e1}BXnOC>~>0+y_3TB@LG;5PD=4A|sIwah(?J(us*Dv_v^rNEduSb%&~ z=IGLlQO1c{*`r@yX{t51gyL5;M%hikT+!MX@|w1o(VqD|g8|49qUQ}@$7Pty4D$tc zbv@|%lnV9c&SmR5z2%U22g3gfA+w5M)YRhJ5E-Ld3gIilQ)@R}j`i98ltc1S2>q4NU`{x?|a`JiPm#{q1$AOLvj zEv5R6D)k+JP?SEAc|u|kA@WS73OF{yn-VP#YxrMcbtm<#MyFRP8<-825|}8nsJ*To@PCMwbnMZ$5P|mspcWZv4ANvWZQ(=zqKARX z?N^b~KfoS^eGE3rhY~Rzh!t;Wc`}7h>Lv&Wqs>TbmgCJRt$A*A&BH;y6l2n<$z+G9 zbkGUI3Zzy)Sc;W;xx&Ff;L4W3D0N>VnWgWJOv@AH3(t-gq*k?-rDJd@1@G9%EXD%x zzs;r9vxSdl!22+OBpMt;kVylTLP0dpPwIxtBmA2P9*BZvJwc^S?qg(V?H#S_$JK#K zbg>{Jio$+T+@$&-2L`;K7VQFxVEr#p#w3>iMV4jW3z(fb)tEst^>P*%H6ke(wcj%6 zEahFh#LnHZ#eW>NSj4j@-eUio%t@)QEgn?@+;|x)G;yN6XqV|;I(rYk+jS3q$ecgo z#}e?KU=J*@u00Nqj@r6q1xr2%Z>?Fib3}Kr{J~9N0i@ca4L=@g;Pb0y6Je`B!nyaWa z*;>k#=)gCPyKE)wRG{dnWLRuKWflZzjyFf30HE~jnQ0K}t@4(Fda4W|c=b)L=QaJe zVDVYhQ2f5lJK_kVoM=7QVJ)q>QR_=gf_rD51n-NGhN#$`G}2J&coqZWXrj(eh$NwD zW&_}KD2F|iXimp{cg`t=7bfaFSxVtGiQFAq{HRb0C)$g4O5vTe_ux^X6xw?5OQjS( zIy+S6oKk3oz}!;`imIG_(JS8kuhoKnHK>Q*n|-d%A@y*gbLf|#i1Fvg0feoHVQ*t6 zs*jP_s=s-hin5BnKR=?^L;!!{TeXP%{SC;jDg8F#WU`ysu}(^xBAGk6W6cDl?i3Ib zAp7C$AiLz$Kz8*>gY1{A>CnwcbkJ@%V-P2Uh}DrCP(2y9o*HCtIa$d5T8AMLe?r$b zu?~(m=z7Cn6^&MRN4++LaiSakuZ8h*BaAF1-L8WH2=rQf%0Su*-i7@{jp%Wno+Vx8X;muKwF4 z_#N_nr+nWf-*?ORJ@S38eBXy}SU%lX^(?a>ayjp}r0)0Q>wkcs58`vo{}8^ojrw8y zK#b~t1ixecNAVSbssAy$KF-f4B<7QJQUdCK3N8_S`k!XlXZZOnKF9pe(Mfrx|9QBk z{V&M(ixT%GasM{HB7*dPNBm!wxUY!&#{jpt0AT)Ic*p$T!*_qv|0;eUI{K0N`FHj6 zpX%qw>gOlwhoTIm{F(CoLjBCc(m^Q;)XyUI)1!X+)X#wW8N?6ZF~pxU{H6Huhw)KD z9Dfy@DCbP|b2fg){BxA&Jn;y5APY4ieQ9L1aUkfKs2jnw6~r6C{tLir($|6g7s1_j z_t$?3nNd$8suO0^&uL=iVT7R}ZR}`$7}$QBTLdQ$3UYi`(iN4rU6FFW!>gUVyn~Ay z#Ud5qm42Pvi({4mVrXiu%M;(pZT0pD<(>#{FL9r@{mSl4CTbFwBWFsK*zMh@SsA(# zz&{xsY>oW{&^8vnlBLRxjqyZHn5Whl$Sud`oEYra%?|l~5o2!Td!SU(fVB|UfkuW~ z!-a9^ z$x0A}L|3=;f|Pf+pwSWk9{d6=9+e+kFYbRasW3J-8@?}q{1w`SN$PaigF7khd>!+_ z67z)fFKy9!VSrkn3W>fJ6LRj=atPrQRm<7bqL#BM(Z2VdNc*}_%TXY)Y+1Er6Lt=#+M)};gf?q0GB>3ojkV);@DV;ZqnAT|D)K!kT z*({D%k7gA#2*Oj43R~L-5phOn#*uJIwp@myP)<~8JIH;*0d4`QNN2hr`NCd2GeLFk z06Riaf?|oTUzGsAhM#Faz<12Ai@TvB4ym6h{LF=X_Jqi@{~-9Httd$-Xx7HiD@0RQO@bR5+OvL419H$a{wC1O6)zcU;cNrEEfn?etgVNGlLboT?hx JMq@nv{{Xc&_p|^2 literal 44464 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. AgForecast is an interesting case study, because it implements its REST API using FastAPI, which in turn uses [ASGI](https://asgi.readthedocs.io/en/latest/), the so-called "spiritual successor" to WSGI, which we recently started supporting in OpenLambda. WSGI is the basis for popular Python web-programming packages such as Django and Flask; new ASGI support opens the door to an even broader range of applications. + +In this post, we describe the challenges of porting AgForecast to OL, and four new features we added to OL to make deployment of similar applications in the future simpler. The features are built-in ASGI support, direct GitHub-to-OL deployments, OL function environment variables, and OL-based pip compilation. \ No newline at end of file diff --git a/_build/html/blog.html b/_build/html/blog.html index 6de3d01..dca8da9 100644 --- a/_build/html/blog.html +++ b/_build/html/blog.html @@ -155,6 +155,12 @@

+
  • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
  • + @@ -168,11 +174,27 @@

    Tags

      -
    • +
    • + agforecast +
    • + +
    • announcement
    • -
    • +
    • + asgi +
    • + +
    • + case-study +
    • + +
    • + fastapi +
    • + +
    • openlambda
    • @@ -186,6 +208,10 @@

        +
      • + Case Studies (1) +
      • +
      • Releases (1)
      • @@ -201,7 +227,7 @@

        @@ -450,6 +476,106 @@


        + +
        +

        + An Application Case Study: Forecasting Crop Disease with OpenLambda +

        + +

        Maria Oros, Data Science Institute, University of Wisconsin–Madison
        +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

        +

        Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

        +

        + + + +

        + Read more ... +

        +
        +
        diff --git a/_build/html/blog/2026.html b/_build/html/blog/2026.html index 10287ab..ac146bc 100644 --- a/_build/html/blog/2026.html +++ b/_build/html/blog/2026.html @@ -155,6 +155,12 @@

        +
      • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
      • +

      @@ -168,11 +174,27 @@

      Tags

        -
      • +
      • + agforecast +
      • + +
      • announcement
      • -
      • +
      • + asgi +
      • + +
      • + case-study +
      • + +
      • + fastapi +
      • + +
      • openlambda
      • @@ -186,6 +208,10 @@

          +
        • + Case Studies (1) +
        • +
        • Releases (1)
        • @@ -201,7 +227,7 @@

          @@ -454,6 +480,106 @@


          + +
          +

          + An Application Case Study: Forecasting Crop Disease with OpenLambda +

          + +

          Maria Oros, Data Science Institute, University of Wisconsin–Madison
          +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

          +

          Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

          +

          + + + +

          + Read more ... +

          +
          +
          diff --git a/_build/html/blog/2026/atom.xml b/_build/html/blog/2026/atom.xml index f2812f9..c5bc476 100644 --- a/_build/html/blog/2026/atom.xml +++ b/_build/html/blog/2026/atom.xml @@ -2,7 +2,7 @@ https://open-lambda.github.io/ OpenLambda Blog - Posted in 2026 - 2026-05-18T20:49:10.786309+00:00 + 2026-05-18T21:40:18.247222+00:00 ABlog @@ -43,4 +43,46 @@ notes, performance experiments, and design discussions. 2026-05-18T00:00:00-05:00 + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + diff --git a/_build/html/blog/archive.html b/_build/html/blog/archive.html index 2c6fc4e..36c0d83 100644 --- a/_build/html/blog/archive.html +++ b/_build/html/blog/archive.html @@ -155,6 +155,12 @@

          +
        • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
        • +

        @@ -168,11 +174,27 @@

        Tags

          -
        • +
        • + agforecast +
        • + +
        • announcement
        • -
        • +
        • + asgi +
        • + +
        • + case-study +
        • + +
        • + fastapi +
        • + +
        • openlambda
        • @@ -186,6 +208,10 @@

            +
          • + Case Studies (1) +
          • +
          • Releases (1)
          • @@ -201,7 +227,7 @@

            @@ -369,6 +395,15 @@

            +
            +

            + + 2026-05-18 + - + An Application Case Study: Forecasting Crop Disease with OpenLambda +

            +
            + diff --git a/_build/html/blog/atom.xml b/_build/html/blog/atom.xml index 7d4b528..9d45437 100644 --- a/_build/html/blog/atom.xml +++ b/_build/html/blog/atom.xml @@ -2,7 +2,7 @@ https://open-lambda.github.io/ OpenLambda Blog - 2026-05-18T20:49:10.778644+00:00 + 2026-05-18T21:40:18.234517+00:00 ABlog @@ -43,4 +43,46 @@ notes, performance experiments, and design discussions. 2026-05-18T00:00:00-05:00 + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./." + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + diff --git a/_build/html/blog/author.html b/_build/html/blog/author.html index dea6f06..e4729e5 100644 --- a/_build/html/blog/author.html +++ b/_build/html/blog/author.html @@ -155,6 +155,12 @@

            +
          • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
          • +

          @@ -168,11 +174,27 @@

          Tags

            -
          • +
          • + agforecast +
          • + +
          • announcement
          • -
          • +
          • + asgi +
          • + +
          • + case-study +
          • + +
          • + fastapi +
          • + +
          • openlambda
          • @@ -186,6 +208,10 @@

              +
            • + Case Studies (1) +
            • +
            • Releases (1)
            • @@ -201,7 +227,7 @@

              @@ -352,6 +378,44 @@

              +
              +

              + Posts by + Maria Oros + +

              + +
              +

              + + 2026-05-18 + - + An Application Case Study: Forecasting Crop Disease with OpenLambda +

              +
              + +
              + + +

              + + + + + + + + Posts by Maria Oros — OpenLambda + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + + + + + + + + + + +
              +
              +
              +
              +
              + +
              + +
              + + + + + +
              +
              + + + + + +
              + + + + + + + + + + + + + +
              + +
              + + + +
              + +
              +
              + +
              +
              + +
              + +
              + +
              + + +
              + +
              + +
              + + + + + + + + + + + + + + + + + + + +
              + +
              + +
              +
              + + + +
              +

              + +
              +
              + +
              +
              +
              + + + + +
              + +
              +

              + + + + + Posts by Maria Oros + +

              + +
              +

              + An Application Case Study: Forecasting Crop Disease with OpenLambda +

              + +

              Maria Oros, Data Science Institute, University of Wisconsin–Madison
              +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

              +

              Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

              +

              + + + +

              + Read more ... +

              +
              +
              + +
              + +
              + + + + + + +
              + +
              +
              +
              + +
              + + + + +
              +
              + + +
              + + +
              +
              +
              + + + + + +
              +
              + + \ No newline at end of file diff --git a/_build/html/blog/author/maria-oros/atom.xml b/_build/html/blog/author/maria-oros/atom.xml new file mode 100644 index 0000000..9f02b6e --- /dev/null +++ b/_build/html/blog/author/maria-oros/atom.xml @@ -0,0 +1,51 @@ + + + https://open-lambda.github.io/ + OpenLambda Blog - Posts by Maria Oros + 2026-05-18T21:40:18.238902+00:00 + + + ABlog + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog/author" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + + diff --git a/_build/html/blog/author/openlambda-team.html b/_build/html/blog/author/openlambda-team.html index 083accd..2c238c4 100644 --- a/_build/html/blog/author/openlambda-team.html +++ b/_build/html/blog/author/openlambda-team.html @@ -155,6 +155,12 @@

              +
            • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
            • +

            @@ -168,11 +174,27 @@

            Tags

              -
            • +
            • + agforecast +
            • + +
            • announcement
            • -
            • +
            • + asgi +
            • + +
            • + case-study +
            • + +
            • + fastapi +
            • + +
            • openlambda
            • @@ -186,6 +208,10 @@

                +
              • + Case Studies (1) +
              • +
              • Releases (1)
              • @@ -201,7 +227,7 @@

                diff --git a/_build/html/blog/author/openlambda-team/atom.xml b/_build/html/blog/author/openlambda-team/atom.xml index 60a39f8..8bc17fc 100644 --- a/_build/html/blog/author/openlambda-team/atom.xml +++ b/_build/html/blog/author/openlambda-team/atom.xml @@ -2,7 +2,7 @@ https://open-lambda.github.io/ OpenLambda Blog - Posts by OpenLambda Team - 2026-05-18T20:49:10.782865+00:00 + 2026-05-18T21:40:18.241543+00:00 ABlog diff --git a/_build/html/blog/author/tyler-caraza-harter.html b/_build/html/blog/author/tyler-caraza-harter.html new file mode 100644 index 0000000..e1b8ada --- /dev/null +++ b/_build/html/blog/author/tyler-caraza-harter.html @@ -0,0 +1,561 @@ + + + + + + + + + + Posts by Tyler Caraza-Harter — OpenLambda + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                + + + + + + + + + + +
                +
                +
                +
                +
                + +
                + +
                + + + + + +
                +
                + + + + + +
                + + + + + + + + + + + + + +
                + +
                + + + +
                + +
                +
                + +
                +
                + +
                + +
                + +
                + + +
                + +
                + +
                + + + + + + + + + + + + + + + + + + + +
                + +
                + +
                +
                + + + +
                +

                + +
                +
                + +
                +
                +
                + + + + +
                + +
                +

                + + + + + Posts by Tyler Caraza-Harter + +

                + +
                +

                + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                + +

                Maria Oros, Data Science Institute, University of Wisconsin–Madison
                +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

                +

                Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

                +

                + + + +

                + Read more ... +

                +
                +
                + +
                + +
                + + + + + + +
                + +
                +
                +
                + +
                + + + + +
                +
                + + +
                + + +
                +
                +
                + + + + + +
                +
                + + \ No newline at end of file diff --git a/_build/html/blog/author/tyler-caraza-harter/atom.xml b/_build/html/blog/author/tyler-caraza-harter/atom.xml new file mode 100644 index 0000000..934c222 --- /dev/null +++ b/_build/html/blog/author/tyler-caraza-harter/atom.xml @@ -0,0 +1,51 @@ + + + https://open-lambda.github.io/ + OpenLambda Blog - Posts by Tyler Caraza-Harter + 2026-05-18T21:40:18.240305+00:00 + + + ABlog + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog/author" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + + diff --git a/_build/html/blog/category.html b/_build/html/blog/category.html index 16f1f79..9dc07aa 100644 --- a/_build/html/blog/category.html +++ b/_build/html/blog/category.html @@ -155,6 +155,12 @@

                +
              • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
              • +

              @@ -168,11 +174,27 @@

              Tags

                -
              • +
              • + agforecast +
              • + +
              • announcement
              • -
              • +
              • + asgi +
              • + +
              • + case-study +
              • + +
              • + fastapi +
              • + +
              • openlambda
              • @@ -186,6 +208,10 @@

                  +
                • + Case Studies (1) +
                • +
                • Releases (1)
                • @@ -201,7 +227,7 @@

                  @@ -352,6 +378,25 @@

                  +
                  +

                  + Posts in + Case Studies + +

                  + +
                  +

                  + + 2026-05-18 + - + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                  +
                  + +
                  +

                  + + + + + + + + Posts in Case Studies — OpenLambda + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + + +
                  +
                  +
                  +
                  +
                  + +
                  + +
                  + + + + + +
                  +
                  + + + + + +
                  + + + + + + + + + + + + + +
                  + +
                  + + + +
                  + +
                  +
                  + +
                  +
                  + +
                  + +
                  + +
                  + + +
                  + +
                  + +
                  + + + + + + + + + + + + + + + + + + + +
                  + +
                  + +
                  +
                  + + + +
                  +

                  + +
                  +
                  + +
                  +
                  +
                  + + + + +
                  + +
                  +

                  + + + + + Posts in Case Studies + +

                  + +
                  +

                  + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                  + +

                  Maria Oros, Data Science Institute, University of Wisconsin–Madison
                  +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

                  +

                  Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

                  +

                  + + + +

                  + Read more ... +

                  +
                  +
                  + +
                  + +
                  + + + + + + +
                  + +
                  +
                  +
                  + +
                  + + + + +
                  +
                  + + +
                  + + +
                  +
                  +
                  + + + + + +
                  +
                  + + \ No newline at end of file diff --git a/_build/html/blog/category/case-studies/atom.xml b/_build/html/blog/category/case-studies/atom.xml new file mode 100644 index 0000000..133aedc --- /dev/null +++ b/_build/html/blog/category/case-studies/atom.xml @@ -0,0 +1,51 @@ + + + https://open-lambda.github.io/ + OpenLambda Blog - Posts in Case Studies + 2026-05-18T21:40:18.244931+00:00 + + + ABlog + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog/category" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + + diff --git a/_build/html/blog/category/releases.html b/_build/html/blog/category/releases.html index 8f65cf3..edbc843 100644 --- a/_build/html/blog/category/releases.html +++ b/_build/html/blog/category/releases.html @@ -155,6 +155,12 @@

                  +
                • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
                • +

                @@ -168,11 +174,27 @@

                Tags

                  -
                • +
                • + agforecast +
                • + +
                • announcement
                • -
                • +
                • + asgi +
                • + +
                • + case-study +
                • + +
                • + fastapi +
                • + +
                • openlambda
                • @@ -186,6 +208,10 @@

                    +
                  • + Case Studies (1) +
                  • +
                  • Releases (1)
                  • @@ -201,7 +227,7 @@

                    diff --git a/_build/html/blog/category/releases/atom.xml b/_build/html/blog/category/releases/atom.xml index 27ec46d..674510a 100644 --- a/_build/html/blog/category/releases/atom.xml +++ b/_build/html/blog/category/releases/atom.xml @@ -2,7 +2,7 @@ https://open-lambda.github.io/ OpenLambda Blog - Posts in Releases - 2026-05-18T20:49:10.785174+00:00 + 2026-05-18T21:40:18.246122+00:00 ABlog diff --git a/_build/html/blog/drafts.html b/_build/html/blog/drafts.html index c2ea681..6760eb4 100644 --- a/_build/html/blog/drafts.html +++ b/_build/html/blog/drafts.html @@ -155,6 +155,12 @@

                    +
                  • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
                  • +

                  @@ -168,11 +174,27 @@

                  Tags

                    -
                  • +
                  • + agforecast +
                  • + +
                  • announcement
                  • -
                  • +
                  • + asgi +
                  • + +
                  • + case-study +
                  • + +
                  • + fastapi +
                  • + +
                  • openlambda
                  • @@ -186,6 +208,10 @@

                    @@ -168,11 +175,27 @@

                    Tags

                      -
                    • +
                    • + agforecast +
                    • + +
                    • announcement
                    • -
                    • +
                    • + asgi +
                    • + +
                    • + case-study +
                    • + +
                    • + fastapi +
                    • + +
                    • openlambda
                    • @@ -186,6 +209,10 @@

                        +
                      • + Case Studies (1) +
                      • +
                      • Releases (1)
                      • @@ -201,7 +228,7 @@

                        @@ -355,6 +382,49 @@

                        OpenLambda Blog

                        OpenLambda Blog#

                        News, releases, and technical deep-dives from the OpenLambda project.

                          +
                        • An Application Case Study: Forecasting Crop Disease with OpenLambdaMaria Oros, Tyler Caraza-Harter, May 18, 2026

                          +

                          Maria Oros, Data Science Institute, University of Wisconsin–Madison
                          +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison + +

                          +

                          Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + +

                          +
                        • Hello, OpenLambda BlogOpenLambda Team, May 18, 2026

                          Welcome to the new OpenLambda blog. We’ll use this space to share release notes, performance experiments, and design discussions. @@ -425,6 +495,15 @@

                          OpenLambda BlogAgricultural Forecasting API

                          + +
                          +

                          next

                          +

                          Hello, OpenLambda Blog

                          +
                          + +
                          diff --git a/_build/html/blog/language.html b/_build/html/blog/language.html index dec5673..81f0e44 100644 --- a/_build/html/blog/language.html +++ b/_build/html/blog/language.html @@ -155,6 +155,12 @@

                        • +
                        • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
                        • +
                        @@ -168,11 +174,27 @@

                        Tags

                          -
                        • +
                        • + agforecast +
                        • + +
                        • announcement
                        • -
                        • +
                        • + asgi +
                        • + +
                        • + case-study +
                        • + +
                        • + fastapi +
                        • + +
                        • openlambda
                        • @@ -186,6 +208,10 @@

                          @@ -168,11 +174,27 @@

                          Tags

                            -
                          • +
                          • + agforecast +
                          • + +
                          • announcement
                          • -
                          • +
                          • + asgi +
                          • + +
                          • + case-study +
                          • + +
                          • + fastapi +
                          • + +
                          • openlambda
                          • @@ -186,6 +208,10 @@

                              +
                            • + Case Studies (1) +
                            • +
                            • Releases (1)
                            • @@ -201,7 +227,7 @@

                              @@ -454,6 +480,106 @@


                              + +
                              +

                              + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                              + +

                              Maria Oros, Data Science Institute, University of Wisconsin–Madison
                              +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

                              +

                              Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

                              +

                              + + + +

                              + Read more ... +

                              +
                              +
                              diff --git a/_build/html/blog/language/en/atom.xml b/_build/html/blog/language/en/atom.xml index 6a6762f..b96fdbb 100644 --- a/_build/html/blog/language/en/atom.xml +++ b/_build/html/blog/language/en/atom.xml @@ -2,7 +2,7 @@ https://open-lambda.github.io/ OpenLambda Blog - Posts in en - 2026-05-18T20:49:10.784103+00:00 + 2026-05-18T21:40:18.242715+00:00 ABlog @@ -43,4 +43,46 @@ notes, performance experiments, and design discussions. 2026-05-18T00:00:00-05:00 + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog/language" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + diff --git a/_build/html/blog/post/2026-05-18-ag-forecasting-case-study.html b/_build/html/blog/post/2026-05-18-ag-forecasting-case-study.html new file mode 100644 index 0000000..6c35ed3 --- /dev/null +++ b/_build/html/blog/post/2026-05-18-ag-forecasting-case-study.html @@ -0,0 +1,561 @@ + + + + + + + + + + + An Application Case Study: Forecasting Crop Disease with OpenLambda — OpenLambda + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                              + + + + + + + + + + +
                              +
                              +
                              +
                              +
                              + +
                              + +
                              + + + + + +
                              +
                              + + + + + +
                              + + + + + + + + + + + + + +
                              + +
                              + + + +
                              + +
                              +
                              + +
                              +
                              + +
                              + +
                              + +
                              + + +
                              + +
                              + +
                              + + + + + + + + + + + + + + + + + + + +
                              + +
                              + +
                              +
                              + + + +
                              +

                              An Application Case Study: Forecasting Crop Disease with OpenLambda

                              + +
                              +
                              + +
                              +
                              +
                              + + + + +
                              +
                              +

                              An Application Case Study: Forecasting Crop Disease with OpenLambda#

                              +

                              Maria Oros, Data Science Institute, University of Wisconsin–Madison
                              +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

                              +

                              Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

                              +

                              Recently, we selected an agricultural forecasting application (AgForecast), developed by the Data Science Institute at UW–Madison, to port to OpenLambda: UW-Madison-DSI/ag_forecasting_api. AgForecast is an interesting case study, because it implements its REST API using FastAPI, which in turn uses ASGI, the so-called “spiritual successor” to WSGI, which we recently started supporting in OpenLambda. WSGI is the basis for popular Python web-programming packages such as Django and Flask; new ASGI support opens the door to an even broader range of applications.

                              +

                              In this post, we describe the challenges of porting AgForecast to OL, and four new features we added to OL to make deployment of similar applications in the future simpler. The features are built-in ASGI support, direct GitHub-to-OL deployments, OL function environment variables, and OL-based pip compilation.

                              +
                              + + + +
                              + + + +
                              + +
                              + + + + + + +
                              + +
                              +
                              +
                              + +
                              + + + + +
                              +
                              + + +
                              + + +
                              +
                              +
                              + + + + + +
                              +
                              + + \ No newline at end of file diff --git a/_build/html/blog/post/2026-05-18-hello-world.html b/_build/html/blog/post/2026-05-18-hello-world.html index bb9539d..4359895 100644 --- a/_build/html/blog/post/2026-05-18-hello-world.html +++ b/_build/html/blog/post/2026-05-18-hello-world.html @@ -59,7 +59,8 @@ - + + @@ -213,6 +212,12 @@

                              @@ -226,11 +231,27 @@

                              Tags

                                -
                              • +
                              • + agforecast +
                              • + +
                              • announcement
                              • -
                              • +
                              • + asgi +
                              • + +
                              • + case-study +
                              • + +
                              • + fastapi +
                              • + +
                              • openlambda
                              • @@ -244,6 +265,10 @@

                                @@ -168,11 +174,27 @@

                                Tags

                                  -
                                • +
                                • + agforecast +
                                • + +
                                • announcement
                                • -
                                • +
                                • + asgi +
                                • + +
                                • + case-study +
                                • + +
                                • + fastapi +
                                • + +
                                • openlambda
                                • @@ -186,6 +208,10 @@

                                    +
                                  • + Case Studies (1) +
                                  • +
                                  • Releases (1)
                                  • @@ -201,7 +227,7 @@

                                    @@ -352,6 +378,25 @@

                                    +
                                    +

                                    + Posts tagged + agforecast + +

                                    + +
                                    +

                                    + + 2026-05-18 + - + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                    +
                                    + +
                                    +

                                    +
                                    +

                                    + Posts tagged + asgi + +

                                    + +
                                    +

                                    + + 2026-05-18 + - + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                    +
                                    + +
                                    + +
                                    +

                                    + Posts tagged + case-study + +

                                    + +
                                    +

                                    + + 2026-05-18 + - + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                    +
                                    + +
                                    + +
                                    +

                                    + Posts tagged + fastapi + +

                                    + +
                                    +

                                    + + 2026-05-18 + - + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                    +
                                    + +
                                    +

                                    +
                                    +

                                    + + 2026-05-18 + - + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                    +
                                    +
                                    diff --git a/_build/html/blog/tag/agforecast.html b/_build/html/blog/tag/agforecast.html new file mode 100644 index 0000000..6dbfce6 --- /dev/null +++ b/_build/html/blog/tag/agforecast.html @@ -0,0 +1,561 @@ + + + + + + + + + + Posts tagged agforecast — OpenLambda + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    + + + + + + + + + + +
                                    +
                                    +
                                    +
                                    +
                                    + +
                                    + +
                                    + + + + + +
                                    +
                                    + + + + + +
                                    + + + + + + + + + + + + + +
                                    + +
                                    + + + +
                                    + +
                                    +
                                    + +
                                    +
                                    + +
                                    + +
                                    + +
                                    + + +
                                    + +
                                    + +
                                    + + + + + + + + + + + + + + + + + + + +
                                    + +
                                    + +
                                    +
                                    + + + +
                                    +

                                    + +
                                    +
                                    + +
                                    +
                                    +
                                    + + + + +
                                    + +
                                    +

                                    + + + + + Posts tagged agforecast + +

                                    + +
                                    +

                                    + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                    + +

                                    Maria Oros, Data Science Institute, University of Wisconsin–Madison
                                    +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

                                    +

                                    Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

                                    +

                                    + + + +

                                    + Read more ... +

                                    +
                                    +
                                    + +
                                    + +
                                    + + + + + + +
                                    + +
                                    +
                                    +
                                    + +
                                    + + + + +
                                    +
                                    + + +
                                    + + +
                                    +
                                    +
                                    + + + + + +
                                    +
                                    + + \ No newline at end of file diff --git a/_build/html/blog/tag/agforecast/atom.xml b/_build/html/blog/tag/agforecast/atom.xml new file mode 100644 index 0000000..fe37ac3 --- /dev/null +++ b/_build/html/blog/tag/agforecast/atom.xml @@ -0,0 +1,51 @@ + + + https://open-lambda.github.io/ + OpenLambda Blog - Posts tagged agforecast + 2026-05-18T21:40:18.249385+00:00 + + + ABlog + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog/tag" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + + diff --git a/_build/html/blog/tag/announcement.html b/_build/html/blog/tag/announcement.html index d5f233d..e78ce32 100644 --- a/_build/html/blog/tag/announcement.html +++ b/_build/html/blog/tag/announcement.html @@ -155,6 +155,12 @@

                                    +
                                  • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
                                  • +

                                  @@ -168,11 +174,27 @@

                                  Tags

                                    -
                                  • +
                                  • + agforecast +
                                  • + +
                                  • announcement
                                  • -
                                  • +
                                  • + asgi +
                                  • + +
                                  • + case-study +
                                  • + +
                                  • + fastapi +
                                  • + +
                                  • openlambda
                                  • @@ -186,6 +208,10 @@

                                      +
                                    • + Case Studies (1) +
                                    • +
                                    • Releases (1)
                                    • @@ -201,7 +227,7 @@

                                      diff --git a/_build/html/blog/tag/announcement/atom.xml b/_build/html/blog/tag/announcement/atom.xml index c817040..07a2d44 100644 --- a/_build/html/blog/tag/announcement/atom.xml +++ b/_build/html/blog/tag/announcement/atom.xml @@ -2,7 +2,7 @@ https://open-lambda.github.io/ OpenLambda Blog - Posts tagged announcement - 2026-05-18T20:49:10.787417+00:00 + 2026-05-18T21:40:18.250561+00:00 ABlog diff --git a/_build/html/blog/tag/asgi.html b/_build/html/blog/tag/asgi.html new file mode 100644 index 0000000..5f9b747 --- /dev/null +++ b/_build/html/blog/tag/asgi.html @@ -0,0 +1,561 @@ + + + + + + + + + + Posts tagged asgi — OpenLambda + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      + + + + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      + +
                                      + + + + + +
                                      +
                                      + + + + + +
                                      + + + + + + + + + + + + + +
                                      + +
                                      + + + +
                                      + +
                                      +
                                      + +
                                      +
                                      + +
                                      + +
                                      + +
                                      + + +
                                      + +
                                      + +
                                      + + + + + + + + + + + + + + + + + + + +
                                      + +
                                      + +
                                      +
                                      + + + +
                                      +

                                      + +
                                      +
                                      + +
                                      +
                                      +
                                      + + + + +
                                      + +
                                      +

                                      + + + + + Posts tagged asgi + +

                                      + +
                                      +

                                      + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                      + +

                                      Maria Oros, Data Science Institute, University of Wisconsin–Madison
                                      +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

                                      +

                                      Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

                                      +

                                      + + + +

                                      + Read more ... +

                                      +
                                      +
                                      + +
                                      + +
                                      + + + + + + +
                                      + +
                                      +
                                      +
                                      + +
                                      + + + + +
                                      +
                                      + + +
                                      + + +
                                      +
                                      +
                                      + + + + + +
                                      +
                                      + + \ No newline at end of file diff --git a/_build/html/blog/tag/asgi/atom.xml b/_build/html/blog/tag/asgi/atom.xml new file mode 100644 index 0000000..9a5d1a1 --- /dev/null +++ b/_build/html/blog/tag/asgi/atom.xml @@ -0,0 +1,51 @@ + + + https://open-lambda.github.io/ + OpenLambda Blog - Posts tagged asgi + 2026-05-18T21:40:18.251674+00:00 + + + ABlog + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog/tag" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + + diff --git a/_build/html/blog/tag/case-study.html b/_build/html/blog/tag/case-study.html new file mode 100644 index 0000000..3361874 --- /dev/null +++ b/_build/html/blog/tag/case-study.html @@ -0,0 +1,561 @@ + + + + + + + + + + Posts tagged case-study — OpenLambda + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      + + + + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      + +
                                      + + + + + +
                                      +
                                      + + + + + +
                                      + + + + + + + + + + + + + +
                                      + +
                                      + + + +
                                      + +
                                      +
                                      + +
                                      +
                                      + +
                                      + +
                                      + +
                                      + + +
                                      + +
                                      + +
                                      + + + + + + + + + + + + + + + + + + + +
                                      + +
                                      + +
                                      +
                                      + + + +
                                      +

                                      + +
                                      +
                                      + +
                                      +
                                      +
                                      + + + + +
                                      + +
                                      +

                                      + + + + + Posts tagged case-study + +

                                      + +
                                      +

                                      + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                      + +

                                      Maria Oros, Data Science Institute, University of Wisconsin–Madison
                                      +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

                                      +

                                      Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

                                      +

                                      + + + +

                                      + Read more ... +

                                      +
                                      +
                                      + +
                                      + +
                                      + + + + + + +
                                      + +
                                      +
                                      +
                                      + +
                                      + + + + +
                                      +
                                      + + +
                                      + + +
                                      +
                                      +
                                      + + + + + +
                                      +
                                      + + \ No newline at end of file diff --git a/_build/html/blog/tag/case-study/atom.xml b/_build/html/blog/tag/case-study/atom.xml new file mode 100644 index 0000000..2ee7f24 --- /dev/null +++ b/_build/html/blog/tag/case-study/atom.xml @@ -0,0 +1,51 @@ + + + https://open-lambda.github.io/ + OpenLambda Blog - Posts tagged case-study + 2026-05-18T21:40:18.252875+00:00 + + + ABlog + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog/tag" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + + diff --git a/_build/html/blog/tag/fastapi.html b/_build/html/blog/tag/fastapi.html new file mode 100644 index 0000000..2112abc --- /dev/null +++ b/_build/html/blog/tag/fastapi.html @@ -0,0 +1,561 @@ + + + + + + + + + + Posts tagged fastapi — OpenLambda + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      + + + + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      + +
                                      + + + + + +
                                      +
                                      + + + + + +
                                      + + + + + + + + + + + + + +
                                      + +
                                      + + + +
                                      + +
                                      +
                                      + +
                                      +
                                      + +
                                      + +
                                      + +
                                      + + +
                                      + +
                                      + +
                                      + + + + + + + + + + + + + + + + + + + +
                                      + +
                                      + +
                                      +
                                      + + + +
                                      +

                                      + +
                                      +
                                      + +
                                      +
                                      +
                                      + + + + +
                                      + +
                                      +

                                      + + + + + Posts tagged fastapi + +

                                      + +
                                      +

                                      + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                      + +

                                      Maria Oros, Data Science Institute, University of Wisconsin–Madison
                                      +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

                                      +

                                      Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

                                      +

                                      + + + +

                                      + Read more ... +

                                      +
                                      +
                                      + +
                                      + +
                                      + + + + + + +
                                      + +
                                      +
                                      +
                                      + +
                                      + + + + +
                                      +
                                      + + +
                                      + + +
                                      +
                                      +
                                      + + + + + +
                                      +
                                      + + \ No newline at end of file diff --git a/_build/html/blog/tag/fastapi/atom.xml b/_build/html/blog/tag/fastapi/atom.xml new file mode 100644 index 0000000..84bf9da --- /dev/null +++ b/_build/html/blog/tag/fastapi/atom.xml @@ -0,0 +1,51 @@ + + + https://open-lambda.github.io/ + OpenLambda Blog - Posts tagged fastapi + 2026-05-18T21:40:18.254639+00:00 + + + ABlog + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog/tag" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + + diff --git a/_build/html/blog/tag/openlambda.html b/_build/html/blog/tag/openlambda.html index 97cef07..3c34508 100644 --- a/_build/html/blog/tag/openlambda.html +++ b/_build/html/blog/tag/openlambda.html @@ -155,6 +155,12 @@

                                      +
                                    • + + 18 May - An Application Case Study: Forecasting Crop Disease with OpenLambda + +
                                    • +

                                    @@ -168,11 +174,27 @@

                                    Tags

                                      -
                                    • +
                                    • + agforecast +
                                    • + +
                                    • announcement
                                    • -
                                    • +
                                    • + asgi +
                                    • + +
                                    • + case-study +
                                    • + +
                                    • + fastapi +
                                    • + +
                                    • openlambda
                                    • @@ -186,6 +208,10 @@

                                        +
                                      • + Case Studies (1) +
                                      • +
                                      • Releases (1)
                                      • @@ -201,7 +227,7 @@

                                        @@ -454,6 +480,106 @@


                                        + +
                                        +

                                        + An Application Case Study: Forecasting Crop Disease with OpenLambda +

                                        + +

                                        Maria Oros, Data Science Institute, University of Wisconsin–Madison
                                        +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison

                                        +

                                        Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.

                                        +

                                        + + + +

                                        + Read more ... +

                                        +
                                        +
                                        diff --git a/_build/html/blog/tag/openlambda/atom.xml b/_build/html/blog/tag/openlambda/atom.xml index 309ee8c..8ec31c3 100644 --- a/_build/html/blog/tag/openlambda/atom.xml +++ b/_build/html/blog/tag/openlambda/atom.xml @@ -2,7 +2,7 @@ https://open-lambda.github.io/ OpenLambda Blog - Posts tagged openlambda - 2026-05-18T20:49:10.788423+00:00 + 2026-05-18T21:40:18.255820+00:00 ABlog @@ -43,4 +43,46 @@ notes, performance experiments, and design discussions. 2026-05-18T00:00:00-05:00 + + https://open-lambda.github.io/blog/post/2026-05-18-ag-forecasting-case-study.html + An Application Case Study: Forecasting Crop Disease with OpenLambda + 2026-05-18T00:00:00-05:00 + + Tyler Caraza-Harter + + <p class="ablog-post-excerpt"><p><em>Maria Oros, Data Science Institute, University of Wisconsin–Madison</em><br /> +<em>Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–Madison</em></p> +<p>Our goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments.</p> +</p> + + <script type="text/x-thebe-config"> + { + requestKernel: true, + binderOptions: { + repo: "binder-examples/jupyter-stacks-datascience", + ref: "master", + }, + codeMirrorConfig: { + theme: "abcdef", + mode: "python" + }, + kernelOptions: { + name: "python3", + path: "./blog/tag" + }, + predefinedOutput: true + } + </script> + <script>kernelName = 'python3'</script> + + Maria Oros, Data Science Institute, University of Wisconsin–Madison<br /> +\\ +Tyler Caraza-Harter, Department of Computer Sciences, University of Wisconsin–MadisonOur goal is to make an ever-growing set of applications deployable on OpenLambda (OL), with minimal modifications. We believe the best way to work towards this goal is to pick interesting applications that weren’t originally designed for serverless deployment, try to port them to OL, and identify pain points. This helps us identify the most useful features to add to OL, to support similar deployments. + + + + + + 2026-05-18T00:00:00-05:00 + diff --git a/_build/html/genindex.html b/_build/html/genindex.html index 1e02632..3ef730f 100644 --- a/_build/html/genindex.html +++ b/_build/html/genindex.html @@ -178,7 +178,8 @@
                                      • Agricultural Forecasting API
                                      -
                                    • Blog
                                      diff --git a/_build/html/index.html b/_build/html/index.html index 1a706c3..9d98970 100644 --- a/_build/html/index.html +++ b/_build/html/index.html @@ -189,7 +189,8 @@
                                    • Agricultural Forecasting API
                                    -
                                  • Blog
                                    diff --git a/_build/html/objects.inv b/_build/html/objects.inv index 95991da..b7f1890 100644 --- a/_build/html/objects.inv +++ b/_build/html/objects.inv @@ -2,5 +2,4 @@ # Project: Project name not set # Version: # The remainder of this file is compressed using zlib. -xڅRAN0+6q JDDĪc[&nI͚ݝuo/pPx`$eR@+p}]R\\ºU3Bʔx8(*zW%UYcVg?sRHH,~@\o!&fG^–;ւgq%m@r ˈu\h2C2DSǀ( qIYzn$Qmdss69p?^ihTtPTXJu:#KjW(9T[FLV 󚭯7 -1#Ѿ \ No newline at end of file +xڭSKN0O% ؅JDTĪkG$nӴJ+5of=[<;Lb4Hfqe839- 3^ #`|:1kqq /MJ¤$@PDӭ:A;!ԑׇyMu}:֦&οP+]TGI`hôUmilY̴.QZj;Tb}E,>_}A \ No newline at end of file diff --git a/_build/html/search.html b/_build/html/search.html index e0fcd45..610a244 100644 --- a/_build/html/search.html +++ b/_build/html/search.html @@ -187,7 +187,8 @@
                                  • Agricultural Forecasting API
                                  -
                                • Blog
                                  diff --git a/_build/html/searchindex.js b/_build/html/searchindex.js index 4df1dfc..0fb07af 100644 --- a/_build/html/searchindex.js +++ b/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"1. Clone the repo and copy these files in": [[0, "clone-the-repo-and-copy-these-files-in"]], "Agricultural Forecasting API": [[1, null]], "Applications": [[2, null]], "Configuration": [[6, "configuration"]], "Deploying Multiple Workers": [[6, "deploying-multiple-workers"]], "File Structure": [[0, "file-structure"]], "Further Reading": [[6, "further-reading"]], "Hello, OpenLambda Blog": [[4, null]], "License": [[5, "license"]], "Local Preview": [[0, "local-preview"]], "One-Time Setup (do this once per repo)": [[0, "one-time-setup-do-this-once-per-repo"]], "OpenLambda": [[5, null]], "OpenLambda Blog": [[3, null]], "OpenLambda GitHub Pages \u2014 MyST Markdown Site": [[0, null]], "Overview": [[1, "overview"], [6, "overview"]], "Related Publications": [[5, "related-publications"]], "Starting the Worker": [[6, "starting-the-worker"]], "Want to deploy FastAPI apps on OpenLambda? Just ASGI us how.": [[2, "want-to-deploy-fastapi-apps-on-openlambda-just-asgi-us-how"]], "Worker": [[6, null]]}, "docnames": ["README", "applications/ag-forecasting-api", "applications/index", "blog/index", "blog/post/2026-05-18-hello-world", "index", "worker"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["README.md", "applications/ag-forecasting-api.md", "applications/index.md", "blog/index.md", "blog/post/2026-05-18-hello-world.md", "index.md", "worker.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [2, 6], "0": [], "003663": [], "031": [], "05": [], "09": [], "10": [], "100": [], "1049": [], "11": [], "12": [], "1234": [], "14": [], "15": [], "16": 5, "17": 5, "18": [3, 5], "20": [], "2000": [], "2024": [], "2025": [], "2026": 3, "21": [], "24": 5, "28": [], "2878": [], "30": [], "31": [], "3250": [], "35": [], "366": [], "38": [], "404": [], "423": [], "43": [], "45": [], "4500": [], "4567": [], "5": [], "50": [], "6": [], "6h": [], "7": [], "7d": [], "8": [], "8000": [], "8080": 6, "85": [], "89": [], "9": [], "90": [], "92": [], "999": [], "A": [2, 6], "By": [], "For": 1, "In": 2, "It": 6, "No": 6, "On": 2, "That": [], "The": [1, 2, 5, 6], "To": [2, 6], "With": 5, "__init__": [], "_annotate_winter_rye_biomass": [], "_build": 0, "_build_daili": [], "_compute_winter_rye_biomass": [], "_config": 0, "_doi": [], "_fall": [], "_fetch_raw_hourli": [], "_run_pipelin": [], "_toc": 0, "_total": [], "about": 5, "abov": [], "aboveground": [], "absolut": [], "access": [], "accumul": [], "acquisit": [], "acr": [], "action": 0, "activ": [], "ad": [], "adapt": [], "add": [0, 2], "address": [2, 6], "adjust": 2, "after": 6, "ag": 2, "ag_api": [], "ag_forecast": [], "ag_forecasting_api": [], "ag_models_wrapp": [], "aggreg": [], "agricultur": 2, "agronom": [], "ahead": 2, "aiohttp": [], "air": [], "al": 5, "all": 0, "alongsid": 2, "alpin": [], "alreadi": 6, "also": [2, 5], "alten": [], "altn": [], "america": [], "an": [2, 5], "analysi": [], "annot": [], "apach": 5, "api": 2, "api_cach": [], "api_kei": [], "apotheci": [], "app": [], "app_v1": [], "appli": [], "applic": [], "approach": [2, 5, 6], "ar": [2, 5, 6], "arithmet": [], "arriv": 6, "asgi": 1, "assess": [], "assumpt": [], "async": 2, "atc": 5, "authent": [], "author": 5, "auto": 0, "automat": 0, "avail": [], "averag": [], "avg": [], "await": [], "awar": [], "axi": [], "b_": [], "b_0": [], "back": 6, "backend": 6, "backward": [], "balanc": [5, 6], "base": [1, 2, 5], "basic": [], "batch": [], "becaus": 2, "behind": 6, "believ": 2, "benefici": 2, "better": 2, "between": 6, "bill": 2, "bin": 6, "binari": 6, "biomass_color": [], "biomass_lb_acr": [], "biomass_messag": [], "biomass_result": [], "bit": 5, "block": 2, "book": 0, "boss": [5, 6], "both": 2, "branch": [], "broader": 2, "broadli": 2, "browser": 0, "build": [0, 2, 6], "built": [], "bulk": [], "bundl": 0, "busi": [], "c": [], "cach": [], "calc": [], "calcul": [], "calculate_tarspot_risk": [], "calculate_winter_rye_biomass": [], "call": 6, "caller": 6, "can": [2, 5, 6], "cap": [], "capabl": [], "case": [], "categori": [], "cd": 0, "cdn": [], "cdot": [], "central": [5, 6], "cercospora": [], "chang": 2, "chapter": [], "characterist": [], "check": [1, 6], "chicago": [], "choic": 2, "chunk": [], "citi": [], "class": [], "classif": [], "classifi": [], "client": [], "clone": [], "cloud comput": 5, "cluster": [5, 6], "cmd": [], "co": 2, "coeffici": [], "col": [], "cold": 6, "color": [], "columbia": [], "column": [], "com": 0, "combin": 1, "commit": 0, "compat": [], "compon": 6, "comput": [2, 5], "compute_risks_in_parallel": [], "concern": 2, "concurr": 2, "conda": [], "config": 6, "configur": [], "confirm": [], "connect": [], "consolid": 2, "constant": [], "constraint": 2, "contact": [], "contain": [5, 6], "container": [], "content": 0, "context": [], "continu": 2, "contribut": 2, "convers": [], "convert": [], "coordin": 6, "copi": [], "core": 6, "corn": [], "could": 5, "counti": [], "cover": [], "coverag": [], "creat": [], "credenti": [], "crop": 1, "ctrl": [], "cumsum": [], "cumul": [], "curl": 6, "current": [5, 6], "curv": [], "cycl": [], "dai": [], "daili": [], "damon": [], "dashboard": [], "data": [1, 2], "datafram": [], "dataframe_to_featurecollect": [], "date": [], "datetim": [], "dd": [], "decim": [], "decis": [], "deep": 3, "deeper": 2, "def": [], "default": 6, "definit": [], "degre": [], "demand": 2, "dens": [], "dep": 0, "depend": 2, "deploi": [0, 5], "deploy": [2, 6], "deprec": [], "describ": 6, "descript": 6, "design": [2, 3, 4], "detail": 5, "detect": 2, "dev": 2, "develop": [1, 6], "dew": [], "dir": [], "direct": [], "directori": 6, "discuss": [3, 4], "diseas": 1, "disease_metadata": [], "distinguish": 2, "dive": 3, "doc": [], "docker": 6, "dockerfil": [], "document": [0, 1], "doit": [], "domain": [], "door": 2, "drive": 2, "dry": [], "dsi": [], "dst": [], "dual": [], "dure": [], "e": [], "each": 6, "earlier": 2, "ecosystem": [], "edu": [], "effect": [], "emb": [], "embed": [], "emerg": [], "enabl": [2, 5], "endpoint": 6, "enhanc": [], "ensembl": [], "enter": 1, "entir": [], "entri": [], "environ": 2, "eros": [], "error": [], "establish": [], "estim": [], "et": 5, "etc": [], "evalu": [], "eventu": 5, "everi": [], "evolut": 2, "exampl": [], "example_callapi": [], "execut": 2, "expand": 2, "experi": [3, 4], "explor": 5, "export": [], "expos": 6, "extend": 2, "extract": [], "f": [], "fail": [], "fall": [], "fall_precip": [], "fall_start": [], "fallback": [], "far": 5, "farmer": [], "fastapi": 1, "faster": [2, 5], "featur": 2, "featurecollect": [], "fetch": [], "fetch_all_measurements_async": [], "fetch_wisconet_biomass": [], "field": 6, "file": [5, 6], "fillna": [], "filter": [], "fit": [2, 5], "fix": [], "follow": [], "forecast": 2, "forecasting_d": [], "forklift": 5, "format": [], "formula": [], "forward": 6, "found": [], "four": [], "frac": [], "framework": [], "friction": 2, "friendli": 2, "frogey": [], "frogeye_risk": [], "frogeye_risk_class": [], "from": [0, 2, 3, 6], "fromisoformat": [], "front": [5, 6], "function": [2, 6], "fundament": 2, "fungu": [], "further": 2, "g": [], "gdd": [], "gdd_0c": [], "gdd_sine": [], "gdd_total": [], "gener": [], "geojson": [], "geojson_adapt": [], "geojson_schema": [], "geometri": [], "geospati": 1, "get": [5, 6], "get_weather_with_risk": [], "gi": [], "git": 0, "github": 2, "gitignor": 0, "global": [], "globe": [], "gls_risk": [], "gls_risk_class": [], "go": [5, 6], "goal": 5, "grai": [], "green": [], "grow": [], "growth": [], "guid": 6, "ha": [], "handl": [], "handler": [], "haproxi": 6, "hard": [], "harmon": [], "health": [], "healthcheck": [], "hello": 3, "help": 2, "helper": [], "hendrickson": 5, "here": [0, 1, 5], "high": [], "higher": 2, "histor": [], "histori": 2, "hod": [], "homepag": 0, "hope": 5, "horizont": 6, "host": [], "hotcloud": 5, "hour": [], "hourli": [], "html": 0, "http": [0, 5, 6], "human": [], "humid": [], "i": [1, 2, 5, 6], "ibm_api_kei": [], "ibm_servic": [], "icdcsw": 5, "id": [], "identifi": [], "idl": 2, "imag": 6, "implement": [2, 5], "import": [], "improv": 2, "inact": [], "inch": [], "includ": 2, "incom": 6, "increment": 2, "independ": 6, "index": 0, "individu": [], "inflect": [], "influenc": 2, "info": [], "inform": [], "ingest": [], "initi": 5, "input": [], "insid": 6, "instal": 0, "institut": 1, "integr": [1, 2], "intellig": 1, "interact": [], "intercept": [], "interfac": 2, "interpol": [], "interpret": [], "interv": [], "invok": 5, "io": 0, "ipynb": [], "irrig": [], "issu": 2, "its": [1, 2, 6], "jaim": 2, "jb": [], "json": 6, "jupyt": 0, "just": 5, "jwt": [], "k": [], "keep": 6, "kei": 6, "label": [], "lambda": [0, 1, 2, 5, 6], "larg": 5, "last": [], "lat": [], "latenc": 6, "latitud": [], "layer": [], "lb": [], "leaf": [], "lean": 5, "left": [], "let": 2, "librari": 5, "lifecycl": 6, "like": 2, "limit": [], "line": [], "lint": [], "linux": [5, 6], "linux contain": 5, "list": [], "listen": 6, "ll": [3, 4], "lng": [], "load": [5, 6], "load_stations_sync": [], "loadbalanc": [], "local": [5, 6], "localhost": 6, "locat": 2, "log": 6, "log_level": [], "log_output": 6, "logic": [], "login": 5, "logist": [], "logit": [], "long": 2, "longitud": [], "longstand": 2, "look": 2, "low": [], "lower": [], "m": 0, "madison": 1, "mai": 3, "main": 5, "maintain": [], "make": 5, "manag": [5, 6], "manipul": [], "manual": [5, 6], "map": [], "materi": [], "math": [], "math_help": [], "mathemat": [], "max": [], "maydi": [], "md": [0, 5], "mean": [], "measur": [], "merg": [], "merge_biomass": [], "merge_station_metadata": [], "merge_wisconet_biomass": [], "mesonet": [], "messag": [], "metadata_stations_": [], "method": [], "metric": [], "min": [], "minim": 2, "minut": 6, "mitig": [], "mm": [], "mode": 5, "model": [1, 2], "model_schema": [], "moder": [], "modern": 2, "moistur": [], "mold": [], "monitor": [], "month": [], "more": [0, 2, 5], "mostli": 5, "mount": [], "mph": [], "multi": [1, 6], "multipl": 2, "multiprocess": [], "n": 6, "name": 6, "nation": [], "nativ": 2, "natur": 2, "need": 2, "network": [], "new": [2, 3, 4, 5], "next": 1, "nginx": 6, "nighttim": [], "noaa": [], "node": [5, 6], "non": [], "normal": [], "note": [3, 4], "notebook": [], "now": 1, "num_work": [], "numer": [], "numpi": [], "o": 2, "oak": 5, "observ": [], "obtain": [], "off": [], "ol": 2, "old": [], "onboard": 2, "onc": [], "one": 6, "open": [0, 1, 2, 5], "openapi": [], "openlambda": [1, 6], "oper": 6, "opportunist": 2, "optim": [5, 6], "option": [2, 6], "orchestr": [], "org_id": [], "organ": [], "our": 2, "output": [], "overhead": 2, "packag": 5, "panda": [], "paper": 6, "parallel": [], "paramet": [], "pars": [], "pass": 6, "path": 6, "pattern": 2, "payload": 6, "pd": [], "peak": [], "per": 6, "perform": [3, 4], "period": 6, "permiss": [], "persist": 2, "pf": [], "phase": 1, "phyllachora": [], "pip": 0, "pipelin": [], "pipsqueak": 5, "place": 6, "plan": [], "plant": [], "plant_date_obj": [], "plant_doi": [], "planting_d": [], "platform": 2, "pleas": 1, "plu": [], "point": [], "pool": [2, 5], "port": [2, 6], "post": [2, 6], "practic": 2, "pre": [], "precip": [], "precip1hour_sum": [], "precip_daili": [], "precip_fal": [], "precipit": [], "pred": [], "predict": [], "premium": [], "prep": [], "presenc": [], "present": 6, "previou": [], "primari": 5, "print": 6, "prob": [], "probabl": [], "problem": [], "process": [2, 6], "product": 5, "profession": [], "project": [3, 5], "properti": [], "provid": 1, "provis": [5, 6], "proxi": [], "public": [], "pull": 6, "purpos": [], "push": 0, "put": 5, "py": [], "py_compil": [], "pydant": [], "pylint": [], "python": [0, 2], "pythonpath": [], "queri": [], "question": 2, "quickstart": 6, "r": 0, "r3": [], "rainfal": [], "rang": 2, "rapid": [5, 6], "rare": [], "rate": [], "rather": 2, "raw": [], "re": [], "read": 5, "readabl": [], "readi": [], "real": 2, "rebuild": [], "recommend": 6, "redeploi": [], "redoc": [], "reduc": [2, 6], "redund": [], "refer": 1, "refresh": [], "regener": 2, "region": [], "registri": 6, "regress": [], "rel": [], "relativehumidity_max": [], "relativehumidity_min": [], "releas": [3, 4], "relev": [], "reli": 2, "reload": [], "remov": 2, "replac": [], "repo": 6, "repositori": [], "request": [5, 6], "requir": [0, 2, 6], "research": 6, "residu": [], "resolut": [], "respect": 6, "respons": [5, 6], "rest": [], "result": [2, 6], "result_typ": [], "retri": [], "retriev": [], "return": 6, "reus": 2, "revers": [], "rh": [], "risk": 1, "risk_dai": [], "risk_df": [], "risk_model": [], "risk_processor": [], "roll": [], "rolling_mean": [], "root": [0, 6], "rout": 6, "router": [], "row": [], "rule": [], "run": [5, 6], "runlambda": 6, "runtim": 2, "rye_biomass": [], "rye_daili": [], "saascor": [], "same": [], "sandbox": 6, "save": [], "scale": 6, "schema": [], "scienc": 1, "scientif": [], "sclerotinia": [], "sclerotiorum": [], "score": [], "script": [], "see": 5, "select": [], "sep": [], "sequenti": [], "seri": [], "serv": 2, "server": [2, 6], "serverless": [2, 5, 6], "servic": [1, 2, 5], "set": [0, 2], "setup": 6, "shape": 2, "share": [3, 4], "shift": [], "shm": 2, "short": 6, "should": [], "show": [], "side": [2, 6], "sidebar": [], "similar": 6, "sinc": [], "sine": [], "singl": [2, 5, 6], "site": [], "situat": 2, "slim": [], "smaller": [], "so": 5, "sock": [5, 6], "soil": [], "sojina": [], "sourc": 1, "south": [], "soybean": [], "space": [3, 4], "specif": [], "specifi": [], "speed": [], "spot": [], "stage": [], "standalon": 6, "standard": 6, "start": [2, 5], "startup": 6, "state": 2, "stateless": [2, 6], "statewid": [], "station_data_": [], "station_id": [], "station_measurements_cach": [], "station_nam": [], "station_timezon": [], "statu": 6, "stdlib": [], "stdout": 6, "step": [], "still": [], "str": [], "structur": [], "sub": [], "subsequ": 6, "suitabl": 5, "sum": [], "summari": [], "support": 2, "sure": [], "surfac": 2, "swagger": [], "synchron": 2, "syntax": [], "system": 5, "tabl": 0, "tabular": [], "take": 5, "tar": [], "target": 2, "tarspot": [], "tarspot_risk": [], "tarspot_risk_class": [], "task": [5, 6], "team": 3, "technic": [0, 3], "technologi": 1, "temp": [], "temperatur": [], "temperature_max": [], "temperature_max_c": [], "temperature_mean": [], "temperature_mean_c": [], "temperature_min": [], "temperature_min_c": [], "temperaturedewpoint_max": [], "temperaturedewpoint_min": [], "tenant": [], "tenant_id": [], "termin": [], "termination_d": [], "text": [], "than": 2, "them": [5, 6], "thi": [2, 3, 4, 5], "those": 2, "threshold": [], "through": 1, "ti": [], "tier": [], "time": 2, "time_seri": [], "timeout": [], "timestamp": [], "timetupl": [], "titl": 5, "tl": [], "tm_ydai": [], "token": [], "tool": 1, "tornado": 2, "total": [], "traefik": [], "transit": [], "tree": 5, "true": [], "ttl": [], "two": [], "txt": 0, "type": [], "ui": [], "under": [5, 6], "underli": 2, "unifi": [], "unit": 2, "univers": 1, "until": 6, "updat": [], "url": 6, "us": [0, 1, 2, 3, 4, 5], "usag": [], "user": [], "utc": [], "util": 2, "uvicorn": [], "uw": [], "v10": [], "v2": [], "valid": 1, "variabl": 2, "variant": [], "venu": 5, "venv": [], "verbos": [], "verifi": 6, "via": 6, "view": [], "virtual": [], "visibl": 2, "vm": 5, "w": 6, "wait": [2, 6], "warm": [2, 6], "we": [2, 3, 4, 5], "weather": 1, "web": 2, "welcom": [3, 4], "well": 5, "wet": [], "when": [2, 6], "where": [2, 5, 6], "whether": [2, 6], "which": 2, "white": [], "whitemold_dry_risk": [], "whitemold_dry_risk_class": [], "wi": [], "wide": [2, 6], "wind": [], "window": [], "windspeed_max": [], "windspeed_mean": [], "wisc": [], "wisconet_active_st": [], "wisconet_biomass": [], "wisconet_g": [], "wisconet_servic": [], "wisconsin": 1, "work": [2, 5, 6], "workdir": [], "worker": 5, "worker_port": 6, "workflow": 0, "workload": 2, "world": 2, "wosc": 5, "write": 6, "written": 5, "wsgi": 2, "x_0": [], "xxx": [], "yang": 5, "year": [], "yellow": [], "yml": 0, "you": [5, 6], "your": [], "your_kei": [], "your_org": [], "your_ten": [], "yourself": 5, "yyi": [], "yyyi": [], "zeae": [], "zygot": 5, "zzz": []}, "titles": ["OpenLambda GitHub Pages \u2014 MyST Markdown Site", "Agricultural Forecasting API", "Applications", "OpenLambda Blog", "Hello, OpenLambda Blog", "OpenLambda", "Worker"], "titleterms": {"0": [], "1": 0, "2": [], "3": [], "4": [], "One": 0, "action": [], "ad": [], "addit": [], "agricultur": 1, "api": 1, "app": 2, "applic": 2, "architectur": [], "asgi": 2, "async": [], "avail": [], "biomass": [], "blog": [3, 4], "cach": [], "calcul": [], "changelog": [], "clone": 0, "collect": [], "complet": [], "compos": [], "concurr": [], "configur": 6, "consider": [], "content": [], "coordin": [], "copi": 0, "core": [], "corn": [], "current": [], "data": [], "date": [], "depend": [], "deploi": [2, 6], "deploy": [], "design": [], "develop": [], "directori": [], "diseas": [], "do": 0, "docker": [], "document": [], "effici": [], "ei": [], "enabl": [], "endpoint": [], "environ": [], "environment": [], "extern": [], "fastapi": 2, "featur": [], "file": 0, "flow": [], "forecast": 1, "format": [], "frogey": [], "further": 6, "geojson": [], "github": 0, "grai": [], "group": [], "handl": [], "hello": 4, "high": [], "how": 2, "ibm": [], "instal": [], "integr": [], "intellig": [], "journei": [], "just": 2, "kei": [], "leaf": [], "legaci": [], "level": [], "licens": 5, "local": 0, "markdown": 0, "mesonet": [], "metadata": [], "model": [], "modul": [], "mold": [], "more": [], "multi": [], "multipl": 6, "myst": 0, "new": [], "onc": 0, "openlambda": [0, 2, 3, 4, 5], "optim": [], "output": [], "overview": [1, 6], "page": 0, "per": 0, "perform": [], "pipelin": [], "prerequisit": [], "preview": 0, "process": [], "product": [], "public": 5, "read": 6, "relat": 5, "repo": 0, "request": [], "resourc": [], "respons": [], "risk": [], "rye": [], "seri": [], "servic": [], "setup": 0, "site": 0, "sourc": [], "soybean": [], "spot": [], "stack": [], "start": 6, "station": [], "strategi": [], "structur": 0, "suit": [], "system": [], "tabl": [], "tarspot": [], "technic": [], "technologi": [], "test": [], "thi": 0, "time": 0, "timezon": [], "tip": [], "troubleshoot": [], "u": 2, "v1": [], "v2": [], "variabl": [], "version": [], "want": 2, "weather": [], "white": [], "winter": [], "wisconet": [], "worker": 6}}) \ No newline at end of file +Search.setIndex({"alltitles": {"1. Clone the repo and copy these files in": [[0, "clone-the-repo-and-copy-these-files-in"]], "Agricultural Forecasting API": [[1, null]], "An Application Case Study: Forecasting Crop Disease with OpenLambda": [[4, null]], "Applications": [[2, null]], "Configuration": [[7, "configuration"]], "Deploying Multiple Workers": [[7, "deploying-multiple-workers"]], "File Structure": [[0, "file-structure"]], "Further Reading": [[7, "further-reading"]], "Hello, OpenLambda Blog": [[5, null]], "License": [[6, "license"]], "Local Preview": [[0, "local-preview"]], "One-Time Setup (do this once per repo)": [[0, "one-time-setup-do-this-once-per-repo"]], "OpenLambda": [[6, null]], "OpenLambda Blog": [[3, null]], "OpenLambda GitHub Pages \u2014 MyST Markdown Site": [[0, null]], "Overview": [[1, "overview"], [7, "overview"]], "Related Publications": [[6, "related-publications"]], "Starting the Worker": [[7, "starting-the-worker"]], "Want to deploy FastAPI apps on OpenLambda? Just ASGI us how.": [[2, "want-to-deploy-fastapi-apps-on-openlambda-just-asgi-us-how"]], "Worker": [[7, null]]}, "docnames": ["README", "applications/ag-forecasting-api", "applications/index", "blog/index", "blog/post/2026-05-18-ag-forecasting-case-study", "blog/post/2026-05-18-hello-world", "index", "worker"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1}, "filenames": ["README.md", "applications/ag-forecasting-api.md", "applications/index.md", "blog/index.md", "blog/post/2026-05-18-ag-forecasting-case-study.md", "blog/post/2026-05-18-hello-world.md", "index.md", "worker.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [2, 7], "0": [], "003663": [], "031": [], "05": [], "09": [], "10": [], "100": [], "1049": [], "11": [], "12": [], "1234": [], "14": [], "15": [], "16": 6, "17": 6, "18": [3, 6], "20": [], "2000": [], "2024": [], "2025": [], "2026": 3, "21": [], "24": 6, "28": [], "2878": [], "30": [], "31": [], "3250": [], "35": [], "366": [], "38": [], "404": [], "423": [], "43": [], "45": [], "4500": [], "4567": [], "5": [], "50": [], "6": [], "6h": [], "7": [], "7d": [], "8": [], "8000": [], "8080": 7, "85": [], "89": [], "9": [], "90": [], "92": [], "999": [], "A": [2, 7], "By": [], "For": 1, "In": [2, 4], "It": 7, "No": 7, "On": 2, "That": [], "The": [1, 2, 4, 6, 7], "To": [2, 7], "With": 6, "__init__": [], "_annotate_winter_rye_biomass": [], "_build": 0, "_build_daili": [], "_compute_winter_rye_biomass": [], "_config": 0, "_doi": [], "_fall": [], "_fetch_raw_hourli": [], "_run_pipelin": [], "_toc": 0, "_total": [], "about": 6, "abov": [], "aboveground": [], "absolut": [], "access": [], "accumul": [], "acquisit": [], "acr": [], "action": 0, "activ": [], "ad": 4, "adapt": [], "add": [0, 2, 3, 4], "address": [2, 7], "adjust": 2, "after": 7, "ag": 2, "ag_api": [], "ag_forecast": [], "ag_forecasting_api": 4, "ag_models_wrapp": [], "agforecast": 4, "aggreg": [], "agricultur": [2, 4], "agronom": [], "ahead": 2, "aiohttp": [], "air": [], "al": 6, "all": 0, "alongsid": 2, "alpin": [], "alreadi": 7, "also": [2, 6], "alten": [], "altn": [], "america": [], "an": [2, 3, 6], "analysi": [], "annot": [], "apach": 6, "api": [2, 4], "api_cach": [], "api_kei": [], "apotheci": [], "app": [], "app_v1": [], "appli": [], "applic": 3, "approach": [2, 6, 7], "ar": [2, 4, 6, 7], "arithmet": [], "arriv": 7, "asgi": [1, 4], "assess": [], "assumpt": [], "async": 2, "atc": 6, "authent": [], "author": 6, "auto": 0, "automat": 0, "avail": [], "averag": [], "avg": [], "await": [], "awar": [], "axi": [], "b_": [], "b_0": [], "back": 7, "backend": 7, "backward": [], "balanc": [6, 7], "base": [1, 2, 4, 6], "basi": 4, "basic": [], "batch": [], "becaus": [2, 4], "behind": 7, "believ": [2, 3, 4], "benefici": 2, "best": [3, 4], "better": 2, "between": 7, "bill": 2, "bin": 7, "binari": 7, "biomass_color": [], "biomass_lb_acr": [], "biomass_messag": [], "biomass_result": [], "bit": 6, "block": 2, "book": 0, "boss": [6, 7], "both": 2, "branch": [], "broader": [2, 4], "broadli": 2, "browser": 0, "build": [0, 2, 7], "built": 4, "bulk": [], "bundl": 0, "busi": [], "c": [], "cach": [], "calc": [], "calcul": [], "calculate_tarspot_risk": [], "calculate_winter_rye_biomass": [], "call": [4, 7], "caller": 7, "can": [2, 6, 7], "cap": [], "capabl": [], "caraza": [3, 4], "case": 3, "categori": [], "cd": 0, "cdn": [], "cdot": [], "central": [6, 7], "cercospora": [], "challeng": 4, "chang": 2, "chapter": [], "characterist": [], "check": [1, 7], "chicago": [], "choic": 2, "chunk": [], "citi": [], "class": [], "classif": [], "classifi": [], "client": [], "clone": [], "cloud comput": 6, "cluster": [6, 7], "cmd": [], "co": 2, "coeffici": [], "col": [], "cold": 7, "color": [], "columbia": [], "column": [], "com": 0, "combin": 1, "commit": 0, "compat": [], "compil": 4, "compon": 7, "comput": [2, 3, 4, 6], "compute_risks_in_parallel": [], "concern": 2, "concurr": 2, "conda": [], "config": 7, "configur": [], "confirm": [], "connect": [], "consolid": 2, "constant": [], "constraint": 2, "contact": [], "contain": [6, 7], "container": [], "content": 0, "context": [], "continu": 2, "contribut": 2, "convers": [], "convert": [], "coordin": 7, "copi": [], "core": 7, "corn": [], "could": 6, "counti": [], "cover": [], "coverag": [], "creat": [], "credenti": [], "crop": [1, 3], "ctrl": [], "cumsum": [], "cumul": [], "curl": 7, "current": [6, 7], "curv": [], "cycl": [], "dai": [], "daili": [], "damon": [], "dashboard": [], "data": [1, 2, 3, 4], "datafram": [], "dataframe_to_featurecollect": [], "date": [], "datetim": [], "dd": [], "decim": [], "decis": [], "deep": 3, "deeper": 2, "def": [], "default": 7, "definit": [], "degre": [], "demand": 2, "dens": [], "dep": 0, "depart": [3, 4], "depend": 2, "deploi": [0, 6], "deploy": [2, 3, 4, 7], "deprec": [], "describ": [4, 7], "descript": 7, "design": [2, 3, 4, 5], "detail": 6, "detect": 2, "dev": 2, "develop": [1, 4, 7], "dew": [], "dir": [], "direct": 4, "directori": 7, "discuss": [3, 5], "diseas": [1, 3], "disease_metadata": [], "distinguish": 2, "dive": 3, "django": 4, "doc": [], "docker": 7, "dockerfil": [], "document": [0, 1], "doit": [], "domain": [], "door": [2, 4], "drive": 2, "dry": [], "dsi": 4, "dst": [], "dual": [], "dure": [], "e": [], "each": 7, "earlier": 2, "ecosystem": [], "edu": [], "effect": [], "emb": [], "embed": [], "emerg": [], "enabl": [2, 6], "endpoint": 7, "enhanc": [], "ensembl": [], "enter": 1, "entir": [], "entri": [], "environ": [2, 4], "eros": [], "error": [], "establish": [], "estim": [], "et": 6, "etc": [], "evalu": [], "even": 4, "eventu": 6, "ever": [3, 4], "everi": [], "evolut": 2, "exampl": [], "example_callapi": [], "execut": 2, "expand": 2, "experi": [3, 5], "explor": 6, "export": [], "expos": 7, "extend": 2, "extract": [], "f": [], "fail": [], "fall": [], "fall_precip": [], "fall_start": [], "fallback": [], "far": 6, "farmer": [], "fastapi": [1, 4], "faster": [2, 6], "featur": [2, 3, 4], "featurecollect": [], "fetch": [], "fetch_all_measurements_async": [], "fetch_wisconet_biomass": [], "field": 7, "file": [6, 7], "fillna": [], "filter": [], "fit": [2, 6], "fix": [], "flask": 4, "follow": [], "forecast": [2, 3], "forecasting_d": [], "forklift": 6, "format": [], "formula": [], "forward": 7, "found": [], "four": 4, "frac": [], "framework": [], "friction": 2, "friendli": 2, "frogey": [], "frogeye_risk": [], "frogeye_risk_class": [], "from": [0, 2, 3, 7], "fromisoformat": [], "front": [6, 7], "function": [2, 4, 7], "fundament": 2, "fungu": [], "further": 2, "futur": 4, "g": [], "gdd": [], "gdd_0c": [], "gdd_sine": [], "gdd_total": [], "gener": [], "geojson": [], "geojson_adapt": [], "geojson_schema": [], "geometri": [], "geospati": 1, "get": [6, 7], "get_weather_with_risk": [], "gi": [], "git": 0, "github": [2, 4], "gitignor": 0, "global": [], "globe": [], "gls_risk": [], "gls_risk_class": [], "go": [6, 7], "goal": [3, 4, 6], "grai": [], "green": [], "grow": [3, 4], "growth": [], "guid": 7, "ha": [], "handl": [], "handler": [], "haproxi": 7, "hard": [], "harmon": [], "harter": [3, 4], "health": [], "healthcheck": [], "hello": 3, "help": [2, 3, 4], "helper": [], "hendrickson": 6, "here": [0, 1, 6], "high": [], "higher": 2, "histor": [], "histori": 2, "hod": [], "homepag": 0, "hope": 6, "horizont": 7, "host": [], "hotcloud": 6, "hour": [], "hourli": [], "html": 0, "http": [0, 6, 7], "human": [], "humid": [], "i": [1, 2, 3, 4, 6, 7], "ibm_api_kei": [], "ibm_servic": [], "icdcsw": 6, "id": [], "identifi": [3, 4], "idl": 2, "imag": 7, "implement": [2, 4, 6], "import": [], "improv": 2, "inact": [], "inch": [], "includ": 2, "incom": 7, "increment": 2, "independ": 7, "index": 0, "individu": [], "inflect": [], "influenc": 2, "info": [], "inform": [], "ingest": [], "initi": 6, "input": [], "insid": 7, "instal": 0, "institut": [1, 3, 4], "integr": [1, 2], "intellig": 1, "interact": [], "intercept": [], "interest": [3, 4], "interfac": 2, "interpol": [], "interpret": [], "interv": [], "invok": 6, "io": 0, "ipynb": [], "irrig": [], "issu": 2, "its": [1, 2, 4, 7], "jaim": 2, "jb": [], "json": 7, "jupyt": 0, "just": 6, "jwt": [], "k": [], "keep": 7, "kei": 7, "label": [], "lambda": [0, 1, 2, 6, 7], "larg": 6, "last": [], "lat": [], "latenc": 7, "latitud": [], "layer": [], "lb": [], "leaf": [], "lean": 6, "left": [], "let": 2, "librari": 6, "lifecycl": 7, "like": 2, "limit": [], "line": [], "lint": [], "linux": [6, 7], "linux contain": 6, "list": [], "listen": 7, "ll": [3, 5], "lng": [], "load": [6, 7], "load_stations_sync": [], "loadbalanc": [], "local": [6, 7], "localhost": 7, "locat": 2, "log": 7, "log_level": [], "log_output": 7, "logic": [], "login": 6, "logist": [], "logit": [], "long": 2, "longitud": [], "longstand": 2, "look": 2, "low": [], "lower": [], "m": 0, "madison": [1, 3, 4], "mai": 3, "main": 6, "maintain": [], "make": [3, 4, 6], "manag": [6, 7], "manipul": [], "manual": [6, 7], "map": [], "maria": [3, 4], "materi": [], "math": [], "math_help": [], "mathemat": [], "max": [], "maydi": [], "md": [0, 6], "mean": [], "measur": [], "merg": [], "merge_biomass": [], "merge_station_metadata": [], "merge_wisconet_biomass": [], "mesonet": [], "messag": [], "metadata_stations_": [], "method": [], "metric": [], "min": [], "minim": [2, 3, 4], "minut": 7, "mitig": [], "mm": [], "mode": 6, "model": [1, 2], "model_schema": [], "moder": [], "modern": 2, "modif": [3, 4], "moistur": [], "mold": [], "monitor": [], "month": [], "more": [0, 2, 6], "most": [3, 4], "mostli": 6, "mount": [], "mph": [], "multi": [1, 7], "multipl": 2, "multiprocess": [], "n": 7, "name": 7, "nation": [], "nativ": 2, "natur": 2, "need": 2, "network": [], "new": [2, 3, 4, 5, 6], "next": 1, "nginx": 7, "nighttim": [], "noaa": [], "node": [6, 7], "non": [], "normal": [], "note": [3, 5], "notebook": [], "now": 1, "num_work": [], "numer": [], "numpi": [], "o": 2, "oak": 6, "observ": [], "obtain": [], "off": [], "ol": [2, 3, 4], "old": [], "onboard": 2, "onc": [], "one": 7, "open": [0, 1, 2, 4, 6], "openapi": [], "openlambda": [1, 7], "oper": 7, "opportunist": 2, "optim": [6, 7], "option": [2, 7], "orchestr": [], "org_id": [], "organ": [], "origin": [3, 4], "oro": [3, 4], "our": [2, 3, 4], "output": [], "overhead": 2, "packag": [4, 6], "pain": [3, 4], "panda": [], "paper": 7, "parallel": [], "paramet": [], "pars": [], "pass": 7, "path": 7, "pattern": 2, "payload": 7, "pd": [], "peak": [], "per": 7, "perform": [3, 5], "period": 7, "permiss": [], "persist": 2, "pf": [], "phase": 1, "phyllachora": [], "pick": [3, 4], "pip": [0, 4], "pipelin": [], "pipsqueak": 6, "place": 7, "plan": [], "plant": [], "plant_date_obj": [], "plant_doi": [], "planting_d": [], "platform": 2, "pleas": 1, "plu": [], "point": [3, 4], "pool": [2, 6], "popular": 4, "port": [2, 3, 4, 7], "post": [2, 4, 7], "practic": 2, "pre": [], "precip": [], "precip1hour_sum": [], "precip_daili": [], "precip_fal": [], "precipit": [], "pred": [], "predict": [], "premium": [], "prep": [], "presenc": [], "present": 7, "previou": [], "primari": 6, "print": 7, "prob": [], "probabl": [], "problem": [], "process": [2, 7], "product": 6, "profession": [], "program": 4, "project": [3, 6], "properti": [], "provid": 1, "provis": [6, 7], "proxi": [], "public": [], "pull": 7, "purpos": [], "push": 0, "put": 6, "py": [], "py_compil": [], "pydant": [], "pylint": [], "python": [0, 2, 4], "pythonpath": [], "queri": [], "question": 2, "quickstart": 7, "r": 0, "r3": [], "rainfal": [], "rang": [2, 4], "rapid": [6, 7], "rare": [], "rate": [], "rather": 2, "raw": [], "re": [], "read": 6, "readabl": [], "readi": [], "real": 2, "rebuild": [], "recent": 4, "recommend": 7, "redeploi": [], "redoc": [], "reduc": [2, 7], "redund": [], "refer": 1, "refresh": [], "regener": 2, "region": [], "registri": 7, "regress": [], "rel": [], "relativehumidity_max": [], "relativehumidity_min": [], "releas": [3, 5], "relev": [], "reli": 2, "reload": [], "remov": 2, "replac": [], "repo": 7, "repositori": [], "request": [6, 7], "requir": [0, 2, 7], "research": 7, "residu": [], "resolut": [], "respect": 7, "respons": [6, 7], "rest": 4, "result": [2, 7], "result_typ": [], "retri": [], "retriev": [], "return": 7, "reus": 2, "revers": [], "rh": [], "risk": 1, "risk_dai": [], "risk_df": [], "risk_model": [], "risk_processor": [], "roll": [], "rolling_mean": [], "root": [0, 7], "rout": 7, "router": [], "row": [], "rule": [], "run": [6, 7], "runlambda": 7, "runtim": 2, "rye_biomass": [], "rye_daili": [], "saascor": [], "same": [], "sandbox": 7, "save": [], "scale": 7, "schema": [], "scienc": [1, 3, 4], "scientif": [], "sclerotinia": [], "sclerotiorum": [], "score": [], "script": [], "see": 6, "select": 4, "sep": [], "sequenti": [], "seri": [], "serv": 2, "server": [2, 7], "serverless": [2, 3, 4, 6, 7], "servic": [1, 2, 6], "set": [0, 2, 3, 4], "setup": 7, "shape": 2, "share": [3, 5], "shift": [], "shm": 2, "short": 7, "should": [], "show": [], "side": [2, 7], "sidebar": [], "similar": [3, 4, 7], "simpler": 4, "sinc": [], "sine": [], "singl": [2, 6, 7], "site": [], "situat": 2, "slim": [], "smaller": [], "so": [4, 6], "sock": [6, 7], "soil": [], "sojina": [], "sourc": 1, "south": [], "soybean": [], "space": [3, 5], "specif": [], "specifi": [], "speed": [], "spiritu": 4, "spot": [], "stage": [], "standalon": 7, "standard": 7, "start": [2, 4, 6], "startup": 7, "state": 2, "stateless": [2, 7], "statewid": [], "station_data_": [], "station_id": [], "station_measurements_cach": [], "station_nam": [], "station_timezon": [], "statu": 7, "stdlib": [], "stdout": 7, "step": [], "still": [], "str": [], "structur": [], "studi": 3, "sub": [], "subsequ": 7, "successor": 4, "suitabl": 6, "sum": [], "summari": [], "support": [2, 3, 4], "sure": [], "surfac": 2, "swagger": [], "synchron": 2, "syntax": [], "system": 6, "t": [3, 4], "tabl": 0, "tabular": [], "take": 6, "tar": [], "target": 2, "tarspot": [], "tarspot_risk": [], "tarspot_risk_class": [], "task": [6, 7], "team": 3, "technic": [0, 3], "technologi": 1, "temp": [], "temperatur": [], "temperature_max": [], "temperature_max_c": [], "temperature_mean": [], "temperature_mean_c": [], "temperature_min": [], "temperature_min_c": [], "temperaturedewpoint_max": [], "temperaturedewpoint_min": [], "tenant": [], "tenant_id": [], "termin": [], "termination_d": [], "text": [], "than": 2, "them": [3, 4, 6, 7], "thi": [2, 3, 4, 5, 6], "those": 2, "threshold": [], "through": 1, "ti": [], "tier": [], "time": 2, "time_seri": [], "timeout": [], "timestamp": [], "timetupl": [], "titl": 6, "tl": [], "tm_ydai": [], "token": [], "tool": 1, "tornado": 2, "total": [], "toward": [3, 4], "traefik": [], "transit": [], "tree": 6, "true": [], "try": [3, 4], "ttl": [], "turn": 4, "two": [], "txt": 0, "tyler": [3, 4], "type": [], "u": [3, 4], "ui": [], "under": [6, 7], "underli": 2, "unifi": [], "unit": 2, "univers": [1, 3, 4], "until": 7, "updat": [], "url": 7, "us": [0, 1, 2, 3, 4, 5, 6], "usag": [], "user": [], "utc": [], "util": 2, "uvicorn": [], "uw": 4, "v10": [], "v2": [], "valid": 1, "variabl": [2, 4], "variant": [], "venu": 6, "venv": [], "verbos": [], "verifi": 7, "via": 7, "view": [], "virtual": [], "visibl": 2, "vm": 6, "w": 7, "wai": [3, 4], "wait": [2, 7], "warm": [2, 7], "we": [2, 3, 4, 5, 6], "weather": 1, "web": [2, 4], "welcom": [3, 5], "well": 6, "weren": [3, 4], "wet": [], "when": [2, 7], "where": [2, 6, 7], "whether": [2, 7], "which": [2, 4], "white": [], "whitemold_dry_risk": [], "whitemold_dry_risk_class": [], "wi": [], "wide": [2, 7], "wind": [], "window": [], "windspeed_max": [], "windspeed_mean": [], "wisc": [], "wisconet_active_st": [], "wisconet_biomass": [], "wisconet_g": [], "wisconet_servic": [], "wisconsin": [1, 3, 4], "work": [2, 3, 4, 6, 7], "workdir": [], "worker": 6, "worker_port": 7, "workflow": 0, "workload": 2, "world": 2, "wosc": 6, "write": 7, "written": 6, "wsgi": [2, 4], "x_0": [], "xxx": [], "yang": 6, "year": [], "yellow": [], "yml": 0, "you": [6, 7], "your": [], "your_kei": [], "your_org": [], "your_ten": [], "yourself": 6, "yyi": [], "yyyi": [], "zeae": [], "zygot": 6, "zzz": []}, "titles": ["OpenLambda GitHub Pages \u2014 MyST Markdown Site", "Agricultural Forecasting API", "Applications", "OpenLambda Blog", "An Application Case Study: Forecasting Crop Disease with OpenLambda", "Hello, OpenLambda Blog", "OpenLambda", "Worker"], "titleterms": {"0": [], "1": 0, "2": [], "3": [], "4": [], "One": 0, "action": [], "ad": [], "addit": [], "agricultur": 1, "an": 4, "api": 1, "app": 2, "applic": [2, 4], "architectur": [], "asgi": 2, "async": [], "avail": [], "biomass": [], "blog": [3, 5], "cach": [], "calcul": [], "case": 4, "changelog": [], "clone": 0, "collect": [], "complet": [], "compos": [], "concurr": [], "configur": 7, "consider": [], "content": [], "coordin": [], "copi": 0, "core": [], "corn": [], "crop": 4, "current": [], "data": [], "date": [], "depend": [], "deploi": [2, 7], "deploy": [], "design": [], "develop": [], "directori": [], "diseas": 4, "do": 0, "docker": [], "document": [], "effici": [], "ei": [], "enabl": [], "endpoint": [], "environ": [], "environment": [], "extern": [], "fastapi": 2, "featur": [], "file": 0, "flow": [], "forecast": [1, 4], "format": [], "frogey": [], "further": 7, "geojson": [], "github": 0, "grai": [], "group": [], "handl": [], "hello": 5, "high": [], "how": 2, "ibm": [], "instal": [], "integr": [], "intellig": [], "journei": [], "just": 2, "kei": [], "leaf": [], "legaci": [], "level": [], "licens": 6, "local": 0, "markdown": 0, "mesonet": [], "metadata": [], "model": [], "modul": [], "mold": [], "more": [], "multi": [], "multipl": 7, "myst": 0, "new": [], "onc": 0, "openlambda": [0, 2, 3, 4, 5, 6], "optim": [], "output": [], "overview": [1, 7], "page": 0, "per": 0, "perform": [], "pipelin": [], "prerequisit": [], "preview": 0, "process": [], "product": [], "public": 6, "read": 7, "relat": 6, "repo": 0, "request": [], "resourc": [], "respons": [], "risk": [], "rye": [], "seri": [], "servic": [], "setup": 0, "site": 0, "sourc": [], "soybean": [], "spot": [], "stack": [], "start": 7, "station": [], "strategi": [], "structur": 0, "studi": 4, "suit": [], "system": [], "tabl": [], "tarspot": [], "technic": [], "technologi": [], "test": [], "thi": 0, "time": 0, "timezon": [], "tip": [], "troubleshoot": [], "u": 2, "v1": [], "v2": [], "variabl": [], "version": [], "want": 2, "weather": [], "white": [], "winter": [], "wisconet": [], "worker": 7}}) \ No newline at end of file diff --git a/_toc.yml b/_toc.yml index f55657e..79dea18 100644 --- a/_toc.yml +++ b/_toc.yml @@ -12,4 +12,5 @@ chapters: - file: blog/index title: Blog sections: - - glob: blog/posts/* \ No newline at end of file + - file: blog/post/2026-05-18-hello-world + - file: blog/post/2026-05-18-agforecast-case-study \ No newline at end of file diff --git a/blog/post/2026-05-18-hello-world.md b/blog/post/2026-05-18-hello-world.md new file mode 100644 index 0000000..7a403e3 --- /dev/null +++ b/blog/post/2026-05-18-hello-world.md @@ -0,0 +1,13 @@ +--- +blogpost: true +date: 2026-05-18 +author: open-lambda +category: Releases +tags: announcement, openlambda +language: en +--- + +# Hello, OpenLambda Blog + +Welcome to the new OpenLambda blog. We'll use this space to share release +notes, performance experiments, and design discussions. \ No newline at end of file