From 944cb5f4244b5695ab1c241e122dcc3037265c2e Mon Sep 17 00:00:00 2001 From: Jessie Ssebuliba Date: Sat, 11 Jul 2026 12:30:05 +0200 Subject: [PATCH 1/8] add support care image Signed-off-by: Jessie Ssebuliba --- public/open-graph/support-care.png | Bin 0 -> 72582 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/open-graph/support-care.png diff --git a/public/open-graph/support-care.png b/public/open-graph/support-care.png new file mode 100644 index 0000000000000000000000000000000000000000..b14f1efbd1eb465f3f4b86139f640e4b7ff3e35c GIT binary patch literal 72582 zcmZ5o2RzjO|33{XqDitER>>){S4%o0WXBl^krD3fagh|E&dNAMD0`1HBP84z*?Z*3 znP*+r|9$!<|KB|xJ$mHxx%YUzp0DTY`Fg$IdaZh2{^*gjM<5W$QP{mZ4B0G_kMNi(c~T zoW{v^zHGr3u_fwk`+U^f(|2@le%tp;XNCG~u<)xg@0YKW1=5FwXrGZ;G+Mb`Fx}KJ z+0RQ-gh`{5$GWb4Q^g{uIXGlJ>8eaR8qL;*i+Er`TNA6RS(5q==}vJj1Dfbn2G2_8 zwIObwUmjp-e?F*;MFvyzVF&im_j9z3^#e0o$Z6=62zyN7sZAN{n-XM=(27X9)aY9! zf4>1Sn&XwMiA{}Y_IT~mU0$}mN%GEdthGi*(-fs~&hhwIs$Dt0`|{G;T%jeMa;sUz zCLRmz$T>q9zKGP-*|zXFTWsG2#t&3~-yBv8#eCrTWh&H^a*MP%lWoMgmE}Y>IsDsF z@Y5hu)BeBjLG+Y+m>pHMtvq!sJq@lOQ?ZMt`ANt>I2rBjvipwFQ?SJFw1{RH+W1uT zYJ)X))B#=lSe5^K-R^`a!BC8Gz>mfWUh5Ao-2(=pO*L92xRhmr@3Q&sKr7F4g--nl zi}qu%(TXNNEV5|C2k^@7E~Z8OJ1*OJIafT;UMMYPgYNJ5Zct1V)zLV?X`Ms9-Vl&$ z(S5Ottl?g9CFbDYcOdL?J&w75nWZn#@4Gyi=D1^+;#<5Lxg z9?P#an{Fn0_i;v81mFXzb^pEr85X!CS#yyxRfCxI7qV{8_4y}GJ5#YyaQNrL{=o62 zZTzqjet=7NT%Anz=n?z-2tt%JHDB9z(0rx4FF%Q(J9X~g6CUt{?x6XaPpSJuw~8zO z21IRwbzxk4SX1~#gO!XY4#KY9dF8F@2m& z7EE!rN6i1dW?yh4JAavz!(WumYJ$p|rk)unU zaI`L(_9=e%4XLnPp>l13XyaZqsWBI3G*_l5n76X)jw+K&lI@BE{v->uMY`B+i_X~H z`JGRhn!6?$h}2uq;!1{ECqyKOyN~>y48u{ce7}H&PZkI4&{+6e_w)FF`Jq@-Y>TbLdQ52)l}P| zI$SW1Qn|IcE+gK4IvdBrQQL?7tRc7j1cIOpzJ>~~d1 zv!`Gg?;o>rnRh!CSwzH|C;99yAY1o4&I*$`E~UJfV0FT%kym;b%tWxZ!k1{F`LNJ` z_E~w6D^$CKF1gT{=eCLemfGU*9d}Bd0!>AnKqEJmW4|?e0fd+W&8~5c3V?IPxXg`| z2b18g2BGx-tYyh7nRkr>4*S?~LYpqiz%9aYik!S>Be8dTA_G4~G+(!FC1*c7W#mBrFD@p)7Y9fbk zpbMAWWtcVg0&LCoJ1$*=V)gJC!*Jz&^SWICf&qIVxF%?7u9a*c(#}bM(bLLPt)VF( z72RXl`L0lmORj4VT}TsJiZA-WaCARc$$Pp~i#-A59-Au^tOZQQ$potqU_Cf|$tL6t zg)sMQ%IhPsDe*_6S=6{xgYgJ2ByCZof&5r?V2|-`DE36!J^*+GQDANw0!gohqo*FL z!uPy_$`vyF45$SLMVDQ{95mXWNtx(Z>OcFUJd%k`Ou)0(XQD`yiK18ZdXosNd$vTp zXllOo;6Jm3D(_SMVci=>klVANb>JgB$OJARuEh8E=Pm96IotRDumrTM;u#yxm&)YX)LOasQTL#Odd?6>-EjP`PR z`up#mAW~>k0z24%8ajYeK+&A4+vI;&*)1H7q3nYP#t0V4JL7_uE6Qc~J3y7Fs^jd3 zOx2=$dfEHq%W62Y0D}404*Y#?6tOWjRv(-slzj{S4i_a}gHEuzkef)|e^{#$NmHO1o}$Et{b@OK6x{Cp_|S50Wca^0&2GLTIalo3 z6T?F;K+r?jXDA5RixDdpQv#c&Ky)I2v_Uv-UsVV^gK?qHj1kC=& zrfYY(lz$ka5I@aH2)Vhu6<~Y#?{F<9V6+4Skv!lnf|0;LGF-btKyaw?$^#>V6dQ4A zvc?PcyUbDcnIUwicgc|wLS;X(roFo8Ia>J-+k;8`!b2bVuMa6vcXSMu*T{g`?a*WS z(=Dq4Dri4i>3sP^ivOq;ElT`7BVrf>j>{&14@@3K%8>W+gaz*o3jbR}r?rr_wt{GStPZN}Yi zb~J|c5K}w@ZJn{?rGFGroC3<`xabh~8^;nbYTqICHL$tY9rx5+O+2Z*&tQ3>n67)RB}KDsnPP@IcF8J$P44TtdV)YtOW89TCm2l)F`LxKsqTC8 zcP1cbAT~kN7#E!S7f+Z(Vi~nRuABt5Zg2rf(Tb9MLX<+vu0+2${lIxw&pP_&lKd}8 ztbU*76yh>pfor?6r@-A-x(nC$4)%dqb_)!)ATfg`DNmitRt7N>S~#D+RQCT~izk*{ z0I$W5(;42JDiPf?LPiR)Y@a_)Ql){J9Xw*%`zV>XaR=Tr$L;S~dar?5>&BD|VGlU< z6nn^rvED-$8c5Y@Ya(-P;W11}J~!eJ!LQpnWf_C2i`H=_7yiOOJ1`W(0c&;Pf%AxK zPx>r_glY#=9}u!@)K0LM0Hd0FNc;A8TyXqknS)I`R2;8B^W1}?1i=e8T{|g84|mESlA=X*a7B`sR{EA0P&q zv)VJohk%^O2i{Z$3JvJ5twH4f4-GL>f^Ey`Wlt!^rxJ-7cNhG`2(-htHgH*6rj(?` z0-_l)a7+Lmg#PSHm0vHyUm8k$RD0*^QwF8Dk5O^P%)|5;Bk$kAgUy923E zP1t-a%<17qb~(31Y0(4hx@%XZr5l!8 zy@Z+NES4$HqGLd|0Py^~uBxq13N+n!0U64*xL>Se1VUP=Ss1#t4fJo#9CRp>+X z9jE*Lz7JtB?ji3)-C`;*(=-oI{kB@MMYz6(cnN;CUB%ta5RT!PJc9Jc^^Hh0$ezYL zr{TkAfwZ;kQEnwAvMas7a3vH~rjy64H(f}e08?G~y4Pqb%Bxurwr{2Jn;!s!3* z60#JX>wpG4&85o;^85FSQf0weEqyAPG`FS-rNsn9xU^HmV=-n8?LE?RQ!|V{n+uvS zso&ej$>Wc!iU3wvZ-_t3O-_0i>f!W$JeMzScTMTFgAtf%Q-|1b(IhE$BINlP4z~H&(IK}sEj#~iErb*)pHwN=kW3MYPFRfTi|Phf8cD9 zb<=aqq{OMp|tyFy7E$N(w3nj zq1!|j>@@vfx{NnmDIvOtjk|yq{sKG0^0IjgOe-|=Fxb@h1ZPF}TwrQviFjF&DCFz z#icBgMw_3wt6x954frE~Q#KsDHF%%8!{T3lyCF-|>?r}M)PnZ40w#LdRq#_?(rscX zSk84I8t?%xr;65>336z~pM+fONqy+3omabO6kTe-KZSxCC=#XYhBb+waR?p1{Qc>)W5hUOhk%#9P+$Z~Z(WhYlEWf#ow2sx@Ah~M zR5Ax};%Vi3Xokq5yGUMR^x&5?K2WuMVNIto9NcigQ0)et*cGkRjHMHJT#_fAL#6aC=I=-6ZOp_p7JFWxJfc=q$J(`3sgv7 z2GdTQ@RTUn>xd~BUXt*-$YoymW13gmE5xs2x6B|66D*%Au^IBl%*$fimF|Q7ff^BZj6d^5{bibmb^ksua6XQwu>g_ z)cfE;y(Nd{0G9bM2SkM0p3O@;77(Qr7jpra)eu{>JK|Jzo_-e2JU^&Ko*O9KcXo{|u$7r72M*TKp=3bQyD5!pmMH zPB~oN^j8;~Qs9`>za-~NgZlyu=q3Ij58lgoh*bHaPX zqw%15DqhJOeZa9-0K_^-P<`=~q{I}9iOD-#2`VXvG|hmc+$zsx&6nA4Be?#FDMQUEh#`f_Phqrw79==;MYDkv6#+AlV?M6+ z(*<1%@U_ZU2EXPsw=J9AGPqs3+xTC%O50I0G2@qyd`|lh-Jy>@?OWLHGK9ESBxkS3#5t1P0UR5$9)1$j>8NMUAiWO4MLI;>Lej$w-2f_0a~l zjhteYzLo)cApbU8HDNtN;kTC-0iUIscM=MaL=V0Le}|3>HUzZk8Zm4x?ZjomN7tS! zqYLJzJ;4dko;+V=X6*n%^Jli^8VF6sq}!ow{EY^6Q9_|hA`NTJPc|wLZ%<(5M$?>G zT~kXrc>pQwY1?Lt1KY&`iD?IHH{vHPAQ24QedMKT?<$OOpn=BC95irw#Fh0re=g96 zDD7$ah&<(M#HpD*^rdhRA6r5w*mgLjps4baR?%~o;b;5!0&tgtAQY2GW6;@Xrt=SE z+2Y%4YYQe*bY7s^{gZ(0z%T_7w5dCRDcAdmD;x7)nDBn7wBuX&Lpy&16B3=HxkI>I zB`~+ouIvP81L$^_3$Q(Ir=(ku*8kXOcbsYM zF#35Of|`a$YP&SQL~!CHUFoFAJ*w(>pK#;D~_Y zC-O*~Sqb2K6E5gzn=lVs1kcBqWcVn-E*8{Sduu39J$1+Xg8Xbo^^`ORbe71Bl}t1j zrI|O}O5YBZiVLUDg#ibJtyoe^4dx?umua-QwXiT&-^M(vjoB_j1hF|rkAKvo9r(jz zI~^}7ErOqD;zBy&l`??pm4?PPamQ`};F~>VhfbWeu48OCefHS>)$GZ#R|!H(&1t}I zL!CkR5d8@HoEjVu4H|nKB~wcYXz|yYjVY9X1V>8Up)_&?f^Q;ZdSM!<2_Og6u_ra_ zV6#W$do=wlXm^SKhRSIHNuCm3HX}dEcFW1ze;E5Un02608YKMM)AX^`*xg>pl1}SR zEP#C7lwAXQ7|&;YGbhXLm5v@>8mc%QD}XNJ$C$|LI{j5#DE9UG`e2R#k9iOp3B(PZ zAwVYyzyPX?;cE6}UOrh~j1=r!!QM%bx#a%@0(Wv9zYli#445H4P zX4lyP>UNB6do#;s>MAY{*on&>g=+Z|!_Wa}q9cAR4>~)fX zSMW}^INDw{@P0e{wxn{TJt?A0(LSfQE_hO=-`fRU(SZyru*rC@!5pNYgRN*-%_M z)8>G&4QZ0OPWp5HQ1Q6kl%Sg~;gtqzgx@5tX1AY!?-le?dy+V|p3h`6_!9om+ck<9 z16;7#DgE3I?U?kFa}#b{sjTgOKbPWK)19cPauoY?cZ`$JvuWZ}1T%v{-*8kFNq)L3 zZxP3{cJ}UF2!!3jghG3~`7$_J9-q{r2*x>oTmW(FCL}(_aPUnXKu{+*Y0_R0BWI*b z<~@LyxU3Bq;)mJ|QZ~1&-xWe;s;*ErMYUIKmc`3CMrT)R&4hE^pgoAVK`kl?UHYw|zZL4pSR zj!+`LA2eiszWj^+No+E|NL;d)ihg<z3T%TZUSbUEYm2hxge-7d1sQ+R%VQTsh9mJV7hG>7-Q-w^>Mr8YD9Tiwjd=$ zsxrkt-L2uwTS_@Y)+vJ3f#3m0+iPeaON60ig;$A+Vdbg`XF$FWXLt`4%AiN1hs?dc ztURt>9!r;MH+5_pD4W2<4f^zYP#6HR2c4>EO23$M8w&Qmf!{fq{IW6?`{_)5gLbri z^!SB_CMqp3Go(;g^zGGvw93sMTUc_?T#ho9PlTQ{l^S^0N2cVyo_j1aCl%zk(F_G% zbRioRoeXUPJ4Ib;ge+%lv$?-(6&9WXcb@$@_N3g3F-K;d-_>K^@u6fl^rM(@srz5~ zrjWfpY5yJ54u7!W91%Pc;#K=ys1`ZhJO-+Df?N$TXr1qxf#;Knh@=__M5+#)9tQB5 zdIZFQY6I{#5~%C@ZL#8$!;ownTR=Xb#7YN^mY|RgTfoI1yLgT-AhD)?7QLo4Lw;7l zPXDeZ49A~^bCPoag)B7snE~+$WL z=A3JniF1`5wA)_y3qnh|%YYj=nRiww5Gv0Toz+t*N30&p}2fXvE8z$ERQ^H<$PKFtZR zTJe9@HBeusU|*1G+A)i_M;Ah*o6KTw7vC4ua5mG#hA`X*HSRL4$h38D!JqTtxV*w# z2ko!e*NVPg85Fq&N=7!IlXOD^QG%d-MWOl91L}YKO}Dp%nKdGkZf6@P;L7bVi_>84*i#LI*Ki+x5UNHi{{09iSLk>rd;HAD(%ZR#^ zm4ZtxU9oPfQhbnXw^ZT5RYc(GfG88tc5!!FnR(}QdkbF3L;(qO+W<7E!AY4`mgF(l zuyF#f#A`s!9 zdPv}U2dSw2uP#ah?RQ;t1V~S>yp*Xm4Fl%fQY1f#C@y-8@LJU&(Ikdu_y6uDls*lV zBVZohkOpj$U$3pbsh{an-gZ9mp)_hwz0`7|E4XVOM zJTQGW;+63GWa;9n2;I=h*EY>$ZhzeRxC?qHW9K|?UI+fgiA|0GDs_N1w4Tg|N5ma3p6Y(dVOd&$_@Xt`Gd`yBXLM{4)P2IWEGt^g(YCQ_w+jT z!hnGI%*a=U4+JT&-XgfPLT6;afI>kXq-*Y_Hf7@%j^I2H5i9<0DAz|&o7q98goU%S zd0BNy`_p?t33Wow+{lfMyW|SnqodGA1Cg=Qv2Tj~6NErTmr&Y&o-*G?hRvN3!8Cq} z?Qq9tmz?VLE2FoCD#qmyE}s<=^qI2lD-R$4z1ER5*zW(rL+N zN+1dMn{$+dB3y3jSQ=`J3U^tTjYoBZB(5`j9%MSHftq%33GvpNW_+Onal+6z_(5JRuPvg@!;9&-&T+Zh8D?C-DZA({sq-!?SgZSL0 zc$~W-*fd1-+bS$GW*h=ZZ%mEAc(gAf2Ujwlfo?$HSngt#O$m{4YW?v;i7LiC_i_{L zvY#A)abEUvERU{p8>Rn*^23hF$!1N?&IaJL`LLB4%Rq2&GMgcN36VM8o)rHMENp07 zWPPvSl2CF(*Mym@K&nzR(*M9JB@J5{JFR(X1B6Y`3Fd6K*d+6x!(e}=NE(jyagi-d z@1=p~b8`BlL0Nx}IjiEDwGgtaa)edNY+akWe!9&L^!WBXLOuDT-a@(m7~fZ-T-vyu-hE|j_W8il7^rUmc4}Y3Wm7n&_+uajZm3ZDCfzUkI4_f)ilKa+B7}5eycU|w3t#U<2C3X>JtR6 zvO~vdKht*8LsYEB&zJeXJFRU*d<~!h8bj{o>wH2FooOJkkHPUb=-Ahb<{Bnyr{O@r z+qr5DQm?e-EfFE0O*{ak8w_oj8^?!tve+hqVo(S>1%)eLZwiBxCXa(o%aj3UXV24o)2$XYx1*jaFgz+@FtRrF93XrmcHZm$`T&I1+w zbi(q;N?+I}qrnLlP=)1&7AR$~Zf!eM=(6h0VRiRKu!nak!NQv>A0p$j&fT9wq*VyS zIg82yde2KSGj;$b{&UAkYbu4IxlCJo=pdvs&Gi=>5azdT0mU?`D*!>7AEc?qCyL?rAM%+H;H|O^=7sDc2hWto9uK7qg!ss zklLDF`kMz*#Ux!qjCow2gkB$B&H0~JnfXOz@azvMGi}^3Q{XV zP+9rljDG6KY~oxpphik}DJmuI_|fcUeduA4cs*T82V$j;l+Qz?s8s3JFfQBC5(P9u zt|UdqkK6~yzrb6p9GDH1;2xs`Z{lKKAg5klWW1(TZ6>8+j|4>+<;quKUkIglDGpn- zlGFYDYk+e9&`-yg(kWKBaAR9qHX48BdDU4YjRNIf&z$=Z+@5kbx!V{J>>7n&%l!G? zEjFkJPY)%@@7H3P|FJzJaHYg1CG#2fp56^#WpSm_c`1sKyA4#}j_g?%?%GhWqL3+F@E;WL|XBYOWR#*ujjlLK15a;%DwfNr|^%< z=GRhYS?R-RA19TJ{a^-c8W$5aAXVnl1w>-5s@I&O;3wCdht8BXGf7cu?)b(JIQ+M9Ezc^NmF7m!jscyrC7AYAOc?IVprle; zz{wL7ug`&5T0!95TXee;xY$*v;_j7(3(odN63l`9oP{l%kI0!9wkU#2E5rEMT#)=V zUx7=QDhj74dJ9TJP2}Nmt+IrF{qmr&hBl%aq#x8wXU4KYZJ0bcH^l&EQ|N!p?bl~~ zVlf(F?2og`0SV|^*jXynwyQ!<4+Fc`9JtNtxJ5Tiap>m5Pt{w)Q3G6x zqDc-n0R}NzM?A$vz_!@5BY)CjA8e?X%`*DCya2&{xncR_?4#lYUMcScA<5x&PFk?q zbFi%;lR;3n^4L8aQ8WVx{pPX(-@iUHY9&+Z4rIf|;VY`$`3MyMa;BS0*tmyN>F@Tw ze)rkK5wkazYWBOYR?2!lBYE^2N-C{OuV-6Pio9V1C$40RQ*&#sH9Qqw0+~Pby5-Q? z!R|vNM;zvlp2GB;$G5XLiher;ahp{$C2)>uzMT93v@vLoepN@N;h=LziKR99!M^R) z;zs7+2LcKNUZRBcYrr~G<9NpRm2yQCcn~ z^Fd@%X@Jvcuok5!<pu)u_bD<9+ryP>0F-H)MYa0-8c zX<#1kaE9bT^Gyq{Du(AdaEU>kK&4frRt$S=%M8pZur>eD9 zUIf#10~|bw0vCA2yQKjlcvU0|lP1gd0YS0uV+oqUtHEUfWBC`4TUCKY1|`i4r z;AGH2!@I4K1M!n|kd2$muU2z@ZLC5SXms9HY=}d&ewsR6I5clf;iw)sdI-IN_nX)@ zpR+-a-EBh*$sYWK?MrWblP)A7boaja`KJeO(O+eB*njG=KI%Q6>XU;F`Vi$~qHlkk z@j0NaI{u>l2z_SHR0F@SE<8_W;OGyws@q4@HeNA6vLxrXBU?iwAKfW~-5svkT<8j@ zNrmFv86<|ZJ8B83(8W|}5a*_D8w)J%P2;b=&(lx-oHa-=%1_y_CY5{~l51h^gB7~F z_uM-ABvenzu_)uheEI|8lHb*12+*AzI#2Ac=*Ob0*_d1s>>QW(qXpa;{)UTj!4yEl~P2qfOYE|eV>^?E?AHON{*a_Fe3 z5}sz(TzqJLq|b4(?nwWIlis*PR5!uZxcT^kY8;_xIrAlpjzvv<$mWwnO#156`yf^7 z2q)@J2TS-38piVkm?l#R@)|t#*CVZt+Wgdj*B|3J;mi>~3cA2sJ5#dQh29_K<>%T= zHfz1s^3qyjpJ9>KK}Ki>ZB@-Euk`5vrDN3II1pHB0-YP4SP5DFBB+sGW}47*M~HL3 z#sf3`{m1;9uqei6E{rDfS^@OyEls8fG<1wt`3EbFpKG~TNA_S5Wh%&fhx4VM4~Zvw z^u19#?r1Zlalo>COybw}Be?vq4W~!A2G*<6aT^Njnx=Lb;~nVe3YrLUGxR$|@!>839ke{J;W3^iPjnh%@-u(}X=%Wo`pO^6t0SMhg}egr;J7 zxw!VzN#nUNB?3DOXz>RuzpWziztlT4c>gNReR8Qgk~m;FXXp;#o5~0LM@nnWoIr zR*k*1A6WBDABc&w7g&nn>wn%UaNe9+jgnj;PyA>tl)1`UUwPz>yJGSeSLRGazFmCG*K!7F@CGu`NcX}Xc>TaKp`|;wHfX89ctm;4$0U5oN%%`jG){m5Y zV54j{J6Cpt6t}HE#e%n;R?jH>*>uK3q9@p!eyKPUSE<)U1)(C3Txd1}3zM-Ad3fGX zyNQbnaYh&47XC_xA^n8?AGGby9D59%3j5M%sEK@crVL7FElI80QOnVrMm?{{nk0|* z%*(8~7&q=+eVdiZkuWTmnEZC%>;ViFr0Sv8EHQn)l!UZ6#HTIsS%{&p z`@p>xm)n`NcTdP$By+10^&$wt=;ZUr=^d}1J3uwN_QLqR4ijYUiN!)g_rPc76rA6g zX9g2n+xD=MrwZs2fjB4KbAX*7orU+idkFN_;S)!si0=C1Ct+C`(-2gZQaUX}DqM#t z`@A=f|I@Dv!HM}A4uQnmOowlQ-~b=Qxwr7xtNJIw!c^dv{Q)X6pL=?;@}Xb7S!m)E zqOf(GksFdKCn+?+@>+|WOzM*upLK_qO7#TaGCV9+04@RTyPgAu%)gsHJ94`Uc~brW zrcbS-Ha#`qw(w08J`S!;)egD4Ej#yJQI5505@AcCWTyCiT6U&zNXx-43$OJ0pS8~O ztvWuqRbX9haF!8S$YQ> z;G&kNVVmi3s^~bP{7pX$7v>=o1oAwJGXCWpsL_5=O}J7nI1;IC#~N2J+qN znkx_*sMw>DaYLQwZRG|FT6}OPjLp}k@3s-#wyo3qpkGwFIuAl(qkyxX17iA+26~M9 zKPB~YJga;l^a)VC9_-aZiu6eoeV>_OFlN1ni^9VaA^BYk ziYF)@%g{;6b7(^zr=pdhfFiOuQhuB9{6yPk$)Ps}h97%2pOHd>0;KG=#q13I(2l~f z(JtL3daIj9-hBItMG1SP|MIS-mHzZ=6#KJE=sXA~@cCWie!^WS4|x3fbeWeKT%KXV zvd*V|e!Djy6$*2wZty&X=+;Fb@2<}NI1rWD@glNOByQs~ zK@z%nTX=+UTe$w3#E(Sf4;+gt(VEE0eEz>U8q6o;pQUo`r8zI<@;xoCcNpfB|*h6WLpbMqUPI@J}!db*7DW= z*i%s97}#m|ZZ1_kmaRm#bTEjfrY_ZPm@3of&OMoHV!f68`|vMfb~q2x;tvS7XW{4v zz_O}sdeagTcSH%X#bd@N*RN=&EG3Z~lDRjO=9#D0o-mKoNI5-$S4G)R@2mTMFjj@jLuaIK?g!ly z!hqJFGk(16V&0|s-OHhsy|Gnd1K z<(GTV^t1I|Ed7DGkdOTY6iHp5Kv0LJK-b(;x!0tYtYfn=B~hzKQ1i`c*h7n~BBwOr z<9G!7`M<`c(L}1%sbQPdl^$L`c=fov1@}}El8uebI|cGCzSH+jYuoG_^M?Z3g4!ol z&1bpKSolP>kW%xQASa-M|7G>~J*9LwsLjRR;L?{Q4D`szvKJg{wRERQJXgy@2a)y4) z;82|2H!sIMm386oOw0XGNE5=a03@W`KXFN;Ef&efpU9W(*H0fPB+MLH?|5&=qpl13 z-H~sHYP`#<>f^=8g2Q%R955a#37p&rpP^KK*Yeu1n181jv~LFwFGX`P2J9>`Vpe zzEM(Z;xx*O$=9H1Nl}*`G#0({!gT+zr|j#fpx?ARQ)RIql?=#mV?Sx7ZBF=xg*eZZ zf4p6d8G3j`dix_cU68Tffvu2$>tobxf5rqExe18Fwp&MU*y?K&&I^l{zPo<@3d_q> zsLb@!;m94-4FvFP1>tZEv?3HHkw4pcStWm3;eq2jGZ2pM;4h$^f&<(yPhsrDpA6}@ zMSjc+xK3LVAd5;FklN<|ZzicC>u=C^p|*z9Ez#$Z$O^TS;ifXsbDD7Xpv3F%^7T4u zn~K42c3c&Ff$0*G1u4cL5;z_r(A@DN#^>mwUh%!WDZ6(BOX@EMy;?ru?r4O(vS9&4Pk7gk`T_$#5us2ZxXJS46#&#->_~eoqSy>Iho=A>;Mb3 zG;|RT%SxX{Imy7Hjv)q{*qWC%9s{NCtK+uD; zsPm_8_td&%CMP<4Q=R~ijE28tlgQSXC4G5bh3S2T&mO}eWr7h)b-t3i$daUh>yqku zzqjj(PoMlo%WK1)ft2@Bvggj{2H$snj<^EV{VjfO%=2D0 zPC`=Yog=>SWr6j`McJL~xv)x-l7cP@!E7_8zvOv_UFRY)ykV4l|KDIW&n`_3Fb2z_ z5xo!iZ}5!rHgnGCcC~toQWENoPoqGhu9oz^UUyY;*_PEnE)00pSRRthng#L{q`sWj zV;6?PmcC=@oktQss_%;(D7lx{K6arp9Fc5n#U*@Q+p>BK_#D#hpNJ?*rN#L{P&a`d z1d%u+6!N;N$fuQ#cmItuqrA%fvfPT>WYx5}UJb0QtRj}NORj1d$hRF2;TwpxYEjQT z4&hBZ59SYdr9$neFF>xdA0~3)rK~0@IIk6YkCd#I+za2b>~L$T^+;J-CJCnfdeo`# zd{Un^$ zAP@S84*1vUIYIHLN!aqS{?CWSBRYK{^K~DpD=PLw-n^&XR9c#e@5_wsE;q86x9VBE z(c9#~PyLwrh1}KIqqkI+3PS1*h&X~y+=1z?ohAX(1*NzEY(>kP5;xH~k#loSl ziM&aJjF(qjefzqXmN?)QSSt%P)Dx&X&3yZLS3g;}wQJ#Pp$yBA@I^S52JU`0vxKIA zFrj({$CPX9f5tobX=}ncJLRhG?`Y?~MT@N_B%Avwd5g@M z>W$6`G`D*NYE~-yS&QGn69L?`Njmz67>cje)=EFQAUk_AYiXH1^x!@=dy``gZQ9?& zGv%IDXgIiIBDLD{<|ySQGU3^+%O1Z+b^*P8MV7v8a!CJy{X4UmQ-Q@*4p2r`owZNg zllbAoEg@CaI3V@1qYp!>BxC8ZgHB1dH0{L`cg@486PV&?Ih<6nA?s34UhHq`?tkFy zm6KiD^*X#nzt~Xefr+ABsF`KZR7G$Et^?uEpN9Pw_;g_(Pa?s4i7bc1C#xCGbucS`D z)d!F!4br$y*qqt2gx8<-Jojo}+*dV;g3OUiN^90Q(ohD>sG&U$W`i`)IU;6$#Gz$I z!I0*Wd0oMQhJ%&db*BC1j8F8VUL875xB6D?=v5Qs^B1ey1!5}^Wq8ps+;*fL^D5Gw zX!zSpTJy}!H|vZcxDp0q{-W-FZ#-?k?T@m`TMLmU=Iak9JtYBliozbD!i(K%-{!GY zY9WueEilicQ%V!8rbFnw@v%W)VA5}tOV?k0Z0zd3!NV3fAU&xu;%P8p8Fg8(u$VhS z``eF=+1u<+eWBW8OmJsjqC59ghO+qJZ|7VN(@r@nZ`98x12BmT#3?43U`(m{Nqe&} z7Nc(@sO;*smLpkfTjbBbMj1MVUwo%*oN!sii@V(M?8B&!-^S}Z(bgquLdO*6U5?s? zhA+-}w5%7PqY(|))7=P?9&AQtF=j8Qj}00goFg4|#!9xOfHq67Yi`ovi4SaD0O3Q* z*j5);{=nsy*Vz61Y}!LD&1^ES6PF$uL;b_M;m5nb-<#!1%KB24Co{_*w6^6Te=J_eslwwp3&7s4bB%q$tJg02m3ysvd0=y^L~nLx9}!W1(^>w*#i z#Z`H1%n>oibj5!zPTFIHXx>;GRBMfd^m;9LhzO)b@!0M@29Lud14AF zHlqjkGs#bZ+9d+Ll{w)oJKiw0K1UK7Bz%d=U*MeWmeCX{68t*$TL8^ikH~a@s1&1G z2EtW@1}aX(v(36*{t=%yK19!W;~0hhZ4L?@-8Oh&iJh&`a*)-nQ|s*=RXp$^Y(d_M zAxiOg^h+m(-w)boL4826Sa}mp;+OQ}JSAAGJ7u>uP zzT9kF^HTfp8S9_8`(+ED2dbFP^B4B0wFe%Cpl~H`9Wu?TmNTmRWo+RB9ZKJuK=wOa zVchfJm`(Bm-QBs*Q}LuCF$Dqm>P@uPxkeN zPlfAC&l}DWKassSm+00^u|LOF`-LwL`@D7H+6ZHlMRiE$9&`WJ)fVh>X-bsoS5tbx zO#$vcnVYOhDVB9ievI}Nwk{*q-?|RzIULn8J8L%fCez)){iqAwSTsc{l&9InUX4TK za`?KQkJVv98Ss1KK2#XW`&2pbWpZvhzcT~5zBxUBYCaH@KTlniza4-KbHb&j%HNW7 zXa*VC9v*UjnG}*awt5S9o1t3zXV}M~$SM}+hqoxkCFzJ11qrU@^+> z>z6*~FBzpY{2lI&b=T?hE>1CtCZG9LP<=Q27LMcVg1x%i@7{RsZ@zu2l9KHmWH;^3 zgI2~GGzIT2PO`?T!$dpf4m^QQH3MC{qt5pa-vkX1k!Q@KzEY4XTgB&b*Zg8Qat}F& zD`~yKKS&7!|D4lP8b0ny|CUxf!m=7;LL4nil{>R!i}=k@-Md;3JqJ%cydK=~s5jqAne!L*oH;y;W~wfkZwJGm?MobbZx z^37-W<)kF5+w#RR#2vSv{km8^(^MQ@aLm!uzye;ySm&Q@nk*3E&OJ5B>M%?Y7m%CmakJjE(LaYsUO+z7rTIWW z_0x(AQJ2QbrFh-KZz*(=&AMQzKN#6csLhUl6ElgSy6TWTQz}`>b?l%C@GlEC_1A?W z=)U=|r$KK6CJs%zUYhEiIaPQx6Tf*~mk>Qr+%xy+jh*oV`Aq-)+n~w^Ywr)L2!io+ z)~1hocDp=MdqMD~d&|z`@(8})l@vQ~{$77rynV&T=JqPAje*HR1Su;7@uXesg*89s zd~OaoQ#m%2s8; zZSG7r_C>8`vHixdcyoTFla?Z$%IfkDwwM&qwUDtNyQnVQeEg8Ot(knAq^Lo)@Jcpk znrEWkmH7{e61NJwEuI{67*Hf#seFCyX9e+dWJ<}BN9;=+4o@qb9YVpsJN91QXXNqj znCWjA-L8?(EHGKn9c}#+1learBac~j{gxXB`#S`wsuS7≫5kP;SjyJ*(rsA7lR0 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 Date: Sat, 11 Jul 2026 13:05:54 +0200 Subject: [PATCH 2/8] add slug to posts for legacy compatibility Signed-off-by: Jessie Ssebuliba --- CLAUDE.md | 67 +++++++++++++++++++ ...id-netbeans-platform-certified-training.md | 1 + content/posts/2011-07-15-jgrid.md | 1 + content/posts/2011-07-28-fun-with-gestures.md | 1 + ...04-preview-multitouch-gestures-in-swing.md | 1 + .../2011-08-16-talk-at-cebit-tv-studio.md | 1 + content/posts/2011-08-17-jrating-preview.md | 1 + ...2011-09-01-gesture-wrapper-0-1-released.md | 1 + content/posts/2011-09-12-garagetunes-demo.md | 1 + content/posts/2011-09-15-jgrid-talk.md | 1 + content/posts/2011-10-04-release-update.md | 1 + content/posts/2011-10-12-guigarage-javaone.md | 1 + ...building-javafx-applications-with-maven.md | 1 + ...8-adding-javafx-to-your-eclipse-project.md | 1 + .../2012-11-01-introducing-vagrant-binding.md | 1 + .../posts/2012-11-03-vagrant-binding-demos.md | 1 + .../posts/2012-11-13-jgridfx-first-demo.md | 1 + .../2012-11-14-gridfx-is-hosted-at-github.md | 1 + ...ying-with-gridfx-and-itunes-webservices.md | 1 + ...-11-14-vagrant-binding-talk-devoxx-2012.md | 1 + ...7-custom-ui-controls-with-javafx-part-1.md | 1 + content/posts/2012-11-17-swing-is-dead.md | 1 + content/posts/2012-11-21-gridfx-pagination.md | 1 + .../2012-11-25-maven-support-for-datafx.md | 1 + ...9-custom-ui-controls-with-javafx-part-2.md | 1 + .../2012-11-29-gridfx-is-moving-forward.md | 1 + ...012-11-29-the-future-of-vagrant-binding.md | 1 + .../posts/2012-12-03-gridfx-supports-css.md | 1 + ...ccess-puppet-forge-repository-with-java.md | 1 + ...2-12-12-some-news-about-vagrant-binding.md | 1 + ...first-steps-with-javafx-on-raspberry-pi.md | 1 + ...2-12-29-gridfx-on-raspberry-pi-javafx-8.md | 1 + .../posts/2012-12-31-bindabletransition.md | 1 + .../2013-01-01-invokeandwait-for-javafx.md | 1 + ...10-custom-ui-controls-with-javafx-part3.md | 1 + .../2013-01-16-this-is-for-the-native-ones.md | 1 + ...013-02-08-change-java-version-on-mac-os.md | 1 + ...02-09-datafx-observableexecutor-preview.md | 1 + ...-stylesheet-for-your-javafx-application.md | 1 + .../2013-03-02-update-for-the-native-ones.md | 1 + .../posts/2013-03-17-introducing-marvinfx.md | 1 + ...-03-20-assertions-and-rules-in-marvinfx.md | 1 + ...3-03-20-use-native-aqua-icons-in-javafx.md | 1 + ...-04-28-the-native-ones-are-not-sleeping.md | 1 + ...missing-link-between-fxml-and-your-code.md | 1 + content/posts/2013-05-09-aquatecture.md | 1 + ...ing-javafx-business-applications-part-1.md | 1 + ...ing-javafx-business-applications-part-2.md | 1 + ...013-05-26-aquafx-lessons-learned-part-i.md | 1 + .../2013-08-29-boxfx-javaone-preview-1.md | 1 + ...-30-pimp-your-app-by-using-the-blurpane.md | 1 + .../posts/2013-09-13-datafx-controller-api.md | 1 + content/posts/2013-09-24-flatter.md | 1 + content/posts/2013-09-24-lets-get-wet.md | 1 + .../posts/2013-09-24-make-your-app-smile-d.md | 1 + ...world-data-into-your-javafx-application.md | 1 + .../2013-10-07-aquafx-dressed-in-elements.md | 1 + ...0-11-simplify-your-app-by-using-bonjour.md | 1 + ...-27-datafx-controller-framework-preview.md | 1 + ...4-01-23-datafx-8-preview-2-processchain.md | 1 + .../posts/2014-01-24-javafx-meets-javaee.md | 1 + .../2014-03-05-mastering-javafx-controls.md | 1 + .../posts/2014-03-27-datafx-8-nighthacking.md | 1 + .../2014-03-28-reactive-programming-javafx.md | 1 + .../posts/2014-03-29-javafx-css-utilities.md | 1 + .../posts/2014-04-17-datafx-8-preview-2.md | 1 + .../2014-05-15-javafx-8-interview-jax-2014.md | 1 + .../posts/2014-05-16-datafx-8-0b3-released.md | 1 + .../posts/2014-05-19-datafx-8-0-tutorials.md | 1 + content/posts/2014-05-20-datafx-tutorial-1.md | 1 + content/posts/2014-05-22-datafx-tutorial-2.md | 1 + content/posts/2014-05-31-datafx-tutorial-3.md | 1 + content/posts/2014-06-08-datafx-tutorial-4.md | 1 + content/posts/2014-06-10-sneak-peek-aerofx.md | 1 + .../posts/2014-06-17-aerofx-getting-closer.md | 1 + content/posts/2014-06-27-datafx-tutorial-5.md | 1 + ...08-win-copy-mastering-javafx-8-controls.md | 1 + content/posts/2014-07-16-guigarage-logo.md | 1 + .../posts/2014-08-26-javaone-2014-sessions.md | 1 + .../posts/2014-09-09-javaone-2014-preview.md | 1 + ...09-11-javaone-preview-enterprise-javafx.md | 1 + .../2014-09-17-interview-fx-experience.md | 1 + content/posts/2014-09-30-datafx-8.md | 1 + ...9-30-enrich-list-ui-using-medialistcell.md | 1 + ...-objects-pattern-automated-tests-testfx.md | 1 + ...stom-fonts-javafx-application-using-css.md | 1 + ...-application-resolution-independent-way.md | 1 + .../posts/2014-10-05-javaone-2014-slides.md | 1 + .../2014-10-13-javaone-sessions-canoo.md | 1 + content/posts/2014-10-22-datafx-8-released.md | 1 + ...2014-10-26-extreme-gui-makeover-javaone.md | 1 + ...ew-desktop-application-framework-datafx.md | 1 + .../2014-11-04-responsive-design-javafx.md | 1 + .../2014-11-12-first-steps-webcomponents.md | 1 + .../2014-11-13-hand-drawing-effect-javafx.md | 1 + ...-30-desktopembedded-application-api-jsr.md | 1 + .../2014-12-30-javafx-talks-javaone-2014.md | 1 + ...15-01-19-concurrency-ui-toolkits-part-1.md | 1 + content/posts/2015-01-21-support-emojis.md | 1 + content/posts/2015-01-22-datafx-tutorial-6.md | 1 + .../2015-01-28-set-datafx-application.md | 1 + .../2015-01-29-introduction-open-dolphin.md | 1 + ...15-02-01-concurrency-ui-toolkits-part-2.md | 1 + ...5-02-06-test-driven-development-youtube.md | 1 + ...5-02-11-jsr377-got-green-light-continue.md | 1 + .../2015-02-12-short-introduction-bower.md | 1 + ...2-13-quick-overview-datafx-mvc-flow-api.md | 1 + .../2015-02-15-use-webcomponents-today.md | 1 + .../2015-07-10-material-design-in-javafx.md | 1 + ...-javafx-uis-in-less-time-use-projection.md | 1 + ...to-create-a-responsive-layout-in-javafx.md | 1 + ...ractive-application-with-polymer-part-1.md | 1 + ...16-layered-images-and-icons-with-javafx.md | 1 + ...8-more-fun-with-layered-icons-in-javafx.md | 1 + ...015-10-04-dolphin-platform-a-sneak-peek.md | 1 + ...form-a-sneak-peek-of-the-controller-api.md | 1 + ...-platform-a-sneak-peek-of-the-model-api.md | 1 + ...n-platform-a-sneak-peek-of-the-view-api.md | 1 + ...n-platform-how-to-create-an-application.md | 1 + content/posts/2015-10-19-javafx-8-refcard.md | 1 + content/posts/2015-10-19-javaone-preview.md | 1 + ...t-preview-of-the-javaone-voting-machine.md | 1 + ...hin-platform-web-frontends-with-polymer.md | 1 + ...1-09-dolphin-platform-has-been-released.md | 1 + ...s-with-web-components-university-devoxx.md | 1 + ...ervices-with-dynamic-and-rich-frontends.md | 1 + ...hin-platform-in-15-minutes-nighthacking.md | 1 + ...avaone-after-event-with-some-cool-talks.md | 1 + .../2015-11-30-round-images-with-javafx.md | 1 + .../2015-11-30-styling-a-javafx-scrollbar.md | 1 + .../2015-12-02-dolphin-platform-jumpstart.md | 1 + ...-dolphin-platform-0-7-has-been-released.md | 1 + ...2015-12-16-dolphin-platform-and-polymer.md | 1 + .../2016-01-13-the-javaone-voting-machine.md | 1 + ...-javafx-web-components-and-open-dolphin.md | 1 + ...016-02-02-how-to-choose-the-right-color.md | 1 + ...-dolphin-platform-0-8-has-beed-released.md | 1 + content/posts/2016-02-04-guigarage-2-0.md | 1 + .../posts/2016-02-04-round-images-with-css.md | 1 + content/posts/2016-02-07-javafx-and-css.md | 1 + ...016-02-09-javafx-and-css-pseudo-classes.md | 1 + .../2016-09-20-javafx-jumpstart-javaone.md | 1 + ...0-28-my-thoughts-about-java-build-tools.md | 1 + ...-03-31-future-java-releases-for-desktop.md | 1 + content/posts/2018-06-25-java-releases.md | 1 + content/posts/2018-09-16-java-11-licence.md | 1 + content/posts/2018-09-16-jc-java-article.md | 1 + .../posts/2018-09-25-java11-release-event.md | 1 + content/posts/2018-11-23-amazon-corretto.md | 1 + .../posts/2019-01-09-integration-docker.md | 1 + .../posts/2019-01-15-rico-server-timing.md | 1 + content/posts/2019-01-25-security-exploits.md | 1 + content/posts/2019-12-10-webstart-advent.md | 1 + .../posts/2020-02-15-back-to-the-future.md | 1 + content/posts/2020-02-21-adopt-tests.md | 1 + content/posts/2020-03-12-cyberland.de.md | 1 + content/posts/2020-03-13-cyberland.md | 1 + content/posts/2020-07-14-adopt-roadshow.md | 1 + ...-07-logging-in-java-and-other-languages.md | 1 + ...2023-02-28-java-backwards-compatibility.md | 1 + .../posts/2023-03-14-java-release-train.md | 1 + ...detect-null-errors-with-static-analysis.md | 1 + .../posts/2023-05-09-java-module-system.md | 1 + .../2023-06-22-logging-facades-for-java.md | 1 + ...istributions-and-support-without-oracle.md | 1 + .../posts/2024-01-11-java-module-system.md | 1 + .../2024-01-18-performance-of-java-logging.md | 1 + .../posts/2024-01-20-open-elements-2023.de.md | 1 + .../posts/2024-07-09-open-source-java.de.md | 1 + content/posts/2024-07-22-gaming-web3.md | 1 + content/posts/2025-01-03-dco-signing.md | 1 + .../2025-01-16-open-elements-in-2024.de.md | 1 + .../posts/2025-01-16-open-elements-in-2024.md | 1 + ...8-08-support-and-care-jira-gh-migration.md | 1 + ...12-support-and-care-reproducible-builds.md | 1 + content/posts/2025-12-15-cra.de.md | 1 + content/posts/2026-02-10-review-2025.de.md | 1 + content/posts/2026-02-10-review-2025.md | 1 + ...toolbox-in-initializer-for-apache-maven.md | 1 + content/posts/2026-03-05-oss-ai-slop.de.md | 1 + content/posts/2026-03-05-oss-ai-slop.md | 1 + content/posts/2026-03-12-agentic-wallets.md | 1 + content/posts/2026-03-19-container-gov.de.md | 1 + .../posts/2026-07-06-oss-un-to-dortmund.de.md | 1 + docs/04-adding-blog-post.md | 51 +++++++++++--- 185 files changed, 291 insertions(+), 10 deletions(-) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..1fd6e963 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,67 @@ +# CLAUDE.md + +Guidance for AI coding agents (Claude, Copilot, etc.) working in this repository. Human contributors should read [docs/README.md](./docs/README.md) instead. + +## Repository at a glance + +- Next.js + TypeScript app under `src/` +- Markdown content under `content/` (posts, pages, employees, …) +- Two locales: `en` (default, no prefix) and `de` (`/de/` prefix) +- Blog posts live in `content/posts/*.md` (EN) and `content/posts/*.de.md` (DE) +- Post URLs are canonically `/posts/YYYY/MM/DD/` (+ `/de/…` for German) + +## Common tasks + +- Add a page → [docs/03-adding-pages.md](./docs/03-adding-pages.md) +- Add a blog post → [docs/04-adding-blog-post.md](./docs/04-adding-blog-post.md) +- Testing / QA → [docs/06-testing-and-quality-checks.md](./docs/06-testing-and-quality-checks.md) + +## Conventions + +### Blog post slugs + +Every new post **must** declare an explicit `slug:` field in its frontmatter. Do not rely on the title-based fallback. + +```yaml +--- +title: 'Dependency Health Checks for Maven Builds' +slug: dependency-health +date: 2026-02-27 +# ... +--- +``` + +Rules: + +- Short, kebab-case, ASCII (1–4 words). +- Do not repeat the date — the date comes from the `date:` field. +- Use the **same slug** in the EN and DE files of a post. +- Never change the slug of an already-published post — that breaks existing URLs and backlinks. +- Legacy posts have long, title-derived slugs (including umlauts) for backward compatibility. Do not "clean them up" — those slugs are load-bearing for existing links. + +Full rules and rationale: [docs/04-adding-blog-post.md § Slug convention](./docs/04-adding-blog-post.md#slug-convention). + +Reference implementation: `generatePostSlug()` / `generatePostPath()` in [src/lib/markdown.ts](./src/lib/markdown.ts). + +### Legacy filename alias + +Every post is also reachable via `/posts/` (the legacy Hugo-style alias, produced by `getAllPostSlugs()`). This alias is intentional backward-compat plumbing — do not remove it, and do not use it in new links. + +## Scripts + +Helper scripts live in `scripts/` and run with plain `node`: + +- `scripts/backfill-post-slugs.mjs` — inserts an explicit `slug:` into every post that lacks one, computed from the current title so URLs stay unchanged. Idempotent. Pass `--dry-run` to preview. Should only be needed once; kept for reproducibility. +- `scripts/dump-post-slugs.mjs` — prints the full sorted list of URL slugs `getAllPostSlugs()` would emit. Useful as a before/after diff when changing anything in the slug generation path. + +## Do + +- Read the referenced `docs/*.md` before making structural changes to content or routing. +- When touching slug logic in `src/lib/markdown.ts`, run `scripts/dump-post-slugs.mjs` before and after and diff — the diff must be empty unless the change is _intended_ to move URLs. +- Preserve line-ending style when editing legacy markdown files (some are CRLF). + +## Don't + +- Don't remove or rewrite the legacy filename-based alias in `getAllPostSlugs()` without explicit sign-off — it protects old inbound links. +- Don't run `matter.stringify()` (gray-matter) to rewrite existing post frontmatter. It reorders keys, changes quoting, and reformats dates. Do targeted line-level edits on the raw text instead (see `scripts/backfill-post-slugs.mjs` for the pattern). +- Don't add `slug:` to old posts by hand as a "cleanup" — the backfill has already done that, and the values must exactly match the title-derived slug. diff --git a/content/posts/2011-07-15-jgrid-netbeans-platform-certified-training.md b/content/posts/2011-07-15-jgrid-netbeans-platform-certified-training.md index ef9dfe07..e44b4f96 100644 --- a/content/posts/2011-07-15-jgrid-netbeans-platform-certified-training.md +++ b/content/posts/2011-07-15-jgrid-netbeans-platform-certified-training.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JGrid @ NetBeans Platform Certified Training' +slug: jgrid-netbeans-platform-certified-training date: "2011-07-15" author: hendrik categories: [Swing] diff --git a/content/posts/2011-07-15-jgrid.md b/content/posts/2011-07-15-jgrid.md index c04735e6..b2af6f89 100644 --- a/content/posts/2011-07-15-jgrid.md +++ b/content/posts/2011-07-15-jgrid.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JGrid' +slug: jgrid date: "2011-07-15" author: hendrik categories: [Swing] diff --git a/content/posts/2011-07-28-fun-with-gestures.md b/content/posts/2011-07-28-fun-with-gestures.md index 2a23beab..97f63278 100644 --- a/content/posts/2011-07-28-fun-with-gestures.md +++ b/content/posts/2011-07-28-fun-with-gestures.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Fun with gestures' +slug: fun-with-gestures date: "2011-07-28" author: hendrik categories: [General] diff --git a/content/posts/2011-08-04-preview-multitouch-gestures-in-swing.md b/content/posts/2011-08-04-preview-multitouch-gestures-in-swing.md index 322755d8..3c85ff0e 100644 --- a/content/posts/2011-08-04-preview-multitouch-gestures-in-swing.md +++ b/content/posts/2011-08-04-preview-multitouch-gestures-in-swing.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Preview: Multitouch gestures in swing' +slug: preview-multitouch-gestures-in-swing date: "2011-08-04" author: hendrik categories: [General] diff --git a/content/posts/2011-08-16-talk-at-cebit-tv-studio.md b/content/posts/2011-08-16-talk-at-cebit-tv-studio.md index ed8daa5d..b707d2dc 100644 --- a/content/posts/2011-08-16-talk-at-cebit-tv-studio.md +++ b/content/posts/2011-08-16-talk-at-cebit-tv-studio.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Talk at CeBIT TV studio' +slug: talk-at-cebit-tv-studio date: "2011-08-16" author: hendrik categories: [General] diff --git a/content/posts/2011-08-17-jrating-preview.md b/content/posts/2011-08-17-jrating-preview.md index bb547030..ba9d2578 100644 --- a/content/posts/2011-08-17-jrating-preview.md +++ b/content/posts/2011-08-17-jrating-preview.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JRating Preview' +slug: jrating-preview date: "2011-08-17" author: hendrik categories: [General] diff --git a/content/posts/2011-09-01-gesture-wrapper-0-1-released.md b/content/posts/2011-09-01-gesture-wrapper-0-1-released.md index 5896c163..35dec71b 100644 --- a/content/posts/2011-09-01-gesture-wrapper-0-1-released.md +++ b/content/posts/2011-09-01-gesture-wrapper-0-1-released.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Gesture Wrapper 0.1 released' +slug: gesture-wrapper-0-1-released date: "2011-09-01" author: hendrik categories: [General] diff --git a/content/posts/2011-09-12-garagetunes-demo.md b/content/posts/2011-09-12-garagetunes-demo.md index fa2984d4..82f6eb1e 100644 --- a/content/posts/2011-09-12-garagetunes-demo.md +++ b/content/posts/2011-09-12-garagetunes-demo.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'GarageTunes demo' +slug: garagetunes-demo date: "2011-09-12" author: hendrik categories: [Swing] diff --git a/content/posts/2011-09-15-jgrid-talk.md b/content/posts/2011-09-15-jgrid-talk.md index 4f662a59..8c073e70 100644 --- a/content/posts/2011-09-15-jgrid-talk.md +++ b/content/posts/2011-09-15-jgrid-talk.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JGrid Talk' +slug: jgrid-talk date: "2011-09-15" author: hendrik categories: [Swing] diff --git a/content/posts/2011-10-04-release-update.md b/content/posts/2011-10-04-release-update.md index 1c30a9bf..f331e39c 100644 --- a/content/posts/2011-10-04-release-update.md +++ b/content/posts/2011-10-04-release-update.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Release & Update' +slug: release-update date: "2011-10-04" author: hendrik categories: [General] diff --git a/content/posts/2011-10-12-guigarage-javaone.md b/content/posts/2011-10-12-guigarage-javaone.md index 32185424..0cf2d89a 100644 --- a/content/posts/2011-10-12-guigarage-javaone.md +++ b/content/posts/2011-10-12-guigarage-javaone.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'GuiGarage @ JavaOne' +slug: guigarage-javaone date: "2011-10-12" author: hendrik categories: [General] diff --git a/content/posts/2012-10-13-building-javafx-applications-with-maven.md b/content/posts/2012-10-13-building-javafx-applications-with-maven.md index 0a950e6e..9cb60d81 100644 --- a/content/posts/2012-10-13-building-javafx-applications-with-maven.md +++ b/content/posts/2012-10-13-building-javafx-applications-with-maven.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Building JavaFX Applications with Maven' +slug: building-javafx-applications-with-maven date: "2012-10-13" author: hendrik categories: [JavaFX] diff --git a/content/posts/2012-10-28-adding-javafx-to-your-eclipse-project.md b/content/posts/2012-10-28-adding-javafx-to-your-eclipse-project.md index 0f22d180..8a6efa7f 100644 --- a/content/posts/2012-10-28-adding-javafx-to-your-eclipse-project.md +++ b/content/posts/2012-10-28-adding-javafx-to-your-eclipse-project.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Adding JavaFX to your Eclipse project' +slug: adding-javafx-to-your-eclipse-project date: "2012-10-28" author: hendrik categories: [JavaFX] diff --git a/content/posts/2012-11-01-introducing-vagrant-binding.md b/content/posts/2012-11-01-introducing-vagrant-binding.md index 82dae11f..feb1d437 100644 --- a/content/posts/2012-11-01-introducing-vagrant-binding.md +++ b/content/posts/2012-11-01-introducing-vagrant-binding.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Introducing Vagrant-Binding' +slug: introducing-vagrant-binding date: "2012-11-01" author: hendrik categories: [General, Vagrant-Binding] diff --git a/content/posts/2012-11-03-vagrant-binding-demos.md b/content/posts/2012-11-03-vagrant-binding-demos.md index bf36e79c..7209c3cf 100644 --- a/content/posts/2012-11-03-vagrant-binding-demos.md +++ b/content/posts/2012-11-03-vagrant-binding-demos.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Vagrant-Binding-Demos' +slug: vagrant-binding-demos date: "2012-11-03" author: hendrik categories: [Vagrant-Binding] diff --git a/content/posts/2012-11-13-jgridfx-first-demo.md b/content/posts/2012-11-13-jgridfx-first-demo.md index a75f5cc4..8d42c8b4 100644 --- a/content/posts/2012-11-13-jgridfx-first-demo.md +++ b/content/posts/2012-11-13-jgridfx-first-demo.md @@ -2,6 +2,7 @@ draft: false showInBlog: false title: 'JGridFX First Demo' +slug: jgridfx-first-demo date: "2012-11-13" author: hendrik categories: [JavaFX] diff --git a/content/posts/2012-11-14-gridfx-is-hosted-at-github.md b/content/posts/2012-11-14-gridfx-is-hosted-at-github.md index f106f3cd..6a4427e3 100644 --- a/content/posts/2012-11-14-gridfx-is-hosted-at-github.md +++ b/content/posts/2012-11-14-gridfx-is-hosted-at-github.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'GridFX is hosted at github' +slug: gridfx-is-hosted-at-github date: "2012-11-14" layout: post categories: [JavaFX] diff --git a/content/posts/2012-11-14-playing-with-gridfx-and-itunes-webservices.md b/content/posts/2012-11-14-playing-with-gridfx-and-itunes-webservices.md index 2f2e296c..53f9b0ab 100644 --- a/content/posts/2012-11-14-playing-with-gridfx-and-itunes-webservices.md +++ b/content/posts/2012-11-14-playing-with-gridfx-and-itunes-webservices.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Playing with GridFX and iTunes Webservices' +slug: playing-with-gridfx-and-itunes-webservices date: "2012-11-14" author: hendrik categories: [JavaFX] diff --git a/content/posts/2012-11-14-vagrant-binding-talk-devoxx-2012.md b/content/posts/2012-11-14-vagrant-binding-talk-devoxx-2012.md index 91e0fd6e..41d1f457 100644 --- a/content/posts/2012-11-14-vagrant-binding-talk-devoxx-2012.md +++ b/content/posts/2012-11-14-vagrant-binding-talk-devoxx-2012.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Vagrant-Binding talk @ Devoxx 2012' +slug: vagrant-binding-talk-devoxx-2012 date: "2012-11-14" author: hendrik categories: [Vagrant-Binding] diff --git a/content/posts/2012-11-17-custom-ui-controls-with-javafx-part-1.md b/content/posts/2012-11-17-custom-ui-controls-with-javafx-part-1.md index 8181659d..17d5298f 100644 --- a/content/posts/2012-11-17-custom-ui-controls-with-javafx-part-1.md +++ b/content/posts/2012-11-17-custom-ui-controls-with-javafx-part-1.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Custom UI Controls with JavaFX - Part 1' +slug: custom-ui-controls-with-javafx-part-1 date: "2012-11-17" author: hendrik categories: [JavaFX] diff --git a/content/posts/2012-11-17-swing-is-dead.md b/content/posts/2012-11-17-swing-is-dead.md index 283ab824..0db4b98d 100644 --- a/content/posts/2012-11-17-swing-is-dead.md +++ b/content/posts/2012-11-17-swing-is-dead.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Swing is dead' +slug: swing-is-dead date: "2012-11-17" author: hendrik categories: [JavaFX, Swing] diff --git a/content/posts/2012-11-21-gridfx-pagination.md b/content/posts/2012-11-21-gridfx-pagination.md index c3b11c95..1df68023 100644 --- a/content/posts/2012-11-21-gridfx-pagination.md +++ b/content/posts/2012-11-21-gridfx-pagination.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'gridfx & pagination' +slug: gridfx-pagination date: "2012-11-21" author: hendrik categories: [JavaFX] diff --git a/content/posts/2012-11-25-maven-support-for-datafx.md b/content/posts/2012-11-25-maven-support-for-datafx.md index 0b9e23af..0fc57bda 100644 --- a/content/posts/2012-11-25-maven-support-for-datafx.md +++ b/content/posts/2012-11-25-maven-support-for-datafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Maven support for DataFX' +slug: maven-support-for-datafx date: "2012-11-25" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2012-11-29-custom-ui-controls-with-javafx-part-2.md b/content/posts/2012-11-29-custom-ui-controls-with-javafx-part-2.md index 28d76be1..8dede335 100644 --- a/content/posts/2012-11-29-custom-ui-controls-with-javafx-part-2.md +++ b/content/posts/2012-11-29-custom-ui-controls-with-javafx-part-2.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Custom UI Controls with JavaFX (Part 2)' +slug: custom-ui-controls-with-javafx-part-2 date: "2012-11-29" author: hendrik categories: [JavaFX] diff --git a/content/posts/2012-11-29-gridfx-is-moving-forward.md b/content/posts/2012-11-29-gridfx-is-moving-forward.md index fb376c92..0d0d96f8 100644 --- a/content/posts/2012-11-29-gridfx-is-moving-forward.md +++ b/content/posts/2012-11-29-gridfx-is-moving-forward.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'GridFX is moving forward' +slug: gridfx-is-moving-forward date: "2012-11-29" author: hendrik categories: [JavaFX] diff --git a/content/posts/2012-11-29-the-future-of-vagrant-binding.md b/content/posts/2012-11-29-the-future-of-vagrant-binding.md index e1033b20..062c0e76 100644 --- a/content/posts/2012-11-29-the-future-of-vagrant-binding.md +++ b/content/posts/2012-11-29-the-future-of-vagrant-binding.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'The future of Vagrant-Binding' +slug: the-future-of-vagrant-binding date: "2012-11-29" author: hendrik categories: [General, Vagrant-Binding] diff --git a/content/posts/2012-12-03-gridfx-supports-css.md b/content/posts/2012-12-03-gridfx-supports-css.md index a5bbffbd..b6b5a877 100644 --- a/content/posts/2012-12-03-gridfx-supports-css.md +++ b/content/posts/2012-12-03-gridfx-supports-css.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'GridFX supports CSS' +slug: gridfx-supports-css date: "2012-12-03" author: hendrik categories: [JavaFX] diff --git a/content/posts/2012-12-10-access-puppet-forge-repository-with-java.md b/content/posts/2012-12-10-access-puppet-forge-repository-with-java.md index 2641e621..354e0b91 100644 --- a/content/posts/2012-12-10-access-puppet-forge-repository-with-java.md +++ b/content/posts/2012-12-10-access-puppet-forge-repository-with-java.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Access Puppet Forge Repository with Java' +slug: access-puppet-forge-repository-with-java date: "2012-12-10" author: hendrik categories: [Vagrant-Binding] diff --git a/content/posts/2012-12-12-some-news-about-vagrant-binding.md b/content/posts/2012-12-12-some-news-about-vagrant-binding.md index bb0a7593..792184df 100644 --- a/content/posts/2012-12-12-some-news-about-vagrant-binding.md +++ b/content/posts/2012-12-12-some-news-about-vagrant-binding.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Some news about Vagrant-Binding' +slug: some-news-about-vagrant-binding date: "2012-12-12" author: hendrik categories: [General, Vagrant-Binding] diff --git a/content/posts/2012-12-28-my-first-steps-with-javafx-on-raspberry-pi.md b/content/posts/2012-12-28-my-first-steps-with-javafx-on-raspberry-pi.md index 927a8942..095c3c1a 100644 --- a/content/posts/2012-12-28-my-first-steps-with-javafx-on-raspberry-pi.md +++ b/content/posts/2012-12-28-my-first-steps-with-javafx-on-raspberry-pi.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'My first steps with JavaFX on Raspberry Pi' +slug: my-first-steps-with-javafx-on-raspberry-pi date: "2012-12-28" layout: post categories: [DataFX, IoT, JavaFX] diff --git a/content/posts/2012-12-29-gridfx-on-raspberry-pi-javafx-8.md b/content/posts/2012-12-29-gridfx-on-raspberry-pi-javafx-8.md index 1fc0d441..b895882c 100644 --- a/content/posts/2012-12-29-gridfx-on-raspberry-pi-javafx-8.md +++ b/content/posts/2012-12-29-gridfx-on-raspberry-pi-javafx-8.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'GridFX on Raspberry Pi & JavaFX 8' +slug: gridfx-on-raspberry-pi-javafx-8 date: "2012-12-29" author: hendrik categories: [IoT, JavaFX] diff --git a/content/posts/2012-12-31-bindabletransition.md b/content/posts/2012-12-31-bindabletransition.md index 7b68809f..6b9060bf 100644 --- a/content/posts/2012-12-31-bindabletransition.md +++ b/content/posts/2012-12-31-bindabletransition.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'BindableTransition' +slug: bindabletransition date: "2012-12-31" author: hendrik categories: [General, JavaFX] diff --git a/content/posts/2013-01-01-invokeandwait-for-javafx.md b/content/posts/2013-01-01-invokeandwait-for-javafx.md index 3d297b26..2ecddd51 100644 --- a/content/posts/2013-01-01-invokeandwait-for-javafx.md +++ b/content/posts/2013-01-01-invokeandwait-for-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'invokeAndWait for JavaFX' +slug: invokeandwait-for-javafx date: "2013-01-01" author: hendrik categories: [DataFX, General, JavaFX] diff --git a/content/posts/2013-01-10-custom-ui-controls-with-javafx-part3.md b/content/posts/2013-01-10-custom-ui-controls-with-javafx-part3.md index 1b467302..f42a8dce 100644 --- a/content/posts/2013-01-10-custom-ui-controls-with-javafx-part3.md +++ b/content/posts/2013-01-10-custom-ui-controls-with-javafx-part3.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Custom UI Controls with JavaFX (Part3)' +slug: custom-ui-controls-with-javafx-part3 date: "2013-01-10" author: hendrik categories: [JavaFX] diff --git a/content/posts/2013-01-16-this-is-for-the-native-ones.md b/content/posts/2013-01-16-this-is-for-the-native-ones.md index 7d6590fa..3153a542 100644 --- a/content/posts/2013-01-16-this-is-for-the-native-ones.md +++ b/content/posts/2013-01-16-this-is-for-the-native-ones.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'This is for the native ones' +slug: this-is-for-the-native-ones date: "2013-01-16" author: hendrik categories: [AquaFX, General, JavaFX] diff --git a/content/posts/2013-02-08-change-java-version-on-mac-os.md b/content/posts/2013-02-08-change-java-version-on-mac-os.md index 07f23a03..e30f49ed 100644 --- a/content/posts/2013-02-08-change-java-version-on-mac-os.md +++ b/content/posts/2013-02-08-change-java-version-on-mac-os.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Change Java version on Mac OS' +slug: change-java-version-on-mac-os date: "2013-02-08" author: hendrik categories: [JavaFX] diff --git a/content/posts/2013-02-09-datafx-observableexecutor-preview.md b/content/posts/2013-02-09-datafx-observableexecutor-preview.md index 77c8ce4f..d7a76bd6 100644 --- a/content/posts/2013-02-09-datafx-observableexecutor-preview.md +++ b/content/posts/2013-02-09-datafx-observableexecutor-preview.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX: ObservableExecutor Preview' +slug: datafx-observableexecutor-preview date: "2013-02-09" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2013-03-02-global-stylesheet-for-your-javafx-application.md b/content/posts/2013-03-02-global-stylesheet-for-your-javafx-application.md index 958a34d1..05867213 100644 --- a/content/posts/2013-03-02-global-stylesheet-for-your-javafx-application.md +++ b/content/posts/2013-03-02-global-stylesheet-for-your-javafx-application.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Global Stylesheet for your JavaFX Application' +slug: global-stylesheet-for-your-javafx-application date: "2013-03-02" author: hendrik categories: [General, JavaFX] diff --git a/content/posts/2013-03-02-update-for-the-native-ones.md b/content/posts/2013-03-02-update-for-the-native-ones.md index 0735705c..9a727e6f 100644 --- a/content/posts/2013-03-02-update-for-the-native-ones.md +++ b/content/posts/2013-03-02-update-for-the-native-ones.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Update for the native ones' +slug: update-for-the-native-ones date: "2013-03-02" author: claudine categories: [AquaFX, General, JavaFX] diff --git a/content/posts/2013-03-17-introducing-marvinfx.md b/content/posts/2013-03-17-introducing-marvinfx.md index 48b2ecdf..a5b2da5a 100644 --- a/content/posts/2013-03-17-introducing-marvinfx.md +++ b/content/posts/2013-03-17-introducing-marvinfx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Introducing MarvinFx' +slug: introducing-marvinfx date: "2013-03-17" author: hendrik categories: [JavaFX] diff --git a/content/posts/2013-03-20-assertions-and-rules-in-marvinfx.md b/content/posts/2013-03-20-assertions-and-rules-in-marvinfx.md index 91196a05..9d82a2ce 100644 --- a/content/posts/2013-03-20-assertions-and-rules-in-marvinfx.md +++ b/content/posts/2013-03-20-assertions-and-rules-in-marvinfx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Assertions and Rules in MarvinFX' +slug: assertions-and-rules-in-marvinfx date: "2013-03-20" author: hendrik categories: [JavaFX] diff --git a/content/posts/2013-03-20-use-native-aqua-icons-in-javafx.md b/content/posts/2013-03-20-use-native-aqua-icons-in-javafx.md index 9747b7f7..7b7b00a0 100644 --- a/content/posts/2013-03-20-use-native-aqua-icons-in-javafx.md +++ b/content/posts/2013-03-20-use-native-aqua-icons-in-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Use native Aqua icons in JavaFX' +slug: use-native-aqua-icons-in-javafx date: "2013-03-20" author: hendrik categories: [AquaFX, JavaFX] diff --git a/content/posts/2013-04-28-the-native-ones-are-not-sleeping.md b/content/posts/2013-04-28-the-native-ones-are-not-sleeping.md index 6615c638..90074606 100644 --- a/content/posts/2013-04-28-the-native-ones-are-not-sleeping.md +++ b/content/posts/2013-04-28-the-native-ones-are-not-sleeping.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'The native ones are not sleeping' +slug: the-native-ones-are-not-sleeping date: "2013-04-28" author: claudine categories: [AquaFX, JavaFX] diff --git a/content/posts/2013-05-01-sbt-fxml-the-missing-link-between-fxml-and-your-code.md b/content/posts/2013-05-01-sbt-fxml-the-missing-link-between-fxml-and-your-code.md index 3f4f4abf..b79b4d23 100644 --- a/content/posts/2013-05-01-sbt-fxml-the-missing-link-between-fxml-and-your-code.md +++ b/content/posts/2013-05-01-sbt-fxml-the-missing-link-between-fxml-and-your-code.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'sbt-fxml: The missing link between FXML and your code' +slug: sbt-fxml-the-missing-link-between-fxml-and-your-code date: "2013-05-01" author: phdoerfler categories: [JavaFX] diff --git a/content/posts/2013-05-09-aquatecture.md b/content/posts/2013-05-09-aquatecture.md index 79f1648b..baf66b66 100644 --- a/content/posts/2013-05-09-aquatecture.md +++ b/content/posts/2013-05-09-aquatecture.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Aquatecture' +slug: aquatecture date: "2013-05-09" author: hendrik categories: [AquaFX, General, JavaFX] diff --git a/content/posts/2013-05-11-designing-javafx-business-applications-part-1.md b/content/posts/2013-05-11-designing-javafx-business-applications-part-1.md index f1caecc7..e05a80e8 100644 --- a/content/posts/2013-05-11-designing-javafx-business-applications-part-1.md +++ b/content/posts/2013-05-11-designing-javafx-business-applications-part-1.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Designing JavaFX Business Applications (Part 1)' +slug: designing-javafx-business-applications-part-1 date: "2013-05-11" author: hendrik categories: [General] diff --git a/content/posts/2013-05-19-designing-javafx-business-applications-part-2.md b/content/posts/2013-05-19-designing-javafx-business-applications-part-2.md index 61da6aa8..7b524dad 100644 --- a/content/posts/2013-05-19-designing-javafx-business-applications-part-2.md +++ b/content/posts/2013-05-19-designing-javafx-business-applications-part-2.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Designing JavaFX Business Applications (Part 2)' +slug: designing-javafx-business-applications-part-2 date: "2013-05-19" author: hendrik categories: [General, JavaFX] diff --git a/content/posts/2013-05-26-aquafx-lessons-learned-part-i.md b/content/posts/2013-05-26-aquafx-lessons-learned-part-i.md index 12b37124..a187c286 100644 --- a/content/posts/2013-05-26-aquafx-lessons-learned-part-i.md +++ b/content/posts/2013-05-26-aquafx-lessons-learned-part-i.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'AquaFX: lessons learned (Part I)' +slug: aquafx-lessons-learned-part-i date: "2013-05-26" author: claudine categories: [AquaFX, JavaFX] diff --git a/content/posts/2013-08-29-boxfx-javaone-preview-1.md b/content/posts/2013-08-29-boxfx-javaone-preview-1.md index bf97a57b..54b19f94 100644 --- a/content/posts/2013-08-29-boxfx-javaone-preview-1.md +++ b/content/posts/2013-08-29-boxfx-javaone-preview-1.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'BoxFX (JavaOne Preview 1)' +slug: boxfx-javaone-preview-1 date: "2013-08-29" author: hendrik categories: [IoT, JavaFX] diff --git a/content/posts/2013-08-30-pimp-your-app-by-using-the-blurpane.md b/content/posts/2013-08-30-pimp-your-app-by-using-the-blurpane.md index a71a48c6..d8485a1d 100644 --- a/content/posts/2013-08-30-pimp-your-app-by-using-the-blurpane.md +++ b/content/posts/2013-08-30-pimp-your-app-by-using-the-blurpane.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Pimp your App by using the BlurPane' +slug: pimp-your-app-by-using-the-blurpane date: "2013-08-30" author: hendrik categories: [JavaFX] diff --git a/content/posts/2013-09-13-datafx-controller-api.md b/content/posts/2013-09-13-datafx-controller-api.md index 67155b8d..66740c37 100644 --- a/content/posts/2013-09-13-datafx-controller-api.md +++ b/content/posts/2013-09-13-datafx-controller-api.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX Controller API' +slug: datafx-controller-api date: "2013-09-13" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2013-09-24-flatter.md b/content/posts/2013-09-24-flatter.md index 95b44a59..cb8f646d 100644 --- a/content/posts/2013-09-24-flatter.md +++ b/content/posts/2013-09-24-flatter.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Flatter' +slug: flatter date: "2013-09-24" author: hendrik categories: [Flatter, JavaFX] diff --git a/content/posts/2013-09-24-lets-get-wet.md b/content/posts/2013-09-24-lets-get-wet.md index a05e28ee..cb262772 100644 --- a/content/posts/2013-09-24-lets-get-wet.md +++ b/content/posts/2013-09-24-lets-get-wet.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Let''s get wet' +slug: let-s-get-wet date: "2013-09-24" author: hendrik categories: [AquaFX, Flatter, JavaFX] diff --git a/content/posts/2013-09-24-make-your-app-smile-d.md b/content/posts/2013-09-24-make-your-app-smile-d.md index 2cd10e20..a1f29a61 100644 --- a/content/posts/2013-09-24-make-your-app-smile-d.md +++ b/content/posts/2013-09-24-make-your-app-smile-d.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Make your app smile :D' +slug: make-your-app-smile-d date: "2013-09-24" author: hendrik categories: [JavaFX] diff --git a/content/posts/2013-09-28-datafx-the-best-way-to-get-real-world-data-into-your-javafx-application.md b/content/posts/2013-09-28-datafx-the-best-way-to-get-real-world-data-into-your-javafx-application.md index 8ede693f..eb9c4e59 100644 --- a/content/posts/2013-09-28-datafx-the-best-way-to-get-real-world-data-into-your-javafx-application.md +++ b/content/posts/2013-09-28-datafx-the-best-way-to-get-real-world-data-into-your-javafx-application.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX: The best way to get real-world data into your JavaFX application' +slug: datafx-the-best-way-to-get-real-world-data-into-your-javafx-application date: "2013-09-28" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2013-10-07-aquafx-dressed-in-elements.md b/content/posts/2013-10-07-aquafx-dressed-in-elements.md index 73cee79e..f75e91bf 100644 --- a/content/posts/2013-10-07-aquafx-dressed-in-elements.md +++ b/content/posts/2013-10-07-aquafx-dressed-in-elements.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'AquaFX dressed in Elements' +slug: aquafx-dressed-in-elements date: "2013-10-07" author: claudine categories: [AquaFX, JavaFX] diff --git a/content/posts/2013-10-11-simplify-your-app-by-using-bonjour.md b/content/posts/2013-10-11-simplify-your-app-by-using-bonjour.md index 50eca11b..c6b75aa0 100644 --- a/content/posts/2013-10-11-simplify-your-app-by-using-bonjour.md +++ b/content/posts/2013-10-11-simplify-your-app-by-using-bonjour.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Simplify your app by using Bonjour' +slug: simplify-your-app-by-using-bonjour date: "2013-10-11" author: hendrik categories: [General] diff --git a/content/posts/2013-12-27-datafx-controller-framework-preview.md b/content/posts/2013-12-27-datafx-controller-framework-preview.md index eaf99aa9..12b5d870 100644 --- a/content/posts/2013-12-27-datafx-controller-framework-preview.md +++ b/content/posts/2013-12-27-datafx-controller-framework-preview.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX Controller Framework Preview' +slug: datafx-controller-framework-preview date: "2013-12-27" author: hendrik categories: [DataFX, General, JavaFX] diff --git a/content/posts/2014-01-23-datafx-8-preview-2-processchain.md b/content/posts/2014-01-23-datafx-8-preview-2-processchain.md index 641586a6..a3c8c859 100644 --- a/content/posts/2014-01-23-datafx-8-preview-2-processchain.md +++ b/content/posts/2014-01-23-datafx-8-preview-2-processchain.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX 8 Preview 2: The ProcessChain' +slug: datafx-8-preview-2-the-processchain date: "2014-01-23" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-01-24-javafx-meets-javaee.md b/content/posts/2014-01-24-javafx-meets-javaee.md index df8e8ccc..9971da77 100644 --- a/content/posts/2014-01-24-javafx-meets-javaee.md +++ b/content/posts/2014-01-24-javafx-meets-javaee.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaFX meets JavaEE' +slug: javafx-meets-javaee date: "2014-01-24" author: hendrik categories: [DataFX] diff --git a/content/posts/2014-03-05-mastering-javafx-controls.md b/content/posts/2014-03-05-mastering-javafx-controls.md index f5ac9306..04b1e4ba 100644 --- a/content/posts/2014-03-05-mastering-javafx-controls.md +++ b/content/posts/2014-03-05-mastering-javafx-controls.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Mastering JavaFX Controls' +slug: mastering-javafx-controls date: "2014-03-05" author: hendrik categories: [General] diff --git a/content/posts/2014-03-27-datafx-8-nighthacking.md b/content/posts/2014-03-27-datafx-8-nighthacking.md index 2d9f7c8b..3a3fa873 100644 --- a/content/posts/2014-03-27-datafx-8-nighthacking.md +++ b/content/posts/2014-03-27-datafx-8-nighthacking.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX 8 @ Nighthacking' +slug: datafx-8-nighthacking date: "2014-03-27" author: hendrik categories: [DataFX] diff --git a/content/posts/2014-03-28-reactive-programming-javafx.md b/content/posts/2014-03-28-reactive-programming-javafx.md index 1c72c9b2..253de2b2 100644 --- a/content/posts/2014-03-28-reactive-programming-javafx.md +++ b/content/posts/2014-03-28-reactive-programming-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Reactive Programming with JavaFX' +slug: reactive-programming-with-javafx date: "2014-03-28" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-03-29-javafx-css-utilities.md b/content/posts/2014-03-29-javafx-css-utilities.md index 9ba4e41b..c751fc76 100644 --- a/content/posts/2014-03-29-javafx-css-utilities.md +++ b/content/posts/2014-03-29-javafx-css-utilities.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaFX CSS Utilities' +slug: javafx-css-utilities date: "2014-03-29" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-04-17-datafx-8-preview-2.md b/content/posts/2014-04-17-datafx-8-preview-2.md index 4156c865..7176fb5c 100644 --- a/content/posts/2014-04-17-datafx-8-preview-2.md +++ b/content/posts/2014-04-17-datafx-8-preview-2.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX 8 Preview 2' +slug: datafx-8-preview-2 date: "2014-04-17" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-05-15-javafx-8-interview-jax-2014.md b/content/posts/2014-05-15-javafx-8-interview-jax-2014.md index 715cfaf7..2525383a 100644 --- a/content/posts/2014-05-15-javafx-8-interview-jax-2014.md +++ b/content/posts/2014-05-15-javafx-8-interview-jax-2014.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaFX 8 Interview at JAX 2014' +slug: javafx-8-interview-at-jax-2014 date: "2014-05-15" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-05-16-datafx-8-0b3-released.md b/content/posts/2014-05-16-datafx-8-0b3-released.md index 36976ed1..1e1495c4 100644 --- a/content/posts/2014-05-16-datafx-8-0b3-released.md +++ b/content/posts/2014-05-16-datafx-8-0b3-released.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX 8.0b3 has been released' +slug: datafx-8-0b3-has-been-released date: "2014-05-16" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-05-19-datafx-8-0-tutorials.md b/content/posts/2014-05-19-datafx-8-0-tutorials.md index eda25549..bf8ad978 100644 --- a/content/posts/2014-05-19-datafx-8-0-tutorials.md +++ b/content/posts/2014-05-19-datafx-8-0-tutorials.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX 8.0 Tutorials' +slug: datafx-8-0-tutorials date: "2014-05-19" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-05-20-datafx-tutorial-1.md b/content/posts/2014-05-20-datafx-tutorial-1.md index 772d6424..58b90950 100644 --- a/content/posts/2014-05-20-datafx-tutorial-1.md +++ b/content/posts/2014-05-20-datafx-tutorial-1.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX 8 Tutorial 1' +slug: datafx-8-tutorial-1 date: "2014-05-20" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-05-22-datafx-tutorial-2.md b/content/posts/2014-05-22-datafx-tutorial-2.md index 1c88353b..f35889f1 100644 --- a/content/posts/2014-05-22-datafx-tutorial-2.md +++ b/content/posts/2014-05-22-datafx-tutorial-2.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX 8 Tutorial 2' +slug: datafx-8-tutorial-2 date: "2014-05-22" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-05-31-datafx-tutorial-3.md b/content/posts/2014-05-31-datafx-tutorial-3.md index 7732dc37..b113c9e4 100644 --- a/content/posts/2014-05-31-datafx-tutorial-3.md +++ b/content/posts/2014-05-31-datafx-tutorial-3.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX Tutorial 3' +slug: datafx-tutorial-3 date: "2014-05-31" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-06-08-datafx-tutorial-4.md b/content/posts/2014-06-08-datafx-tutorial-4.md index 65e7610b..56181846 100644 --- a/content/posts/2014-06-08-datafx-tutorial-4.md +++ b/content/posts/2014-06-08-datafx-tutorial-4.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX Tutorial 4' +slug: datafx-tutorial-4 date: "2014-06-08" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-06-10-sneak-peek-aerofx.md b/content/posts/2014-06-10-sneak-peek-aerofx.md index 1a152649..5996e714 100644 --- a/content/posts/2014-06-10-sneak-peek-aerofx.md +++ b/content/posts/2014-06-10-sneak-peek-aerofx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Sneak Peek: AeroFX' +slug: sneak-peek-aerofx date: "2014-06-10" author: hendrik categories: [AeroFX, AquaFX, JavaFX] diff --git a/content/posts/2014-06-17-aerofx-getting-closer.md b/content/posts/2014-06-17-aerofx-getting-closer.md index 55bdbd16..b2fc409e 100644 --- a/content/posts/2014-06-17-aerofx-getting-closer.md +++ b/content/posts/2014-06-17-aerofx-getting-closer.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'AeroFX: It''s getting closer' +slug: aerofx-it-s-getting-closer date: "2014-06-17" author: hendrik categories: [AeroFX, JavaFX] diff --git a/content/posts/2014-06-27-datafx-tutorial-5.md b/content/posts/2014-06-27-datafx-tutorial-5.md index eb29faa3..be042d5a 100644 --- a/content/posts/2014-06-27-datafx-tutorial-5.md +++ b/content/posts/2014-06-27-datafx-tutorial-5.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX Tutorial 5' +slug: datafx-tutorial-5 date: "2014-06-27" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-07-08-win-copy-mastering-javafx-8-controls.md b/content/posts/2014-07-08-win-copy-mastering-javafx-8-controls.md index 80747fe7..0316ecf3 100644 --- a/content/posts/2014-07-08-win-copy-mastering-javafx-8-controls.md +++ b/content/posts/2014-07-08-win-copy-mastering-javafx-8-controls.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Win a copy of "Mastering JavaFX 8 Controls"' +slug: win-a-copy-of-mastering-javafx-8-controls date: "2014-07-08" author: hendrik categories: [General] diff --git a/content/posts/2014-07-16-guigarage-logo.md b/content/posts/2014-07-16-guigarage-logo.md index 51b31fa7..d960e195 100644 --- a/content/posts/2014-07-16-guigarage-logo.md +++ b/content/posts/2014-07-16-guigarage-logo.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Guigarage Logo' +slug: guigarage-logo date: "2014-07-16" author: hendrik categories: [General] diff --git a/content/posts/2014-08-26-javaone-2014-sessions.md b/content/posts/2014-08-26-javaone-2014-sessions.md index b5b202f5..ceecc742 100644 --- a/content/posts/2014-08-26-javaone-2014-sessions.md +++ b/content/posts/2014-08-26-javaone-2014-sessions.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'My JavaOne 2014 Sessions' +slug: my-javaone-2014-sessions date: "2014-08-26" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-09-09-javaone-2014-preview.md b/content/posts/2014-09-09-javaone-2014-preview.md index 65b0cdf3..056213e5 100644 --- a/content/posts/2014-09-09-javaone-2014-preview.md +++ b/content/posts/2014-09-09-javaone-2014-preview.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaOne 2014 Preview' +slug: javaone-2014-preview date: "2014-09-09" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-09-11-javaone-preview-enterprise-javafx.md b/content/posts/2014-09-11-javaone-preview-enterprise-javafx.md index 949dcc6d..3e7621f1 100644 --- a/content/posts/2014-09-11-javaone-preview-enterprise-javafx.md +++ b/content/posts/2014-09-11-javaone-preview-enterprise-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaOne Preview: Enterprise JavaFX' +slug: javaone-preview-enterprise-javafx date: "2014-09-11" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-09-17-interview-fx-experience.md b/content/posts/2014-09-17-interview-fx-experience.md index b329f80f..9432bcb1 100644 --- a/content/posts/2014-09-17-interview-fx-experience.md +++ b/content/posts/2014-09-17-interview-fx-experience.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Interview at FX Experience' +slug: interview-at-fx-experience date: "2014-09-17" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-09-30-datafx-8.md b/content/posts/2014-09-30-datafx-8.md index 4a86dc89..338710b1 100644 --- a/content/posts/2014-09-30-datafx-8.md +++ b/content/posts/2014-09-30-datafx-8.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX 8' +slug: datafx-8 date: "2014-09-30" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-09-30-enrich-list-ui-using-medialistcell.md b/content/posts/2014-09-30-enrich-list-ui-using-medialistcell.md index eb8b23b4..f99579c7 100644 --- a/content/posts/2014-09-30-enrich-list-ui-using-medialistcell.md +++ b/content/posts/2014-09-30-enrich-list-ui-using-medialistcell.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Enrich your List UI by using the MediaListCell' +slug: enrich-your-list-ui-by-using-the-medialistcell date: "2014-09-30" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-10-01-dialog-objects-pattern-automated-tests-testfx.md b/content/posts/2014-10-01-dialog-objects-pattern-automated-tests-testfx.md index e1f55824..b2656676 100644 --- a/content/posts/2014-10-01-dialog-objects-pattern-automated-tests-testfx.md +++ b/content/posts/2014-10-01-dialog-objects-pattern-automated-tests-testfx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'The View Objects Pattern & automated tests with TestFX' +slug: the-view-objects-pattern-automated-tests-with-testfx date: "2014-10-01" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-10-01-integrate-custom-fonts-javafx-application-using-css.md b/content/posts/2014-10-01-integrate-custom-fonts-javafx-application-using-css.md index 2acb4af7..9bd64f69 100644 --- a/content/posts/2014-10-01-integrate-custom-fonts-javafx-application-using-css.md +++ b/content/posts/2014-10-01-integrate-custom-fonts-javafx-application-using-css.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'How to integrate custom fonts in your JavaFX application by using CSS' +slug: how-to-integrate-custom-fonts-in-your-javafx-application-by-using-css date: "2014-10-01" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-10-05-iconify-application-resolution-independent-way.md b/content/posts/2014-10-05-iconify-application-resolution-independent-way.md index 86732883..8ffdf61e 100644 --- a/content/posts/2014-10-05-iconify-application-resolution-independent-way.md +++ b/content/posts/2014-10-05-iconify-application-resolution-independent-way.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Iconify your application the resolution independent way' +slug: iconify-your-application-the-resolution-independent-way date: "2014-10-05" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-10-05-javaone-2014-slides.md b/content/posts/2014-10-05-javaone-2014-slides.md index 21a83ce1..97f71645 100644 --- a/content/posts/2014-10-05-javaone-2014-slides.md +++ b/content/posts/2014-10-05-javaone-2014-slides.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaOne 2014 Slides' +slug: javaone-2014-slides date: "2014-10-05" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-10-13-javaone-sessions-canoo.md b/content/posts/2014-10-13-javaone-sessions-canoo.md index 02616e4f..941d7a5f 100644 --- a/content/posts/2014-10-13-javaone-sessions-canoo.md +++ b/content/posts/2014-10-13-javaone-sessions-canoo.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaOne Sessions at Canoo' +slug: javaone-sessions-at-canoo date: "2014-10-13" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-10-22-datafx-8-released.md b/content/posts/2014-10-22-datafx-8-released.md index 1094a373..098819a1 100644 --- a/content/posts/2014-10-22-datafx-8-released.md +++ b/content/posts/2014-10-22-datafx-8-released.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX 8 has been released & DataFX core overview' +slug: datafx-8-has-been-released-datafx-core-overview date: "2014-10-22" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2014-10-26-extreme-gui-makeover-javaone.md b/content/posts/2014-10-26-extreme-gui-makeover-javaone.md index 0dc82ec1..579fdad4 100644 --- a/content/posts/2014-10-26-extreme-gui-makeover-javaone.md +++ b/content/posts/2014-10-26-extreme-gui-makeover-javaone.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Extreme Gui Makeover @ JavaOne' +slug: extreme-gui-makeover-javaone date: "2014-10-26" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-11-01-new-desktop-application-framework-datafx.md b/content/posts/2014-11-01-new-desktop-application-framework-datafx.md index e013d76e..705dbd14 100644 --- a/content/posts/2014-11-01-new-desktop-application-framework-datafx.md +++ b/content/posts/2014-11-01-new-desktop-application-framework-datafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'New Desktop Application Framework & DataFX' +slug: new-desktop-application-framework-datafx date: "2014-11-01" author: hendrik categories: [DataFX, Desktop Application Framework (JSR 377), JavaFX] diff --git a/content/posts/2014-11-04-responsive-design-javafx.md b/content/posts/2014-11-04-responsive-design-javafx.md index 71cf2a7d..379b587d 100644 --- a/content/posts/2014-11-04-responsive-design-javafx.md +++ b/content/posts/2014-11-04-responsive-design-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Responsive Design for JavaFX' +slug: responsive-design-for-javafx date: "2014-11-04" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-11-12-first-steps-webcomponents.md b/content/posts/2014-11-12-first-steps-webcomponents.md index 9f44ef1e..208fe48f 100644 --- a/content/posts/2014-11-12-first-steps-webcomponents.md +++ b/content/posts/2014-11-12-first-steps-webcomponents.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'First steps with WebComponents' +slug: first-steps-with-webcomponents date: "2014-11-12" author: hendrik categories: [Polymer, Web Frontends, WebComponents] diff --git a/content/posts/2014-11-13-hand-drawing-effect-javafx.md b/content/posts/2014-11-13-hand-drawing-effect-javafx.md index d60659a8..04e43636 100644 --- a/content/posts/2014-11-13-hand-drawing-effect-javafx.md +++ b/content/posts/2014-11-13-hand-drawing-effect-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Hand drawing effect with JavaFX' +slug: hand-drawing-effect-with-javafx date: "2014-11-13" author: hendrik categories: [JavaFX] diff --git a/content/posts/2014-12-30-desktopembedded-application-api-jsr.md b/content/posts/2014-12-30-desktopembedded-application-api-jsr.md index 02bcc734..2184e37b 100644 --- a/content/posts/2014-12-30-desktopembedded-application-api-jsr.md +++ b/content/posts/2014-12-30-desktopembedded-application-api-jsr.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Desktop & Embedded Application JSR' +slug: desktop-embedded-application-jsr date: "2014-12-30" author: hendrik categories: [DataFX, Desktop Application Framework (JSR 377), JavaFX] diff --git a/content/posts/2014-12-30-javafx-talks-javaone-2014.md b/content/posts/2014-12-30-javafx-talks-javaone-2014.md index 32a1c78f..a0f1ca23 100644 --- a/content/posts/2014-12-30-javafx-talks-javaone-2014.md +++ b/content/posts/2014-12-30-javafx-talks-javaone-2014.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaFX Talks JavaOne 2014' +slug: javafx-talks-javaone-2014 date: "2014-12-30" author: hendrik categories: [JavaFX] diff --git a/content/posts/2015-01-19-concurrency-ui-toolkits-part-1.md b/content/posts/2015-01-19-concurrency-ui-toolkits-part-1.md index 92fcf9ab..0d47c1f9 100644 --- a/content/posts/2015-01-19-concurrency-ui-toolkits-part-1.md +++ b/content/posts/2015-01-19-concurrency-ui-toolkits-part-1.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Concurrency in UI Toolkits (Part 1)' +slug: concurrency-in-ui-toolkits-part-1 date: "2015-01-19" author: hendrik categories: [Desktop Application Framework (JSR 377), JavaFX] diff --git a/content/posts/2015-01-21-support-emojis.md b/content/posts/2015-01-21-support-emojis.md index 2800c2d5..7d5652a0 100644 --- a/content/posts/2015-01-21-support-emojis.md +++ b/content/posts/2015-01-21-support-emojis.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'How to support Emojis (Part1)' +slug: how-to-support-emojis-part1 date: "2015-01-21" author: hendrik categories: [JavaFX] diff --git a/content/posts/2015-01-22-datafx-tutorial-6.md b/content/posts/2015-01-22-datafx-tutorial-6.md index ddb15680..854a827e 100644 --- a/content/posts/2015-01-22-datafx-tutorial-6.md +++ b/content/posts/2015-01-22-datafx-tutorial-6.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'DataFX Tutorial 6' +slug: datafx-tutorial-6 date: "2015-01-22" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2015-01-28-set-datafx-application.md b/content/posts/2015-01-28-set-datafx-application.md index 2b7ceca2..bbcc3193 100644 --- a/content/posts/2015-01-28-set-datafx-application.md +++ b/content/posts/2015-01-28-set-datafx-application.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'How to set up a DataFX application' +slug: how-to-set-up-a-datafx-application date: "2015-01-28" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2015-01-29-introduction-open-dolphin.md b/content/posts/2015-01-29-introduction-open-dolphin.md index 7960e0ad..7f36348c 100644 --- a/content/posts/2015-01-29-introduction-open-dolphin.md +++ b/content/posts/2015-01-29-introduction-open-dolphin.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'An introduction to Open Dolphin' +slug: an-introduction-to-open-dolphin date: "2015-01-29" author: hendrik categories: [JavaFX] diff --git a/content/posts/2015-02-01-concurrency-ui-toolkits-part-2.md b/content/posts/2015-02-01-concurrency-ui-toolkits-part-2.md index 060d6dd6..22f46415 100644 --- a/content/posts/2015-02-01-concurrency-ui-toolkits-part-2.md +++ b/content/posts/2015-02-01-concurrency-ui-toolkits-part-2.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Concurrency in UI Toolkits (Part 2)' +slug: concurrency-in-ui-toolkits-part-2 date: "2015-02-01" author: hendrik categories: [Desktop Application Framework (JSR 377), JavaFX] diff --git a/content/posts/2015-02-06-test-driven-development-youtube.md b/content/posts/2015-02-06-test-driven-development-youtube.md index 8803a435..61eaa332 100644 --- a/content/posts/2015-02-06-test-driven-development-youtube.md +++ b/content/posts/2015-02-06-test-driven-development-youtube.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'How to test your JavaFX application' +slug: how-to-test-your-javafx-application date: "2015-02-06" author: hendrik categories: [DataFX, JavaFX] diff --git a/content/posts/2015-02-11-jsr377-got-green-light-continue.md b/content/posts/2015-02-11-jsr377-got-green-light-continue.md index de56f4d2..2082104e 100644 --- a/content/posts/2015-02-11-jsr377-got-green-light-continue.md +++ b/content/posts/2015-02-11-jsr377-got-green-light-continue.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JSR377 got green light to continue!' +slug: jsr377-got-green-light-to-continue date: "2015-02-11" author: hendrik categories: [Desktop Application Framework (JSR 377), JavaFX] diff --git a/content/posts/2015-02-12-short-introduction-bower.md b/content/posts/2015-02-12-short-introduction-bower.md index 72bd330f..f9e07a7b 100644 --- a/content/posts/2015-02-12-short-introduction-bower.md +++ b/content/posts/2015-02-12-short-introduction-bower.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'A short introduction to Bower' +slug: a-short-introduction-to-bower date: "2015-02-12" author: hendrik categories: [Web Frontends] diff --git a/content/posts/2015-02-13-quick-overview-datafx-mvc-flow-api.md b/content/posts/2015-02-13-quick-overview-datafx-mvc-flow-api.md index 2d14cde8..8117f454 100644 --- a/content/posts/2015-02-13-quick-overview-datafx-mvc-flow-api.md +++ b/content/posts/2015-02-13-quick-overview-datafx-mvc-flow-api.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'A quick overview to the DataFX MVC and Flow API' +slug: a-quick-overview-to-the-datafx-mvc-and-flow-api date: "2015-02-13" author: hendrik categories: [DataFX, Desktop Application Framework (JSR 377), JavaFX] diff --git a/content/posts/2015-02-15-use-webcomponents-today.md b/content/posts/2015-02-15-use-webcomponents-today.md index 6e499a13..af2e4105 100644 --- a/content/posts/2015-02-15-use-webcomponents-today.md +++ b/content/posts/2015-02-15-use-webcomponents-today.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'An overview of the Web Component specifications' +slug: an-overview-of-the-web-component-specifications date: "2015-02-15" author: hendrik categories: [General, WebComponents] diff --git a/content/posts/2015-07-10-material-design-in-javafx.md b/content/posts/2015-07-10-material-design-in-javafx.md index 15e87764..a1b09e8f 100644 --- a/content/posts/2015-07-10-material-design-in-javafx.md +++ b/content/posts/2015-07-10-material-design-in-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Material Design in JavaFX' +slug: material-design-in-javafx date: "2015-07-10" author: hendrik categories: [JavaFX] diff --git a/content/posts/2015-09-06-cool-javafx-uis-in-less-time-use-projection.md b/content/posts/2015-09-06-cool-javafx-uis-in-less-time-use-projection.md index 022b927f..aec4b321 100644 --- a/content/posts/2015-09-06-cool-javafx-uis-in-less-time-use-projection.md +++ b/content/posts/2015-09-06-cool-javafx-uis-in-less-time-use-projection.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Cool JavaFX UIs in less time? Use projection!' +slug: cool-javafx-uis-in-less-time-use-projection date: "2015-09-06" author: hendrik categories: [JavaFX] diff --git a/content/posts/2015-09-09-how-to-create-a-responsive-layout-in-javafx.md b/content/posts/2015-09-09-how-to-create-a-responsive-layout-in-javafx.md index 66dd7bcf..a5cf5d24 100644 --- a/content/posts/2015-09-09-how-to-create-a-responsive-layout-in-javafx.md +++ b/content/posts/2015-09-09-how-to-create-a-responsive-layout-in-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'How to create a responsive layout in JavaFX' +slug: how-to-create-a-responsive-layout-in-javafx date: "2015-09-09" author: hendrik categories: [JavaFX, Layout & UI] diff --git a/content/posts/2015-09-11-creating-an-interactive-application-with-polymer-part-1.md b/content/posts/2015-09-11-creating-an-interactive-application-with-polymer-part-1.md index dbae7aac..a3590086 100644 --- a/content/posts/2015-09-11-creating-an-interactive-application-with-polymer-part-1.md +++ b/content/posts/2015-09-11-creating-an-interactive-application-with-polymer-part-1.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Creating an interactive application with Polymer (Part 1)' +slug: creating-an-interactive-application-with-polymer-part-1 date: "2015-09-11" author: hendrik categories: [Polymer, Web Frontends, WebComponents] diff --git a/content/posts/2015-09-16-layered-images-and-icons-with-javafx.md b/content/posts/2015-09-16-layered-images-and-icons-with-javafx.md index f45c7cd4..ad8864f4 100644 --- a/content/posts/2015-09-16-layered-images-and-icons-with-javafx.md +++ b/content/posts/2015-09-16-layered-images-and-icons-with-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Layered images and icons with JavaFX' +slug: layered-images-and-icons-with-javafx date: "2015-09-16" author: hendrik categories: [JavaFX, Layout & UI] diff --git a/content/posts/2015-09-18-more-fun-with-layered-icons-in-javafx.md b/content/posts/2015-09-18-more-fun-with-layered-icons-in-javafx.md index 57427f01..889e5d22 100644 --- a/content/posts/2015-09-18-more-fun-with-layered-icons-in-javafx.md +++ b/content/posts/2015-09-18-more-fun-with-layered-icons-in-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'More fun with layered icons in javaFX' +slug: more-fun-with-layered-icons-in-javafx date: "2015-09-18" author: hendrik categories: [JavaFX, Layout & UI] diff --git a/content/posts/2015-10-04-dolphin-platform-a-sneak-peek.md b/content/posts/2015-10-04-dolphin-platform-a-sneak-peek.md index fa207f0f..d708be77 100644 --- a/content/posts/2015-10-04-dolphin-platform-a-sneak-peek.md +++ b/content/posts/2015-10-04-dolphin-platform-a-sneak-peek.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform: A Sneak Peek' +slug: dolphin-platform-a-sneak-peek date: "2015-10-04" author: hendrik categories: [Desktop Application Framework (JSR 377), Dolphin Platform, JavaFX] diff --git a/content/posts/2015-10-05-dolphin-platform-a-sneak-peek-of-the-controller-api.md b/content/posts/2015-10-05-dolphin-platform-a-sneak-peek-of-the-controller-api.md index 97605b78..8d793582 100644 --- a/content/posts/2015-10-05-dolphin-platform-a-sneak-peek-of-the-controller-api.md +++ b/content/posts/2015-10-05-dolphin-platform-a-sneak-peek-of-the-controller-api.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform: A Sneak Peek of the controller API' +slug: dolphin-platform-a-sneak-peek-of-the-controller-api date: "2015-10-05" author: hendrik categories: [Dolphin Platform, JavaFX] diff --git a/content/posts/2015-10-06-dolphin-platform-a-sneak-peek-of-the-model-api.md b/content/posts/2015-10-06-dolphin-platform-a-sneak-peek-of-the-model-api.md index 298daf99..f70d23ff 100644 --- a/content/posts/2015-10-06-dolphin-platform-a-sneak-peek-of-the-model-api.md +++ b/content/posts/2015-10-06-dolphin-platform-a-sneak-peek-of-the-model-api.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform: A Sneak Peek of the model API' +slug: dolphin-platform-a-sneak-peek-of-the-model-api date: "2015-10-06" author: hendrik categories: [Dolphin Platform, JavaFX, Web Frontends] diff --git a/content/posts/2015-10-07-dolphin-platform-a-sneak-peek-of-the-view-api.md b/content/posts/2015-10-07-dolphin-platform-a-sneak-peek-of-the-view-api.md index d74de99f..dec04c8d 100644 --- a/content/posts/2015-10-07-dolphin-platform-a-sneak-peek-of-the-view-api.md +++ b/content/posts/2015-10-07-dolphin-platform-a-sneak-peek-of-the-view-api.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform: A Sneak Peek of the view API' +slug: dolphin-platform-a-sneak-peek-of-the-view-api date: "2015-10-07" author: hendrik categories: [Dolphin Platform, JavaFX] diff --git a/content/posts/2015-10-18-dolphin-platform-how-to-create-an-application.md b/content/posts/2015-10-18-dolphin-platform-how-to-create-an-application.md index 8841fb76..6a626eeb 100644 --- a/content/posts/2015-10-18-dolphin-platform-how-to-create-an-application.md +++ b/content/posts/2015-10-18-dolphin-platform-how-to-create-an-application.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform: How to create an application' +slug: dolphin-platform-how-to-create-an-application date: "2015-10-18" author: hendrik categories: [Dolphin Platform, JavaFX] diff --git a/content/posts/2015-10-19-javafx-8-refcard.md b/content/posts/2015-10-19-javafx-8-refcard.md index 794ef46a..ebcdd4d2 100644 --- a/content/posts/2015-10-19-javafx-8-refcard.md +++ b/content/posts/2015-10-19-javafx-8-refcard.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaFX 8 RefCard' +slug: javafx-8-refcard date: "2015-10-19" author: hendrik categories: [JavaFX] diff --git a/content/posts/2015-10-19-javaone-preview.md b/content/posts/2015-10-19-javaone-preview.md index f08b0865..3ea237d6 100644 --- a/content/posts/2015-10-19-javaone-preview.md +++ b/content/posts/2015-10-19-javaone-preview.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaOne Preview' +slug: javaone-preview date: "2015-10-19" author: hendrik categories: [JavaFX] diff --git a/content/posts/2015-10-23-a-short-preview-of-the-javaone-voting-machine.md b/content/posts/2015-10-23-a-short-preview-of-the-javaone-voting-machine.md index 25023f12..1d509bf0 100644 --- a/content/posts/2015-10-23-a-short-preview-of-the-javaone-voting-machine.md +++ b/content/posts/2015-10-23-a-short-preview-of-the-javaone-voting-machine.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'A short preview of the JavaOne Voting Machine' +slug: a-short-preview-of-the-javaone-voting-machine date: "2015-10-23" author: hendrik categories: [IoT, JavaFX] diff --git a/content/posts/2015-10-23-dolphin-platform-web-frontends-with-polymer.md b/content/posts/2015-10-23-dolphin-platform-web-frontends-with-polymer.md index a3fd30fa..db3b075d 100644 --- a/content/posts/2015-10-23-dolphin-platform-web-frontends-with-polymer.md +++ b/content/posts/2015-10-23-dolphin-platform-web-frontends-with-polymer.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform Web Frontends with Polymer' +slug: dolphin-platform-web-frontends-with-polymer date: "2015-10-23" author: hendrik categories: [Dolphin Platform, Polymer, Web Frontends, WebComponents] diff --git a/content/posts/2015-11-09-dolphin-platform-has-been-released.md b/content/posts/2015-11-09-dolphin-platform-has-been-released.md index de83d943..de2a1678 100644 --- a/content/posts/2015-11-09-dolphin-platform-has-been-released.md +++ b/content/posts/2015-11-09-dolphin-platform-has-been-released.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform has been released' +slug: dolphin-platform-has-been-released date: "2015-11-09" author: hendrik categories: [Dolphin Platform, JavaFX, Polymer, Web Frontends] diff --git a/content/posts/2015-11-11-building-modern-web-uis-with-web-components-university-devoxx.md b/content/posts/2015-11-11-building-modern-web-uis-with-web-components-university-devoxx.md index 25b5fd1f..6d36d82e 100644 --- a/content/posts/2015-11-11-building-modern-web-uis-with-web-components-university-devoxx.md +++ b/content/posts/2015-11-11-building-modern-web-uis-with-web-components-university-devoxx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Building modern web UIs with Web Components University @ Devoxx' +slug: building-modern-web-uis-with-web-components-university-devoxx date: "2015-11-11" author: hendrik categories: [Polymer, Web Frontends] diff --git a/content/posts/2015-11-11-dolphin-platform-kumuluzee-javaee-microservices-with-dynamic-and-rich-frontends.md b/content/posts/2015-11-11-dolphin-platform-kumuluzee-javaee-microservices-with-dynamic-and-rich-frontends.md index e789bfbb..70d485dc 100644 --- a/content/posts/2015-11-11-dolphin-platform-kumuluzee-javaee-microservices-with-dynamic-and-rich-frontends.md +++ b/content/posts/2015-11-11-dolphin-platform-kumuluzee-javaee-microservices-with-dynamic-and-rich-frontends.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform & KumuluzEE: JavaEE Microservices with dynamic and rich frontends' +slug: dolphin-platform-kumuluzee-javaee-microservices-with-dynamic-and-rich-frontends date: "2015-11-11" author: hendrik categories: [General] diff --git a/content/posts/2015-11-12-dolphin-platform-in-15-minutes-nighthacking.md b/content/posts/2015-11-12-dolphin-platform-in-15-minutes-nighthacking.md index 6320b388..25983840 100644 --- a/content/posts/2015-11-12-dolphin-platform-in-15-minutes-nighthacking.md +++ b/content/posts/2015-11-12-dolphin-platform-in-15-minutes-nighthacking.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform in 15 minutes @ Nighthacking' +slug: dolphin-platform-in-15-minutes-nighthacking date: "2015-11-12" author: hendrik categories: [Dolphin Platform] diff --git a/content/posts/2015-11-16-javaone-after-event-with-some-cool-talks.md b/content/posts/2015-11-16-javaone-after-event-with-some-cool-talks.md index fca93453..d224f273 100644 --- a/content/posts/2015-11-16-javaone-after-event-with-some-cool-talks.md +++ b/content/posts/2015-11-16-javaone-after-event-with-some-cool-talks.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaOne After Event with some cool talks' +slug: javaone-after-event-with-some-cool-talks date: "2015-11-16" author: hendrik categories: [JavaFX] diff --git a/content/posts/2015-11-30-round-images-with-javafx.md b/content/posts/2015-11-30-round-images-with-javafx.md index 496b96c3..539ca510 100644 --- a/content/posts/2015-11-30-round-images-with-javafx.md +++ b/content/posts/2015-11-30-round-images-with-javafx.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Round images with JavaFX' +slug: round-images-with-javafx date: "2015-11-30" author: hendrik categories: [JavaFX, Layout & UI] diff --git a/content/posts/2015-11-30-styling-a-javafx-scrollbar.md b/content/posts/2015-11-30-styling-a-javafx-scrollbar.md index 02ac59d5..52df9d85 100644 --- a/content/posts/2015-11-30-styling-a-javafx-scrollbar.md +++ b/content/posts/2015-11-30-styling-a-javafx-scrollbar.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Styling a JavaFX Scrollbar' +slug: styling-a-javafx-scrollbar date: "2015-11-30" author: hendrik categories: [General, JavaFX] diff --git a/content/posts/2015-12-02-dolphin-platform-jumpstart.md b/content/posts/2015-12-02-dolphin-platform-jumpstart.md index 74693389..7027a97b 100644 --- a/content/posts/2015-12-02-dolphin-platform-jumpstart.md +++ b/content/posts/2015-12-02-dolphin-platform-jumpstart.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform Jumpstart' +slug: dolphin-platform-jumpstart date: "2015-12-02" author: hendrik categories: [Dolphin Platform, JavaFX] diff --git a/content/posts/2015-12-16-dolphin-platform-0-7-has-been-released.md b/content/posts/2015-12-16-dolphin-platform-0-7-has-been-released.md index b8ac1d3c..2fa76a16 100644 --- a/content/posts/2015-12-16-dolphin-platform-0-7-has-been-released.md +++ b/content/posts/2015-12-16-dolphin-platform-0-7-has-been-released.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform 0.7 has been released' +slug: dolphin-platform-0-7-has-been-released date: "2015-12-16" author: hendrik categories: [Dolphin Platform] diff --git a/content/posts/2015-12-16-dolphin-platform-and-polymer.md b/content/posts/2015-12-16-dolphin-platform-and-polymer.md index aba42359..c8345ffc 100644 --- a/content/posts/2015-12-16-dolphin-platform-and-polymer.md +++ b/content/posts/2015-12-16-dolphin-platform-and-polymer.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform and Polymer' +slug: dolphin-platform-and-polymer date: "2015-12-16" author: hendrik categories: [Dolphin Platform, JavaFX, Polymer, Web Frontends, WebComponents] diff --git a/content/posts/2016-01-13-the-javaone-voting-machine.md b/content/posts/2016-01-13-the-javaone-voting-machine.md index 6d5b545a..b0727509 100644 --- a/content/posts/2016-01-13-the-javaone-voting-machine.md +++ b/content/posts/2016-01-13-the-javaone-voting-machine.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'The JavaOne Voting Machine' +slug: the-javaone-voting-machine date: "2016-01-13" author: hendrik categories: [IoT, JavaFX] diff --git a/content/posts/2016-01-15-reference-cards-for-javafx-web-components-and-open-dolphin.md b/content/posts/2016-01-15-reference-cards-for-javafx-web-components-and-open-dolphin.md index 010c2e6d..bc2c8344 100644 --- a/content/posts/2016-01-15-reference-cards-for-javafx-web-components-and-open-dolphin.md +++ b/content/posts/2016-01-15-reference-cards-for-javafx-web-components-and-open-dolphin.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Reference Cards for JavaFX, Web Components and Open Dolphin' +slug: reference-cards-for-javafx-web-components-and-open-dolphin date: "2016-01-15" author: hendrik categories: [JavaFX, Web Frontends, WebComponents] diff --git a/content/posts/2016-02-02-how-to-choose-the-right-color.md b/content/posts/2016-02-02-how-to-choose-the-right-color.md index 44be4793..e6ec8bae 100644 --- a/content/posts/2016-02-02-how-to-choose-the-right-color.md +++ b/content/posts/2016-02-02-how-to-choose-the-right-color.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'How to choose the right color' +slug: how-to-choose-the-right-color date: "2016-02-02" author: hendrik categories: [General, Layout & UI] diff --git a/content/posts/2016-02-04-dolphin-platform-0-8-has-beed-released.md b/content/posts/2016-02-04-dolphin-platform-0-8-has-beed-released.md index 12836845..4c97731e 100644 --- a/content/posts/2016-02-04-dolphin-platform-0-8-has-beed-released.md +++ b/content/posts/2016-02-04-dolphin-platform-0-8-has-beed-released.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Dolphin Platform 0.8 has beed released' +slug: dolphin-platform-0-8-has-beed-released date: "2016-02-04" author: hendrik categories: [Dolphin Platform, JavaFX, Polymer] diff --git a/content/posts/2016-02-04-guigarage-2-0.md b/content/posts/2016-02-04-guigarage-2-0.md index bb697cd2..c7255c5c 100644 --- a/content/posts/2016-02-04-guigarage-2-0.md +++ b/content/posts/2016-02-04-guigarage-2-0.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'GuiGarage 2.0' +slug: guigarage-2-0 date: "2016-02-04" author: hendrik categories: [General] diff --git a/content/posts/2016-02-04-round-images-with-css.md b/content/posts/2016-02-04-round-images-with-css.md index bfcbe27d..d7310c95 100644 --- a/content/posts/2016-02-04-round-images-with-css.md +++ b/content/posts/2016-02-04-round-images-with-css.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Round Images with CSS' +slug: round-images-with-css date: "2016-02-04" author: hendrik categories: [Web Frontends] diff --git a/content/posts/2016-02-07-javafx-and-css.md b/content/posts/2016-02-07-javafx-and-css.md index 0844a4c3..2f183400 100644 --- a/content/posts/2016-02-07-javafx-and-css.md +++ b/content/posts/2016-02-07-javafx-and-css.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaFX and CSS' +slug: javafx-and-css date: "2016-02-07" author: hendrik categories: [JavaFX] diff --git a/content/posts/2016-02-09-javafx-and-css-pseudo-classes.md b/content/posts/2016-02-09-javafx-and-css-pseudo-classes.md index 9196b726..28023bad 100644 --- a/content/posts/2016-02-09-javafx-and-css-pseudo-classes.md +++ b/content/posts/2016-02-09-javafx-and-css-pseudo-classes.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaFX and CSS: Pseudo Classes' +slug: javafx-and-css-pseudo-classes date: "2016-02-09" author: hendrik categories: [JavaFX] diff --git a/content/posts/2016-09-20-javafx-jumpstart-javaone.md b/content/posts/2016-09-20-javafx-jumpstart-javaone.md index 10f4747b..34acfe15 100644 --- a/content/posts/2016-09-20-javafx-jumpstart-javaone.md +++ b/content/posts/2016-09-20-javafx-jumpstart-javaone.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'JavaFX JumpStart @ JavaOne' +slug: javafx-jumpstart-javaone date: "2016-09-20" author: hendrik categories: [JavaFX] diff --git a/content/posts/2016-10-28-my-thoughts-about-java-build-tools.md b/content/posts/2016-10-28-my-thoughts-about-java-build-tools.md index 9714db25..faf7a54b 100644 --- a/content/posts/2016-10-28-my-thoughts-about-java-build-tools.md +++ b/content/posts/2016-10-28-my-thoughts-about-java-build-tools.md @@ -1,6 +1,7 @@ --- outdated: true title: 'Maven vs. Gradle and the Best of Both Worlds' +slug: maven-vs-gradle-and-the-best-of-both-worlds date: "2016-10-28" author: hendrik categories: [Java] diff --git a/content/posts/2018-03-31-future-java-releases-for-desktop.md b/content/posts/2018-03-31-future-java-releases-for-desktop.md index 14457f90..bddf23e0 100644 --- a/content/posts/2018-03-31-future-java-releases-for-desktop.md +++ b/content/posts/2018-03-31-future-java-releases-for-desktop.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'What future Java releases mean for legacy desktop apps' +slug: what-future-java-releases-mean-for-legacy-desktop-apps date: "2018-03-31" author: hendrik categories: [General] diff --git a/content/posts/2018-06-25-java-releases.md b/content/posts/2018-06-25-java-releases.md index 6705ba09..a288081b 100644 --- a/content/posts/2018-06-25-java-releases.md +++ b/content/posts/2018-06-25-java-releases.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Do I need to pay for Java now?' +slug: do-i-need-to-pay-for-java-now date: "2018-06-25" author: hendrik excerpt: 'This post gives an overview of the new Java release train as it was announced by Oracle. Plus, the article provides some important diff --git a/content/posts/2018-09-16-java-11-licence.md b/content/posts/2018-09-16-java-11-licence.md index c7b40130..48f4b4bf 100644 --- a/content/posts/2018-09-16-java-11-licence.md +++ b/content/posts/2018-09-16-java-11-licence.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'The road to Java 11 - builds and licences' +slug: the-road-to-java-11-builds-and-licences date: "2018-09-16" author: hendrik excerpt: 'This post is the first of our Java 11 posts that will introduce all needed information about the next Java release. In this post you can find all needed information about the free and commercial versions of Java 11.' diff --git a/content/posts/2018-09-16-jc-java-article.md b/content/posts/2018-09-16-jc-java-article.md index 2281eda1..dc2577c9 100644 --- a/content/posts/2018-09-16-jc-java-article.md +++ b/content/posts/2018-09-16-jc-java-article.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'About the Java release model' +slug: about-the-java-release-model date: "2018-09-16" author: hendrik excerpt: 'Based on the confusion and rumors about the new Java release model a group of Java Champions has written diff --git a/content/posts/2018-09-25-java11-release-event.md b/content/posts/2018-09-25-java11-release-event.md index 349e9665..cc2b40fe 100644 --- a/content/posts/2018-09-25-java11-release-event.md +++ b/content/posts/2018-09-25-java11-release-event.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Java 11 release event' +slug: java-11-release-event date: "2018-09-25" author: hendrik excerpt: 'Together with Oracle and Heise we will do a Java 11 release event. diff --git a/content/posts/2018-11-23-amazon-corretto.md b/content/posts/2018-11-23-amazon-corretto.md index 5f3e8f06..8053ab64 100644 --- a/content/posts/2018-11-23-amazon-corretto.md +++ b/content/posts/2018-11-23-amazon-corretto.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Amazon Corretto announced' +slug: amazon-corretto-announced date: "2018-11-23" author: hendrik excerpt: 'At the Devoxx conference 2 weeks ago, Amazon announced Corretto as a new player in the OpenJDK market. Next to companies like SAP, Oracle or Bellsoft, the cloud computing company now provides a custom OpenJDK build. On the website Amazon Corretto is described as diff --git a/content/posts/2019-01-09-integration-docker.md b/content/posts/2019-01-09-integration-docker.md index f2df5d93..c1f34989 100644 --- a/content/posts/2019-01-09-integration-docker.md +++ b/content/posts/2019-01-09-integration-docker.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Integration tests with Docker' +slug: integration-tests-with-docker date: "2019-01-09" author: hendrik origin: "https://dev.karakun.com" diff --git a/content/posts/2019-01-15-rico-server-timing.md b/content/posts/2019-01-15-rico-server-timing.md index 9aea7195..7c5dc6a4 100644 --- a/content/posts/2019-01-15-rico-server-timing.md +++ b/content/posts/2019-01-15-rico-server-timing.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Server Timing with Rico' +slug: server-timing-with-rico date: "2019-01-15" author: hendrik excerpt: 'This post gives an overview about the new server timing specification of the w3c and how server timing can be used in any enterprise Java server by using Rico.' diff --git a/content/posts/2019-01-25-security-exploits.md b/content/posts/2019-01-25-security-exploits.md index e9f78fd6..85d99c01 100644 --- a/content/posts/2019-01-25-security-exploits.md +++ b/content/posts/2019-01-25-security-exploits.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'How a single request can kill your enterprise' +slug: how-a-single-request-can-kill-your-enterprise date: "2019-01-25" author: hendrik excerpt: 'As developers we always try to create bug free and secure applications. diff --git a/content/posts/2019-12-10-webstart-advent.md b/content/posts/2019-12-10-webstart-advent.md index de706a03..dcf16b23 100644 --- a/content/posts/2019-12-10-webstart-advent.md +++ b/content/posts/2019-12-10-webstart-advent.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'How open source saved WebStart' +slug: how-open-source-saved-webstart date: "2019-12-10" author: hendrik excerpt: 'Everyone who has developed Java desktop applications within the last 15 years used WebStart or at least heard about it. This post gives an overview how the technology evolves as an open source project after Oracle announced its removal from the Oracle JDK.' diff --git a/content/posts/2020-02-15-back-to-the-future.md b/content/posts/2020-02-15-back-to-the-future.md index cb6a63be..eb618ef9 100644 --- a/content/posts/2020-02-15-back-to-the-future.md +++ b/content/posts/2020-02-15-back-to-the-future.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'Back to the future - with Java' +slug: back-to-the-future-with-java date: "2020-02-15" author: hendrik excerpt: "Each year several Java applications might show wrong date information for the days around New diff --git a/content/posts/2020-02-21-adopt-tests.md b/content/posts/2020-02-21-adopt-tests.md index 85f73f8d..7695755d 100644 --- a/content/posts/2020-02-21-adopt-tests.md +++ b/content/posts/2020-02-21-adopt-tests.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'How AdoptOpenJDK provides enterprise ready OpenJDK builds' +slug: how-adoptopenjdk-provides-enterprise-ready-openjdk-builds date: "2020-02-21" author: hendrik excerpt: 'With the new licence of the Oracle JDK a lot of companies need to switch to a new JDK vendor. diff --git a/content/posts/2020-03-12-cyberland.de.md b/content/posts/2020-03-12-cyberland.de.md index 34644017..4a8d63ae 100644 --- a/content/posts/2020-03-12-cyberland.de.md +++ b/content/posts/2020-03-12-cyberland.de.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'About Cyberland [German]' +slug: about-cyberland-german date: "2020-03-12" author: hendrik excerpt: 'Based on the given circumstances (COVID-19) the JavaLand conferences has been canceled. This was the only solution that made sense for the organizers. We can understand that a lot of visitors and speakers are sad about this news. Based on this the German JUG community is organzing a 100% remote conference called Cyberland' diff --git a/content/posts/2020-03-13-cyberland.md b/content/posts/2020-03-13-cyberland.md index dbd99003..916a7687 100644 --- a/content/posts/2020-03-13-cyberland.md +++ b/content/posts/2020-03-13-cyberland.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'About Cyberland' +slug: about-cyberland date: "2020-03-13" author: hendrik excerpt: 'Based on the given circumstances (COVID-19) the JavaLand conferences has been canceled. This was the only solution that made sense for the organizers. We can understand that a lot of visitors and speakers are sad about this news. Based on this the German JUG community is organzing a 100% remote conference called Cyberland' diff --git a/content/posts/2020-07-14-adopt-roadshow.md b/content/posts/2020-07-14-adopt-roadshow.md index 7a8f6c04..194e32e8 100644 --- a/content/posts/2020-07-14-adopt-roadshow.md +++ b/content/posts/2020-07-14-adopt-roadshow.md @@ -2,6 +2,7 @@ outdated: true showInBlog: false title: 'AdoptOpenJDK Virtual Roadshow' +slug: adoptopenjdk-virtual-roadshow date: "2020-07-14" author: hendrik excerpt: 'AdoptOpenJDK is doing a virtual roadshow of the Java User Groups. We plan to reach as many groups as possible but we will also live stream the event on YouTube.' diff --git a/content/posts/2023-02-07-logging-in-java-and-other-languages.md b/content/posts/2023-02-07-logging-in-java-and-other-languages.md index a55bcf78..1abc5554 100644 --- a/content/posts/2023-02-07-logging-in-java-and-other-languages.md +++ b/content/posts/2023-02-07-logging-in-java-and-other-languages.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Best Practices and Anti-Pattern for Logging in Java and other Languages" +slug: best-practices-and-anti-pattern-for-logging-in-java-and-other-languages date: 2023-02-07 author: hendrik excerpt: "Logging is an important instrument, but it's not easy to find the right amount of information to log. This post will show some best pratices that help to get the best results out of a logging system." diff --git a/content/posts/2023-02-28-java-backwards-compatibility.md b/content/posts/2023-02-28-java-backwards-compatibility.md index 1c5d6874..a08c575e 100644 --- a/content/posts/2023-02-28-java-backwards-compatibility.md +++ b/content/posts/2023-02-28-java-backwards-compatibility.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Write Once, Run Anywhere - how good is Java's Backwards Compatibility?" +slug: write-once-run-anywhere-how-good-is-java-s-backwards-compatibility date: 2023-02-28 author: hendrik excerpt: "As programming paradigms and language features continue to evolve, a question arises: Can Java still maintain the always advertised backwards compatibility?" diff --git a/content/posts/2023-03-14-java-release-train.md b/content/posts/2023-03-14-java-release-train.md index ec3ca717..114a8581 100644 --- a/content/posts/2023-03-14-java-release-train.md +++ b/content/posts/2023-03-14-java-release-train.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Every Six Months an Update: The Path to the Java Release Train" +slug: every-six-months-an-update-the-path-to-the-java-release-train date: 2023-03-14 author: hendrik excerpt: "In recent years, there have been various changes in the Java Release Train, leading to confusion and misunderstandings within the community. This post will give an overview of the changes and how you can be better prepared for the next Java releases." diff --git a/content/posts/2023-04-18-detect-null-errors-with-static-analysis.md b/content/posts/2023-04-18-detect-null-errors-with-static-analysis.md index 75f3175a..4dd1f797 100644 --- a/content/posts/2023-04-18-detect-null-errors-with-static-analysis.md +++ b/content/posts/2023-04-18-detect-null-errors-with-static-analysis.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Detecting NullPointerExceptions with Static Code Analysis" +slug: detecting-nullpointerexceptions-with-static-code-analysis date: 2023-04-18 author: hendrik excerpt: "NullPointerExceptions are one of the most common sources of errors in Java. However, these errors can be significantly minimized through static code analysis. This post gives an overview of annotations can be used to handle 'null' in Java in a better way." diff --git a/content/posts/2023-05-09-java-module-system.md b/content/posts/2023-05-09-java-module-system.md index a10c7983..77dcc45d 100644 --- a/content/posts/2023-05-09-java-module-system.md +++ b/content/posts/2023-05-09-java-module-system.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Java's Module System: Help, My Dependencies Are Not Java Modules!" +slug: java-s-module-system-help-my-dependencies-are-not-java-modules date: 2023-05-09 author: hendrik excerpt: "With Java, you can now modularize applications quite well, but you also have to consider dependencies. When these are not Java modules, it gets interesting. In this post you can learn more about the Java module system and how it can be used in your projects." diff --git a/content/posts/2023-06-22-logging-facades-for-java.md b/content/posts/2023-06-22-logging-facades-for-java.md index 2296619e..54824c17 100644 --- a/content/posts/2023-06-22-logging-facades-for-java.md +++ b/content/posts/2023-06-22-logging-facades-for-java.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Logging Facades for Java" +slug: logging-facades-for-java date: 2023-06-22 author: hendrik excerpt: "Logging is an important part of error analysis. However, consolidating different logging libs in Java applications is always a challenge. If you want to know how several different logging libs in a single application can be handled, this post is for you." diff --git a/content/posts/2023-08-03-distributions-and-support-without-oracle.md b/content/posts/2023-08-03-distributions-and-support-without-oracle.md index 718f0a35..9d423599 100644 --- a/content/posts/2023-08-03-distributions-and-support-without-oracle.md +++ b/content/posts/2023-08-03-distributions-and-support-without-oracle.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Java Without Headaches: Distributions and Support Beyond Oracle" +slug: java-without-headaches-distributions-and-support-beyond-oracle date: 2023-08-03 author: hendrik excerpt: "There isn't just one provider for Java distributions and support. Gartner has analyzed the options in a report, and Oracle doesn't fare well. If you are searching for a good alternative to a costly Oracle contract, this post gives insights into alternative OpenJDK builds and Java distributions." diff --git a/content/posts/2024-01-11-java-module-system.md b/content/posts/2024-01-11-java-module-system.md index ee5fe86d..66cadc85 100644 --- a/content/posts/2024-01-11-java-module-system.md +++ b/content/posts/2024-01-11-java-module-system.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Minimal Support for the Java Module System" +slug: minimal-support-for-the-java-module-system date: 2024-01-11 author: hendrik excerpt: "The Java Module System remains an underutilized feature in the development of applications and libraries, despite its often straightforward entry point. Anyway, more and more libraries provide support for the module system. Based on that it might make sense to learn how you can add support to your project." diff --git a/content/posts/2024-01-18-performance-of-java-logging.md b/content/posts/2024-01-18-performance-of-java-logging.md index c4e9e9a8..41513e0c 100644 --- a/content/posts/2024-01-18-performance-of-java-logging.md +++ b/content/posts/2024-01-18-performance-of-java-logging.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Performance of Java Logging" +slug: performance-of-java-logging date: 2024-01-18 author: hendrik excerpt: "For Java, there is an abundance of different logging libraries and possibilities to output log messages. But which of them are really performant?" diff --git a/content/posts/2024-01-20-open-elements-2023.de.md b/content/posts/2024-01-20-open-elements-2023.de.md index 6b7585bc..c993ceb2 100644 --- a/content/posts/2024-01-20-open-elements-2023.de.md +++ b/content/posts/2024-01-20-open-elements-2023.de.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Open Elements 2023 - ein Jahr des digitalen Durchbruchs und der Markendefinition" +slug: open-elements-2023-ein-jahr-des-digitalen-durchbruchs-und-der-markendefinition date: 2024-01-20 author: hendrik excerpt: "Recap 2023 – Open Elements' Errungenschaften: Markenlaunch, führende Rolle in der Eclipse Foundation, Java-Engagement und nachhaltige Initiativen" diff --git a/content/posts/2024-07-09-open-source-java.de.md b/content/posts/2024-07-09-open-source-java.de.md index 25ac727c..d58f6c58 100644 --- a/content/posts/2024-07-09-open-source-java.de.md +++ b/content/posts/2024-07-09-open-source-java.de.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Open Source Java" +slug: open-source-java date: 2024-07-09 author: hendrik excerpt: "Ist Java eigentlich Open Source? Und wie spielt das OpenJDK damit zusammen? In diesem Artikel beschreibe ich warum Open Source und dessen Wartung so wichtig für Unternehmen ist und wie Java sich in diesem Bereich schlägt." diff --git a/content/posts/2024-07-22-gaming-web3.md b/content/posts/2024-07-22-gaming-web3.md index 0bbeb211..5f15b39b 100644 --- a/content/posts/2024-07-22-gaming-web3.md +++ b/content/posts/2024-07-22-gaming-web3.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Gaming & Web3 - How an Open and Secure Future of Ownership in Games Could Look" +slug: gaming-web3-how-an-open-and-secure-future-of-ownership-in-games-could-look date: 2024-07-22 author: hendrik excerpt: "The use of Web3 technologies in the gaming industry is still in its infancy. In this article, I want to take a closer look at non-fungible tokens (NFTs) and their usability for video games and consider what further standardizations are needed to realize the promise of game-independent assets." diff --git a/content/posts/2025-01-03-dco-signing.md b/content/posts/2025-01-03-dco-signing.md index 0f9ed3ec..44ce28c2 100644 --- a/content/posts/2025-01-03-dco-signing.md +++ b/content/posts/2025-01-03-dco-signing.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "DCO Signing and Validation for Open Source Projects" +slug: dco-signing-and-validation-for-open-source-projects date: 2025-01-03 author: hendrik excerpt: "The Developer Certificate of Origin (DCO) is a lightweight mechanism for developers to certify that they wrote or have the right to contribute the code they are submitting. This article explores the purpose, usage, and validation of the DCO in open-source projects next to a critical analysis of the DCO’s effectiveness in ensuring legal compliance for open-source contributions." diff --git a/content/posts/2025-01-16-open-elements-in-2024.de.md b/content/posts/2025-01-16-open-elements-in-2024.de.md index e6b12f6b..9a4db5a4 100644 --- a/content/posts/2025-01-16-open-elements-in-2024.de.md +++ b/content/posts/2025-01-16-open-elements-in-2024.de.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: 'Jahresrückblick Open Elements 2024' +slug: jahresrückblick-open-elements-2024 date: 2025-01-16 author: hendrik excerpt: 'Im Jahr 2024 hat Open Elements beeindruckende Erfolge erzielt und mit Projekten wie Support & Care for Apache Maven™ wegweisende Entwicklungen im Open-Source-Ökosystem vorangetrieben. CEO Hendrik Ebbers übernahm zentrale Rollen bei der Eclipse und Linux Foundation und stärkte die globale Open-Source-Community.' diff --git a/content/posts/2025-01-16-open-elements-in-2024.md b/content/posts/2025-01-16-open-elements-in-2024.md index 33770a58..2bd6421a 100644 --- a/content/posts/2025-01-16-open-elements-in-2024.md +++ b/content/posts/2025-01-16-open-elements-in-2024.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: 'Open Elements 2024 Year in Review' +slug: open-elements-2024-year-in-review date: 2025-01-16 author: hendrik excerpt: 'In 2024, Open Elements achieved remarkable success and drove groundbreaking developments in the open-source ecosystem with projects like Support & Care for Apache Maven™. CEO Hendrik Ebbers took on key roles at the Eclipse and Linux Foundations, strengthening the global open-source community.' diff --git a/content/posts/2025-08-08-support-and-care-jira-gh-migration.md b/content/posts/2025-08-08-support-and-care-jira-gh-migration.md index 292d8a2c..9ed52c93 100644 --- a/content/posts/2025-08-08-support-and-care-jira-gh-migration.md +++ b/content/posts/2025-08-08-support-and-care-jira-gh-migration.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Jira Issue to GitHub Issue Migration in Apache Maven" +slug: jira-issue-to-github-issue-migration-in-apache-maven date: 2025-08-08 author: sandra excerpt: "This blog post details the Apache Maven Support and Care team’s funded effort to migrate issues from Jira to GitHub, supported by the German Sovereign Tech Fund. This post provides valuable insights into the challenges of migrating large-scale issue tracking systems and the importance of thorough planning and adaptation and why this was only possible with a funding." diff --git a/content/posts/2025-09-12-support-and-care-reproducible-builds.md b/content/posts/2025-09-12-support-and-care-reproducible-builds.md index 0ffd0fc9..622bdb8f 100644 --- a/content/posts/2025-09-12-support-and-care-reproducible-builds.md +++ b/content/posts/2025-09-12-support-and-care-reproducible-builds.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Reproducible builds" +slug: reproducible-builds date: 2025-09-12 author: sebastian excerpt: "This blog post features an overview of what reproducible builds are and why they provide value in the context of software supply chain security. Since the announcement of the European Cyber Security Act (CRA), supply chain security is in the spotlight of many companies. The purpose of this blog post is to provide ideas and guidelines about the critical concept of reproducible builds. The German Sovereign Tech Agency supports this blog post." diff --git a/content/posts/2025-12-15-cra.de.md b/content/posts/2025-12-15-cra.de.md index d75de984..2a8db6cf 100644 --- a/content/posts/2025-12-15-cra.de.md +++ b/content/posts/2025-12-15-cra.de.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Cyber Resilience Act – Übersicht und Auswirkungen" +slug: cyber-resilience-act-übersicht-und-auswirkungen date: 2025-12-15 author: hendrik excerpt: "Der Cyber Resilience Act (CRA) bringt ab 2027 verbindliche Cybersicherheitsanforderungen für Software in der EU. Der Artikel erklärt, was der CRA für Softwarehersteller bedeutet, warum Open Source dabei eine Schlüsselrolle spielt und weshalb Unternehmen schon heute in OSS-Sicherheit, SBOMs und Stewardship investieren müssen." diff --git a/content/posts/2026-02-10-review-2025.de.md b/content/posts/2026-02-10-review-2025.de.md index 203bdd32..5fcd695d 100644 --- a/content/posts/2026-02-10-review-2025.de.md +++ b/content/posts/2026-02-10-review-2025.de.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Jahresrückblick 2025" +slug: jahresrückblick-2025 date: 2026-02-10 author: hendrik excerpt: "Das Jahr 2025 war ein Wachstumsjahr für Open Elements: Das Team expandierte international, neue Projekte wurden gestartet und das Engagement in Open Source Foundations erreichte neue Höhepunkte. Von der Gründungsmitgliedschaft in der Open Regulatory Compliance Working Group über die erfolgreiche Maven-Förderung durch den Sovereign Tech Fund bis zur globalen Präsenz auf Konferenzen – Open Elements festigte seine Position als treibende Kraft für Open Source und digitale Souveränität." diff --git a/content/posts/2026-02-10-review-2025.md b/content/posts/2026-02-10-review-2025.md index 35d4be7c..0e8ac8d2 100644 --- a/content/posts/2026-02-10-review-2025.md +++ b/content/posts/2026-02-10-review-2025.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Year in Review 2025" +slug: year-in-review-2025 date: 2026-02-10 author: hendrik excerpt: "2025 was a year of growth for Open Elements: The team expanded internationally, new projects were launched, and engagement in open source foundations reached new heights. From founding membership in the Open Regulatory Compliance Working Group to the successful Maven funding through the Sovereign Tech Fund to a global presence at conferences — Open Elements solidified its position as a driving force for open source and digital sovereignty." diff --git a/content/posts/2026-02-26-maveniverse-toolbox-in-initializer-for-apache-maven.md b/content/posts/2026-02-26-maveniverse-toolbox-in-initializer-for-apache-maven.md index 1906a947..b4ce8756 100644 --- a/content/posts/2026-02-26-maveniverse-toolbox-in-initializer-for-apache-maven.md +++ b/content/posts/2026-02-26-maveniverse-toolbox-in-initializer-for-apache-maven.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Using Maveniverse Toolbox in Initializer for Apache Maven™" +slug: using-maveniverse-toolbox-in-initializer-for-apache-maven date: 2026-02-26 author: noah excerpt: "Initializer for Apache Maven™ uses Maveniverse Toolbox for programmatic Maven project generation. This post explains why we chose it and how it helps with version resolution and POM editing." diff --git a/content/posts/2026-03-05-oss-ai-slop.de.md b/content/posts/2026-03-05-oss-ai-slop.de.md index 5bc3b787..4d99c2db 100644 --- a/content/posts/2026-03-05-oss-ai-slop.de.md +++ b/content/posts/2026-03-05-oss-ai-slop.de.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Wenn \"Contributions\" zur Belastung werden" +slug: wenn-contributions-zur-belastung-werden date: 2026-03-05 author: hendrik excerpt: "Generative KI verändert Open Source: Immer mehr automatisch erzeugte Pull Requests überlasten Maintainer und stellen Review-Prozesse vor neue Herausforderungen. Wie Projekte versuchen, Qualität und Offenheit trotz wachsender AI-Slop-Flut zu bewahren." diff --git a/content/posts/2026-03-05-oss-ai-slop.md b/content/posts/2026-03-05-oss-ai-slop.md index 74466537..0d8f6863 100644 --- a/content/posts/2026-03-05-oss-ai-slop.md +++ b/content/posts/2026-03-05-oss-ai-slop.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "When \"Contributions\" Become a Burden" +slug: when-contributions-become-a-burden date: 2026-03-05 author: hendrik excerpt: "Generative AI is changing open source: An increasing number of automatically generated pull requests are overwhelming maintainers and presenting new challenges for review processes. How projects are trying to preserve quality and openness despite the growing flood of AI slop." diff --git a/content/posts/2026-03-12-agentic-wallets.md b/content/posts/2026-03-12-agentic-wallets.md index 33e4c423..b6cb5d4b 100644 --- a/content/posts/2026-03-12-agentic-wallets.md +++ b/content/posts/2026-03-12-agentic-wallets.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Agentic Wallets - When AI Agents Need to Pay" +slug: agentic-wallets-when-ai-agents-need-to-pay date: 2026-03-12 author: hendrik excerpt: "AI agents are becoming autonomous actors — but they cannot pay for things. I explore the challenges behind agentic wallets, the emerging specifications that make them possible, and propose a concrete architecture that works across decentralized and centralized payment providers." diff --git a/content/posts/2026-03-19-container-gov.de.md b/content/posts/2026-03-19-container-gov.de.md index ccb2f543..99672d27 100644 --- a/content/posts/2026-03-19-container-gov.de.md +++ b/content/posts/2026-03-19-container-gov.de.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Open Elements liefert gehärtete Software für die deutsche Verwaltung" +slug: open-elements-liefert-gehärtete-software-für-die-deutsche-verwaltung date: 2026-03-19 author: hendrik excerpt: "Open Elements ist neben ZenDiS und dem Auswärtigen Amt eine der ersten Entitäten, die gehärtete Container-Images für container.gov.de bereitstellen darf. Im Fokus: sichere Eclipse-Temurin-Images für alle Java-LTS-Versionen und die Open-Source-PaaS Coolify." diff --git a/content/posts/2026-07-06-oss-un-to-dortmund.de.md b/content/posts/2026-07-06-oss-un-to-dortmund.de.md index f91fc65e..f523adf2 100644 --- a/content/posts/2026-07-06-oss-un-to-dortmund.de.md +++ b/content/posts/2026-07-06-oss-un-to-dortmund.de.md @@ -2,6 +2,7 @@ outdated: false showInBlog: true title: "Genug geredet: Wie digitale Souveränität von der UN bis Dortmund konkret wird" +slug: genug-geredet-wie-digitale-souveränität-von-der-un-bis-dortmund-konkret-wird date: 2026-07-06 author: hendrik excerpt: "Drei Termine, ein Thema — von der UN Open Source Week über einen Roundtable im Bundestag bis zu einem neuen Open Source Board in meiner Heimatstadt. Auf allen Ebenen ging es in den letzten Wochen um das Thema \"Digitale Souveränität\"." diff --git a/docs/04-adding-blog-post.md b/docs/04-adding-blog-post.md index 09f69bbe..8776d360 100644 --- a/docs/04-adding-blog-post.md +++ b/docs/04-adding-blog-post.md @@ -27,10 +27,9 @@ content/posts/2026-02-27-dependency-health-checks.md content/posts/2026-02-27-dependency-health-checks.de.md ``` -The URL slug is derived from the filename: +Filenames follow a `YYYY-MM-DD-something.md` pattern for readability and sort order. The **public URL** is built from the `date:` field and the `slug:` field in the frontmatter — not from the filename. See section 2 for the `slug:` convention. -- `2026-02-27-dependency-health-checks.md` -> `/posts/2026-02-27-dependency-health-checks` -- `2026-02-27-dependency-health-checks.de.md` -> `/de/posts/2026-02-27-dependency-health-checks` +There is also a legacy filename-based alias route: every post is also reachable at `/posts/` (e.g. `/posts/2026-02-27-dependency-health-checks`). This exists for backward compatibility with old links and should not be used in new content. ## 2. Add Front Matter (Required Fields) @@ -40,18 +39,20 @@ Posts in this repository are parsed by `src/lib/markdown.ts` and must use this s --- outdated: false showInBlog: true -title: "Dependency Health Checks for Maven Builds" +title: 'Dependency Health Checks for Maven Builds' +slug: dependency-health-checks date: 2026-02-27 author: sebastian -excerpt: "A short teaser shown in article cards and metadata." +excerpt: 'A short teaser shown in article cards and metadata.' categories: [open-source, maven, security] -preview_image: "/posts/preview-images/open-source-green.svg" +preview_image: '/posts/preview-images/open-source-green.svg' --- ``` Field notes: - `title`: display title and SEO title base +- `slug`: short, kebab-case URL segment (see "Slug convention" below) - `date`: `YYYY-MM-DD` - `author`: author id (not free text). Match an id in `src/data/en/team.json` and `src/data/de/team.json` - `excerpt`: used in listing cards and metadata description @@ -60,6 +61,33 @@ Field notes: - `showInBlog`: set `false` to hide from listing pages - `outdated`: set `true` to hide from listing pages +### Slug convention + +The final URL of a post is: + +```text +/posts/YYYY/MM/DD/ +/de/posts/YYYY/MM/DD/ +``` + +Rules for `slug`: + +- **Always set it explicitly** on new posts. Do not rely on the title-based fallback. +- Keep it **short and human-readable** — 1 to 4 words, kebab-case, ASCII only. +- Do **not** repeat the date. The date is added automatically from the `date:` field. +- Use the **same slug** in the EN and DE files so both locales have symmetric URLs. +- Once a post is published, do **not** change its slug. Existing URLs and backlinks will break. + +Examples: + +| Title | Good `slug:` | Resulting URL | +| ------------------------------------------------------------- | ------------------- | ------------------------------------- | +| Dependency Health Checks for Maven Builds | `dependency-health` | `/posts/2026/02/27/dependency-health` | +| Open Elements liefert gehärtete Software für container.gov.de | `container-gov` | `/de/posts/2026/03/19/container-gov` | +| Year in Review 2025 | `review-2025` | `/posts/2026/02/10/review-2025` | + +If `slug:` is omitted, the URL is auto-derived from the title. That fallback exists only to keep old posts working; it produces long, hard-to-read URLs (especially with umlauts) and should not be used for new content. + ## 3. Write Content and Use Correct Links Write markdown below the front matter. Keep heading structure consistent between EN/DE versions. @@ -70,10 +98,11 @@ Internal link rules: - EN: `/about`, `/contact` - DE: `/de/about`, `/de/contact` - Blog posts: - - EN: `/posts/` - - DE: `/de/posts/` + - EN: `/posts/YYYY/MM/DD/` + - DE: `/de/posts/YYYY/MM/DD/` Do not use `/blog/...` in new content. The active route is `/posts/...`. +Do not link to the legacy `/posts/` alias in new content either — use the canonical `/posts/YYYY/MM/DD/` form. ## 4. Add Images @@ -97,8 +126,8 @@ Reference them with web paths: 2. Open: - EN listing: `http://localhost:3000/posts` - DE listing: `http://localhost:3000/de/posts` - - EN post: `http://localhost:3000/posts/` - - DE post: `http://localhost:3000/de/posts/` + - EN post: `http://localhost:3000/posts/YYYY/MM/DD/` + - DE post: `http://localhost:3000/de/posts/YYYY/MM/DD/` 3. Verify preview image, excerpt, categories, author card, and all links ## 6. Common Pitfalls @@ -108,6 +137,8 @@ Reference them with web paths: - `author` not matching a team id - Using filesystem-like image paths (`public/...`) instead of web paths (`/...`) - Missing `excerpt` or `preview_image`, causing weak list cards and metadata +- Missing `slug:` in frontmatter — the post still works via the title-based fallback, but the URL will be long and hard to read. Always set an explicit `slug:` on new posts. +- Renaming `slug:` on an already-published post — this breaks existing URLs and backlinks. Don't do it. ## Related Docs From 3152f237a035c80a7b60527d4ed420297c53ced9 Mon Sep 17 00:00:00 2001 From: Jessie Ssebuliba Date: Sat, 11 Jul 2026 14:42:35 +0200 Subject: [PATCH 3/8] refine slug generation logic for blog posts and update documentation Signed-off-by: Jessie Ssebuliba --- CLAUDE.md | 42 +++++++++++++--------------------- docs/04-adding-blog-post.md | 34 +++++++++++++++------------- src/lib/markdown.ts | 45 +++++++++++++++++++++---------------- 3 files changed, 61 insertions(+), 60 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 1fd6e963..8b89cb79 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -20,48 +20,38 @@ Guidance for AI coding agents (Claude, Copilot, etc.) working in this repository ### Blog post slugs -Every new post **must** declare an explicit `slug:` field in its frontmatter. Do not rely on the title-based fallback. - -```yaml ---- -title: 'Dependency Health Checks for Maven Builds' -slug: dependency-health -date: 2026-02-27 -# ... ---- +The URL slug for a post is resolved in this order (see `generatePostSlug()` in [src/lib/markdown.ts](./src/lib/markdown.ts)): + +1. Explicit `slug:` in the post's frontmatter (highest priority — protects legacy URLs). +2. Filename stem with the `YYYY-MM-DD-` date prefix and `.md` / `.de.md` extension stripped. This is the canonical default for new posts. + +```text +content/posts/2026-02-27-dependency-health.md -> /posts/2026/02/27/dependency-health +content/posts/2026-03-19-container-gov.de.md -> /de/posts/2026/03/19/container-gov ``` Rules: -- Short, kebab-case, ASCII (1–4 words). -- Do not repeat the date — the date comes from the `date:` field. -- Use the **same slug** in the EN and DE files of a post. -- Never change the slug of an already-published post — that breaks existing URLs and backlinks. -- Legacy posts have long, title-derived slugs (including umlauts) for backward compatibility. Do not "clean them up" — those slugs are load-bearing for existing links. +- **New posts should not set `slug:`.** Pick a short, kebab-case, ASCII filename (`YYYY-MM-DD-.md`) and the filename becomes the URL. +- Only set `slug:` explicitly when you need to override the filename (e.g. keeping backward compatibility with a legacy URL). +- If you do set `slug:`, keep it short (1–4 words), kebab-case, ASCII. +- Never change the filename or `slug:` of an already-published post — either moves the URL and breaks backlinks. +- Legacy posts carry an explicit `slug:` (often long, sometimes with umlauts) that pins them to their historical URL. Do not "clean these up" — those values are load-bearing for existing links. Full rules and rationale: [docs/04-adding-blog-post.md § Slug convention](./docs/04-adding-blog-post.md#slug-convention). -Reference implementation: `generatePostSlug()` / `generatePostPath()` in [src/lib/markdown.ts](./src/lib/markdown.ts). - ### Legacy filename alias Every post is also reachable via `/posts/` (the legacy Hugo-style alias, produced by `getAllPostSlugs()`). This alias is intentional backward-compat plumbing — do not remove it, and do not use it in new links. -## Scripts - -Helper scripts live in `scripts/` and run with plain `node`: - -- `scripts/backfill-post-slugs.mjs` — inserts an explicit `slug:` into every post that lacks one, computed from the current title so URLs stay unchanged. Idempotent. Pass `--dry-run` to preview. Should only be needed once; kept for reproducibility. -- `scripts/dump-post-slugs.mjs` — prints the full sorted list of URL slugs `getAllPostSlugs()` would emit. Useful as a before/after diff when changing anything in the slug generation path. - ## Do - Read the referenced `docs/*.md` before making structural changes to content or routing. -- When touching slug logic in `src/lib/markdown.ts`, run `scripts/dump-post-slugs.mjs` before and after and diff — the diff must be empty unless the change is _intended_ to move URLs. +- When touching slug logic in `src/lib/markdown.ts`, dump every URL that `getAllPostSlugs()` emits before and after your change and diff — the diff must be empty unless the change is _intended_ to move URLs. - Preserve line-ending style when editing legacy markdown files (some are CRLF). ## Don't - Don't remove or rewrite the legacy filename-based alias in `getAllPostSlugs()` without explicit sign-off — it protects old inbound links. -- Don't run `matter.stringify()` (gray-matter) to rewrite existing post frontmatter. It reorders keys, changes quoting, and reformats dates. Do targeted line-level edits on the raw text instead (see `scripts/backfill-post-slugs.mjs` for the pattern). -- Don't add `slug:` to old posts by hand as a "cleanup" — the backfill has already done that, and the values must exactly match the title-derived slug. +- Don't run `matter.stringify()` (gray-matter) to rewrite existing post frontmatter. It reorders keys, changes quoting, and reformats dates. Do targeted line-level edits on the raw text instead. +- Don't strip the explicit `slug:` from legacy posts as a "cleanup" — those slugs are pinned to already-indexed URLs and must not change. diff --git a/docs/04-adding-blog-post.md b/docs/04-adding-blog-post.md index 8776d360..b6dacd94 100644 --- a/docs/04-adding-blog-post.md +++ b/docs/04-adding-blog-post.md @@ -27,7 +27,7 @@ content/posts/2026-02-27-dependency-health-checks.md content/posts/2026-02-27-dependency-health-checks.de.md ``` -Filenames follow a `YYYY-MM-DD-something.md` pattern for readability and sort order. The **public URL** is built from the `date:` field and the `slug:` field in the frontmatter — not from the filename. See section 2 for the `slug:` convention. +Filenames follow a `YYYY-MM-DD-.md` pattern. The **public URL** is built from the `date:` field and the slug — where the slug defaults to `` (i.e. the filename stem without the date prefix and extension) unless overridden by a `slug:` field in the frontmatter. See section 2 for the full slug convention. There is also a legacy filename-based alias route: every post is also reachable at `/posts/` (e.g. `/posts/2026-02-27-dependency-health-checks`). This exists for backward compatibility with old links and should not be used in new content. @@ -40,7 +40,6 @@ Posts in this repository are parsed by `src/lib/markdown.ts` and must use this s outdated: false showInBlog: true title: 'Dependency Health Checks for Maven Builds' -slug: dependency-health-checks date: 2026-02-27 author: sebastian excerpt: 'A short teaser shown in article cards and metadata.' @@ -52,7 +51,7 @@ preview_image: '/posts/preview-images/open-source-green.svg' Field notes: - `title`: display title and SEO title base -- `slug`: short, kebab-case URL segment (see "Slug convention" below) +- `slug` _(optional)_: override the URL segment (see "Slug convention" below); if omitted, the filename stem is used - `date`: `YYYY-MM-DD` - `author`: author id (not free text). Match an id in `src/data/en/team.json` and `src/data/de/team.json` - `excerpt`: used in listing cards and metadata description @@ -70,23 +69,28 @@ The final URL of a post is: /de/posts/YYYY/MM/DD/ ``` +Resolution order in `generatePostSlug()` (see [src/lib/markdown.ts](../src/lib/markdown.ts)): + +1. Explicit `slug:` field in the post's frontmatter (highest priority — kept so legacy posts whose URLs are already indexed do not move). +2. Filename stem with the `YYYY-MM-DD-` prefix and `.md` / `.de.md` extension stripped. This is the canonical default for **new** posts. + Rules for `slug`: -- **Always set it explicitly** on new posts. Do not rely on the title-based fallback. -- Keep it **short and human-readable** — 1 to 4 words, kebab-case, ASCII only. +- **New posts should NOT set `slug:`** unless there is a reason to override the filename. Just pick a good, short filename — `content/posts/2026-02-27-dependency-health.md` is enough to give you `/posts/2026/02/27/dependency-health`. +- If you do set `slug:`, keep it **short and human-readable** — 1 to 4 words, kebab-case, ASCII only. - Do **not** repeat the date. The date is added automatically from the `date:` field. -- Use the **same slug** in the EN and DE files so both locales have symmetric URLs. -- Once a post is published, do **not** change its slug. Existing URLs and backlinks will break. +- If EN and DE files should share a URL segment, either use the same filename base for both (`foo.md` + `foo.de.md`) or set the same `slug:` on both. +- Once a post is published, do **not** rename its file or change its `slug:` — either will move the URL and break existing links. Examples: -| Title | Good `slug:` | Resulting URL | -| ------------------------------------------------------------- | ------------------- | ------------------------------------- | -| Dependency Health Checks for Maven Builds | `dependency-health` | `/posts/2026/02/27/dependency-health` | -| Open Elements liefert gehärtete Software für container.gov.de | `container-gov` | `/de/posts/2026/03/19/container-gov` | -| Year in Review 2025 | `review-2025` | `/posts/2026/02/10/review-2025` | +| Filename | Frontmatter | Resulting URL | +| ------------------------------------------------- | ------------------- | ------------------------------------- | +| `content/posts/2026-02-27-dependency-health.md` | (no `slug:`) | `/posts/2026/02/27/dependency-health` | +| `content/posts/2026-03-19-container-gov.de.md` | (no `slug:`) | `/de/posts/2026/03/19/container-gov` | +| `content/posts/2026-02-10-year-in-review-2025.md` | `slug: review-2025` | `/posts/2026/02/10/review-2025` | -If `slug:` is omitted, the URL is auto-derived from the title. That fallback exists only to keep old posts working; it produces long, hard-to-read URLs (especially with umlauts) and should not be used for new content. +Legacy posts (everything predating this convention) carry an explicit `slug:` that pins them to their historical URL — including long, title-derived slugs with umlauts. Do **not** "clean these up" — those slug values are load-bearing for existing links and search-engine indexing. ## 3. Write Content and Use Correct Links @@ -137,8 +141,8 @@ Reference them with web paths: - `author` not matching a team id - Using filesystem-like image paths (`public/...`) instead of web paths (`/...`) - Missing `excerpt` or `preview_image`, causing weak list cards and metadata -- Missing `slug:` in frontmatter — the post still works via the title-based fallback, but the URL will be long and hard to read. Always set an explicit `slug:` on new posts. -- Renaming `slug:` on an already-published post — this breaks existing URLs and backlinks. Don't do it. +- Choosing a long or awkward filename for a new post — remember the URL slug comes from the filename by default, so `2026-03-19-a-really-long-title-that-explains-everything.md` becomes an equally long URL. Prefer short filenames. +- Renaming a post file (or changing its `slug:`) after it has been published — either move will change the URL and break existing links. ## Related Docs diff --git a/src/lib/markdown.ts b/src/lib/markdown.ts index b65ef499..3957d4dd 100644 --- a/src/lib/markdown.ts +++ b/src/lib/markdown.ts @@ -116,38 +116,45 @@ Prism.hooks.add('wrap', environment => { }); /** - * Generate a URL-friendly slug from text. - * Keeps locale-specific characters (e.g. umlauts) to match Hugo URLs. + * Derive the canonical slug segment from a post filename. + * Strips the `.md` / `.de.md` extension and any leading `YYYY-MM-DD-` date + * prefix, so e.g. `2026-03-19-container-gov.de.md` -> `container-gov`. */ -function slugify(text: string): string { - return text - .toLowerCase() - .replace(/[^\p{L}\p{N}]+/gu, '-') - .replace(/-+/g, '-') - .replace(/^-+|-+$/g, ''); +function slugFromFilename(filename: string): string { + const base = filename.endsWith('.de.md') + ? filename.slice(0, -'.de.md'.length) + : filename.slice(0, -'.md'.length); + return base.replace(/^\d{4}-\d{2}-\d{2}-/, ''); } /** - * Generate a post slug from frontmatter. - * Uses the explicit `slug` property if defined, otherwise slugifies the title. + * Generate a post slug. + * Prefers an explicit `slug` frontmatter field (kept for legacy posts whose + * URLs must not change); otherwise derives the slug from the filename stem. */ -function generatePostSlug(frontmatter: PostFrontmatter): string { +function generatePostSlug( + frontmatter: PostFrontmatter, + filename: string, +): string { if (frontmatter.slug) { return frontmatter.slug; } - return slugify(frontmatter.title); + return slugFromFilename(filename); } /** * Generate the full date-based post path from frontmatter. * Format: YYYY/MM/DD/slug-text */ -function generatePostPath(frontmatter: PostFrontmatter): string { +function generatePostPath( + frontmatter: PostFrontmatter, + filename: string, +): string { const date = new Date(frontmatter.date); const year = date.getUTCFullYear().toString(); const month = String(date.getUTCMonth() + 1).padStart(2, '0'); const day = String(date.getUTCDate()).padStart(2, '0'); - const slug = generatePostSlug(frontmatter); + const slug = generatePostSlug(frontmatter, filename); return `${year}/${month}/${day}/${slug}`; } @@ -241,7 +248,7 @@ function getPostFilename(slugPath: string, locale: string): string | null { if ( isDateBasedSlugMatch( - generatePostPath(data as PostFrontmatter), + generatePostPath(data as PostFrontmatter, filename), decodedSlugPath, ) ) { @@ -286,7 +293,7 @@ export function getPostLocaleAlternates( const { data } = matter(fs.readFileSync(fullPath, 'utf8')); alternates.push({ locale: 'en', - slugPath: generatePostPath(data as PostFrontmatter), + slugPath: generatePostPath(data as PostFrontmatter, enFile), }); } @@ -297,7 +304,7 @@ export function getPostLocaleAlternates( const { data } = matter(fs.readFileSync(fullPath, 'utf8')); alternates.push({ locale: 'de', - slugPath: generatePostPath(data as PostFrontmatter), + slugPath: generatePostPath(data as PostFrontmatter, deFile), }); } @@ -632,7 +639,7 @@ export function getAllPosts( continue; } - const slug = generatePostPath(frontmatter); + const slug = generatePostPath(frontmatter, filename); posts.push({ slug, @@ -668,7 +675,7 @@ export function getAllPostSlugs(): Array<{ locale: string; slug: string[] }> { const { data } = matter(fileContents); const frontmatter = data as PostFrontmatter; - const postPath = generatePostPath(frontmatter); + const postPath = generatePostPath(frontmatter, filename); const slugSegments = postPath.split('/'); const legacyBaseSlug = filename.endsWith('.de.md') ? filename.replace('.de.md', '') From d7792cd87ab374bdf092f4ff855d0c3cbf19837d Mon Sep 17 00:00:00 2001 From: Jessie Ssebuliba Date: Sat, 11 Jul 2026 14:45:27 +0200 Subject: [PATCH 4/8] test Signed-off-by: Jessie Ssebuliba --- content/posts/2026-11-07-this-is-test.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 content/posts/2026-11-07-this-is-test.md diff --git a/content/posts/2026-11-07-this-is-test.md b/content/posts/2026-11-07-this-is-test.md new file mode 100644 index 00000000..df66b94b --- /dev/null +++ b/content/posts/2026-11-07-this-is-test.md @@ -0,0 +1,20 @@ +--- +outdated: false +showInBlog: true +title: "Agentic Wallets - When AI Agents Need to Pay" +date: 2026-11-07 +author: hendrik +excerpt: "AI agents are becoming autonomous actors — but they cannot pay for things. I explore the challenges behind agentic wallets, the emerging specifications that make them possible, and propose a concrete architecture that works across decentralized and centralized payment providers." +categories: [ test, test ] +preview_image: "/posts/preview-images/agentic-wallet.svg" +--- + +AI agents are no longer just answering questions. +They are booking flights, managing infrastructure, negotiating with APIs, and completing tasks that used to require a human at every step. +But as agents become more autonomous, a fundamental question arises: **how does an AI agent pay for things?** + +## The Problem: Agents Cannot Use Credit Cards + +Today's payment infrastructure is built for humans. +Credit cards require identity verification, bank transfers need account holders, and payment providers enforce KYC (Know Your Customer) regulations. +None of this works well when the "customer" is an autonomous software agent acting on behalf of a user or organization. From 39ee00918070f065eb14d8d943d28b5bae876af1 Mon Sep 17 00:00:00 2001 From: Jessie Ssebuliba Date: Sat, 11 Jul 2026 14:52:34 +0200 Subject: [PATCH 5/8] test de Signed-off-by: Jessie Ssebuliba --- content/posts/2026-11-07-this-is-test.de.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 content/posts/2026-11-07-this-is-test.de.md diff --git a/content/posts/2026-11-07-this-is-test.de.md b/content/posts/2026-11-07-this-is-test.de.md new file mode 100644 index 00000000..df66b94b --- /dev/null +++ b/content/posts/2026-11-07-this-is-test.de.md @@ -0,0 +1,20 @@ +--- +outdated: false +showInBlog: true +title: "Agentic Wallets - When AI Agents Need to Pay" +date: 2026-11-07 +author: hendrik +excerpt: "AI agents are becoming autonomous actors — but they cannot pay for things. I explore the challenges behind agentic wallets, the emerging specifications that make them possible, and propose a concrete architecture that works across decentralized and centralized payment providers." +categories: [ test, test ] +preview_image: "/posts/preview-images/agentic-wallet.svg" +--- + +AI agents are no longer just answering questions. +They are booking flights, managing infrastructure, negotiating with APIs, and completing tasks that used to require a human at every step. +But as agents become more autonomous, a fundamental question arises: **how does an AI agent pay for things?** + +## The Problem: Agents Cannot Use Credit Cards + +Today's payment infrastructure is built for humans. +Credit cards require identity verification, bank transfers need account holders, and payment providers enforce KYC (Know Your Customer) regulations. +None of this works well when the "customer" is an autonomous software agent acting on behalf of a user or organization. From e81b0c85652f533be2213b88241e95c7e2997bb0 Mon Sep 17 00:00:00 2001 From: Jessie Ssebuliba Date: Sat, 11 Jul 2026 15:18:52 +0200 Subject: [PATCH 6/8] test de Signed-off-by: Jessie Ssebuliba --- content/posts/2026-11-07-this-is-test.de.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/posts/2026-11-07-this-is-test.de.md b/content/posts/2026-11-07-this-is-test.de.md index df66b94b..a756a54e 100644 --- a/content/posts/2026-11-07-this-is-test.de.md +++ b/content/posts/2026-11-07-this-is-test.de.md @@ -1,10 +1,10 @@ --- outdated: false showInBlog: true -title: "Agentic Wallets - When AI Agents Need to Pay" +title: "Ufgsdff fggsfgsdfgasdf" date: 2026-11-07 author: hendrik -excerpt: "AI agents are becoming autonomous actors — but they cannot pay for things. I explore the challenges behind agentic wallets, the emerging specifications that make them possible, and propose a concrete architecture that works across decentralized and centralized payment providers." +excerpt: "Lorem orepa gfg rieawerawea vjgwere jfaerwfaerwfav rsgerwaDFAFSSR " categories: [ test, test ] preview_image: "/posts/preview-images/agentic-wallet.svg" --- From bcb416f33b3b286533229f79ff250fc0543d9a35 Mon Sep 17 00:00:00 2001 From: Jessie Ssebuliba Date: Sun, 12 Jul 2026 12:27:17 +0200 Subject: [PATCH 7/8] remove test files Signed-off-by: Jessie Ssebuliba --- content/posts/2026-11-07-this-is-test.de.md | 20 -------------------- content/posts/2026-11-07-this-is-test.md | 20 -------------------- 2 files changed, 40 deletions(-) delete mode 100644 content/posts/2026-11-07-this-is-test.de.md delete mode 100644 content/posts/2026-11-07-this-is-test.md diff --git a/content/posts/2026-11-07-this-is-test.de.md b/content/posts/2026-11-07-this-is-test.de.md deleted file mode 100644 index a756a54e..00000000 --- a/content/posts/2026-11-07-this-is-test.de.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -outdated: false -showInBlog: true -title: "Ufgsdff fggsfgsdfgasdf" -date: 2026-11-07 -author: hendrik -excerpt: "Lorem orepa gfg rieawerawea vjgwere jfaerwfaerwfav rsgerwaDFAFSSR " -categories: [ test, test ] -preview_image: "/posts/preview-images/agentic-wallet.svg" ---- - -AI agents are no longer just answering questions. -They are booking flights, managing infrastructure, negotiating with APIs, and completing tasks that used to require a human at every step. -But as agents become more autonomous, a fundamental question arises: **how does an AI agent pay for things?** - -## The Problem: Agents Cannot Use Credit Cards - -Today's payment infrastructure is built for humans. -Credit cards require identity verification, bank transfers need account holders, and payment providers enforce KYC (Know Your Customer) regulations. -None of this works well when the "customer" is an autonomous software agent acting on behalf of a user or organization. diff --git a/content/posts/2026-11-07-this-is-test.md b/content/posts/2026-11-07-this-is-test.md deleted file mode 100644 index df66b94b..00000000 --- a/content/posts/2026-11-07-this-is-test.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -outdated: false -showInBlog: true -title: "Agentic Wallets - When AI Agents Need to Pay" -date: 2026-11-07 -author: hendrik -excerpt: "AI agents are becoming autonomous actors — but they cannot pay for things. I explore the challenges behind agentic wallets, the emerging specifications that make them possible, and propose a concrete architecture that works across decentralized and centralized payment providers." -categories: [ test, test ] -preview_image: "/posts/preview-images/agentic-wallet.svg" ---- - -AI agents are no longer just answering questions. -They are booking flights, managing infrastructure, negotiating with APIs, and completing tasks that used to require a human at every step. -But as agents become more autonomous, a fundamental question arises: **how does an AI agent pay for things?** - -## The Problem: Agents Cannot Use Credit Cards - -Today's payment infrastructure is built for humans. -Credit cards require identity verification, bank transfers need account holders, and payment providers enforce KYC (Know Your Customer) regulations. -None of this works well when the "customer" is an autonomous software agent acting on behalf of a user or organization. From 5410aa6e1bed68c17ed025ec3b879ea0672edb10 Mon Sep 17 00:00:00 2001 From: Jessie Ssebuliba Date: Sun, 12 Jul 2026 12:29:51 +0200 Subject: [PATCH 8/8] fix ci Signed-off-by: Jessie Ssebuliba --- .github/workflows/sitemap-parity.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/sitemap-parity.yml b/.github/workflows/sitemap-parity.yml index 3df5e516..72ebd1e5 100644 --- a/.github/workflows/sitemap-parity.yml +++ b/.github/workflows/sitemap-parity.yml @@ -14,9 +14,7 @@ name: Sitemap Parity on: pull_request: branches: ['main'] - push: - branches: ['main'] - + permissions: contents: read