diff --git a/404.html b/404.html index 387c11c44..8187c13fe 100644 --- a/404.html +++ b/404.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/404/index.html b/404/index.html index 62053c767..411ae33cd 100644 --- a/404/index.html +++ b/404/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/_gatsby/slices/_gatsby-scripts-1.html b/_gatsby/slices/_gatsby-scripts-1.html index e85ffdc13..c91e91345 100644 --- a/_gatsby/slices/_gatsby-scripts-1.html +++ b/_gatsby/slices/_gatsby-scripts-1.html @@ -4,4 +4,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/about/index.html b/about/index.html index 84bd4a959..a1565fdb9 100644 --- a/about/index.html +++ b/about/index.html @@ -460,4 +460,4 @@

Prof. Dr. Jörg Lässig

> window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/atom.xml b/atom.xml index 95d6ef471..e24ba0b53 100644 --- a/atom.xml +++ b/atom.xml @@ -2,7 +2,7 @@ https://jug-gr.de/ - <updated>2023-09-07T07:05:48.755Z</updated> + <updated>2023-09-15T12:45:50.214Z</updated> <generator>https://github.com/jpmonette/feed</generator> <link rel="alternate" href="https://jug-gr.de/"/> <link rel="self" href="https://jug-gr.de/atom.xml"/> @@ -63,14 +63,14 @@ Proof-of-Concept-Implementierung.</p>]]></content> Im Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die Skalierung und Modularisierung von Serverless AWS Infrastrukturen verwendet werden kann.</p>]]></content> </entry> <entry> - <title type="html"><![CDATA[Kollaborative Anwendungen und 'local first apps']]> - https://jug-gr.de/talks/2023-09-27-kollaborative-anwendungen/ - + <![CDATA[Java 21: Virtual Threads - Why should I care?]]> + https://jug-gr.de/talks/2023-09-27-virtual-threads/ + 2023-09-27T00:00:00.000Z Kollaborative Anwendungen und 'local first apps' +

Java 21: Virtual Threads - Why should I care?

Date: September 27, 2023, 19:00 Uhr

-

Speakers: Manuel Mauky

+

Speakers: Patryk Lewandowski

Location:

Carl Zeiss Digital Innovation @@ -80,15 +80,10 @@ Im Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die 02826 Görlitz
]]>
- Wie funktionieren eigentlich kollaborative Web-Anwendungen, bei denen mehrere Leute gleichzeitig an den gleichen -Dokumenten arbeiten können? Live-Kollaboration bieten Anwendungen wie Google-Docs schon seit Langem. Das Verfahren, -welches hier zum Einsatz kommt, setzt aber immer einen zentralen Server voraus, was für die Anwender*innen auch -Nachteile mit sich bringt.

-

Eine moderne Alternative können so genannte "Conflict-Free Replicated DataTypes", kurz CRDT sein. Anwendungen auf dieser -Basis können prinzipiell auch ohne eine zentrale Instanz auskommen. Im Vortrag wollen wir uns die verschiedenen -Varianten anschauen und sehen, wie sich damit Anwendungen bauen lassen, die moderne Annehmlichkeiten wie -Live-Kollaboration, Synchronisierung zwischen Geräten und Offline-Fähigkeit bieten, ohne dabei zwingend auf eine -zentrale Cloud angewiesen zu sein.

]]>
+ In September 2023 the latest version of JDK 21 will be officially released. During this lecture we will look into most +important changes in Java Development Kit and their impact on everyday use of the Java Language. In particular, we will +dive into performance impact of virtual threads and their comparison to existing solutions, the further improvements in +recently introduced record objects and also look into the future plans for Java.

]]>
<![CDATA[GraalVM 23 – Konzepte und Features]]> diff --git a/b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js b/b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js similarity index 65% rename from b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js rename to b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js index 1609ec606..8759e1b49 100644 --- a/b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js +++ b/b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js @@ -1,3 +1,3 @@ -/*! For license information please see b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js.LICENSE.txt */ -(self.webpackChunkjug_goerlitz=self.webpackChunkjug_goerlitz||[]).push([[325],{3204:function(e){"use strict";const t=(e,t)=>{if("string"!=typeof e&&!Array.isArray(e))throw new TypeError("Expected the input to be `string | string[]`");t=Object.assign({pascalCase:!1},t);if(e=Array.isArray(e)?e.map((e=>e.trim())).filter((e=>e.length)).join("-"):e.trim(),0===e.length)return"";if(1===e.length)return t.pascalCase?e.toUpperCase():e.toLowerCase();return e!==e.toLowerCase()&&(e=(e=>{let t=!1,r=!1,a=!1;for(let n=0;nt.toUpperCase())).replace(/\d+(\w|$)/g,(e=>e.toUpperCase())),r=e,t.pascalCase?r.charAt(0).toUpperCase()+r.slice(1):r;var r};e.exports=t,e.exports.default=t},3723:function(e,t,r){"use strict";r.d(t,{G:function(){return x},L:function(){return g},M:function(){return _},P:function(){return v},S:function(){return N},_:function(){return s},a:function(){return l},b:function(){return c},g:function(){return u},h:function(){return o}});var a=r(7294),n=(r(3204),r(5697)),i=r.n(n);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(n[r]=e[r]);return n}const o=()=>"undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;function c(e,t,r,a,n){return void 0===n&&(n={}),l({},r,{loading:a,shouldLoad:e,"data-main-image":"",style:l({},n,{opacity:t?1:0})})}function u(e,t,r,a,n,i,s,o){const c={};i&&(c.backgroundColor=i,"fixed"===r?(c.width=a,c.height=n,c.backgroundColor=i,c.position="relative"):("constrained"===r||"fullWidth"===r)&&(c.position="absolute",c.top=0,c.left=0,c.bottom=0,c.right=0)),s&&(c.objectFit=s),o&&(c.objectPosition=o);const u=l({},e,{"aria-hidden":!0,"data-placeholder-image":"",style:l({opacity:t?0:1,transition:"opacity 500ms linear"},c)});return u}const d=["children"],m=function(e){let{layout:t,width:r,height:n}=e;return"fullWidth"===t?a.createElement("div",{"aria-hidden":!0,style:{paddingTop:n/r*100+"%"}}):"constrained"===t?a.createElement("div",{style:{maxWidth:r,display:"block"}},a.createElement("img",{alt:"",role:"presentation","aria-hidden":"true",src:"data:image/svg+xml;charset=utf-8,%3Csvg height='"+n+"' width='"+r+"' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E",style:{maxWidth:"100%",display:"block",position:"static"}})):null},g=function(e){let{children:t}=e,r=s(e,d);return a.createElement(a.Fragment,null,a.createElement(m,l({},r)),t,null)},p=["src","srcSet","loading","alt","shouldLoad"],h=["fallback","sources","shouldLoad"],f=function(e){let{src:t,srcSet:r,loading:n,alt:i="",shouldLoad:o}=e,c=s(e,p);return a.createElement("img",l({},c,{decoding:"async",loading:n,src:o?t:void 0,"data-src":o?void 0:t,srcSet:o?r:void 0,"data-srcset":o?void 0:r,alt:i}))},y=function(e){let{fallback:t,sources:r=[],shouldLoad:n=!0}=e,i=s(e,h);const o=i.sizes||(null==t?void 0:t.sizes),c=a.createElement(f,l({},i,t,{sizes:o,shouldLoad:n}));return r.length?a.createElement("picture",null,r.map((e=>{let{media:t,srcSet:r,type:i}=e;return a.createElement("source",{key:t+"-"+i+"-"+r,type:i,media:t,srcSet:n?r:void 0,"data-srcset":n?void 0:r,sizes:o})})),c):c};var E;f.propTypes={src:n.string.isRequired,alt:n.string.isRequired,sizes:n.string,srcSet:n.string,shouldLoad:n.bool},y.displayName="Picture",y.propTypes={alt:n.string.isRequired,shouldLoad:n.bool,fallback:n.exact({src:n.string.isRequired,srcSet:n.string,sizes:n.string}),sources:n.arrayOf(n.oneOfType([n.exact({media:n.string.isRequired,type:n.string,sizes:n.string,srcSet:n.string.isRequired}),n.exact({media:n.string,type:n.string.isRequired,sizes:n.string,srcSet:n.string.isRequired})]))};const w=["fallback"],v=function(e){let{fallback:t}=e,r=s(e,w);return t?a.createElement(y,l({},r,{fallback:{src:t},"aria-hidden":!0,alt:""})):a.createElement("div",l({},r))};v.displayName="Placeholder",v.propTypes={fallback:n.string,sources:null==(E=y.propTypes)?void 0:E.sources,alt:function(e,t,r){return e[t]?new Error("Invalid prop `"+t+"` supplied to `"+r+"`. Validation failed."):null}};const _=function(e){return a.createElement(a.Fragment,null,a.createElement(y,l({},e)),a.createElement("noscript",null,a.createElement(y,l({},e,{shouldLoad:!0}))))};_.displayName="MainImage",_.propTypes=y.propTypes;const b=function(e,t,r){for(var a=arguments.length,n=new Array(a>3?a-3:0),l=3;lJSON.stringify(n.images)),[n.images]);d&&(u=d);const x=function(e,t,r){let a="";return"fullWidth"===e&&(a=''),"constrained"===e&&(a='
"),a}(E,f,y);return(0,a.useEffect)((()=>{T||(T=Promise.all([r.e(774),r.e(223)]).then(r.bind(r,8223)).then((e=>{let{renderImageToString:t,swapPlaceholderImage:r}=e;return C=t,{renderImageToString:t,swapPlaceholderImage:r}})));const e=L.current.querySelector("[data-gatsby-image-ssr]");if(e&&o())return e.complete?(null==m||m({wasCached:!0}),null==g||g({wasCached:!0}),setTimeout((()=>{e.removeAttribute("data-gatsby-image-ssr")}),0)):(null==m||m({wasCached:!0}),e.addEventListener("load",(function t(){e.removeEventListener("load",t),null==g||g({wasCached:!0}),setTimeout((()=>{e.removeAttribute("data-gatsby-image-ssr")}),0)}))),void S.add(D);if(C&&S.has(D))return;let t,a;return T.then((e=>{let{renderImageToString:r,swapPlaceholderImage:s}=e;L.current&&(L.current.innerHTML=r(l({isLoading:!0,isLoaded:S.has(D),image:n},h)),S.has(D)||(t=requestAnimationFrame((()=>{L.current&&(a=s(L.current,D,S,i,m,g,p))}))))})),()=>{t&&cancelAnimationFrame(t),a&&a()}}),[n]),(0,a.useLayoutEffect)((()=>{S.has(D)&&C&&(L.current.innerHTML=C(l({isLoading:S.has(D),isLoaded:S.has(D),image:n},h)),null==m||m({wasCached:!0}),null==g||g({wasCached:!0}))}),[n]),(0,a.createElement)(t,l({},b,{style:l({},v,i,{backgroundColor:c}),className:_+(u?" "+u:""),ref:L,dangerouslySetInnerHTML:{__html:x},suppressHydrationWarning:!0}))},x=(0,a.memo)((function(e){return e.image?(0,a.createElement)(D,e):null}));x.propTypes=L,x.displayName="GatsbyImage";const I=["src","__imageData","__error","width","height","aspectRatio","tracedSVGOptions","placeholder","formats","quality","transformOptions","jpgOptions","pngOptions","webpOptions","avifOptions","blurredOptions","breakpoints","outputPixelDensities"],O=function(e,t){for(var r=arguments.length,a=new Array(r>2?r-2:0),n=2;n{if(void 0!==e.layout&&!z.has(e.layout))return new Error("Invalid value "+e.layout+'" provided for prop "layout". Defaulting to "constrained". Valid values are "fixed", "fullWidth" or "constrained".')}},N=(P=x,function(e){let{src:t,__imageData:r,__error:n}=e,i=s(e,I);return n&&console.warn(n),r?a.createElement(P,l({image:r},i)):(console.warn("Image not loaded",t),null)});var P;N.displayName="StaticImage",N.propTypes=A},2699:function(e,t,r){"use strict";r.d(t,{Z:function(){return E}});var a=r(7294),n=r(5942),i=r(982),l=r(9417),s=r(4854),o=r(2404),c=r(3723),u=r(8595),d=r(267),m=r(1252);var g=e=>{let{speaker:t}=e;return a.createElement(u.Z,null,a.createElement(d.Z,null,t.frontmatter.pic&&a.createElement(m.Z,{sm:"6",xs:"12",style:{textAlign:"center",maxWidth:"400px"}},a.createElement(s.Link,{to:t.fields.slug},a.createElement(c.G,{image:t.frontmatter.pic.childImageSharp.gatsbyImageData,alt:"picture of the speaker"}))),a.createElement(m.Z,{sm:"6",xs:"12"},a.createElement("div",null,a.createElement("p",null,a.createElement(s.Link,{to:t.fields.slug},a.createElement("strong",null,t.frontmatter.name))),t.frontmatter.twitter_name&&a.createElement("p",null,"Twitter:"," ",a.createElement("a",{href:"https://twitter.com/"+t.frontmatter.twitter_name},"@"+t.frontmatter.twitter_name))),a.createElement("div",{className:"description",dangerouslySetInnerHTML:{__html:t.html}}))))};const p=e=>{let{speakerList:t}=e;return a.createElement("span",{className:"lead"},"von"," ",o.iDB(", ")(t.map((e=>a.createElement(s.Link,{key:e.fields.slug,to:e.fields.slug},e.frontmatter.name)))))},h=e=>{let{location:t}=e;const{frontmatter:r}=t;return a.createElement(s.Link,{to:t.fields.slug},a.createElement("address",null,r.name,a.createElement("br",null),r.info&&a.createElement(a.Fragment,null,r.info,a.createElement("br",null)),r.street+" "+r.number,a.createElement("br",null),r.zip+" "+r.city,a.createElement("br",null)))},f=e=>{let{tags:t}=e;return t?a.createElement(a.Fragment,null,o.iDB(", ")(t.map((e=>a.createElement(s.Link,{key:e,to:"/tags/#"+e},a.createElement(i.G,{icon:l.LEN})," ",e))))):null},y=e=>{let{talk:t,linkToDetailsPage:r}=e;return r?a.createElement("h2",null,a.createElement(s.Link,{to:t.fields.slug},t.frontmatter.title)):a.createElement("h2",null,t.frontmatter.title)};var E=e=>{var t,r;let{talk:i,speakerList:l,location:o,linkToDetailsPage:u}=e;return a.createElement(a.Fragment,null,a.createElement(y,{talk:i,linkToDetailsPage:u}),a.createElement(p,{speakerList:l})," | ",(0,n.Z)(i.frontmatter.date),a.createElement("p",null,a.createElement(f,{tags:i.frontmatter.tags})),a.createElement("article",{className:"talk-content"},a.createElement("div",{dangerouslySetInnerHTML:{__html:i.html}}),i.frontmatter.poster&&a.createElement(s.Link,{to:"/posters#"+i.frontmatter.poster.childImageSharp.id},a.createElement(c.G,{title:i.frontmatter.poster_alt,alt:null!==(t=i.frontmatter.poster_alt)&&void 0!==t?t:"Poster für Vortrag '"+i.frontmatter.title+"'",image:i.frontmatter.poster.childImageSharp.gatsbyImageData})),a.createElement("hr",null),l.map((e=>a.createElement(g,{key:e.id,speaker:e}))),a.createElement("hr",null),a.createElement("div",null,a.createElement("p",null,"Datum: ",(0,n.Z)(i.frontmatter.date),", ",(null!==(r=i.frontmatter.time)&&void 0!==r?r:"19:00")+" Uhr"),i.frontmatter.virtual?a.createElement(a.Fragment,null,"Das Treffen findet Online statt. Siehe Beschreibung."):a.createElement(a.Fragment,null,"Ort: ",o?a.createElement(h,{location:o}):a.createElement("span",null,"wird noch bekannt gegeben"))),a.createElement("br",null),a.createElement("p",null,"Die Veranstaltung wird durch die ",a.createElement("i",null,"Java User Group Görlitz")," (im"," ",a.createElement("a",{href:"http://www.ijug.eu/"},"iJUG Verband"),") organisiert.")))}},5942:function(e,t,r){"use strict";var a=r(381),n=r.n(a);r(9740);n().locale("de");t.Z=e=>n()(e).format("LL")},9740:function(e,t,r){!function(e){"use strict";function t(e,t,r,a){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[r][0]:n[r][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(381))}}]); -//# sourceMappingURL=b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js.map \ No newline at end of file +/*! For license information please see b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js.LICENSE.txt */ +(self.webpackChunkjug_goerlitz=self.webpackChunkjug_goerlitz||[]).push([[325],{3204:function(e){"use strict";const t=(e,t)=>{if("string"!=typeof e&&!Array.isArray(e))throw new TypeError("Expected the input to be `string | string[]`");t=Object.assign({pascalCase:!1},t);if(e=Array.isArray(e)?e.map((e=>e.trim())).filter((e=>e.length)).join("-"):e.trim(),0===e.length)return"";if(1===e.length)return t.pascalCase?e.toUpperCase():e.toLowerCase();return e!==e.toLowerCase()&&(e=(e=>{let t=!1,r=!1,a=!1;for(let n=0;nt.toUpperCase())).replace(/\d+(\w|$)/g,(e=>e.toUpperCase())),r=e,t.pascalCase?r.charAt(0).toUpperCase()+r.slice(1):r;var r};e.exports=t,e.exports.default=t},3723:function(e,t,r){"use strict";r.d(t,{G:function(){return x},L:function(){return g},M:function(){return _},P:function(){return v},S:function(){return N},_:function(){return s},a:function(){return l},b:function(){return c},g:function(){return u},h:function(){return o}});var a=r(7294),n=(r(3204),r(5697)),i=r.n(n);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(n[r]=e[r]);return n}const o=()=>"undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;function c(e,t,r,a,n){return void 0===n&&(n={}),l({},r,{loading:a,shouldLoad:e,"data-main-image":"",style:l({},n,{opacity:t?1:0})})}function u(e,t,r,a,n,i,s,o){const c={};i&&(c.backgroundColor=i,"fixed"===r?(c.width=a,c.height=n,c.backgroundColor=i,c.position="relative"):("constrained"===r||"fullWidth"===r)&&(c.position="absolute",c.top=0,c.left=0,c.bottom=0,c.right=0)),s&&(c.objectFit=s),o&&(c.objectPosition=o);const u=l({},e,{"aria-hidden":!0,"data-placeholder-image":"",style:l({opacity:t?0:1,transition:"opacity 500ms linear"},c)});return u}const d=["children"],m=function(e){let{layout:t,width:r,height:n}=e;return"fullWidth"===t?a.createElement("div",{"aria-hidden":!0,style:{paddingTop:n/r*100+"%"}}):"constrained"===t?a.createElement("div",{style:{maxWidth:r,display:"block"}},a.createElement("img",{alt:"",role:"presentation","aria-hidden":"true",src:"data:image/svg+xml;charset=utf-8,%3Csvg height='"+n+"' width='"+r+"' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3C/svg%3E",style:{maxWidth:"100%",display:"block",position:"static"}})):null},g=function(e){let{children:t}=e,r=s(e,d);return a.createElement(a.Fragment,null,a.createElement(m,l({},r)),t,null)},p=["src","srcSet","loading","alt","shouldLoad"],h=["fallback","sources","shouldLoad"],f=function(e){let{src:t,srcSet:r,loading:n,alt:i="",shouldLoad:o}=e,c=s(e,p);return a.createElement("img",l({},c,{decoding:"async",loading:n,src:o?t:void 0,"data-src":o?void 0:t,srcSet:o?r:void 0,"data-srcset":o?void 0:r,alt:i}))},y=function(e){let{fallback:t,sources:r=[],shouldLoad:n=!0}=e,i=s(e,h);const o=i.sizes||(null==t?void 0:t.sizes),c=a.createElement(f,l({},i,t,{sizes:o,shouldLoad:n}));return r.length?a.createElement("picture",null,r.map((e=>{let{media:t,srcSet:r,type:i}=e;return a.createElement("source",{key:t+"-"+i+"-"+r,type:i,media:t,srcSet:n?r:void 0,"data-srcset":n?void 0:r,sizes:o})})),c):c};var E;f.propTypes={src:n.string.isRequired,alt:n.string.isRequired,sizes:n.string,srcSet:n.string,shouldLoad:n.bool},y.displayName="Picture",y.propTypes={alt:n.string.isRequired,shouldLoad:n.bool,fallback:n.exact({src:n.string.isRequired,srcSet:n.string,sizes:n.string}),sources:n.arrayOf(n.oneOfType([n.exact({media:n.string.isRequired,type:n.string,sizes:n.string,srcSet:n.string.isRequired}),n.exact({media:n.string,type:n.string.isRequired,sizes:n.string,srcSet:n.string.isRequired})]))};const w=["fallback"],v=function(e){let{fallback:t}=e,r=s(e,w);return t?a.createElement(y,l({},r,{fallback:{src:t},"aria-hidden":!0,alt:""})):a.createElement("div",l({},r))};v.displayName="Placeholder",v.propTypes={fallback:n.string,sources:null==(E=y.propTypes)?void 0:E.sources,alt:function(e,t,r){return e[t]?new Error("Invalid prop `"+t+"` supplied to `"+r+"`. Validation failed."):null}};const _=function(e){return a.createElement(a.Fragment,null,a.createElement(y,l({},e)),a.createElement("noscript",null,a.createElement(y,l({},e,{shouldLoad:!0}))))};_.displayName="MainImage",_.propTypes=y.propTypes;const b=function(e,t,r){for(var a=arguments.length,n=new Array(a>3?a-3:0),l=3;lJSON.stringify(n.images)),[n.images]);d&&(u=d);const x=function(e,t,r){let a="";return"fullWidth"===e&&(a=''),"constrained"===e&&(a='
"),a}(E,f,y);return(0,a.useEffect)((()=>{T||(T=Promise.all([r.e(774),r.e(223)]).then(r.bind(r,8223)).then((e=>{let{renderImageToString:t,swapPlaceholderImage:r}=e;return C=t,{renderImageToString:t,swapPlaceholderImage:r}})));const e=L.current.querySelector("[data-gatsby-image-ssr]");if(e&&o())return e.complete?(null==m||m({wasCached:!0}),null==g||g({wasCached:!0}),setTimeout((()=>{e.removeAttribute("data-gatsby-image-ssr")}),0)):(null==m||m({wasCached:!0}),e.addEventListener("load",(function t(){e.removeEventListener("load",t),null==g||g({wasCached:!0}),setTimeout((()=>{e.removeAttribute("data-gatsby-image-ssr")}),0)}))),void S.add(D);if(C&&S.has(D))return;let t,a;return T.then((e=>{let{renderImageToString:r,swapPlaceholderImage:s}=e;L.current&&(L.current.innerHTML=r(l({isLoading:!0,isLoaded:S.has(D),image:n},h)),S.has(D)||(t=requestAnimationFrame((()=>{L.current&&(a=s(L.current,D,S,i,m,g,p))}))))})),()=>{t&&cancelAnimationFrame(t),a&&a()}}),[n]),(0,a.useLayoutEffect)((()=>{S.has(D)&&C&&(L.current.innerHTML=C(l({isLoading:S.has(D),isLoaded:S.has(D),image:n},h)),null==m||m({wasCached:!0}),null==g||g({wasCached:!0}))}),[n]),(0,a.createElement)(t,l({},b,{style:l({},v,i,{backgroundColor:c}),className:_+(u?" "+u:""),ref:L,dangerouslySetInnerHTML:{__html:x},suppressHydrationWarning:!0}))},x=(0,a.memo)((function(e){return e.image?(0,a.createElement)(D,e):null}));x.propTypes=L,x.displayName="GatsbyImage";const I=["src","__imageData","__error","width","height","aspectRatio","tracedSVGOptions","placeholder","formats","quality","transformOptions","jpgOptions","pngOptions","webpOptions","avifOptions","blurredOptions","breakpoints","outputPixelDensities"],O=function(e,t){for(var r=arguments.length,a=new Array(r>2?r-2:0),n=2;n{if(void 0!==e.layout&&!z.has(e.layout))return new Error("Invalid value "+e.layout+'" provided for prop "layout". Defaulting to "constrained". Valid values are "fixed", "fullWidth" or "constrained".')}},N=(P=x,function(e){let{src:t,__imageData:r,__error:n}=e,i=s(e,I);return n&&console.warn(n),r?a.createElement(P,l({image:r},i)):(console.warn("Image not loaded",t),null)});var P;N.displayName="StaticImage",N.propTypes=A},2699:function(e,t,r){"use strict";r.d(t,{Z:function(){return E}});var a=r(7294),n=r(5942),i=r(982),l=r(9417),s=r(4854),o=r(2404),c=r(3723),u=r(8595),d=r(267),m=r(1252);var g=e=>{let{speaker:t}=e;return a.createElement(u.Z,{style:{marginBottom:"1.5em"}},a.createElement(d.Z,null,t.frontmatter.pic&&a.createElement(m.Z,{sm:"6",xs:"12",style:{textAlign:"center",maxWidth:"400px"}},a.createElement(s.Link,{to:t.fields.slug},a.createElement(c.G,{image:t.frontmatter.pic.childImageSharp.gatsbyImageData,alt:"picture of the speaker"}))),a.createElement(m.Z,{sm:"6",xs:"12"},a.createElement("div",null,a.createElement("p",null,a.createElement(s.Link,{to:t.fields.slug},a.createElement("strong",null,t.frontmatter.name))),t.frontmatter.twitter_name&&a.createElement("p",null,"Twitter:"," ",a.createElement("a",{href:"https://twitter.com/"+t.frontmatter.twitter_name},"@"+t.frontmatter.twitter_name))),a.createElement("div",{className:"description",dangerouslySetInnerHTML:{__html:t.html}}))))};const p=e=>{let{speakerList:t}=e;return a.createElement("span",{className:"lead"},"von"," ",o.iDB(", ")(t.map((e=>a.createElement(s.Link,{key:e.fields.slug,to:e.fields.slug},e.frontmatter.name)))))},h=e=>{let{location:t}=e;const{frontmatter:r}=t;return a.createElement(s.Link,{to:t.fields.slug},a.createElement("address",null,r.name,a.createElement("br",null),r.info&&a.createElement(a.Fragment,null,r.info,a.createElement("br",null)),r.street+" "+r.number,a.createElement("br",null),r.zip+" "+r.city,a.createElement("br",null)))},f=e=>{let{tags:t}=e;return t?a.createElement(a.Fragment,null,o.iDB(", ")(t.map((e=>a.createElement(s.Link,{key:e,to:"/tags/#"+e},a.createElement(i.G,{icon:l.LEN})," ",e))))):null},y=e=>{let{talk:t,linkToDetailsPage:r}=e;return r?a.createElement("h2",null,a.createElement(s.Link,{to:t.fields.slug},t.frontmatter.title)):a.createElement("h2",null,t.frontmatter.title)};var E=e=>{var t,r;let{talk:i,speakerList:l,location:o,linkToDetailsPage:u}=e;return a.createElement(a.Fragment,null,a.createElement(y,{talk:i,linkToDetailsPage:u}),a.createElement(p,{speakerList:l})," | ",(0,n.Z)(i.frontmatter.date),a.createElement("p",null,a.createElement(f,{tags:i.frontmatter.tags})),a.createElement("article",{className:"talk-content"},a.createElement("div",{dangerouslySetInnerHTML:{__html:i.html}}),i.frontmatter.poster&&a.createElement(s.Link,{to:"/posters#"+i.frontmatter.poster.childImageSharp.id},a.createElement(c.G,{title:i.frontmatter.poster_alt,alt:null!==(t=i.frontmatter.poster_alt)&&void 0!==t?t:"Poster für Vortrag '"+i.frontmatter.title+"'",image:i.frontmatter.poster.childImageSharp.gatsbyImageData})),a.createElement("hr",null),l.map((e=>a.createElement(g,{key:e.id,speaker:e}))),a.createElement("hr",null),a.createElement("div",null,a.createElement("p",null,"Datum: ",(0,n.Z)(i.frontmatter.date),", ",(null!==(r=i.frontmatter.time)&&void 0!==r?r:"19:00")+" Uhr"),i.frontmatter.virtual?a.createElement(a.Fragment,null,"Das Treffen findet Online statt. Siehe Beschreibung."):a.createElement(a.Fragment,null,"Ort: ",o?a.createElement(h,{location:o}):a.createElement("span",null,"wird noch bekannt gegeben"))),a.createElement("br",null),a.createElement("p",null,"Die Veranstaltung wird durch die ",a.createElement("i",null,"Java User Group Görlitz")," (im"," ",a.createElement("a",{href:"http://www.ijug.eu/"},"iJUG Verband"),") organisiert.")))}},5942:function(e,t,r){"use strict";var a=r(381),n=r.n(a);r(9740);n().locale("de");t.Z=e=>n()(e).format("LL")},9740:function(e,t,r){!function(e){"use strict";function t(e,t,r,a){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[r][0]:n[r][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(r(381))}}]); +//# sourceMappingURL=b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js.map \ No newline at end of file diff --git a/b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js.LICENSE.txt b/b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js.LICENSE.txt similarity index 100% rename from b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js.LICENSE.txt rename to b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js.LICENSE.txt diff --git a/b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js.map b/b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js.map new file mode 100644 index 000000000..d4f449b1a --- /dev/null +++ b/b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js","mappings":";6GAEA,MA6BMA,EAAY,CAACC,EAAOC,KACzB,GAAuB,iBAAVD,IAAsBE,MAAMC,QAAQH,GAChD,MAAM,IAAII,UAAU,gDAGrBH,EAAUI,OAAOC,OAAO,CACvBC,YAAY,GACVN,GAYH,GAPCD,EADGE,MAAMC,QAAQH,GACTA,EAAMQ,KAAIC,GAAKA,EAAEC,SACvBC,QAAOF,GAAKA,EAAEG,SACdC,KAAK,KAECb,EAAMU,OAGM,IAAjBV,EAAMY,OACT,MAAO,GAGR,GAAqB,IAAjBZ,EAAMY,OACT,OAAOX,EAAQM,WAAaP,EAAMc,cAAgBd,EAAMe,cAezD,OAZqBf,IAAUA,EAAMe,gBAGpCf,EA3DwBgB,KACzB,IAAIC,GAAkB,EAClBC,GAAkB,EAClBC,GAAsB,EAE1B,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAOJ,OAAQQ,IAAK,CACvC,MAAMC,EAAYL,EAAOI,GAErBH,GAAmB,WAAWK,KAAKD,IAAcA,EAAUP,gBAAkBO,GAChFL,EAASA,EAAOO,MAAM,EAAGH,GAAK,IAAMJ,EAAOO,MAAMH,GACjDH,GAAkB,EAClBE,EAAsBD,EACtBA,GAAkB,EAClBE,KACUF,GAAmBC,GAAuB,WAAWG,KAAKD,IAAcA,EAAUN,gBAAkBM,GAC9GL,EAASA,EAAOO,MAAM,EAAGH,EAAI,GAAK,IAAMJ,EAAOO,MAAMH,EAAI,GACzDD,EAAsBD,EACtBA,GAAkB,EAClBD,GAAkB,IAElBA,EAAkBI,EAAUN,gBAAkBM,GAAaA,EAAUP,gBAAkBO,EACvFF,EAAsBD,EACtBA,EAAkBG,EAAUP,gBAAkBO,GAAaA,EAAUN,gBAAkBM,EAEzF,CAEA,OAAOL,CAAM,EAiCJQ,CAAkBxB,IAG3BA,EAAQA,EACNyB,QAAQ,YAAa,IACrBV,cACAU,QAAQ,mBAAmB,CAACC,EAAGC,IAAOA,EAAGb,gBACzCW,QAAQ,cAAcG,GAAKA,EAAEd,gBA5BXL,EA8BDT,EA9BMC,EAAQM,WAAaE,EAAEoB,OAAO,GAAGf,cAAgBL,EAAEc,MAAM,GAAKd,EAAnEA,KA8BK,EAG1BqB,EAAOC,QAAUhC,EAEjB+B,EAAOC,QAAP,QAAyBhC,uqBCmiBAiC,MAAAA,EC/lBe,uEAERC,UA2L5BC,SAAAA,EAgBFC,EACAC,EACAC,EACAC,EACAC,GA4BA,YA5BAA,IAAAA,IAAAA,EAAuB,CAAC,GAajBA,EAAAA,CAAAA,EAKFF,EAAAA,CACHC,QAAAA,EACAE,WAAYL,EACZ,kBAAkB,GAClBI,MAAM,EAANA,CAAAA,EACKA,EAAAA,CACHE,QAASL,EAAW,EAAI,iBAa5BM,EACAN,EACAO,EACAC,EACAZ,EACAa,EACAC,EACAC,GAEA,MAAM,EAA8B,CAAC,EAEjCF,IACFG,EAAaH,gBAAkBA,EAAAA,UAE3BF,GACFK,EAAaJ,MAAQA,EACrBI,EAAahB,OAASA,EACtBgB,EAAaH,gBAAkBA,EAC/BG,EAAaC,SAAAA,aAAAA,gBACJN,GAAAA,cAMAA,KALTK,EAAaC,SAAAA,WACbD,EAAaE,IAAM,EACnBF,EAAaG,KAAO,EACpBH,EAAaI,OAAS,EACtBJ,EAAaK,MAAQ,IAUrBP,IACFE,EAAaF,UAAYA,GAGvBC,IACFC,EAAaD,eAAiBA,GAEhC,MAAM,EAAN,KACKL,EAAAA,CACH,eAAc,EACd,yBAAyB,GACzBH,MAAM,EAANA,CACEE,QAASL,EAAW,EAAI,EACxBkB,WAAW,wBACRN,KAeP,OAJIJ,CAAAA,CAgF8CW,MAAAA,EAAAA,CAAAA,YAAAA,EC9UE,YAGpDvB,IAHmEW,OACnEA,EADmEC,MAEnEA,EAFmEZ,OAGnEA,GAAAA,EAEA,oBAAIW,EAAAA,EAAAA,cAAAA,MAAAA,CAAAA,eAAAA,EAEiBJ,MAAO,CAAEiB,WAAgBxB,EAASY,EAAS,2BAI5DD,EAAAA,EAAAA,cAAAA,MAAAA,CAEKJ,MAAO,CAAEkB,SAAUb,EAAOc,QAAQ,UACrCC,EAAAA,cAAAA,MAAAA,CACEC,IAAI,GACJC,KAAK,6BACO,OACZC,IAAAA,mDAAwD9B,EAAAA,YAAkBY,EAAAA,kEAC1EL,MAAO,CACLkB,SAAS,OACTC,QAAQ,QACRT,SAAS,aAATA,IAAAA,EAAAA,EAYR,gBAAuBc,SAAEA,GAAAA,EAAaC,EAAAA,EAAAA,EAAAA,GACxC,uBACGC,EAAAA,SAAAA,KACCN,EAAAA,cAACO,EAAAA,EAAAA,CAAAA,EAAUF,IACVD,EAEmC,+FCvEG,gBAAeD,IAC1DA,EAD0DK,OAE1DA,EAF0D7B,QAG1DA,EAH0DsB,IAI1DA,EAAAA,GAJ0DpB,WAK1DA,GAAAA,EACGwB,EAAAA,EAAAA,EAAAA,GAEH,kCAEQA,EAAAA,CACJI,SAAS,QACT9B,QAASA,EACTwB,IAAKtB,EAAasB,OAAAA,EAAMO,WACb7B,OAAAA,EAAasB,EACxBK,OAAQ3B,EAAa2B,OAAAA,EAASE,cAChB7B,OAAAA,EAAa2B,EAC3BP,IAAKA,IAAAA,EAAAA,EAKoC,gBAAiBU,SAC9DA,EAD8Df,QAE9DA,EAAU,GAFoDf,WAG9DA,GAAAA,GAAa+B,EACVP,EAAAA,EAAAA,EAAAA,GAEH,MAAMQ,EAAQR,EAAMS,QAAAA,MAASH,OAAAA,EAAAA,EAAUG,OAAAA,EAErCd,EAAAA,cAACe,EAAAA,EAAAA,CAAAA,EAAUV,EAAWM,EAAAA,CAAUG,MAAOA,EAAOjC,WAAYA,KAG5D,OAAKe,EAAQ3C,OAAAA,EAAAA,cAAAA,UAAAA,KAMR2C,EAAQ/C,KAAI,QAAGmE,MAAAA,EAAOR,OAAAA,EAAQS,KAAAA,GAAAA,EAAAA,OAC7BjB,EAAAA,cAAAA,SAAAA,CACEkB,IAAQF,EAAAA,IAASC,EAAAA,IAAQT,EACzBS,KAAMA,EACND,MAAOA,EACPR,OAAQ3B,EAAa2B,OAAAA,EAASE,cAChB7B,OAAAA,EAAa2B,EAC3BM,MAAOA,GAAAA,IAGVK,GAAAA,CAAAA,EAAAA,IAAAA,EAKPJ,EAAMK,UAAY,CAChBjB,IAAKkB,EAAAA,OAAAA,WACLpB,IAAKoB,EAAAA,OAAAA,WACLP,MAAOO,EAAAA,OACPb,OAAQa,EAAAA,OACRxC,WAAYwC,EAAAA,MAGdC,EAAQC,YAAAA,UACRD,EAAQF,UAAY,CAClBnB,IAAKoB,EAAAA,OAAAA,WACLxC,WAAYwC,EAAAA,KACZV,SAAUU,EAAAA,MAAgB,CACxBlB,IAAKkB,EAAAA,OAAAA,WACLb,OAAQa,EAAAA,OACRP,MAAOO,EAAAA,SAETzB,QAASyB,EAAAA,QACPA,EAAAA,UAAoB,CAClBA,EAAAA,MAAgB,CACdL,MAAOK,EAAAA,OAAAA,WACPJ,KAAMI,EAAAA,OACNP,MAAOO,EAAAA,OACPb,OAAQa,EAAAA,OAAAA,aAEVA,EAAAA,MAAgB,CACdL,MAAOK,EAAAA,OACPJ,KAAMI,EAAAA,OAAAA,WACNP,MAAOO,EAAAA,OACPb,OAAQa,EAAAA,OAAAA,iBAA2BG,MAAAA,EAAAA,CAAAA,YAAAA,EC5GzC,gBAAqBb,SAAEA,GAAAA,EAAaN,EAAAA,EAAAA,EAAAA,GAClC,OAAIM,EAAAA,EAAAA,cAECW,EAAAA,EAAAA,CAAAA,EACKjB,EAAAA,CACJM,SAAU,CACRR,IAAKQ,GAAAA,eAAAA,EAGPV,IAAI,iCAIQI,GAAAA,EAItBoB,EAAYF,YAAAA,cACZE,EAAYL,UAAY,CACtBT,SAAUU,EAAAA,OACVzB,QAAQ,OAARA,EAAS0B,EAAQF,gBAAAA,EAARM,EAAmB9B,QAC5BK,IAAK,SAAUI,EAAOsB,EAAUC,GAC9B,OAAKvB,EAAMsB,GAAAA,IAAAA,MAAAA,iBAKSA,EAAAA,kBAA4BC,EAAAA,yBAAAA,IAAAA,GChCvCC,MAAAA,EAAoC,SAAmBxB,GAClE,uCAEIL,EAAAA,cAACsB,EAAAA,EAAAA,CAAAA,EAAYjB,IACbL,EAAAA,cAAAA,WAAAA,KACEA,EAAAA,cAACsB,EAAAA,EAAAA,CAAAA,EAAYjB,EAAAA,CAAOxB,YAAAA,MAAY,EAMxCgD,EAAUN,YAAAA,YACVM,EAAUT,UAAYE,EAAQF,UAAAA,MAAAA,EC2G2B,SACvDf,EACAsB,EACAC,GAAAA,IAAAA,IAAAA,EAAAA,UAAAA,OACGE,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAAAA,OAEEzB,EAAMJ,KAAAA,KAAOI,EAAMJ,IAAAA,IAAAA,OAAAA,MAAAA,IAAAA,CAMAI,EAAOsB,EAAUC,GAAAA,OAAkBE,IAAAA,IAAAA,MAAAA,iCAJtBF,EAAAA,0JAAAA,EAAAA,EAOd,CACvBG,MAAOV,IAAAA,OAAAA,WACPpB,IAAK+B,GAAAA,EAAAA,CAAAA,KAAAA,QAAAA,QAAAA,kBAAAA,YAAAA,QAAAA,cAAAA,SAAAA,WAAAA,EAAAA,CAAAA,QAAAA,aAAAA,ECjHY,IAAIC,IACvB,IAAI,EAAJ,EAiCA,MAAM,EAA4C,gBAA6BC,GAC7EA,EAAAA,MAD6EH,MAE7EA,EAF6EnD,MAG7EA,EAH6EM,gBAI7EA,EAJ6EiD,UAK7EA,EACAC,MAAOC,EANsEC,YAO7EA,EAP6EC,OAQ7EA,EAR6EC,QAS7EA,GAAAA,EACGnC,EAAAA,EAAAA,EAAAA,GAEH,MAAMpB,MAAEA,EAAFZ,OAASA,EAATW,OAAiBA,GAAW+C,EAAAA,EAAAA,SNOlC9C,EACAZ,EACAW,GAIA,MAAM,EAA8B,CAAC,EAErC,IAAI,EAAJ,uBAmBA,MAdeyD,UAGXzD,GACFK,EAAaJ,MAAQA,EACrBI,EAAahB,OAASA,GAAAA,gBACbW,IAKTmD,EAAAA,yDAGK,CACLA,UAAAA,EACA,4BAA4B,GAC5BvD,MAAOS,EAAAA,CMrCyB0C,CAKd9C,EAAOZ,EAAQW,IAHjCJ,MAAO8D,EACPP,UAAWQ,GAAAA,EACRC,EAAAA,EAAAA,EAAAA,GAAAA,GAEQC,EAAAA,EAAAA,UAAAA,GACIC,EAAAA,EAAAA,UAAQ,IAAMC,KAAKC,UAAUjB,EAAMrD,SAAS,CAACqD,EAAMrD,SAGhE2D,IACFF,EAAYE,GAGd,MAAM,EAAN,SLxCArD,EACAC,EACAZ,GAEA,IAAI,EAAJ,GAWA,MAAM,cAVFW,IACFiE,EAAAA,+CACG5E,EAASY,EAAS,kCAInBD,IACFiE,EAAAA,0BAAkChE,EAAAA,iIAAqIZ,EAAAA,YAAkBY,EAAAA,yIAAAA,CAAAA,CK4B3L,CAAuBD,EAAQC,EAAOZ,GA+HtC,OA7HA6E,EAAAA,EAAAA,YAAU,KACHC,IACHA,EAA6BC,QAAAA,IAAAA,CAAAA,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,OAAAA,KAAAA,EAAAA,KAAAA,EAAAA,OAAyBC,MACpD,QAAGC,oBAAAA,EAAqBC,qBAAAA,GAAAA,EAAAA,OACtBC,EAAcF,EAEP,CACLA,oBAAAA,EACAC,qBAAAA,EAAAA,KAQR,MAAM,EAAWE,EAAKC,QAAQC,cAAc,2BAG5C,GAAIC,GAAYC,IAkCd,OAjCID,EAASE,UAAAA,MAEXxB,GAAAA,EAAc,CACZyB,WAAU,IAAC,MAEbxB,GAAAA,EAAS,CACPwB,WAAU,IAIZC,YAAW,KACTJ,EAASK,gBAAgB,wBAAhBA,GACR,WAEH3B,GAAAA,EAAc,CACZyB,WAAU,IAGZH,EAASM,iBAAiB,QAAQ,SAAS,IACzCN,EAASO,oBAAoB,OAAQC,GAAAA,MAErC7B,GAAAA,EAAS,CACPwB,WAAU,IAGZC,YAAW,KACTJ,EAASK,gBAAgB,wBAAhBA,GACR,YAIPI,EAAWC,IAAIC,GAKjB,GAAIf,GAAea,EAAWG,IAAID,GAChC,OAGF,IAAI,EAAJ,EAkCA,OAhCApB,EAA2BE,MACzB,IAAwBE,IAArBD,oBAAAA,EAAqBC,qBAAAA,GAAAA,EACjBE,EAAKC,UAIVD,EAAKC,QAAQe,UAAYnB,EAAAA,EAAAA,CACvB9E,WAAU,EACVC,SAAU4F,EAAWG,IAAID,GACzBxC,MAAAA,GACG1B,IAGAgE,EAAWG,IAAID,KAClBG,EAAiBC,uBAAsB,KACjClB,EAAKC,UACPkB,EAAkBrB,EAChBE,EAAKC,QACLa,EACAF,EACAzF,EACA0D,EACAC,EACAC,GAAAA,KAAAA,IASL,KACDkC,GACFG,qBAAqBH,GAEnBE,GACFA,GAAAA,CAAAA,GAGH,CAAC7C,KAGJ+C,EAAAA,EAAAA,kBAAgB,KACVT,EAAWG,IAAID,IAAaf,IAC9BC,EAAKC,QAAQe,UAAYjB,EAAAA,EAAAA,CACvBhF,UAAW6F,EAAWG,IAAID,GAC1B9F,SAAU4F,EAAWG,IAAID,GACzBxC,MAAAA,GACG1B,IAAAA,MAILiC,GAAAA,EAAc,CACZyB,WAAU,IAAC,MAEbxB,GAAAA,EAAS,CACPwB,WAAU,IAAC,GAGd,CAAChC,KAAAA,EAAAA,EAAAA,eAGiBG,EAAAA,EAAAA,CAAAA,EAChBU,EAAAA,CACHhE,MAAM,EAANA,CAAAA,EACK8D,EACA9D,EAAAA,CACHM,gBAAAA,IAEFiD,UAAcQ,GAASR,EAAAA,IAAgBA,EAAAA,IACvC4C,IAAKtB,EACLuB,wBAAyB,CACvBC,OAAQhC,GAEViC,0BAAyB,IAAC,KAIkCC,EAAAA,EAAAA,OAC9D,SAAqB9E,GACnB,OAAKA,EAAM0B,OASDqD,EAAAA,EAAAA,eAKWC,EAAqBhF,GAZ9B+E,IAAAA,IAgBhBE,EAAYlE,UAAYA,EACxBkE,EAAY/D,YAAAA,cAAAA,MAAAA,EAAAA,CAAAA,MAAAA,cAAAA,UAAAA,QAAAA,SAAAA,cAAAA,mBAAAA,cAAAA,UAAAA,UAAAA,mBAAAA,aAAAA,aAAAA,cAAAA,cAAAA,iBAAAA,cAAAA,wBAAAA,ECxL6C,SACvDlB,EACAsB,GAAAA,IAAAA,IAAAA,EAAAA,UAAAA,OACGG,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAAAA,MAAAA,cAGDzB,EAAMrB,QAAAA,UACL2C,GAAAA,WAAwBA,IACzBtB,EAAMsB,GAAAA,IAAAA,OAAAA,MAAAA,IAAAA,CAMgBtB,EAAOsB,GAAAA,OAAaG,IAAAA,IAAAA,MAAAA,IAHpCH,EAAAA,KAAatB,EAAMsB,GAAAA,+CAAAA,EAAAA,EAMR,IAAIM,IAAI,CAAC,QAAD,8BAEJ,CACvB9B,IAAKkB,IAAAA,OAAAA,WACLpB,IAAK+B,EACL/C,MAAOsG,EACPlH,OAAQkH,EACRzE,MAAOO,IAAAA,OACPrC,OAASqB,IACP,YAAIA,EAAMrB,SAGNwG,EAAahB,IAAInE,EAAMrB,QAI3B,OAAO,IAAIyG,MAAM,iBACEpF,EAAMrB,OAAAA,qHAAAA,GAAAA,GAhF3BsG,ECLgBI,EDOT,SAAP,OAA4BvF,IAC1BA,EACAwF,YAAaC,EAFaC,QAG1BA,GAAAA,EAmBGxF,EAAAA,EAAAA,EAAAA,GAMH,OAJIwF,GACFC,QAAQV,KAAKS,GAGXD,EAAAA,EAAAA,cACMN,EAAAA,EAAAA,CAAYvD,MAAO6D,GAAevF,KAE5CyF,QAAQV,KAAK,mBAAoBjF,GAEvBiF,KAAAA,GA6CepG,IAhF3BsG,ECHFS,EAAYxE,YAAAA,cACZwE,EAAY3E,UAAYA,2KC2BxB,MAxCuB4E,IAAkB,IAAjB,QAAEC,GAAS,EACjC,OACEjG,EAAAA,cAACkG,EAAAA,EAAS,CAACtH,MAAO,CAAEuH,aAAc,UAChCnG,EAAAA,cAACoG,EAAAA,EAAG,KACDH,EAAQI,YAAYC,KACnBtG,EAAAA,cAACuG,EAAAA,EAAG,CAACC,GAAG,IAAIC,GAAG,KAAK7H,MAAO,CAAE8H,UAAW,SAAU5G,SAAU,UAC1DE,EAAAA,cAAC2G,EAAAA,KAAI,CAACC,GAAIX,EAAQY,OAAOC,MACvB9G,EAAAA,cAACsF,EAAAA,EAAW,CACVvD,MAAOkE,EAAQI,YAAYC,IAAIS,gBAAgBC,gBAC/C/G,IAAI,6BAMZD,EAAAA,cAACuG,EAAAA,EAAG,CAACC,GAAG,IAAIC,GAAG,MACbzG,EAAAA,cAAAA,MAAAA,KACEA,EAAAA,cAAAA,IAAAA,KACEA,EAAAA,cAAC2G,EAAAA,KAAI,CAACC,GAAIX,EAAQY,OAAOC,MACvB9G,EAAAA,cAAAA,SAAAA,KAASiG,EAAQI,YAAYY,QAIhChB,EAAQI,YAAYa,cACnBlH,EAAAA,cAAAA,IAAAA,KAAAA,WACW,IACTA,EAAAA,cAAAA,IAAAA,CACEmH,KAAI,uBAAyBlB,EAAQI,YAAYa,cAAe,IAC5DjB,EAAQI,YAAYa,gBAKhClH,EAAAA,cAAAA,MAAAA,CAAKmC,UAAU,cAAc6C,wBAAyB,CAAEC,OAAQgB,EAAQmB,UAGlE,EC9BhB,MAAMC,EAAkBrB,IAAAA,IAAC,YAAEsB,GAAa,SACtCtH,EAAAA,cAAAA,OAAAA,CAAMmC,UAAU,QAAM,MAChB,IACHoF,EAAAA,IAAc,KAAdA,CACCD,EAAYzK,KAAKoJ,GACfjG,EAAAA,cAAC2G,EAAAA,KAAI,CAACzF,IAAK+E,EAAQY,OAAOC,KAAMF,GAAIX,EAAQY,OAAOC,MAChDb,EAAQI,YAAYY,SAItB,EAGHO,EAAeC,IAAmB,IAAlB,SAAEC,GAAU,EAChC,MAAM,YAAErB,GAAgBqB,EAExB,OACE1H,EAAAA,cAAC2G,EAAAA,KAAI,CAACC,GAAIc,EAASb,OAAOC,MACxB9G,EAAAA,cAAAA,UAAAA,KACGqG,EAAYY,KACbjH,EAAAA,cAAAA,KAAAA,MACCqG,EAAYsB,MACX3H,EAAAA,cAAAA,EAAAA,SAAAA,KACGqG,EAAYsB,KACb3H,EAAAA,cAAAA,KAAAA,OAGAqG,EAAYuB,OAAM,IAAIvB,EAAYwB,OACtC7H,EAAAA,cAAAA,KAAAA,MACIqG,EAAYyB,IAAG,IAAIzB,EAAY0B,KACnC/H,EAAAA,cAAAA,KAAAA,OAEG,EAILgI,EAAWC,IAAe,IAAd,KAAEC,GAAM,EACxB,OAAIA,EAEAlI,EAAAA,cAAAA,EAAAA,SAAAA,KACGuH,EAAAA,IAAc,KAAdA,CACCW,EAAKrL,KAAKsL,GACRnI,EAAAA,cAAC2G,EAAAA,KAAI,CAACzF,IAAKiH,EAAKvB,GAAE,UAAYuB,GAC5BnI,EAAAA,cAACoI,EAAAA,EAAe,CAACC,KAAMC,EAAAA,MAAS,IAAEH,OAOrC,IACT,EAGII,EAAWC,IAAkC,IAAjC,KAAEC,EAAI,kBAAEC,GAAmB,EAC3C,OAAIA,EAEA1I,EAAAA,cAAAA,KAAAA,KACEA,EAAAA,cAAC2G,EAAAA,KAAI,CAACC,GAAI6B,EAAK5B,OAAOC,MAAO2B,EAAKpC,YAAYsC,QAI3C3I,EAAAA,cAAAA,KAAAA,KAAKyI,EAAKpC,YAAYsC,MAC/B,EAmDF,MAhDoBC,IAAAA,IAAAA,EAAAA,EAAAA,IAAC,KAAEH,EAAI,YAAEnB,EAAW,SAAEI,EAAQ,kBAAEgB,GAAmB,SACrE1I,EAAAA,cAAAA,EAAAA,SAAAA,KACEA,EAAAA,cAACuI,EAAQ,CAACE,KAAMA,EAAMC,kBAAmBA,IACzC1I,EAAAA,cAACqH,EAAe,CAACC,YAAaA,IAAe,OAAIuB,EAAAA,EAAAA,GAAWJ,EAAKpC,YAAYyC,MAC7E9I,EAAAA,cAAAA,IAAAA,KACEA,EAAAA,cAACgI,EAAQ,CAACE,KAAMO,EAAKpC,YAAY6B,QAEnClI,EAAAA,cAAAA,UAAAA,CAASmC,UAAU,gBACjBnC,EAAAA,cAAAA,MAAAA,CAAKgF,wBAAyB,CAAEC,OAAQwD,EAAKrB,QAE5CqB,EAAKpC,YAAY0C,QAChB/I,EAAAA,cAAC2G,EAAAA,KAAI,CAACC,GAAE,YAAc6B,EAAKpC,YAAY0C,OAAOhC,gBAAgBiC,IAC5DhJ,EAAAA,cAACsF,EAAAA,EAAW,CACVqD,MAAOF,EAAKpC,YAAY4C,WACxBhJ,IAAgC,QAA7B,EAAEwI,EAAKpC,YAAY4C,kBAAU,+BAA2BR,EAAKpC,YAAYsC,MAAK,IACjF5G,MAAO0G,EAAKpC,YAAY0C,OAAOhC,gBAAgBC,mBAKrDhH,EAAAA,cAAAA,KAAAA,MAECsH,EAAYzK,KAAKoJ,GAChBjG,EAAAA,cAACkJ,EAAc,CAAChI,IAAK+E,EAAQ+C,GAAI/C,QAASA,MAG5CjG,EAAAA,cAAAA,KAAAA,MAEAA,EAAAA,cAAAA,MAAAA,KACEA,EAAAA,cAAAA,IAAAA,KAAAA,WACU6I,EAAAA,EAAAA,GAAWJ,EAAKpC,YAAYyC,MAAK,MAA4B,QAA5B,EAAOL,EAAKpC,YAAY8C,YAAI,QAAI,SAAO,QAEjFV,EAAKpC,YAAY+C,QAChBpJ,EAAAA,cAAAA,EAAAA,SAAAA,KAAAA,wDAEAA,EAAAA,cAAAA,EAAAA,SAAAA,KAAAA,QAAQ0H,EAAW1H,EAAAA,cAACwH,EAAY,CAACE,SAAUA,IAAe1H,EAAAA,cAAAA,OAAAA,KAAAA,+BAI9DA,EAAAA,cAAAA,KAAAA,MACAA,EAAAA,cAAAA,IAAAA,KAAAA,oCACmCA,EAAAA,cAAAA,IAAAA,KAAAA,2BAA8B,OAAK,IACpEA,EAAAA,cAAAA,IAAAA,CAAGmH,KAAK,uBAAqB,gBAAiB,mBAGjD,mECxHLkC,IAAAA,OAAc,MAId,IAFoBP,GAASO,IAAOP,GAAMvK,OAAO,6BCKzC,SAAW8K,GAAU,aAIzB,SAASC,EAAoBzB,EAAQ0B,EAAerI,EAAKsI,GACrD,IAAIjL,EAAS,CACTN,EAAG,CAAC,cAAe,gBACnBwL,EAAG,CAAC,cAAe,gBACnBC,EAAG,CAAC,UAAW,aACfC,GAAI,CAAC9B,EAAS,QAASA,EAAS,UAChC+B,EAAG,CAAC,aAAc,eAClBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACjC,EAAS,UAAWA,EAAS,YAClCkC,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACnC,EAAS,SAAUA,EAAS,YAErC,OAAO0B,EAAgBhL,EAAO2C,GAAK,GAAK3C,EAAO2C,GAAK,EACxD,CAESmI,EAAOY,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFC,MACzF,KAEJC,YACI,6DAA6DD,MAAM,KACvEE,kBAAkB,EAClBC,SACI,8DAA8DH,MAC1D,KAERI,cAAe,8BAA8BJ,MAAM,KACnDK,YAAa,uBAAuBL,MAAM,KAC1CM,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTC,SAAU,IACVC,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN7K,EAAG,oBACH8K,GAAI,cACJ1N,EAAGqL,EACHsC,GAAI,aACJnC,EAAGH,EACHuC,GAAI,aACJnC,EAAGJ,EACHK,GAAIL,EACJM,EAAGN,EACHwC,GAAI,YACJjC,EAAGP,EACHQ,GAAIR,EACJS,EAAGT,EACHU,GAAIV,GAERyC,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAhFyCC,CAAQ,EAAQ","sources":["webpack://jug-goerlitz/./node_modules/camelcase/index.js","webpack://jug-goerlitz/../src/image-utils.ts","webpack://jug-goerlitz/../src/components/hooks.ts","webpack://jug-goerlitz/../src/components/layout-wrapper.tsx","webpack://jug-goerlitz/../src/components/picture.tsx","webpack://jug-goerlitz/../src/components/placeholder.tsx","webpack://jug-goerlitz/../src/components/main-image.tsx","webpack://jug-goerlitz/../src/components/gatsby-image.server.tsx","webpack://jug-goerlitz/../src/components/gatsby-image.browser.tsx","webpack://jug-goerlitz/../src/components/static-image.server.tsx","webpack://jug-goerlitz/../src/components/static-image.tsx","webpack://jug-goerlitz/./src/components/speaker-profile.tsx","webpack://jug-goerlitz/./src/components/talk-content.tsx","webpack://jug-goerlitz/./src/utils/format-date.ts","webpack://jug-goerlitz/./node_modules/moment/locale/de.js"],"sourcesContent":["'use strict';\n\nconst preserveCamelCase = string => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = Object.assign({\n\t\tpascalCase: false\n\t}, options);\n\n\tconst postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n\t}\n\n\tconst hasUpperCase = input !== input.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input);\n\t}\n\n\tinput = input\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase())\n\t\t.replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n\n\treturn postProcess(input);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","import camelCase from \"camelcase\"\nimport type { IGatsbyImageData } from \"./index\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n outputPixelDensities?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.slice(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(`\nThe requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* global GATSBY___IMAGE */\nimport { generateImageData, EVERY_BREAKPOINT } from \"../image-utils\"\nimport type { CSSProperties, HTMLAttributes, ImgHTMLAttributes } from \"react\"\nimport type { Node } from \"gatsby\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport type {\n IGatsbyImageHelperArgs,\n Layout,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent = T & {\n gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Partial & {\n childImageSharp?: IGatsbyImageDataParent>\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageParent | any\n): node is IGatsbyImageParent => Boolean(node?.gatsbyImage)\n\nexport type ImageDataLike =\n | FileNode\n | IGatsbyImageDataParent\n | IGatsbyImageParent\n | IGatsbyImageData\n\nexport const getImage = (\n node: ImageDataLike | null\n): IGatsbyImageData | undefined => {\n // This checks both for gatsbyImageData and gatsbyImage\n if (isGatsbyImageData(node)) {\n return node\n }\n // gatsbyImageData GraphQL field\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n // gatsbyImage GraphQL field for Gatsby's Image CDN service\n if (isGatsbyImageParent(node)) {\n return node.gatsbyImage\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n style: CSSProperties = {}\n): Partial {\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","import React, { Fragment, FunctionComponent, PropsWithChildren } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer = ``\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent<\n PropsWithChildren\n> = function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {SERVER ? : null}\n \n )\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture: React.FC = function Picture({\n fallback,\n sources = [],\n shouldLoad = true,\n ...props\n}) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage: React.FC = function MainImage(props) {\n return (\n <>\n \n \n \n )\n}\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React from \"react\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\nimport type { FunctionComponent, WeakValidationMap } from \"react\"\nimport type { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as = `div`,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n\n if (preactClass) {\n className = preactClass\n }\n\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return React.createElement(\n as,\n {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n },\n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n imgStyle\n )}\n />\n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n\n return PropTypes.string(props, propName, componentName, ...rest)\n}\n\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","import {\n createElement,\n memo,\n useMemo,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\"\nimport {\n getWrapperProps,\n gatsbyImageIsInstalled,\n hasNativeLazyLoadSupport,\n} from \"./hooks\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport type {\n FC,\n ElementType,\n FunctionComponent,\n ImgHTMLAttributes,\n CSSProperties,\n ReactEventHandler,\n} from \"react\"\nimport type { renderImageToString } from \"./lazy-hydrate\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { Layout } from \"../image-utils\"\n\nconst imageCache = new Set()\nlet renderImageToStringPromise\nlet renderImage: typeof renderImageToString | undefined\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: (props: { wasCached: boolean }) => void\n onError?: ReactEventHandler\n onStartLoad?: (props: { wasCached: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nconst GatsbyImageHydrator: FC = function GatsbyImageHydrator({\n as = `div`,\n image,\n style,\n backgroundColor,\n className,\n class: preactClass,\n onStartLoad,\n onLoad,\n onError,\n ...props\n}) {\n const { width, height, layout } = image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n const root = useRef()\n const cacheKey = useMemo(() => JSON.stringify(image.images), [image.images])\n\n // Preact uses class instead of className so we need to check for both\n if (preactClass) {\n className = preactClass\n }\n\n const sizer = getSizer(layout, width, height)\n\n useEffect(() => {\n if (!renderImageToStringPromise) {\n renderImageToStringPromise = import(`./lazy-hydrate`).then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n renderImage = renderImageToString\n\n return {\n renderImageToString,\n swapPlaceholderImage,\n }\n }\n )\n }\n\n // The plugin image component is a bit special where if it's server-side rendered, we add extra script tags to support lazy-loading without\n // In this case we stop hydration but fire the correct events.\n const ssrImage = root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n if (ssrImage && hasNativeLazyLoadSupport()) {\n if (ssrImage.complete) {\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n } else {\n onStartLoad?.({\n wasCached: true,\n })\n\n ssrImage.addEventListener(`load`, function onLoadListener() {\n ssrImage.removeEventListener(`load`, onLoadListener)\n\n onLoad?.({\n wasCached: true,\n })\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n })\n }\n\n imageCache.add(cacheKey)\n\n return\n }\n\n if (renderImage && imageCache.has(cacheKey)) {\n return\n }\n\n let animationFrame\n let cleanupCallback\n renderImageToStringPromise.then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n if (!root.current) {\n return\n }\n\n root.current.innerHTML = renderImageToString({\n isLoading: true,\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n if (!imageCache.has(cacheKey)) {\n animationFrame = requestAnimationFrame(() => {\n if (root.current) {\n cleanupCallback = swapPlaceholderImage(\n root.current,\n cacheKey,\n imageCache,\n style,\n onStartLoad,\n onLoad,\n onError\n )\n }\n })\n }\n }\n )\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n if (cleanupCallback) {\n cleanupCallback()\n }\n }\n }, [image])\n\n // useLayoutEffect is ran before React commits to the DOM. This allows us to make sure our HTML is using our cached image version\n useLayoutEffect(() => {\n if (imageCache.has(cacheKey) && renderImage) {\n root.current.innerHTML = renderImage({\n isLoading: imageCache.has(cacheKey),\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n }\n }, [image])\n\n // By keeping all props equal React will keep the component in the DOM\n return createElement(as, {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n ref: root,\n dangerouslySetInnerHTML: {\n __html: sizer,\n },\n suppressHydrationWarning: true,\n })\n}\n\nexport const GatsbyImage: FunctionComponent = memo(\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n\n return createElement(GatsbyImageHydrator, props)\n }\n)\n\nGatsbyImage.propTypes = propTypes\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n breakpoints,\n outputPixelDensities,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import React from \"react\"\nimport { Link } from \"gatsby\"\n\nimport { GatsbyImage } from \"gatsby-plugin-image\"\n\nimport { Container, Col, Row } from \"reactstrap\"\n\nconst SpeakerProfile = ({ speaker }) => {\n return (\n \n \n {speaker.frontmatter.pic && (\n \n \n \n \n \n )}\n\n \n
\n

\n \n {speaker.frontmatter.name}\n \n

\n\n {speaker.frontmatter.twitter_name && (\n

\n Twitter:{\" \"}\n {`@${speaker.frontmatter.twitter_name}`}\n

\n )}\n
\n\n
\n \n \n \n )\n}\n\nexport default SpeakerProfile\n","import React from \"react\"\nimport formatDate from \"../utils/format-date\"\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faTag } from \"@fortawesome/free-solid-svg-icons\"\n\nimport { Link } from \"gatsby\"\n\nimport * as R from \"ramda\"\nimport SpeakerProfile from \"./speaker-profile\"\n\nimport { GatsbyImage } from \"gatsby-plugin-image\"\n\nconst SpeakerHeadline = ({ speakerList }) => (\n \n von{\" \"}\n {R.intersperse(\", \")(\n speakerList.map((speaker) => (\n \n {speaker.frontmatter.name}\n \n ))\n )}\n \n)\n\nconst LocationInfo = ({ location }) => {\n const { frontmatter } = location\n\n return (\n \n
\n {frontmatter.name}\n
\n {frontmatter.info && (\n <>\n {frontmatter.info}\n
\n \n )}\n {`${frontmatter.street} ${frontmatter.number}`}\n
\n {`${frontmatter.zip} ${frontmatter.city}`}\n
\n
\n \n )\n}\n\nconst TagsLine = ({ tags }) => {\n if (tags) {\n return (\n <>\n {R.intersperse(\", \")(\n tags.map((tag) => (\n \n {tag}\n \n ))\n )}\n \n )\n } else {\n return null\n }\n}\n\nconst Headline = ({ talk, linkToDetailsPage }) => {\n if (linkToDetailsPage) {\n return (\n

\n {talk.frontmatter.title}\n

\n )\n } else {\n return

{talk.frontmatter.title}

\n }\n}\n\nconst TalkContent = ({ talk, speakerList, location, linkToDetailsPage }) => (\n <>\n \n | {formatDate(talk.frontmatter.date)}\n

\n \n

\n
\n
\n\n {talk.frontmatter.poster && (\n \n \n \n )}\n\n
\n\n {speakerList.map((speaker) => (\n \n ))}\n\n
\n\n
\n

\n Datum: {formatDate(talk.frontmatter.date)}, {`${talk.frontmatter.time ?? \"19:00\"} Uhr`}\n

\n {talk.frontmatter.virtual ? (\n <>Das Treffen findet Online statt. Siehe Beschreibung.\n ) : (\n <>Ort: {location ? : wird noch bekannt gegeben}\n )}\n
\n\n
\n

\n Die Veranstaltung wird durch die Java User Group Görlitz (im{\" \"}\n iJUG Verband) organisiert.\n

\n
\n \n)\n\nexport default TalkContent\n","import moment from \"moment\"\n\nimport \"moment/locale/de\"\n\nmoment.locale(\"de\")\n\nconst formatDate = (date) => moment(date).format(\"LL\")\n\nexport default formatDate\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n"],"names":["camelCase","input","options","Array","isArray","TypeError","Object","assign","pascalCase","map","x","trim","filter","length","join","toUpperCase","toLowerCase","string","isLastCharLower","isLastCharUpper","isLastLastCharUpper","i","character","test","slice","preserveCamelCase","replace","_","p1","m","charAt","module","exports","height","prototype","format","isLoading","isLoaded","images","loading","style","shouldLoad","opacity","placeholder","layout","width","backgroundColor","objectFit","objectPosition","wrapperStyle","position","top","left","bottom","right","transition","sources","paddingTop","maxWidth","display","React","alt","role","src","children","props","Fragment","Sizer","srcSet","decoding","undefined","fallback","t","s","sizes","Image","media","type","key","fallbackImage","propTypes","PropTypes","Picture","displayName","isRequired","Placeholder","_Picture$propTypes","propName","componentName","MainImage","rest","image","altValidator","Set","as","className","class","preactClass","onStartLoad","onLoad","onError","overflow","wStyle","wClass","wrapperProps","useRef","useMemo","JSON","stringify","sizer","useEffect","renderImageToStringPromise","import","then","renderImageToString","swapPlaceholderImage","renderImage","root","current","querySelector","ssrImage","hasNativeLazyLoadSupport","complete","wasCached","setTimeout","removeAttribute","addEventListener","removeEventListener","onLoadListener","imageCache","add","cacheKey","has","innerHTML","animationFrame","requestAnimationFrame","cleanupCallback","cancelAnimationFrame","useLayoutEffect","ref","dangerouslySetInnerHTML","__html","suppressHydrationWarning","memo","warn","GatsbyImageHydrator","GatsbyImage","checkDimensionProps","validLayouts","Error","GatsbyImageBrowser","__imageData","imageData","__error","console","StaticImage","_ref","speaker","Container","marginBottom","Row","frontmatter","pic","Col","sm","xs","textAlign","Link","to","fields","slug","childImageSharp","gatsbyImageData","name","twitter_name","href","html","SpeakerHeadline","speakerList","R","LocationInfo","_ref2","location","info","street","number","zip","city","TagsLine","_ref3","tags","tag","FontAwesomeIcon","icon","faTag","Headline","_ref4","talk","linkToDetailsPage","title","_ref5","formatDate","date","poster","id","poster_alt","SpeakerProfile","time","virtual","moment","processRelativeTime","withoutSuffix","isFuture","h","d","dd","w","M","MM","y","yy","defineLocale","months","split","monthsShort","monthsParseExact","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","sameElse","nextDay","nextWeek","lastDay","lastWeek","relativeTime","future","past","ss","mm","hh","ww","dayOfMonthOrdinalParse","ordinal","week","dow","doy","factory"],"sourceRoot":""} \ No newline at end of file diff --git a/b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js.map b/b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js.map deleted file mode 100644 index cdb77d2c8..000000000 --- a/b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js","mappings":";6GAEA,MA6BMA,EAAY,CAACC,EAAOC,KACzB,GAAuB,iBAAVD,IAAsBE,MAAMC,QAAQH,GAChD,MAAM,IAAII,UAAU,gDAGrBH,EAAUI,OAAOC,OAAO,CACvBC,YAAY,GACVN,GAYH,GAPCD,EADGE,MAAMC,QAAQH,GACTA,EAAMQ,KAAIC,GAAKA,EAAEC,SACvBC,QAAOF,GAAKA,EAAEG,SACdC,KAAK,KAECb,EAAMU,OAGM,IAAjBV,EAAMY,OACT,MAAO,GAGR,GAAqB,IAAjBZ,EAAMY,OACT,OAAOX,EAAQM,WAAaP,EAAMc,cAAgBd,EAAMe,cAezD,OAZqBf,IAAUA,EAAMe,gBAGpCf,EA3DwBgB,KACzB,IAAIC,GAAkB,EAClBC,GAAkB,EAClBC,GAAsB,EAE1B,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAOJ,OAAQQ,IAAK,CACvC,MAAMC,EAAYL,EAAOI,GAErBH,GAAmB,WAAWK,KAAKD,IAAcA,EAAUP,gBAAkBO,GAChFL,EAASA,EAAOO,MAAM,EAAGH,GAAK,IAAMJ,EAAOO,MAAMH,GACjDH,GAAkB,EAClBE,EAAsBD,EACtBA,GAAkB,EAClBE,KACUF,GAAmBC,GAAuB,WAAWG,KAAKD,IAAcA,EAAUN,gBAAkBM,GAC9GL,EAASA,EAAOO,MAAM,EAAGH,EAAI,GAAK,IAAMJ,EAAOO,MAAMH,EAAI,GACzDD,EAAsBD,EACtBA,GAAkB,EAClBD,GAAkB,IAElBA,EAAkBI,EAAUN,gBAAkBM,GAAaA,EAAUP,gBAAkBO,EACvFF,EAAsBD,EACtBA,EAAkBG,EAAUP,gBAAkBO,GAAaA,EAAUN,gBAAkBM,EAEzF,CAEA,OAAOL,CAAM,EAiCJQ,CAAkBxB,IAG3BA,EAAQA,EACNyB,QAAQ,YAAa,IACrBV,cACAU,QAAQ,mBAAmB,CAACC,EAAGC,IAAOA,EAAGb,gBACzCW,QAAQ,cAAcG,GAAKA,EAAEd,gBA5BXL,EA8BDT,EA9BMC,EAAQM,WAAaE,EAAEoB,OAAO,GAAGf,cAAgBL,EAAEc,MAAM,GAAKd,EAAnEA,KA8BK,EAG1BqB,EAAOC,QAAUhC,EAEjB+B,EAAOC,QAAP,QAAyBhC,uqBCmiBAiC,MAAAA,EC/lBe,uEAERC,UA2L5BC,SAAAA,EAgBFC,EACAC,EACAC,EACAC,EACAC,GA4BA,YA5BAA,IAAAA,IAAAA,EAAuB,CAAC,GAajBA,EAAAA,CAAAA,EAKFF,EAAAA,CACHC,QAAAA,EACAE,WAAYL,EACZ,kBAAkB,GAClBI,MAAM,EAANA,CAAAA,EACKA,EAAAA,CACHE,QAASL,EAAW,EAAI,iBAa5BM,EACAN,EACAO,EACAC,EACAZ,EACAa,EACAC,EACAC,GAEA,MAAM,EAA8B,CAAC,EAEjCF,IACFG,EAAaH,gBAAkBA,EAAAA,UAE3BF,GACFK,EAAaJ,MAAQA,EACrBI,EAAahB,OAASA,EACtBgB,EAAaH,gBAAkBA,EAC/BG,EAAaC,SAAAA,aAAAA,gBACJN,GAAAA,cAMAA,KALTK,EAAaC,SAAAA,WACbD,EAAaE,IAAM,EACnBF,EAAaG,KAAO,EACpBH,EAAaI,OAAS,EACtBJ,EAAaK,MAAQ,IAUrBP,IACFE,EAAaF,UAAYA,GAGvBC,IACFC,EAAaD,eAAiBA,GAEhC,MAAM,EAAN,KACKL,EAAAA,CACH,eAAc,EACd,yBAAyB,GACzBH,MAAM,EAANA,CACEE,QAASL,EAAW,EAAI,EACxBkB,WAAW,wBACRN,KAeP,OAJIJ,CAAAA,CAgF8CW,MAAAA,EAAAA,CAAAA,YAAAA,EC9UE,YAGpDvB,IAHmEW,OACnEA,EADmEC,MAEnEA,EAFmEZ,OAGnEA,GAAAA,EAEA,oBAAIW,EAAAA,EAAAA,cAAAA,MAAAA,CAAAA,eAAAA,EAEiBJ,MAAO,CAAEiB,WAAgBxB,EAASY,EAAS,2BAI5DD,EAAAA,EAAAA,cAAAA,MAAAA,CAEKJ,MAAO,CAAEkB,SAAUb,EAAOc,QAAQ,UACrCC,EAAAA,cAAAA,MAAAA,CACEC,IAAI,GACJC,KAAK,6BACO,OACZC,IAAAA,mDAAwD9B,EAAAA,YAAkBY,EAAAA,kEAC1EL,MAAO,CACLkB,SAAS,OACTC,QAAQ,QACRT,SAAS,aAATA,IAAAA,EAAAA,EAYR,gBAAuBc,SAAEA,GAAAA,EAAaC,EAAAA,EAAAA,EAAAA,GACxC,uBACGC,EAAAA,SAAAA,KACCN,EAAAA,cAACO,EAAAA,EAAAA,CAAAA,EAAUF,IACVD,EAEmC,+FCvEG,gBAAeD,IAC1DA,EAD0DK,OAE1DA,EAF0D7B,QAG1DA,EAH0DsB,IAI1DA,EAAAA,GAJ0DpB,WAK1DA,GAAAA,EACGwB,EAAAA,EAAAA,EAAAA,GAEH,kCAEQA,EAAAA,CACJI,SAAS,QACT9B,QAASA,EACTwB,IAAKtB,EAAasB,OAAAA,EAAMO,WACb7B,OAAAA,EAAasB,EACxBK,OAAQ3B,EAAa2B,OAAAA,EAASE,cAChB7B,OAAAA,EAAa2B,EAC3BP,IAAKA,IAAAA,EAAAA,EAKoC,gBAAiBU,SAC9DA,EAD8Df,QAE9DA,EAAU,GAFoDf,WAG9DA,GAAAA,GAAa+B,EACVP,EAAAA,EAAAA,EAAAA,GAEH,MAAMQ,EAAQR,EAAMS,QAAAA,MAASH,OAAAA,EAAAA,EAAUG,OAAAA,EAErCd,EAAAA,cAACe,EAAAA,EAAAA,CAAAA,EAAUV,EAAWM,EAAAA,CAAUG,MAAOA,EAAOjC,WAAYA,KAG5D,OAAKe,EAAQ3C,OAAAA,EAAAA,cAAAA,UAAAA,KAMR2C,EAAQ/C,KAAI,QAAGmE,MAAAA,EAAOR,OAAAA,EAAQS,KAAAA,GAAAA,EAAAA,OAC7BjB,EAAAA,cAAAA,SAAAA,CACEkB,IAAQF,EAAAA,IAASC,EAAAA,IAAQT,EACzBS,KAAMA,EACND,MAAOA,EACPR,OAAQ3B,EAAa2B,OAAAA,EAASE,cAChB7B,OAAAA,EAAa2B,EAC3BM,MAAOA,GAAAA,IAGVK,GAAAA,CAAAA,EAAAA,IAAAA,EAKPJ,EAAMK,UAAY,CAChBjB,IAAKkB,EAAAA,OAAAA,WACLpB,IAAKoB,EAAAA,OAAAA,WACLP,MAAOO,EAAAA,OACPb,OAAQa,EAAAA,OACRxC,WAAYwC,EAAAA,MAGdC,EAAQC,YAAAA,UACRD,EAAQF,UAAY,CAClBnB,IAAKoB,EAAAA,OAAAA,WACLxC,WAAYwC,EAAAA,KACZV,SAAUU,EAAAA,MAAgB,CACxBlB,IAAKkB,EAAAA,OAAAA,WACLb,OAAQa,EAAAA,OACRP,MAAOO,EAAAA,SAETzB,QAASyB,EAAAA,QACPA,EAAAA,UAAoB,CAClBA,EAAAA,MAAgB,CACdL,MAAOK,EAAAA,OAAAA,WACPJ,KAAMI,EAAAA,OACNP,MAAOO,EAAAA,OACPb,OAAQa,EAAAA,OAAAA,aAEVA,EAAAA,MAAgB,CACdL,MAAOK,EAAAA,OACPJ,KAAMI,EAAAA,OAAAA,WACNP,MAAOO,EAAAA,OACPb,OAAQa,EAAAA,OAAAA,iBAA2BG,MAAAA,EAAAA,CAAAA,YAAAA,EC5GzC,gBAAqBb,SAAEA,GAAAA,EAAaN,EAAAA,EAAAA,EAAAA,GAClC,OAAIM,EAAAA,EAAAA,cAECW,EAAAA,EAAAA,CAAAA,EACKjB,EAAAA,CACJM,SAAU,CACRR,IAAKQ,GAAAA,eAAAA,EAGPV,IAAI,iCAIQI,GAAAA,EAItBoB,EAAYF,YAAAA,cACZE,EAAYL,UAAY,CACtBT,SAAUU,EAAAA,OACVzB,QAAQ,OAARA,EAAS0B,EAAQF,gBAAAA,EAARM,EAAmB9B,QAC5BK,IAAK,SAAUI,EAAOsB,EAAUC,GAC9B,OAAKvB,EAAMsB,GAAAA,IAAAA,MAAAA,iBAKSA,EAAAA,kBAA4BC,EAAAA,yBAAAA,IAAAA,GChCvCC,MAAAA,EAAoC,SAAmBxB,GAClE,uCAEIL,EAAAA,cAACsB,EAAAA,EAAAA,CAAAA,EAAYjB,IACbL,EAAAA,cAAAA,WAAAA,KACEA,EAAAA,cAACsB,EAAAA,EAAAA,CAAAA,EAAYjB,EAAAA,CAAOxB,YAAAA,MAAY,EAMxCgD,EAAUN,YAAAA,YACVM,EAAUT,UAAYE,EAAQF,UAAAA,MAAAA,EC2G2B,SACvDf,EACAsB,EACAC,GAAAA,IAAAA,IAAAA,EAAAA,UAAAA,OACGE,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAAAA,OAEEzB,EAAMJ,KAAAA,KAAOI,EAAMJ,IAAAA,IAAAA,OAAAA,MAAAA,IAAAA,CAMAI,EAAOsB,EAAUC,GAAAA,OAAkBE,IAAAA,IAAAA,MAAAA,iCAJtBF,EAAAA,0JAAAA,EAAAA,EAOd,CACvBG,MAAOV,IAAAA,OAAAA,WACPpB,IAAK+B,GAAAA,EAAAA,CAAAA,KAAAA,QAAAA,QAAAA,kBAAAA,YAAAA,QAAAA,cAAAA,SAAAA,WAAAA,EAAAA,CAAAA,QAAAA,aAAAA,ECjHY,IAAIC,IACvB,IAAI,EAAJ,EAiCA,MAAM,EAA4C,gBAA6BC,GAC7EA,EAAAA,MAD6EH,MAE7EA,EAF6EnD,MAG7EA,EAH6EM,gBAI7EA,EAJ6EiD,UAK7EA,EACAC,MAAOC,EANsEC,YAO7EA,EAP6EC,OAQ7EA,EAR6EC,QAS7EA,GAAAA,EACGnC,EAAAA,EAAAA,EAAAA,GAEH,MAAMpB,MAAEA,EAAFZ,OAASA,EAATW,OAAiBA,GAAW+C,EAAAA,EAAAA,SNOlC9C,EACAZ,EACAW,GAIA,MAAM,EAA8B,CAAC,EAErC,IAAI,EAAJ,uBAmBA,MAdeyD,UAGXzD,GACFK,EAAaJ,MAAQA,EACrBI,EAAahB,OAASA,GAAAA,gBACbW,IAKTmD,EAAAA,yDAGK,CACLA,UAAAA,EACA,4BAA4B,GAC5BvD,MAAOS,EAAAA,CMrCyB0C,CAKd9C,EAAOZ,EAAQW,IAHjCJ,MAAO8D,EACPP,UAAWQ,GAAAA,EACRC,EAAAA,EAAAA,EAAAA,GAAAA,GAEQC,EAAAA,EAAAA,UAAAA,GACIC,EAAAA,EAAAA,UAAQ,IAAMC,KAAKC,UAAUjB,EAAMrD,SAAS,CAACqD,EAAMrD,SAGhE2D,IACFF,EAAYE,GAGd,MAAM,EAAN,SLxCArD,EACAC,EACAZ,GAEA,IAAI,EAAJ,GAWA,MAAM,cAVFW,IACFiE,EAAAA,+CACG5E,EAASY,EAAS,kCAInBD,IACFiE,EAAAA,0BAAkChE,EAAAA,iIAAqIZ,EAAAA,YAAkBY,EAAAA,yIAAAA,CAAAA,CK4B3L,CAAuBD,EAAQC,EAAOZ,GA+HtC,OA7HA6E,EAAAA,EAAAA,YAAU,KACHC,IACHA,EAA6BC,QAAAA,IAAAA,CAAAA,EAAAA,EAAAA,KAAAA,EAAAA,EAAAA,OAAAA,KAAAA,EAAAA,KAAAA,EAAAA,OAAyBC,MACpD,QAAGC,oBAAAA,EAAqBC,qBAAAA,GAAAA,EAAAA,OACtBC,EAAcF,EAEP,CACLA,oBAAAA,EACAC,qBAAAA,EAAAA,KAQR,MAAM,EAAWE,EAAKC,QAAQC,cAAc,2BAG5C,GAAIC,GAAYC,IAkCd,OAjCID,EAASE,UAAAA,MAEXxB,GAAAA,EAAc,CACZyB,WAAU,IAAC,MAEbxB,GAAAA,EAAS,CACPwB,WAAU,IAIZC,YAAW,KACTJ,EAASK,gBAAgB,wBAAhBA,GACR,WAEH3B,GAAAA,EAAc,CACZyB,WAAU,IAGZH,EAASM,iBAAiB,QAAQ,SAAS,IACzCN,EAASO,oBAAoB,OAAQC,GAAAA,MAErC7B,GAAAA,EAAS,CACPwB,WAAU,IAGZC,YAAW,KACTJ,EAASK,gBAAgB,wBAAhBA,GACR,YAIPI,EAAWC,IAAIC,GAKjB,GAAIf,GAAea,EAAWG,IAAID,GAChC,OAGF,IAAI,EAAJ,EAkCA,OAhCApB,EAA2BE,MACzB,IAAwBE,IAArBD,oBAAAA,EAAqBC,qBAAAA,GAAAA,EACjBE,EAAKC,UAIVD,EAAKC,QAAQe,UAAYnB,EAAAA,EAAAA,CACvB9E,WAAU,EACVC,SAAU4F,EAAWG,IAAID,GACzBxC,MAAAA,GACG1B,IAGAgE,EAAWG,IAAID,KAClBG,EAAiBC,uBAAsB,KACjClB,EAAKC,UACPkB,EAAkBrB,EAChBE,EAAKC,QACLa,EACAF,EACAzF,EACA0D,EACAC,EACAC,GAAAA,KAAAA,IASL,KACDkC,GACFG,qBAAqBH,GAEnBE,GACFA,GAAAA,CAAAA,GAGH,CAAC7C,KAGJ+C,EAAAA,EAAAA,kBAAgB,KACVT,EAAWG,IAAID,IAAaf,IAC9BC,EAAKC,QAAQe,UAAYjB,EAAAA,EAAAA,CACvBhF,UAAW6F,EAAWG,IAAID,GAC1B9F,SAAU4F,EAAWG,IAAID,GACzBxC,MAAAA,GACG1B,IAAAA,MAILiC,GAAAA,EAAc,CACZyB,WAAU,IAAC,MAEbxB,GAAAA,EAAS,CACPwB,WAAU,IAAC,GAGd,CAAChC,KAAAA,EAAAA,EAAAA,eAGiBG,EAAAA,EAAAA,CAAAA,EAChBU,EAAAA,CACHhE,MAAM,EAANA,CAAAA,EACK8D,EACA9D,EAAAA,CACHM,gBAAAA,IAEFiD,UAAcQ,GAASR,EAAAA,IAAgBA,EAAAA,IACvC4C,IAAKtB,EACLuB,wBAAyB,CACvBC,OAAQhC,GAEViC,0BAAyB,IAAC,KAIkCC,EAAAA,EAAAA,OAC9D,SAAqB9E,GACnB,OAAKA,EAAM0B,OASDqD,EAAAA,EAAAA,eAKWC,EAAqBhF,GAZ9B+E,IAAAA,IAgBhBE,EAAYlE,UAAYA,EACxBkE,EAAY/D,YAAAA,cAAAA,MAAAA,EAAAA,CAAAA,MAAAA,cAAAA,UAAAA,QAAAA,SAAAA,cAAAA,mBAAAA,cAAAA,UAAAA,UAAAA,mBAAAA,aAAAA,aAAAA,cAAAA,cAAAA,iBAAAA,cAAAA,wBAAAA,ECxL6C,SACvDlB,EACAsB,GAAAA,IAAAA,IAAAA,EAAAA,UAAAA,OACGG,EAAAA,IAAAA,MAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,UAAAA,GAAAA,MAAAA,cAGDzB,EAAMrB,QAAAA,UACL2C,GAAAA,WAAwBA,IACzBtB,EAAMsB,GAAAA,IAAAA,OAAAA,MAAAA,IAAAA,CAMgBtB,EAAOsB,GAAAA,OAAaG,IAAAA,IAAAA,MAAAA,IAHpCH,EAAAA,KAAatB,EAAMsB,GAAAA,+CAAAA,EAAAA,EAMR,IAAIM,IAAI,CAAC,QAAD,8BAEJ,CACvB9B,IAAKkB,IAAAA,OAAAA,WACLpB,IAAK+B,EACL/C,MAAOsG,EACPlH,OAAQkH,EACRzE,MAAOO,IAAAA,OACPrC,OAASqB,IACP,YAAIA,EAAMrB,SAGNwG,EAAahB,IAAInE,EAAMrB,QAI3B,OAAO,IAAIyG,MAAM,iBACEpF,EAAMrB,OAAAA,qHAAAA,GAAAA,GAhF3BsG,ECLgBI,EDOT,SAAP,OAA4BvF,IAC1BA,EACAwF,YAAaC,EAFaC,QAG1BA,GAAAA,EAmBGxF,EAAAA,EAAAA,EAAAA,GAMH,OAJIwF,GACFC,QAAQV,KAAKS,GAGXD,EAAAA,EAAAA,cACMN,EAAAA,EAAAA,CAAYvD,MAAO6D,GAAevF,KAE5CyF,QAAQV,KAAK,mBAAoBjF,GAEvBiF,KAAAA,GA6CepG,IAhF3BsG,ECHFS,EAAYxE,YAAAA,cACZwE,EAAY3E,UAAYA,2KC2BxB,MAxCuB4E,IAAkB,IAAjB,QAAEC,GAAS,EACjC,OACEjG,EAAAA,cAACkG,EAAAA,EAAS,KACRlG,EAAAA,cAACmG,EAAAA,EAAG,KACDF,EAAQG,YAAYC,KACnBrG,EAAAA,cAACsG,EAAAA,EAAG,CAACC,GAAG,IAAIC,GAAG,KAAK5H,MAAO,CAAE6H,UAAW,SAAU3G,SAAU,UAC1DE,EAAAA,cAAC0G,EAAAA,KAAI,CAACC,GAAIV,EAAQW,OAAOC,MACvB7G,EAAAA,cAACsF,EAAAA,EAAW,CACVvD,MAAOkE,EAAQG,YAAYC,IAAIS,gBAAgBC,gBAC/C9G,IAAI,6BAMZD,EAAAA,cAACsG,EAAAA,EAAG,CAACC,GAAG,IAAIC,GAAG,MACbxG,EAAAA,cAAAA,MAAAA,KACEA,EAAAA,cAAAA,IAAAA,KACEA,EAAAA,cAAC0G,EAAAA,KAAI,CAACC,GAAIV,EAAQW,OAAOC,MACvB7G,EAAAA,cAAAA,SAAAA,KAASiG,EAAQG,YAAYY,QAIhCf,EAAQG,YAAYa,cACnBjH,EAAAA,cAAAA,IAAAA,KAAAA,WACW,IACTA,EAAAA,cAAAA,IAAAA,CACEkH,KAAI,uBAAyBjB,EAAQG,YAAYa,cAAe,IAC5DhB,EAAQG,YAAYa,gBAKhCjH,EAAAA,cAAAA,MAAAA,CAAKmC,UAAU,cAAc6C,wBAAyB,CAAEC,OAAQgB,EAAQkB,UAGlE,EC9BhB,MAAMC,EAAkBpB,IAAAA,IAAC,YAAEqB,GAAa,SACtCrH,EAAAA,cAAAA,OAAAA,CAAMmC,UAAU,QAAM,MAChB,IACHmF,EAAAA,IAAc,KAAdA,CACCD,EAAYxK,KAAKoJ,GACfjG,EAAAA,cAAC0G,EAAAA,KAAI,CAACxF,IAAK+E,EAAQW,OAAOC,KAAMF,GAAIV,EAAQW,OAAOC,MAChDZ,EAAQG,YAAYY,SAItB,EAGHO,EAAeC,IAAmB,IAAlB,SAAEC,GAAU,EAChC,MAAM,YAAErB,GAAgBqB,EAExB,OACEzH,EAAAA,cAAC0G,EAAAA,KAAI,CAACC,GAAIc,EAASb,OAAOC,MACxB7G,EAAAA,cAAAA,UAAAA,KACGoG,EAAYY,KACbhH,EAAAA,cAAAA,KAAAA,MACCoG,EAAYsB,MACX1H,EAAAA,cAAAA,EAAAA,SAAAA,KACGoG,EAAYsB,KACb1H,EAAAA,cAAAA,KAAAA,OAGAoG,EAAYuB,OAAM,IAAIvB,EAAYwB,OACtC5H,EAAAA,cAAAA,KAAAA,MACIoG,EAAYyB,IAAG,IAAIzB,EAAY0B,KACnC9H,EAAAA,cAAAA,KAAAA,OAEG,EAIL+H,EAAWC,IAAe,IAAd,KAAEC,GAAM,EACxB,OAAIA,EAEAjI,EAAAA,cAAAA,EAAAA,SAAAA,KACGsH,EAAAA,IAAc,KAAdA,CACCW,EAAKpL,KAAKqL,GACRlI,EAAAA,cAAC0G,EAAAA,KAAI,CAACxF,IAAKgH,EAAKvB,GAAE,UAAYuB,GAC5BlI,EAAAA,cAACmI,EAAAA,EAAe,CAACC,KAAMC,EAAAA,MAAS,IAAEH,OAOrC,IACT,EAGII,EAAWC,IAAkC,IAAjC,KAAEC,EAAI,kBAAEC,GAAmB,EAC3C,OAAIA,EAEAzI,EAAAA,cAAAA,KAAAA,KACEA,EAAAA,cAAC0G,EAAAA,KAAI,CAACC,GAAI6B,EAAK5B,OAAOC,MAAO2B,EAAKpC,YAAYsC,QAI3C1I,EAAAA,cAAAA,KAAAA,KAAKwI,EAAKpC,YAAYsC,MAC/B,EAmDF,MAhDoBC,IAAAA,IAAAA,EAAAA,EAAAA,IAAC,KAAEH,EAAI,YAAEnB,EAAW,SAAEI,EAAQ,kBAAEgB,GAAmB,SACrEzI,EAAAA,cAAAA,EAAAA,SAAAA,KACEA,EAAAA,cAACsI,EAAQ,CAACE,KAAMA,EAAMC,kBAAmBA,IACzCzI,EAAAA,cAACoH,EAAe,CAACC,YAAaA,IAAe,OAAIuB,EAAAA,EAAAA,GAAWJ,EAAKpC,YAAYyC,MAC7E7I,EAAAA,cAAAA,IAAAA,KACEA,EAAAA,cAAC+H,EAAQ,CAACE,KAAMO,EAAKpC,YAAY6B,QAEnCjI,EAAAA,cAAAA,UAAAA,CAASmC,UAAU,gBACjBnC,EAAAA,cAAAA,MAAAA,CAAKgF,wBAAyB,CAAEC,OAAQuD,EAAKrB,QAE5CqB,EAAKpC,YAAY0C,QAChB9I,EAAAA,cAAC0G,EAAAA,KAAI,CAACC,GAAE,YAAc6B,EAAKpC,YAAY0C,OAAOhC,gBAAgBiC,IAC5D/I,EAAAA,cAACsF,EAAAA,EAAW,CACVoD,MAAOF,EAAKpC,YAAY4C,WACxB/I,IAAgC,QAA7B,EAAEuI,EAAKpC,YAAY4C,kBAAU,+BAA2BR,EAAKpC,YAAYsC,MAAK,IACjF3G,MAAOyG,EAAKpC,YAAY0C,OAAOhC,gBAAgBC,mBAKrD/G,EAAAA,cAAAA,KAAAA,MAECqH,EAAYxK,KAAKoJ,GAChBjG,EAAAA,cAACiJ,EAAc,CAAC/H,IAAK+E,EAAQ8C,GAAI9C,QAASA,MAG5CjG,EAAAA,cAAAA,KAAAA,MAEAA,EAAAA,cAAAA,MAAAA,KACEA,EAAAA,cAAAA,IAAAA,KAAAA,WACU4I,EAAAA,EAAAA,GAAWJ,EAAKpC,YAAYyC,MAAK,MAA4B,QAA5B,EAAOL,EAAKpC,YAAY8C,YAAI,QAAI,SAAO,QAEjFV,EAAKpC,YAAY+C,QAChBnJ,EAAAA,cAAAA,EAAAA,SAAAA,KAAAA,wDAEAA,EAAAA,cAAAA,EAAAA,SAAAA,KAAAA,QAAQyH,EAAWzH,EAAAA,cAACuH,EAAY,CAACE,SAAUA,IAAezH,EAAAA,cAAAA,OAAAA,KAAAA,+BAI9DA,EAAAA,cAAAA,KAAAA,MACAA,EAAAA,cAAAA,IAAAA,KAAAA,oCACmCA,EAAAA,cAAAA,IAAAA,KAAAA,2BAA8B,OAAK,IACpEA,EAAAA,cAAAA,IAAAA,CAAGkH,KAAK,uBAAqB,gBAAiB,mBAGjD,mECxHLkC,IAAAA,OAAc,MAId,IAFoBP,GAASO,IAAOP,GAAMtK,OAAO,6BCKzC,SAAW6K,GAAU,aAIzB,SAASC,EAAoBzB,EAAQ0B,EAAepI,EAAKqI,GACrD,IAAIhL,EAAS,CACTN,EAAG,CAAC,cAAe,gBACnBuL,EAAG,CAAC,cAAe,gBACnBC,EAAG,CAAC,UAAW,aACfC,GAAI,CAAC9B,EAAS,QAASA,EAAS,UAChC+B,EAAG,CAAC,aAAc,eAClBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACjC,EAAS,UAAWA,EAAS,YAClCkC,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACnC,EAAS,SAAUA,EAAS,YAErC,OAAO0B,EAAgB/K,EAAO2C,GAAK,GAAK3C,EAAO2C,GAAK,EACxD,CAESkI,EAAOY,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFC,MACzF,KAEJC,YACI,6DAA6DD,MAAM,KACvEE,kBAAkB,EAClBC,SACI,8DAA8DH,MAC1D,KAERI,cAAe,8BAA8BJ,MAAM,KACnDK,YAAa,uBAAuBL,MAAM,KAC1CM,oBAAoB,EACpBC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTC,SAAU,IACVC,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN5K,EAAG,oBACH6K,GAAI,cACJzN,EAAGoL,EACHsC,GAAI,aACJnC,EAAGH,EACHuC,GAAI,aACJnC,EAAGJ,EACHK,GAAIL,EACJM,EAAGN,EACHwC,GAAI,YACJjC,EAAGP,EACHQ,GAAIR,EACJS,EAAGT,EACHU,GAAIV,GAERyC,uBAAwB,YACxBC,QAAS,MACTC,KAAM,CACFC,IAAK,EACLC,IAAK,IAMhB,CAhFyCC,CAAQ,EAAQ","sources":["webpack://jug-goerlitz/./node_modules/camelcase/index.js","webpack://jug-goerlitz/../src/image-utils.ts","webpack://jug-goerlitz/../src/components/hooks.ts","webpack://jug-goerlitz/../src/components/layout-wrapper.tsx","webpack://jug-goerlitz/../src/components/picture.tsx","webpack://jug-goerlitz/../src/components/placeholder.tsx","webpack://jug-goerlitz/../src/components/main-image.tsx","webpack://jug-goerlitz/../src/components/gatsby-image.server.tsx","webpack://jug-goerlitz/../src/components/gatsby-image.browser.tsx","webpack://jug-goerlitz/../src/components/static-image.server.tsx","webpack://jug-goerlitz/../src/components/static-image.tsx","webpack://jug-goerlitz/./src/components/speaker-profile.tsx","webpack://jug-goerlitz/./src/components/talk-content.tsx","webpack://jug-goerlitz/./src/utils/format-date.ts","webpack://jug-goerlitz/./node_modules/moment/locale/de.js"],"sourcesContent":["'use strict';\n\nconst preserveCamelCase = string => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = Object.assign({\n\t\tpascalCase: false\n\t}, options);\n\n\tconst postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n\t}\n\n\tconst hasUpperCase = input !== input.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input);\n\t}\n\n\tinput = input\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase())\n\t\t.replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n\n\treturn postProcess(input);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","import camelCase from \"camelcase\"\nimport type { IGatsbyImageData } from \"./index\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n outputPixelDensities?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.slice(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(`\nThe requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* global GATSBY___IMAGE */\nimport { generateImageData, EVERY_BREAKPOINT } from \"../image-utils\"\nimport type { CSSProperties, HTMLAttributes, ImgHTMLAttributes } from \"react\"\nimport type { Node } from \"gatsby\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport type {\n IGatsbyImageHelperArgs,\n Layout,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent = T & {\n gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Partial & {\n childImageSharp?: IGatsbyImageDataParent>\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageParent | any\n): node is IGatsbyImageParent => Boolean(node?.gatsbyImage)\n\nexport type ImageDataLike =\n | FileNode\n | IGatsbyImageDataParent\n | IGatsbyImageParent\n | IGatsbyImageData\n\nexport const getImage = (\n node: ImageDataLike | null\n): IGatsbyImageData | undefined => {\n // This checks both for gatsbyImageData and gatsbyImage\n if (isGatsbyImageData(node)) {\n return node\n }\n // gatsbyImageData GraphQL field\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n // gatsbyImage GraphQL field for Gatsby's Image CDN service\n if (isGatsbyImageParent(node)) {\n return node.gatsbyImage\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n style: CSSProperties = {}\n): Partial {\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","import React, { Fragment, FunctionComponent, PropsWithChildren } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer = ``\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent<\n PropsWithChildren\n> = function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {SERVER ? : null}\n \n )\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture: React.FC = function Picture({\n fallback,\n sources = [],\n shouldLoad = true,\n ...props\n}) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage: React.FC = function MainImage(props) {\n return (\n <>\n \n \n \n )\n}\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React from \"react\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\nimport type { FunctionComponent, WeakValidationMap } from \"react\"\nimport type { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as = `div`,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n\n if (preactClass) {\n className = preactClass\n }\n\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return React.createElement(\n as,\n {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n },\n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n imgStyle\n )}\n />\n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n\n return PropTypes.string(props, propName, componentName, ...rest)\n}\n\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","import {\n createElement,\n memo,\n useMemo,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\"\nimport {\n getWrapperProps,\n gatsbyImageIsInstalled,\n hasNativeLazyLoadSupport,\n} from \"./hooks\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport type {\n FC,\n ElementType,\n FunctionComponent,\n ImgHTMLAttributes,\n CSSProperties,\n ReactEventHandler,\n} from \"react\"\nimport type { renderImageToString } from \"./lazy-hydrate\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { Layout } from \"../image-utils\"\n\nconst imageCache = new Set()\nlet renderImageToStringPromise\nlet renderImage: typeof renderImageToString | undefined\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: (props: { wasCached: boolean }) => void\n onError?: ReactEventHandler\n onStartLoad?: (props: { wasCached: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nconst GatsbyImageHydrator: FC = function GatsbyImageHydrator({\n as = `div`,\n image,\n style,\n backgroundColor,\n className,\n class: preactClass,\n onStartLoad,\n onLoad,\n onError,\n ...props\n}) {\n const { width, height, layout } = image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n const root = useRef()\n const cacheKey = useMemo(() => JSON.stringify(image.images), [image.images])\n\n // Preact uses class instead of className so we need to check for both\n if (preactClass) {\n className = preactClass\n }\n\n const sizer = getSizer(layout, width, height)\n\n useEffect(() => {\n if (!renderImageToStringPromise) {\n renderImageToStringPromise = import(`./lazy-hydrate`).then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n renderImage = renderImageToString\n\n return {\n renderImageToString,\n swapPlaceholderImage,\n }\n }\n )\n }\n\n // The plugin image component is a bit special where if it's server-side rendered, we add extra script tags to support lazy-loading without\n // In this case we stop hydration but fire the correct events.\n const ssrImage = root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n if (ssrImage && hasNativeLazyLoadSupport()) {\n if (ssrImage.complete) {\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n } else {\n onStartLoad?.({\n wasCached: true,\n })\n\n ssrImage.addEventListener(`load`, function onLoadListener() {\n ssrImage.removeEventListener(`load`, onLoadListener)\n\n onLoad?.({\n wasCached: true,\n })\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n })\n }\n\n imageCache.add(cacheKey)\n\n return\n }\n\n if (renderImage && imageCache.has(cacheKey)) {\n return\n }\n\n let animationFrame\n let cleanupCallback\n renderImageToStringPromise.then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n if (!root.current) {\n return\n }\n\n root.current.innerHTML = renderImageToString({\n isLoading: true,\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n if (!imageCache.has(cacheKey)) {\n animationFrame = requestAnimationFrame(() => {\n if (root.current) {\n cleanupCallback = swapPlaceholderImage(\n root.current,\n cacheKey,\n imageCache,\n style,\n onStartLoad,\n onLoad,\n onError\n )\n }\n })\n }\n }\n )\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n if (cleanupCallback) {\n cleanupCallback()\n }\n }\n }, [image])\n\n // useLayoutEffect is ran before React commits to the DOM. This allows us to make sure our HTML is using our cached image version\n useLayoutEffect(() => {\n if (imageCache.has(cacheKey) && renderImage) {\n root.current.innerHTML = renderImage({\n isLoading: imageCache.has(cacheKey),\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n }\n }, [image])\n\n // By keeping all props equal React will keep the component in the DOM\n return createElement(as, {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n ref: root,\n dangerouslySetInnerHTML: {\n __html: sizer,\n },\n suppressHydrationWarning: true,\n })\n}\n\nexport const GatsbyImage: FunctionComponent = memo(\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n\n return createElement(GatsbyImageHydrator, props)\n }\n)\n\nGatsbyImage.propTypes = propTypes\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n breakpoints,\n outputPixelDensities,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import React from \"react\"\nimport { Link } from \"gatsby\"\n\nimport { GatsbyImage } from \"gatsby-plugin-image\"\n\nimport { Container, Col, Row } from \"reactstrap\"\n\nconst SpeakerProfile = ({ speaker }) => {\n return (\n \n \n {speaker.frontmatter.pic && (\n \n \n \n \n \n )}\n\n \n
\n

\n \n {speaker.frontmatter.name}\n \n

\n\n {speaker.frontmatter.twitter_name && (\n

\n Twitter:{\" \"}\n {`@${speaker.frontmatter.twitter_name}`}\n

\n )}\n
\n\n
\n \n \n \n )\n}\n\nexport default SpeakerProfile\n","import React from \"react\"\nimport formatDate from \"../utils/format-date\"\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\nimport { faTag } from \"@fortawesome/free-solid-svg-icons\"\n\nimport { Link } from \"gatsby\"\n\nimport * as R from \"ramda\"\nimport SpeakerProfile from \"./speaker-profile\"\n\nimport { GatsbyImage } from \"gatsby-plugin-image\"\n\nconst SpeakerHeadline = ({ speakerList }) => (\n \n von{\" \"}\n {R.intersperse(\", \")(\n speakerList.map((speaker) => (\n \n {speaker.frontmatter.name}\n \n ))\n )}\n \n)\n\nconst LocationInfo = ({ location }) => {\n const { frontmatter } = location\n\n return (\n \n
\n {frontmatter.name}\n
\n {frontmatter.info && (\n <>\n {frontmatter.info}\n
\n \n )}\n {`${frontmatter.street} ${frontmatter.number}`}\n
\n {`${frontmatter.zip} ${frontmatter.city}`}\n
\n
\n \n )\n}\n\nconst TagsLine = ({ tags }) => {\n if (tags) {\n return (\n <>\n {R.intersperse(\", \")(\n tags.map((tag) => (\n \n {tag}\n \n ))\n )}\n \n )\n } else {\n return null\n }\n}\n\nconst Headline = ({ talk, linkToDetailsPage }) => {\n if (linkToDetailsPage) {\n return (\n

\n {talk.frontmatter.title}\n

\n )\n } else {\n return

{talk.frontmatter.title}

\n }\n}\n\nconst TalkContent = ({ talk, speakerList, location, linkToDetailsPage }) => (\n <>\n \n | {formatDate(talk.frontmatter.date)}\n

\n \n

\n
\n
\n\n {talk.frontmatter.poster && (\n \n \n \n )}\n\n
\n\n {speakerList.map((speaker) => (\n \n ))}\n\n
\n\n
\n

\n Datum: {formatDate(talk.frontmatter.date)}, {`${talk.frontmatter.time ?? \"19:00\"} Uhr`}\n

\n {talk.frontmatter.virtual ? (\n <>Das Treffen findet Online statt. Siehe Beschreibung.\n ) : (\n <>Ort: {location ? : wird noch bekannt gegeben}\n )}\n
\n\n
\n

\n Die Veranstaltung wird durch die Java User Group Görlitz (im{\" \"}\n iJUG Verband) organisiert.\n

\n
\n \n)\n\nexport default TalkContent\n","import moment from \"moment\"\n\nimport \"moment/locale/de\"\n\nmoment.locale(\"de\")\n\nconst formatDate = (date) => moment(date).format(\"LL\")\n\nexport default formatDate\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n"],"names":["camelCase","input","options","Array","isArray","TypeError","Object","assign","pascalCase","map","x","trim","filter","length","join","toUpperCase","toLowerCase","string","isLastCharLower","isLastCharUpper","isLastLastCharUpper","i","character","test","slice","preserveCamelCase","replace","_","p1","m","charAt","module","exports","height","prototype","format","isLoading","isLoaded","images","loading","style","shouldLoad","opacity","placeholder","layout","width","backgroundColor","objectFit","objectPosition","wrapperStyle","position","top","left","bottom","right","transition","sources","paddingTop","maxWidth","display","React","alt","role","src","children","props","Fragment","Sizer","srcSet","decoding","undefined","fallback","t","s","sizes","Image","media","type","key","fallbackImage","propTypes","PropTypes","Picture","displayName","isRequired","Placeholder","_Picture$propTypes","propName","componentName","MainImage","rest","image","altValidator","Set","as","className","class","preactClass","onStartLoad","onLoad","onError","overflow","wStyle","wClass","wrapperProps","useRef","useMemo","JSON","stringify","sizer","useEffect","renderImageToStringPromise","import","then","renderImageToString","swapPlaceholderImage","renderImage","root","current","querySelector","ssrImage","hasNativeLazyLoadSupport","complete","wasCached","setTimeout","removeAttribute","addEventListener","removeEventListener","onLoadListener","imageCache","add","cacheKey","has","innerHTML","animationFrame","requestAnimationFrame","cleanupCallback","cancelAnimationFrame","useLayoutEffect","ref","dangerouslySetInnerHTML","__html","suppressHydrationWarning","memo","warn","GatsbyImageHydrator","GatsbyImage","checkDimensionProps","validLayouts","Error","GatsbyImageBrowser","__imageData","imageData","__error","console","StaticImage","_ref","speaker","Container","Row","frontmatter","pic","Col","sm","xs","textAlign","Link","to","fields","slug","childImageSharp","gatsbyImageData","name","twitter_name","href","html","SpeakerHeadline","speakerList","R","LocationInfo","_ref2","location","info","street","number","zip","city","TagsLine","_ref3","tags","tag","FontAwesomeIcon","icon","faTag","Headline","_ref4","talk","linkToDetailsPage","title","_ref5","formatDate","date","poster","id","poster_alt","SpeakerProfile","time","virtual","moment","processRelativeTime","withoutSuffix","isFuture","h","d","dd","w","M","MM","y","yy","defineLocale","months","split","monthsShort","monthsParseExact","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","sameElse","nextDay","nextWeek","lastDay","lastWeek","relativeTime","future","past","ss","mm","hh","ww","dayOfMonthOrdinalParse","ordinal","week","dow","doy","factory"],"sourceRoot":""} \ No newline at end of file diff --git a/datenschutz/index.html b/datenschutz/index.html index 854e000a2..26ec9955b 100644 --- a/datenschutz/index.html +++ b/datenschutz/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/debug/index.html b/debug/index.html index f93348e10..816ae2a43 100644 --- a/debug/index.html +++ b/debug/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/debug/redirects/index.html b/debug/redirects/index.html index 06c0334b3..8193777f8 100644 --- a/debug/redirects/index.html +++ b/debug/redirects/index.html @@ -9,4 +9,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/feed.json b/feed.json index 2be9b44c0..9d1127a10 100644 --- a/feed.json +++ b/feed.json @@ -21,11 +21,11 @@ "date_modified": "2023-10-25T00:00:00.000Z" }, { - "id": "https://jug-gr.de/talks/2023-09-27-kollaborative-anwendungen/", - "content_html": "

Wie funktionieren eigentlich kollaborative Web-Anwendungen, bei denen mehrere Leute gleichzeitig an den gleichen\nDokumenten arbeiten können? Live-Kollaboration bieten Anwendungen wie Google-Docs schon seit Langem. Das Verfahren,\nwelches hier zum Einsatz kommt, setzt aber immer einen zentralen Server voraus, was für die Anwender*innen auch\nNachteile mit sich bringt.

\n

Eine moderne Alternative können so genannte \"Conflict-Free Replicated DataTypes\", kurz CRDT sein. Anwendungen auf dieser\nBasis können prinzipiell auch ohne eine zentrale Instanz auskommen. Im Vortrag wollen wir uns die verschiedenen\nVarianten anschauen und sehen, wie sich damit Anwendungen bauen lassen, die moderne Annehmlichkeiten wie\nLive-Kollaboration, Synchronisierung zwischen Geräten und Offline-Fähigkeit bieten, ohne dabei zwingend auf eine\nzentrale Cloud angewiesen zu sein.

", - "url": "https://jug-gr.de/talks/2023-09-27-kollaborative-anwendungen/", - "title": "Kollaborative Anwendungen und 'local first apps'", - "summary": "\n

Kollaborative Anwendungen und 'local first apps'

\n

Date: September 27, 2023, 19:00 Uhr

\n

Speakers: Manuel Mauky

\n

Location:

\n
\n Carl Zeiss Digital Innovation\n
\n Berliner Straße 63\n
\n 02826 Görlitz\n
\n ", + "id": "https://jug-gr.de/talks/2023-09-27-virtual-threads/", + "content_html": "

In September 2023 the latest version of JDK 21 will be officially released. During this lecture we will look into most\nimportant changes in Java Development Kit and their impact on everyday use of the Java Language. In particular, we will\ndive into performance impact of virtual threads and their comparison to existing solutions, the further improvements in\nrecently introduced record objects and also look into the future plans for Java.

", + "url": "https://jug-gr.de/talks/2023-09-27-virtual-threads/", + "title": "Java 21: Virtual Threads - Why should I care?", + "summary": "\n

Java 21: Virtual Threads - Why should I care?

\n

Date: September 27, 2023, 19:00 Uhr

\n

Speakers: Patryk Lewandowski

\n

Location:

\n
\n Carl Zeiss Digital Innovation\n
\n Berliner Straße 63\n
\n 02826 Görlitz\n
\n ", "date_modified": "2023-09-27T00:00:00.000Z" }, { diff --git a/impressum/index.html b/impressum/index.html index 2ef9c3377..087fb1f5b 100644 --- a/impressum/index.html +++ b/impressum/index.html @@ -359,4 +359,4 @@

Kontakt:

> window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/index.html b/index.html index 51f44a3a9..0aca6cd8a 100644 --- a/index.html +++ b/index.html @@ -344,21 +344,13 @@ overflow: visible; position: static; width: auto; } -

Kollaborative Anwendungen und 'local first apps'

von Manuel Mauky | 27. September 2023

Wie funktionieren eigentlich kollaborative Web-Anwendungen, bei denen mehrere Leute gleichzeitig an den gleichen -Dokumenten arbeiten können? Live-Kollaboration bieten Anwendungen wie Google-Docs schon seit Langem. Das Verfahren, -welches hier zum Einsatz kommt, setzt aber immer einen zentralen Server voraus, was für die Anwender*innen auch -Nachteile mit sich bringt.

-

Eine moderne Alternative können so genannte "Conflict-Free Replicated DataTypes", kurz CRDT sein. Anwendungen auf dieser -Basis können prinzipiell auch ohne eine zentrale Instanz auskommen. Im Vortrag wollen wir uns die verschiedenen -Varianten anschauen und sehen, wie sich damit Anwendungen bauen lassen, die moderne Annehmlichkeiten wie -Live-Kollaboration, Synchronisierung zwischen Geräten und Offline-Fähigkeit bieten, ohne dabei zwingend auf eine -zentrale Cloud angewiesen zu sein.


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten -der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale -Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz -und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.



Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+

Java 21: Virtual Threads - Why should I care?

von Patryk Lewandowski | 27. September 2023

In September 2023 the latest version of JDK 21 will be officially released. During this lecture we will look into most +important changes in Java Development Kit and their impact on everyday use of the Java Language. In particular, we will +dive into performance impact of virtual threads and their comparison to existing solutions, the further improvements in +recently introduced record objects and also look into the future plans for Java.




Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/jug-goerlitz.ics b/jug-goerlitz.ics index 13669babb..35910b102 100644 --- a/jug-goerlitz.ics +++ b/jug-goerlitz.ics @@ -7,9 +7,9 @@ X-WR-CALNAME:JUG Görlitz TIMEZONE-ID:Europe/Berlin X-WR-TIMEZONE:Europe/Berlin BEGIN:VEVENT -UID:1fa1fb43-ca12-4c2d-abec-465354613192 +UID:9254c43e-4203-47db-a434-4179eb89be17 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20231129T190000 DTEND;TZID=Europe/Berlin:20231129T220000 SUMMARY:Vortrag "What the CRaC - Superfast JVM startup" - Gerrit Grundwald @@ -38,9 +38,9 @@ X-ALT-DESC;FMTTYPE=text/html:

In einer Welt\, in der Microservices mehr ierung.

END:VEVENT BEGIN:VEVENT -UID:6aadd419-cc69-47e6-8afc-8c001f625dcd +UID:cd2062d3-b800-4b3e-882c-42d959525230 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20231025T190000 DTEND;TZID=Europe/Berlin:20231025T220000 SUMMARY:Vortrag "AWS-Infrastruktur mit Java erstellen - CDK in Action" - D @@ -76,36 +76,30 @@ X-ALT-DESC;FMTTYPE=text/html:

Heutzutage gibt es viele Möglichkeiten\, nn.

END:VEVENT BEGIN:VEVENT -UID:027f70f4-9d5a-4094-8abc-1e56ccb15728 +UID:03e1c21f-4444-4c75-a73e-7363a399d376 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20230927T190000 DTEND;TZID=Europe/Berlin:20230927T220000 -SUMMARY:Vortrag "Kollaborative Anwendungen und 'local first apps'" - Manue - l Mauky +SUMMARY:Vortrag "Java 21: Virtual Threads - Why should I care?" - Patryk L + ewandowski LOCATION:Carl Zeiss Digital Innovation\nBerliner Straße 63\,02826 Görlit z -DESCRIPTION:Wie funktionieren eigentlich kollaborative Web-Anwendungen\, b - ei denen mehrere Leute gleichzeitig an den gleichen\nDokumenten arbeiten k - önnen… -X-ALT-DESC;FMTTYPE=text/html:

Wie funktionieren eigentlich kollaborative - Web-Anwendungen\, bei denen mehrere Leute gleichzeitig an den gleichen\nD - okumenten arbeiten können? Live-Kollaboration bieten Anwendungen wie Goog - le-Docs schon seit Langem. Das Verfahren\,\nwelches hier zum Einsatz kommt - \, setzt aber immer einen zentralen Server voraus\, was für die Anwender* - innen auch\nNachteile mit sich bringt.

\n

Eine moderne Alternative k - önnen so genannte "Conflict-Free Replicated DataTypes"\, kurz CRDT sein. - Anwendungen auf dieser\nBasis können prinzipiell auch ohne eine zentrale - Instanz auskommen. Im Vortrag wollen wir uns die verschiedenen\nVarianten - anschauen und sehen\, wie sich damit Anwendungen bauen lassen\, die modern - e Annehmlichkeiten wie\nLive-Kollaboration\, Synchronisierung zwischen Ger - äten und Offline-Fähigkeit bieten\, ohne dabei zwingend auf eine\nzentra - le Cloud angewiesen zu sein.

-END:VEVENT -BEGIN:VEVENT -UID:1dd37e9e-331f-4c0e-bb5b-0888787f377d -SEQUENCE:0 -DTSTAMP:20230907T070548 +DESCRIPTION:In September 2023 the latest version of JDK 21 will be officia + lly released. During this lecture we will look into most\nimportant change + s in… +X-ALT-DESC;FMTTYPE=text/html:

In September 2023 the latest version of JD + K 21 will be officially released. During this lecture we will look into mo + st\nimportant changes in Java Development Kit and their impact on everyday + use of the Java Language. In particular\, we will\ndive into performance + impact of virtual threads and their comparison to existing solutions\, the + further improvements in\nrecently introduced record objects and also look + into the future plans for Java.

+END:VEVENT +BEGIN:VEVENT +UID:1ef2b5d9-99ce-42da-96b0-6d2ff13dfb96 +SEQUENCE:0 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20230628T190000 DTEND;TZID=Europe/Berlin:20230628T220000 SUMMARY:Vortrag "GraalVM 23 – Konzepte und Features" - Wolfgang Weigend @@ -133,9 +127,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die GraalVM ist eine Virtuelle Maschine (V ng Boot und Microservices-Frameworks verwendet werden.

END:VEVENT BEGIN:VEVENT -UID:cc6cb7a0-4460-40fd-9580-968bf149af57 +UID:efaad48c-11e8-4e65-afaf-57558047ee01 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20230531T190000 DTEND;TZID=Europe/Berlin:20230531T220000 SUMMARY:Vortrag "Accessibility in the Wild" - Dániel Sulyok @@ -154,9 +148,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Dániel Sulyok von der Tallence AG stellt gr_a11y.pdf">Folien zum Vortrag\n END:VEVENT BEGIN:VEVENT -UID:498f09c1-a70b-4420-819c-4485e5a6239e +UID:496b5fd4-82ab-4fb3-b491-9c2e4101c2c2 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20230426T190000 DTEND;TZID=Europe/Berlin:20230426T220000 SUMMARY:Vortrag "ArchUnit: Unit-Tests für deine Java-Architektur" - Rolan @@ -177,9 +171,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Architektur und Code driften immer weiter rekt im Code abbilden können.

END:VEVENT BEGIN:VEVENT -UID:ab6deabe-3cf7-4e7a-b375-02947fed70d6 +UID:70fdd027-363d-4286-9d3a-ccc08d5327dd SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20230329T183000 DTEND;TZID=Europe/Berlin:20230329T213000 SUMMARY:Vortrag "Spring für architekturinteressierte Entwickler:innen" - @@ -214,9 +208,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die Architektur und das Design einer Appli te der Digitalen Oberlausitz e. V. nachlesen.

END:VEVENT BEGIN:VEVENT -UID:132d7a87-280f-42c7-8aef-b10f7a78049c +UID:6e418282-65be-4889-93ac-41c2270c09fd SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20230222T190000 DTEND;TZID=Europe/Berlin:20230222T220000 SUMMARY:Vortrag "Exception First – Stabilisiere deinen Code mit mehr Exc @@ -243,9 +237,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Fehler sind ein fester Bestandteil unserer nst.

END:VEVENT BEGIN:VEVENT -UID:ba57d191-8b46-45d4-9bc5-b9eba909cb4f +UID:f6368aad-312b-4ce3-a52f-ad993429b9de SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20230125T190000 DTEND;TZID=Europe/Berlin:20230125T220000 SUMMARY:Vortrag "Content Management neu gedacht mit Contentlab" - Markus W @@ -264,9 +258,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die Mehrheit aktueller Content Management Instanz zum Verwalten von Veranstaltungen.

END:VEVENT BEGIN:VEVENT -UID:2031a792-041b-4750-bece-9a0e21b8ff15 +UID:ee1e5838-1c45-47d1-8074-65a3f70dfd64 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20221130T190000 DTEND;TZID=Europe/Berlin:20221130T220000 SUMMARY:Vortrag "Kundenspezifisches IAM mit Keycloak" - Daniel Fesenmeyer @@ -285,9 +279,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Keycloak ist ein Open Source IAM (Identity en.

END:VEVENT BEGIN:VEVENT -UID:2161730f-e089-45d7-bd0b-c4e720af9ad8 +UID:043a6446-f87b-43e6-8e6c-6221da9f4fad SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20221012T190000 DTEND;TZID=Europe/Berlin:20221012T220000 SUMMARY:Vortrag "Industrie 4.0? Das JUGt mich!" - Marco Gotthans @@ -360,9 +354,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Mit der fischertechnik Lernfabrik gung\, die nicht überschritten werden darf.

END:VEVENT BEGIN:VEVENT -UID:b4fa132d-13f5-44ac-b393-67f5c9813bc5 +UID:570c6559-fc93-4442-a4c6-f6643b78b5f6 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20220622T190000 DTEND;TZID=Europe/Berlin:20220622T220000 SUMMARY:Vortrag "Hebe deine IoT-Infrastruktur auf das Serverless-Level an" @@ -387,9 +381,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die Persistenz von IoT Daten sowie die Ste ten werden darf.

END:VEVENT BEGIN:VEVENT -UID:055dd2c4-b9da-47c1-9560-a61202d56d46 +UID:13c18f25-b535-4645-b7d5-06aef4847b32 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20210630T190000 DTEND;TZID=Europe/Berlin:20210630T220000 SUMMARY:Vortrag "Ultraschnelle Java In-Memory Datenbank-Anwendungen & Micr @@ -430,9 +424,9 @@ X-ALT-DESC;FMTTYPE=text/html:

MicroStream ist ein fundamental neues Pers oberlausitz.eu/jug

END:VEVENT BEGIN:VEVENT -UID:c8ab8989-4f01-4332-a104-3b7ad6391cb4 +UID:d0a56e28-1b93-4120-81d7-f15b81842633 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20210127T190000 DTEND;TZID=Europe/Berlin:20210127T220000 SUMMARY:Vortrag "Web Components" - Manuel Mauky @@ -453,9 +447,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Web-Components sind eine Möglichkeit\, au tz.eu/jug">https://meet.digitale-oberlausitz.eu/jug

END:VEVENT BEGIN:VEVENT -UID:7c249588-3a1b-4080-b321-3fc53b5ba019 +UID:f58160e2-7792-474f-b86c-8abaf9de27e7 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20201125T190000 DTEND;TZID=Europe/Berlin:20201125T220000 SUMMARY:Vortrag "Java Secure Coding in der Praxis" - Nico Förster @@ -478,9 +472,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Durch die Veröffentlichung von immer neue ale-oberlausitz.eu/jug

END:VEVENT BEGIN:VEVENT -UID:e6c2d074-9c2f-4581-9506-bce93c7eabdb +UID:500d0264-470b-4c27-8478-298dc617e4fb SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20200722T190000 DTEND;TZID=Europe/Berlin:20200722T220000 SUMMARY:Vortrag "Branching-Modelle" - Hannes Kretschmer @@ -505,9 +499,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Als Softwareentwickler ist man auf die Ver oberlausitz.eu/jug">https://meet.digitale-oberlausitz.eu/jug

END:VEVENT BEGIN:VEVENT -UID:24f63538-dce1-465b-9046-ac5f58541f23 +UID:310cd238-318a-4737-8522-68b625c1bf61 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20200429T180000 DTEND;TZID=Europe/Berlin:20200429T210000 SUMMARY:Vortrag "JDK 14 und GraalVM im Java Ökosystem" - Wolfgang Weigend @@ -540,9 +534,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Nach der Freigabe vom JDK 14 werden die ak ses Mal geht es schon 18:00 Uhr los.

END:VEVENT BEGIN:VEVENT -UID:9f171807-0abd-4472-b8d9-9b64f29276f3 +UID:8b109a54-2c82-430e-baa5-4c97f0a2e9bc SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20200129T190000 DTEND;TZID=Europe/Berlin:20200129T220000 SUMMARY:Vortrag "Innovationsmotor Cloud Foundry!?" - Simon Roloff @@ -557,9 +551,9 @@ X-ALT-DESC;FMTTYPE=text/html:

"Create Apps\, Not the Platform" - Cloud F Foundry überhaupt? Und hält sie\, was sie verspricht?

END:VEVENT BEGIN:VEVENT -UID:ebea8958-80a6-4d41-a084-96e2365714f0 +UID:ceedde20-3733-49f2-8eb9-a07f7c35e513 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20191128T190000 DTEND;TZID=Europe/Berlin:20191128T220000 SUMMARY:Vortrag "Advanced BDD Tests" - Maik Wagner @@ -573,9 +567,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Hattest du auch schon mal das Problem\, da en.

END:VEVENT BEGIN:VEVENT -UID:ce69a963-a0b4-45f7-aba2-1a412da0da88 +UID:0fd111af-1820-4317-825a-9cbecd487e43 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20190626T190000 DTEND;TZID=Europe/Berlin:20190626T220000 SUMMARY:Vortrag "Wie gut kennst Du das Collections Framework?" - Thilo Fro @@ -599,9 +593,9 @@ X-ALT-DESC;FMTTYPE=text/html:

HashMap und ArrayList kennt jeder\, na kla ions.pdf">Folien zum Vortrag\n END:VEVENT BEGIN:VEVENT -UID:9b2e3b53-02e6-42d4-a5e2-b9522cdfa6fb +UID:fa26521a-6df8-43c5-a57a-1f5e090e81e6 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20190529T190000 DTEND;TZID=Europe/Berlin:20190529T220000 SUMMARY:Vortrag "OAuth 2.0/OpenIDConnect mit Keycloak" - Denny Israel @@ -616,9 +610,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Der Vortrag erläutert zunächst die Grund Anwendung einbinden kann.

END:VEVENT BEGIN:VEVENT -UID:62e5550b-88d5-4cf4-8f77-870d6c276306 +UID:bed4404e-1863-4b9e-ab0c-d3a6573ba531 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20190424T190000 DTEND;TZID=Europe/Berlin:20190424T220000 SUMMARY:Vortrag "It's a JDK jungle out there - oder wie es mit den neuen J @@ -652,9 +646,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Mit dem JDK-Enhancement-Proposal (JEP 322)

END:VEVENT BEGIN:VEVENT -UID:e1cb67d4-7eaf-47a5-958c-d3c7fd9fbc1b +UID:26375104-7b86-4868-8c0e-371ef88ee7bf SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20190327T190000 DTEND;TZID=Europe/Berlin:20190327T220000 SUMMARY:Vortrag "Static-Site-Generators" - Manuel Mauky @@ -688,9 +682,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die Website der JUG Görlitz läuft fast < Folien zum Vortrag\n END:VEVENT BEGIN:VEVENT -UID:37943fd0-1f3f-431d-b108-652a364b2e74 +UID:dfd4ca8d-9ff8-4d93-88a7-c7648199283e SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20190227T190000 DTEND;TZID=Europe/Berlin:20190227T220000 SUMMARY:Vortrag "Java Reflection: Classes behind the scenes" - Erik Jähne @@ -711,9 +705,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Java Reflections sind ein Feature der Java ors werden diese Möglichkeiten in dem Vortrag näher\nbetrachtet.

END:VEVENT BEGIN:VEVENT -UID:bcbb62a8-7a06-4030-a36a-16f93afdb9f8 +UID:973c858a-008f-4ac8-873c-0d2a34b83264 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20190131T190000 DTEND;TZID=Europe/Berlin:20190131T220000 SUMMARY:Vortrag "Java APIs - the missing manual" - Hendrik Ebbers @@ -735,9 +729,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Anstelle über Microservices\, NO-SQL Lös hreibe\nich nebenläufigen Code der trotzdem wartbar ist?

END:VEVENT BEGIN:VEVENT -UID:6fbf4221-7613-48b4-9804-7a431656510c +UID:9c149bcc-3165-4edd-ac7b-90a87291279f SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20181123T190000 DTEND;TZID=Europe/Berlin:20181123T220000 SUMMARY:Vortrag "Monadische Transaktionen" - Gregor Trefs @@ -759,9 +753,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Spätestens seit Java 8 gibt es monadische adic_transactions.pdf">Folien zum Vortrag\n END:VEVENT BEGIN:VEVENT -UID:a8a728f2-3343-432a-87f5-eb1984a8326a +UID:9eb854bb-ade9-445e-9670-c210d4893545 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20180627T190000 DTEND;TZID=Europe/Berlin:20180627T220000 SUMMARY:Vortrag "Immutable Data - Unveränderliche Daten im Griff" - Manue @@ -790,9 +784,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Unveränderliche Datenstrukturen sind ein Vortrag\n END:VEVENT BEGIN:VEVENT -UID:d0baf798-5c6d-4b07-870d-f071747efbbe +UID:49c5950c-e9e1-4a88-9e35-2f437944a403 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20180530T190000 DTEND;TZID=Europe/Berlin:20180530T220000 SUMMARY:Vortrag "GraphQL" - Stephan Strehler @@ -817,9 +811,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die RESTful-Architektur ist eine etabliert \n END:VEVENT BEGIN:VEVENT -UID:1aeaff62-5b94-4e8e-8076-9147fb15c6aa +UID:6f0f46b7-70a7-47b7-a448-60dc9bbd88fc SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20180425T190000 DTEND;TZID=Europe/Berlin:20180425T220000 SUMMARY:Vortrag "Kotlin" - Tobias Blaschke @@ -841,9 +835,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die Ankündigung der Unterstützung von Ko >Code auf Github\n END:VEVENT BEGIN:VEVENT -UID:2862f545-5539-41bd-923b-14b2caa34631 +UID:dbf72c09-b203-498f-8e47-13b3480d75e1 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20180320T190000 DTEND;TZID=Europe/Berlin:20180320T220000 SUMMARY:Vortrag "Mikro- vs. Makroarchitektur – Spielraum und Spielregeln @@ -864,9 +858,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Während in einer klassischen Konzern-IT S und\nDomänenorientierung in das Entwurfsdoppel Makro und Mikro ein.

END:VEVENT BEGIN:VEVENT -UID:8bdad4f1-e711-4f56-ad36-c091cf846923 +UID:083d22cc-c54e-41cc-9d0b-a032409d2e24 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20180228T190000 DTEND;TZID=Europe/Berlin:20180228T220000 SUMMARY:Vortrag "Entwicklung von Java Applikationen auf der SAP Cloud Plat @@ -890,9 +884,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die SAP Cloud Platform (SCP) beschreibt ei zum Vortrag\n END:VEVENT BEGIN:VEVENT -UID:4ebaf38f-890a-4173-84f9-a6962f16a739 +UID:54a486fe-a30a-4be4-9fca-46a487b729d7 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20180131T190000 DTEND;TZID=Europe/Berlin:20180131T220000 SUMMARY:Vortrag "Refactoring to a System of Systems" - Oliver Drotbohm @@ -916,9 +910,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Beim Bauen monolithischer Systeme nutzen E -to-a-system-of-systems">Folien zum Vortrag\n END:VEVENT BEGIN:VEVENT -UID:dc33c209-b8c3-4049-825b-329e361c3087 +UID:dd935d24-a487-4826-84f7-1e0fb5fd0db9 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20171129T190000 DTEND;TZID=Europe/Berlin:20171129T220000 SUMMARY:Vortrag "Neo4j: Panama Papers" - Michael Hunger @@ -936,9 +930,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Im letzten Jahr waren die Panama Papers in tlich verfügbar sind\, kann jetzt jeder zum Journalisten werden.

END:VEVENT BEGIN:VEVENT -UID:eda0eeab-0af4-4068-9038-cf4395a3f3d8 +UID:a662768e-bfb6-463a-811c-e83f1aaa9757 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20171025T190000 DTEND;TZID=Europe/Berlin:20171025T220000 SUMMARY:Vortrag "Serverless Application - Who the heck needs a Server?" - @@ -963,9 +957,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Kaum haben wir uns von dem klassischen Mon Media GmbH.

END:VEVENT BEGIN:VEVENT -UID:93d6aa3b-437b-4ac2-95cf-2e4238c8ebf6 +UID:43bc9305-1a69-4352-8752-df35205bc650 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20170830T190000 DTEND;TZID=Europe/Berlin:20170830T220000 SUMMARY:Vortrag "Spracherkennung mit Amazon Alexa" - Andre Tepper\, Maik W @@ -983,9 +977,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Amazon Alexa ist eine Smart-Home-Technolog > END:VEVENT BEGIN:VEVENT -UID:ab7ebca3-8518-47de-8db1-e61f7b582a26 +UID:dde9874e-6df6-4a6f-a2a8-ac883a44abf4 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20170531T190000 DTEND;TZID=Europe/Berlin:20170531T220000 SUMMARY:Vortrag "React und React-Native: Functional UI Development für Br @@ -1010,9 +1004,9 @@ X-ALT-DESC;FMTTYPE=text/html:

React ist eine von Facebook entwickelte Ja ammierung eingehen\, die React\nmeines Erachtens so besonders machen.

END:VEVENT BEGIN:VEVENT -UID:24df28ce-2171-4a96-ad9a-381c000b2962 +UID:6ea9126b-e7b2-46a8-ad96-e0ff9abc3422 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20170425T190000 DTEND;TZID=Europe/Berlin:20170425T220000 SUMMARY:Vortrag "JDK 9" - Wolfgang Weigend @@ -1045,9 +1039,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Nach der Ausdehnung vom JDK 9 Feature-Comp /a>\n END:VEVENT BEGIN:VEVENT -UID:5651272c-9dac-4153-8385-27765ced0ba9 +UID:af3620c1-0520-4d46-bd00-993df4a56ef6 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20170322T190000 DTEND;TZID=Europe/Berlin:20170322T220000 SUMMARY:Vortrag "Angular 2 für Java Entwickler" - Sven Hoffmann @@ -1070,9 +1064,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Mit Angular bietet Google ein komponenten- downloads/juggr_angular.pdf">Folien zum Vortrag\n END:VEVENT BEGIN:VEVENT -UID:7ff8c89e-d7c3-4aa5-b25f-89ef9c3e95b2 +UID:e334fc9d-10a7-4206-bd8c-18b3292e7d31 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20170222T190000 DTEND;TZID=Europe/Berlin:20170222T220000 SUMMARY:Vortrag "CSS\, Aha-Effekte und Perspektiven" - Uwe Manteuffel @@ -1090,9 +1084,9 @@ X-ALT-DESC;FMTTYPE=text/html:

CSS ist verwirrend\, entbehrt jeglicher Lo nDa wird selbst JavaScript blass vor Neid.

END:VEVENT BEGIN:VEVENT -UID:22b9f6a5-5e15-4b71-9be9-0a7215ae6354 +UID:6f2cb606-defd-4b6d-864e-24c11669ac3b SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20170125T190000 DTEND;TZID=Europe/Berlin:20170125T220000 SUMMARY:Vortrag "JUnit 5" - Stefan Bley @@ -1110,9 +1104,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Unit Testing in Java - dafür ist JUnit da -gr.de/downloads/juggr_jUnit5.pdf">Folien zum Vortrag\n END:VEVENT BEGIN:VEVENT -UID:52d8276c-1a78-4e98-a127-26c6a5e7a312 +UID:ae3c5b3c-f623-4a81-8667-291173a104d7 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20161130T190000 DTEND;TZID=Europe/Berlin:20161130T220000 SUMMARY:Vortrag "Inside JVM" - Michael Wiedeking @@ -1126,9 +1120,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Wie funktioniert die virtuelle Maschine? W inem Blick unter die Haube der Java Virtual\nMachine.

END:VEVENT BEGIN:VEVENT -UID:a55ee496-b0a1-4c2c-892f-ed6e1f0dbba8 +UID:4e8060a4-335c-4af1-963e-8e19b0ee3e71 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20160921T190000 DTEND;TZID=Europe/Berlin:20160921T220000 SUMMARY:Vortrag "Kommunikationskultur im Softwareentwicklungsprozess" - Da @@ -1146,9 +1140,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Im Vortrag von Daniel Sernow wird die Komm ranstaltungsort einweihen - siehe unten.

END:VEVENT BEGIN:VEVENT -UID:f9155684-e5ed-4ade-87d9-c30a46bbfd1b +UID:33d21984-3573-49f6-beaf-d464f1b1d7e9 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20160727T190000 DTEND;TZID=Europe/Berlin:20160727T220000 SUMMARY:Vortrag "Testwerkzeuge für JavaFX" - Kay Grebenstein @@ -1168,9 +1162,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Softwareentwicklungsprojekte leben vom Ein >Wie werden die Testwerkzeuge in meine Toolkette eingebunden?\n END:VEVENT BEGIN:VEVENT -UID:824f85ed-4db8-47f4-accf-1f424eb0d5e0 +UID:eb892881-9901-4dd0-89f3-1933aafdf350 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20160525T190000 DTEND;TZID=Europe/Berlin:20160525T220000 SUMMARY:Vortrag "Performance-Analyse mit inspectIT" - Mario Mann @@ -1201,9 +1195,9 @@ X-ALT-DESC;FMTTYPE=text/html:

In vielen Software-Projekten wissen häufi lay/HOME/inspectIT+Home

END:VEVENT BEGIN:VEVENT -UID:12cd3a02-4bb4-49b2-99b3-2cc046eed31e +UID:11e034e6-1e2a-482c-aa83-84b69f606370 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20160330T190000 DTEND;TZID=Europe/Berlin:20160330T220000 SUMMARY:Vortrag "Haskell und Frege" - Manuel Mauky @@ -1226,9 +1220,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Haskell ist eine funktionale Programmiersp r JVM eine rein funktionale Sprache\nbereit.

END:VEVENT BEGIN:VEVENT -UID:370b6fc5-0a94-4a82-a6b0-e9200a889f27 +UID:547e3db0-48b3-4adb-8c3a-d87d0f92ba1f SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20160127T190000 DTEND;TZID=Europe/Berlin:20160127T220000 SUMMARY:Vortrag "Funktionale Programmierung mit Java" - Manuel Mauky\, Max @@ -1269,9 +1263,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Mit Java 8 wurden einige Features in die S Y-Combinator in Java\n END:VEVENT BEGIN:VEVENT -UID:0dfc990f-e9d3-4d2f-9335-d4e47de683c4 +UID:756843ac-a840-440b-9510-736e8583008a SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20151125T190000 DTEND;TZID=Europe/Berlin:20151125T220000 SUMMARY:Vortrag "JavaFX auf Mobile" - Stefan Barth\, Stefan Heinze @@ -1299,9 +1293,9 @@ X-ALT-DESC;FMTTYPE=text/html:

JavaFX ist die neue Java-Technologie im De avafx_on_mobile.pdf">Vortragsfolien\n END:VEVENT BEGIN:VEVENT -UID:231b068b-41a1-40c3-a663-2d1618784042 +UID:b9ae0a81-6361-4850-a496-f6ad70fbbe19 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20150930T190000 DTEND;TZID=Europe/Berlin:20150930T220000 SUMMARY:Vortrag "Guava" - Steffen Seidler @@ -1335,9 +1329,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Das Framework Drools ist ein Business-Rules-Mangement-Sy en\n END:VEVENT BEGIN:VEVENT -UID:800ffc6a-b980-4e8f-bf1b-49294d7bb4af +UID:8c6a4d64-dd1e-4bac-ac91-580fd7e343d5 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20150527T190000 DTEND;TZID=Europe/Berlin:20150527T220000 SUMMARY:Vortrag "Fortgeschrittene Android-Entwicklung" - Max Wielsch @@ -1378,9 +1372,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Aufbauend auf dem letzten Beitrag der Java /muxmax/JugGrNotesApp">Beispiel-Code\n END:VEVENT BEGIN:VEVENT -UID:6506a072-b4ad-4492-989f-a1f98c4f5026 +UID:4fd04bd3-cfa0-4d42-9b43-3a78481ef52f SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20150325T190000 DTEND;TZID=Europe/Berlin:20150325T220000 SUMMARY:Vortrag "Einstieg in die Android-App-Entwicklung" - Max Wielsch @@ -1405,9 +1399,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Smartphones und Apps sind für viele Mensc -Code\n END:VEVENT BEGIN:VEVENT -UID:f3c9dcb7-04aa-45d4-9b3b-b0cc031a851b +UID:51fe6ea8-6569-4927-ad11-54cc7b03121a SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20150128T190000 DTEND;TZID=Europe/Berlin:20150128T220000 SUMMARY:Vortrag "MoSKito - Monitoring Framework" - Steffen Seidler @@ -1434,9 +1428,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Es wird immer wichtiger WebAnwendungen üb interessant sein.

END:VEVENT BEGIN:VEVENT -UID:1c52aa5b-ae5d-455e-9c7b-b870657724f6 +UID:4b3f2a43-a2fa-4bb2-b5ab-ee97b17fe92a SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20141203T190000 DTEND;TZID=Europe/Berlin:20141203T220000 SUMMARY:Vortrag "Model-View-*: UI-Design-Patterns im Detail" - Manuel Mauk @@ -1471,9 +1465,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die meisten Softwareentwickler haben irgen github.com/lestard/juggr_model-view-star">Code auf Github\n END:VEVENT BEGIN:VEVENT -UID:d407f557-328e-481e-8653-aeadd815e4e7 +UID:21d8f3da-02b2-4e7f-b561-62e2c060985b SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20141029T190000 DTEND;TZID=Europe/Berlin:20141029T220000 SUMMARY:Vortrag "Infrastructure as Code" - Bruno Devic @@ -1502,9 +1496,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Infrastructure as Code is one of the impor emo.zip">Demos\n END:VEVENT BEGIN:VEVENT -UID:7d463540-6b1a-44ce-ba61-42efae8561b3 +UID:a6f1cfbb-1d20-451f-b17e-83886486b51f SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20140924T190000 DTEND;TZID=Europe/Berlin:20140924T220000 SUMMARY:Vortrag "Solr - Eine Enterprise-Suchmaschine" - Steffen Seidler @@ -1529,9 +1523,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Solr ist ein mächtiges Werkzeug um strukt rden.

END:VEVENT BEGIN:VEVENT -UID:54821935-15b9-4d7c-9d32-a237c31e4a47 +UID:0a1f8d67-93dc-4c7d-bf90-422ec8ef6224 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20140730T190000 DTEND;TZID=Europe/Berlin:20140730T220000 SUMMARY:Vortrag "Java8 - Streams und Lambdas" - Paul Weinhold @@ -1555,9 +1549,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Seit April ist die neue Version 8 von Java loads/juggr_java8.pdf">Vortragsfolien\n END:VEVENT BEGIN:VEVENT -UID:fa4e7858-63e9-4d7c-ace4-be496d91b044 +UID:ef1d8e4f-6ceb-49f6-b173-07c900331f1d SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20140528T190000 DTEND;TZID=Europe/Berlin:20140528T220000 SUMMARY:Vortrag "Hazelcast - Synchronisation von In-Memory-Daten" - Steffe @@ -1577,9 +1571,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Hazelcast ist ein vielseitiges Framework z weiterer (Backup-)Knoten steigern.

END:VEVENT BEGIN:VEVENT -UID:33708213-606a-4c35-8b91-5cc843a157a8 +UID:de200fce-3d07-4138-b67e-af821e880373 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20140402T190000 DTEND;TZID=Europe/Berlin:20140402T220000 SUMMARY:Vortrag "Besser lesbare Unittests mit AssertJ" - Manuel Mauky @@ -1616,9 +1610,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Damit Testgetriebene Entwicklung in der Pr arke Unittests schreiben zu können.

END:VEVENT BEGIN:VEVENT -UID:5bc2a162-25a8-4639-917b-93e004c48654 +UID:1f9b9b31-e52d-4d95-a269-b8cc12ad8013 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20140129T190000 DTEND;TZID=Europe/Berlin:20140129T220000 SUMMARY:Vortrag "Tool-Integration im Softwareentwicklungsprozess" - Max Wi @@ -1648,9 +1642,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Tool-Integration im Softwareentwicklungspr Architektur\nausgehend von einem Fallbeispiel erläutert wird.

END:VEVENT BEGIN:VEVENT -UID:352d0a91-03db-4789-8c10-24abd60a4de0 +UID:a9b9f372-905f-4979-bf32-f63ca80f1f23 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20131127T190000 DTEND;TZID=Europe/Berlin:20131127T220000 SUMMARY:Vortrag "Performance-Optimierung im Web" - Maik Wagner @@ -1666,9 +1660,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Google und Microsoft haben Studien zum The nt sich also\, in die\nPerformance einer Webanwendung zu investieren.

END:VEVENT BEGIN:VEVENT -UID:1cc76759-56ef-4f62-937c-08e44a555ae3 +UID:c3d15fd1-c94a-42f3-a199-210719d0951b SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20131030T190000 DTEND;TZID=Europe/Berlin:20131030T220000 SUMMARY:Vortrag "Modernes App-Design am Beispiel von Android" - Max Wielsc @@ -1689,9 +1683,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die Android-Plattform hat sich in den letz endbar sind.

END:VEVENT BEGIN:VEVENT -UID:65b76181-3b1e-4f31-aa41-3aa15624e1eb +UID:bb6f8d66-3179-4c70-b6ab-4430165af756 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20130731T190000 DTEND;TZID=Europe/Berlin:20130731T220000 SUMMARY:Vortrag "Persona - Werkzeug für die GUI-Entwicklung" - Marlene Kn @@ -1708,9 +1702,9 @@ X-ALT-DESC;FMTTYPE=text/html:

In diesem Vortrag von Marlene Knoc li>Vortragsfolien\n END:VEVENT BEGIN:VEVENT -UID:f9b1ccd3-fb8f-4a22-83fc-c470e5ebf849 +UID:96ef282a-0cdc-43b1-b2e4-86a45a383a07 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20130529T190000 DTEND;TZID=Europe/Berlin:20130529T220000 SUMMARY:Vortrag "JRuby - Ruby auf der Java VM" - Sebastian Schmeck @@ -1731,9 +1725,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Sebastian Schmeck von der > END:VEVENT BEGIN:VEVENT -UID:9204c3be-2024-488b-98c3-af9732b3e7c1 +UID:aec765f9-5b12-437d-a4b9-69deb94b58b5 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20130327T190000 DTEND;TZID=Europe/Berlin:20130327T220000 SUMMARY:Vortrag "Lego NXT-Roboter mit Java programmieren" - Erik Jähne @@ -1751,9 +1745,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Dieses Mal dreht sich alles um Roboter. https://www.youtube.com/watch?v=1oIQh48fBDI\n END:VEVENT BEGIN:VEVENT -UID:498cc87a-f2a0-4b20-88de-7c38bd26038f +UID:329b0cd2-9f4d-494c-93e3-f84bad4ba457 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20121128T190000 DTEND;TZID=Europe/Berlin:20121128T220000 SUMMARY:Vortrag "JavaFX 2" - Alexander Casall\, Michael Thiele @@ -1773,9 +1767,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Als Vortragende konnten wir Alexander Casa https://github.com/sialcasa/jfxusergroup)\n END:VEVENT BEGIN:VEVENT -UID:aa6a234b-027c-4059-ac4f-9d6b54047502 +UID:a70339f4-67b0-43f7-974c-da0c252bea89 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20120926T190000 DTEND;TZID=Europe/Berlin:20120926T220000 SUMMARY:Vortrag "JSR-303 BeanValidation" - Manuel Mauky @@ -1800,9 +1794,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Manuel Mauky stellt in se d/juggr_BeanValidation">Beispiel-Code\n END:VEVENT BEGIN:VEVENT -UID:bf5c45ce-ef24-475d-8819-4cb5a9af99c2 +UID:0d69e8fb-c11d-4baa-805e-682c9fc46eae SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20120725T190000 DTEND;TZID=Europe/Berlin:20120725T220000 SUMMARY:Vortrag "Selenium/Webdriver in der Praxis" - Maik Wagner @@ -1814,9 +1808,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Selenium/webdriver - In Ergänzung zu der it praktischen\nBeispielen von Maik Wagner

END:VEVENT BEGIN:VEVENT -UID:83b53680-07ab-4fc1-b993-19c21954a6f4 +UID:b50466e0-64ff-4976-8c3c-f234836d4ced SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20120627T190000 DTEND;TZID=Europe/Berlin:20120627T220000 SUMMARY:Vortrag "GridGain - Parallel Computing und Data Grid Anwendungen" @@ -1828,9 +1822,9 @@ X-ALT-DESC;FMTTYPE=text/html:

GridGain - ein Java-Framework für Paralle l Computing und Data Grid Anwendungen von Mario Reichel

END:VEVENT BEGIN:VEVENT -UID:55ae0b2b-a62a-462c-8eab-2ca944ab36a0 +UID:632a1bb1-3f80-42a2-8aec-90a9da281d10 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20120530T190000 DTEND;TZID=Europe/Berlin:20120530T220000 SUMMARY:Vortrag "JMonkeyEngine 3 - 3D-Applikationen in Java" - Hans Markwa @@ -1842,9 +1836,9 @@ X-ALT-DESC;FMTTYPE=text/html:

JMonkeyEngine3 und im Allgemeinen 3D-Appli kationen in Java von Hans Markwart

END:VEVENT BEGIN:VEVENT -UID:82227ed2-ba35-42d5-80fe-e2e8d86680a6 +UID:5ff817a6-7b9f-4794-a13a-6317ecc023a5 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20120425T190000 DTEND;TZID=Europe/Berlin:20120425T220000 SUMMARY:Vortrag "Maven" - Thomas Storch @@ -1855,9 +1849,9 @@ X-ALT-DESC;FMTTYPE=text/html:

maven von Thomas StorchBeispiel-Code

END:VEVENT BEGIN:VEVENT -UID:990a72a6-9a21-4c1c-8949-984cb2f8a9dc +UID:d77d67b6-4b4b-4877-a8c1-95f949e6a059 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20120328T190000 DTEND;TZID=Europe/Berlin:20120328T220000 SUMMARY:Vortrag "Webtests mit Selenium" - Marcus Döring @@ -1867,9 +1861,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Webtests mit Selenium von Marcus Döring

END:VEVENT BEGIN:VEVENT -UID:5aac19d1-dda2-45dd-ae23-5462f6501eca +UID:34054921-b675-4e51-bf29-d4751730025e SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20120229T190000 DTEND;TZID=Europe/Berlin:20120229T220000 SUMMARY:Vortrag "Webentwicklung mit Scala" - Stefan Bradl @@ -1879,9 +1873,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Webentwicklung mit Scala von Stefan Bradl

END:VEVENT BEGIN:VEVENT -UID:42f3a380-4c3a-45bd-9352-2872ae27dded +UID:704766ae-b324-482d-b740-a97156ce6e39 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20120125T190000 DTEND;TZID=Europe/Berlin:20120125T220000 SUMMARY:Vortrag "Advanced JSF und CDI" - Manuel Mauky @@ -1902,9 +1896,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Dieser Vortrag baut auf den Vortrag zur END:VEVENT BEGIN:VEVENT -UID:f42679d4-9fe7-474b-b4f7-0e87ae134886 +UID:1eb37060-a840-44dd-8f8b-6660b1f46365 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20120104T190000 DTEND;TZID=Europe/Berlin:20120104T220000 SUMMARY:Vortrag "JPA - Hibernate" - Marko Modsching @@ -1917,9 +1911,9 @@ X-ALT-DESC;FMTTYPE=text/html:

JPA - Hibernate von Marko downloads/code_hibernate.zip">Beispiel-Code\n END:VEVENT BEGIN:VEVENT -UID:5d470f9e-5ab3-4a8a-baba-a0d9d9442a0b +UID:df2362c7-f23f-4b90-aef2-ec91fbf80e4b SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20111130T190000 DTEND;TZID=Europe/Berlin:20111130T220000 SUMMARY:Vortrag "JavaServer Faces 2 und CDI" - Manuel Mauky @@ -1943,9 +1937,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Der Vortrag bietet eine Einführung in Code auf github\n END:VEVENT BEGIN:VEVENT -UID:74eb921a-5bd7-453a-8d4e-37c5a7e565c1 +UID:543340e7-f15e-44a9-893a-b437c7d1dae6 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20111026T190000 DTEND;TZID=Europe/Berlin:20111026T220000 SUMMARY:Vortrag "Android" - Max Wielsch @@ -1965,9 +1959,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Mit einem Vortrag und der Programmierung e -vortrag-in-der-java-user.html">Blog heruntergeladen werden.

END:VEVENT BEGIN:VEVENT -UID:d9d44d83-cb7f-41f7-9615-27a230aab056 +UID:6651a060-40a9-4bfe-bc65-b51ea3e1ed9d SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110928T190000 DTEND;TZID=Europe/Berlin:20110928T220000 SUMMARY:Vortrag "JDOM" - Mark Ziener @@ -1978,9 +1972,9 @@ X-ALT-DESC;FMTTYPE=text/html:

JDOM- Einlesen\, Verändern und Erzeugen v on XML-Dokumenten (Mark Ziener)

END:VEVENT BEGIN:VEVENT -UID:53230ad0-e998-408d-951d-4a82b4188321 +UID:a0e89376-72ad-4fd9-9985-e1edd9485557 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110928T190000 DTEND;TZID=Europe/Berlin:20110928T220000 SUMMARY:Vortrag "Single Sign-On mit JAAS und JGSS" - Mario Reichel @@ -1991,9 +1985,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Vom Single Sign-On zum sicheren Kanal - Au thentifizierung und Autorisierung mit JAAS und JGSS (Mario Reichel)

END:VEVENT BEGIN:VEVENT -UID:d6be301f-cb54-404d-ada0-5355f1c4e48e +UID:a6125c4b-a895-4224-8f96-236bb883d653 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110831T190000 DTEND;TZID=Europe/Berlin:20110831T220000 SUMMARY:Vortrag "Testen - Patterns und Best Practices" - Marko Modsching @@ -2004,9 +1998,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Das Thema wird diesmal Testen sein. Marko Modsching wird Testpatterns und Best Practices vorstellen

END:VEVENT BEGIN:VEVENT -UID:72de4a80-5738-4d91-81aa-917f730e4958 +UID:52a8e5db-1d74-4dd9-b643-de72f090c345 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110727T190000 DTEND;TZID=Europe/Berlin:20110727T220000 SUMMARY:Vortrag "Scala" - Stefan Bradl @@ -2019,9 +2013,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Scala - Vorstellung der Sprache\, Demo und href="/downloads/code_scala.zip">Beispiel-Code\n END:VEVENT BEGIN:VEVENT -UID:a0ad7c44-7c1a-43cd-9d09-4378c8af6fd6 +UID:57747303-2b91-4767-9ac6-611df79107fd SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110727T190000 DTEND;TZID=Europe/Berlin:20110727T220000 SUMMARY:Vortrag "TestNG" - Marcus Döring @@ -2030,9 +2024,9 @@ DESCRIPTION:TestNG (Marcus Döring) X-ALT-DESC;FMTTYPE=text/html:

TestNG (Marcus Döring)

END:VEVENT BEGIN:VEVENT -UID:4e65556d-bc2a-4a71-bacf-b18ceca27138 +UID:d4cda347-3f1c-4007-b3df-77e4335a3957 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110629T190000 DTEND;TZID=Europe/Berlin:20110629T220000 SUMMARY:Vortrag "JavaEE und JBoss" - Michael Förster @@ -2044,9 +2038,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Diesmal stellt Michael Förster Java EE vo ele\ngeben.

END:VEVENT BEGIN:VEVENT -UID:a9caef7f-d6b8-4656-a06b-d3e04c8e4959 +UID:d98b4633-c6e9-4217-8a2a-a6e64c6d8d76 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110527T190000 DTEND;TZID=Europe/Berlin:20110527T220000 SUMMARY:Vortrag "Google Guice" - Robert Wirbs @@ -2057,9 +2051,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Google Guice - Dependency Injection (DI) u nd Aspect-Orientierte Programmierung (AOP) von Robert Wirbs

END:VEVENT BEGIN:VEVENT -UID:54758be9-f6e1-435c-be1a-782bf36cf724 +UID:9458e076-39dc-4953-8975-8f0132f5a4cb SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110427T190000 DTEND;TZID=Europe/Berlin:20110427T220000 SUMMARY:Vortrag "GWT - Google Web Toolkit" - Ingo Körner @@ -2069,9 +2063,9 @@ X-ALT-DESC;FMTTYPE=text/html:

GWT - Google Web Toolkit (Ingo Körner)

END:VEVENT BEGIN:VEVENT -UID:794e735b-bdda-493f-aef3-8d500fd6450c +UID:be18c2d8-3404-4944-bc6d-3f645cc8e5bf SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110427T190000 DTEND;TZID=Europe/Berlin:20110427T220000 SUMMARY:Vortrag "OSGi mit SpringDM" - Manuel Mauky @@ -2093,9 +2087,9 @@ X-ALT-DESC;FMTTYPE=text/html:

Die OSGi beschreibt eine spezifikation\, a ing_dm.pdf">Vortragsfolien\n END:VEVENT BEGIN:VEVENT -UID:b78bee9a-4426-45dc-8afe-9c27cfd5dfe0 +UID:9932ca73-4035-49ae-8436-77ff76e33eaf SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110322T190000 DTEND;TZID=Europe/Berlin:20110322T220000 SUMMARY:Vortrag "EasyMock" - Richard Hauswald @@ -2108,9 +2102,9 @@ X-ALT-DESC;FMTTYPE=text/html:

EasyMock END:VEVENT BEGIN:VEVENT -UID:db6afddc-865d-4b9c-98e9-3c504e48fb0b +UID:cf3f4616-0a5c-41dd-ae62-1ca565dca7f4 SEQUENCE:0 -DTSTAMP:20230907T070548 +DTSTAMP:20230915T124550 DTSTART;TZID=Europe/Berlin:20110322T190000 DTEND;TZID=Europe/Berlin:20110322T220000 SUMMARY:Vortrag "Jenkins/Hudson" - Stefan Scheumann diff --git a/locations/cideon/index.html b/locations/cideon/index.html index e23203959..392e62f93 100644 --- a/locations/cideon/index.html +++ b/locations/cideon/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/dser_elisabethstrasse/index.html b/locations/dser_elisabethstrasse/index.html index 1c5a82dcf..2ea0930c4 100644 --- a/locations/dser_elisabethstrasse/index.html +++ b/locations/dser_elisabethstrasse/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/dser_steinstrasse/index.html b/locations/dser_steinstrasse/index.html index 126822a15..dff2df3b7 100644 --- a/locations/dser_steinstrasse/index.html +++ b/locations/dser_steinstrasse/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/expleo/index.html b/locations/expleo/index.html index baf53f636..487096957 100644 --- a/locations/expleo/index.html +++ b/locations/expleo/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/fraunhofer/index.html b/locations/fraunhofer/index.html index eb8defd3a..aff7bfdf4 100644 --- a/locations/fraunhofer/index.html +++ b/locations/fraunhofer/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/hochschule_campus/index.html b/locations/hochschule_campus/index.html index 8979413d8..7e47f89b4 100644 --- a/locations/hochschule_campus/index.html +++ b/locations/hochschule_campus/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/hochschule_obermarkt/index.html b/locations/hochschule_obermarkt/index.html index ad47ca744..c6ca13655 100644 --- a/locations/hochschule_obermarkt/index.html +++ b/locations/hochschule_obermarkt/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/index.html b/locations/index.html index ccbe912be..551a5c76a 100644 --- a/locations/index.html +++ b/locations/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/innolabs/index.html b/locations/innolabs/index.html index add35a129..bd220c684 100644 --- a/locations/innolabs/index.html +++ b/locations/innolabs/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/saxsys/index.html b/locations/saxsys/index.html index 921ffe805..76c75268f 100644 --- a/locations/saxsys/index.html +++ b/locations/saxsys/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/sqs/index.html b/locations/sqs/index.html index aaf8b8cc1..f347d45b0 100644 --- a/locations/sqs/index.html +++ b/locations/sqs/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/tallence/index.html b/locations/tallence/index.html index 4aeff81b4..5d3f7f796 100644 --- a/locations/tallence/index.html +++ b/locations/tallence/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/locations/zeiss/index.html b/locations/zeiss/index.html index fa23f856a..73cf218bf 100644 --- a/locations/zeiss/index.html +++ b/locations/zeiss/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

+ - \ No newline at end of file + \ No newline at end of file diff --git a/mitmachen/index.html b/mitmachen/index.html index f31b9ab8e..3e9825b78 100644 --- a/mitmachen/index.html +++ b/mitmachen/index.html @@ -377,4 +377,4 @@

Veranstalte das nächste Treffen bei dir

> window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index a504d9104..72f316876 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"ef5ed7d09177149d5eef"} +{"webpackCompilationHash":"65eaacf5ac62f605e617"} diff --git a/page-data/index/page-data.json b/page-data/index/page-data.json index a0f7e11ac..ab3af70e6 100644 --- a/page-data/index/page-data.json +++ b/page-data/index/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-index-tsx","path":"/","result":{"data":{"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","html":"

EasyMock - Was ist ein Mock?, Warum sollte ich mocken? Was ist EasyMock? Wie kann ich es\nbenutzen? All diese Fragen werden in der Präsentation beantwortet.

","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","time":null,"speaker":["richard_hauswald"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["testen"]},"fields":{"slug":"/talks/2011-03-22-easymock/","sourceName":"talks"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","html":"

Hudson bzw. Jenkins ist ein Build-Server, der für\nContinuous Integration eingesetzt wird. Darunter versteht\nman das Vorgehen, nach jeder Code-Änderung einen Build-Vorgang (inklusive Kompilieren des Codes und Ausführen der Tests)\ndurchzuführen. Damit kann sichergestellt werden, dass Fehlerhafte Änderungen sofort auffallen und behoben werden können.

\n

Im Vortrag werden die Begriffe \"Build Management\" und \"Continuous Integration\" näher erleutert und am konkreten Beispiel\nvon Jenkins gezeigt, wie dies in der Praxis umgesetzt werden kann.

","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","time":null,"speaker":["stefan_scheumann"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["build-management"]},"fields":{"slug":"/talks/2011-03-22-jenkins/","sourceName":"talks"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","html":"

GWT - Google Web Toolkit (Ingo Körner)

","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","time":null,"speaker":["ingo_koerner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","frontend"]},"fields":{"slug":"/talks/2011-04-27-gwt/","sourceName":"talks"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","html":"

Die OSGi beschreibt eine spezifikation, auf deren Basis Software Modular entwickelt werden kann. Die einzelnen Module\nsind in sich geschlossene Einheiten mit einem klaren Interface, welches einerseits ihre angebotene Funktionalität inf\nForm von Services beschreibt und andererseits die Abhängigkeiten auf Services anderer Module enthält.

\n

Spring-DM (DM steht für Dynamic Modules) ist eine auf OSGi basierende Plattform, die OSGi mit den Vorteilen von Spring,\nallen voran Dependency Injection, verbindet.

\n

Im Vortrag wird neben den theoretischen Grundlagen vor allem an praktischen Beispielen inklusive Live-Coding gezeigt,\nwie mit Spring-DM und OSGi lose gekoppelte Module erstellt und diese dynamisch zur Laufzeit getauscht werden können.

\n

Materialien:

\n","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":null},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/","sourceName":"talks"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","html":"

Google Guice - Dependency Injection (DI) und Aspect-Orientierte Programmierung (AOP) von Robert Wirbs

","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","time":null,"speaker":["robert_wirbs"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["patterns"]},"fields":{"slug":"/talks/2011-05-27-guice/","sourceName":"talks"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","html":"

Diesmal stellt Michael Förster Java EE vor. Es wird sowohl Einblicke in Theorie, wie auch wieder praktische Beispiele\ngeben.

","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","time":null,"speaker":["michael_foerster"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["javaee"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/","sourceName":"talks"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","html":"

Scala - Vorstellung der Sprache, Demo und das Testen (Stefan Bradl)

\n

Materialien:

\n","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","time":null,"speaker":["stefan_bradl"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen"]},"fields":{"slug":"/talks/2011-07-27-scala/","sourceName":"talks"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","html":"

TestNG (Marcus Döring)

","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","time":null,"speaker":["marcus_doering"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["testen"]},"fields":{"slug":"/talks/2011-07-27-testng/","sourceName":"talks"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","html":"

Das Thema wird diesmal Testen sein. Marko Modsching wird Testpatterns und Best Practices vorstellen

","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","time":null,"speaker":["marko_modsching"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["testen","patterns"]},"fields":{"slug":"/talks/2011-08-31-testen/","sourceName":"talks"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","html":"

JDOM- Einlesen, Verändern und Erzeugen von XML-Dokumenten (Mark Ziener)

","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","time":null,"speaker":["mark_ziener"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["xml"]},"fields":{"slug":"/talks/2011-09-28-jdom/","sourceName":"talks"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","html":"

Vom Single Sign-On zum sicheren Kanal - Authentifizierung und Autorisierung mit JAAS und JGSS (Mario Reichel)

","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","time":null,"speaker":["mario_reichel"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["security"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/","sourceName":"talks"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","html":"

Mit einem Vortrag und der Programmierung einer Biepsiel-App für Notitzen führte Max Wielsch in die\nAndroid-Programmierung ein. Im Vortrag ging es zunächst um die Motivation, eine App für die Android-Plattform zu\nentwickeln. Darauffolgend wurden die grundlegeneden Konzepte und Systemmerkmale erläutert. Nach der Theorie folgte die\nPraxis. Max Wielsch programmierte Schritt für Schritte eine \"kleine\" Notitz-App wobei die theoretischen Konzepte in der\nPraxis erläutert wurden.

\n

Die Präsentation und das Beispielprojekt können auf seinem\nBlog heruntergeladen werden.

","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["mobile","android"]},"fields":{"slug":"/talks/2011-10-26-android/","sourceName":"talks"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","html":"

Der Vortrag bietet eine Einführung in JavaServer Faces 2 und Beleuchtet unter anderem folgende Aspekte:

\n\n

Ausserdem wird kurz Contexts and Dependency Injection (CDI) vorgestellt und dessen Kombination mit JSF\nhervorgehoben.

\n

Diese theoretischen Aspekte werden anschließend anhand eines praktischen Beispiels inklusive Live-Coding gezeigt und\nerklärt.

\n

Materialien:

\n","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","javaee","jsf"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/","sourceName":"talks"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","html":"

JPA - Hibernate von Marko Modsching

\n

Materialien:

\n","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","time":null,"speaker":["marko_modsching"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["database","javaee"]},"fields":{"slug":"/talks/2012-01-01-hibernate/","sourceName":"talks"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","html":"

Dieser Vortrag baut auf den Vortrag zur \"Einführung in JavaServer Faces 2\" auf. Es werden\nfortgeschrittene Techniken aus dem Bereich JSF vorgestellt:

\n
    \n
  • Navigation mit JSF
  • \n
  • Templates und Wiederverwendung von Facelets
  • \n
  • Ajax
  • \n
  • PrimeFaces
  • \n
\n

Im Bereich CDI wird zunächst das Konzept der CDI-Producer beleuchtet, mit welchem der Entwickler Einfluss auf die\nDependency Injection nehmen kann. Anschließend wird das Design Pattern \"Observer\" mit den Techniken von CDI\nimplementiert und gezeigt, wie damit (im Gegensatz zur klassischen Observer-Implementierung) der Beobachter und die\nbeobachtete Klasse komplett von einander entkoppelt werden können.

","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","javaee","jsf"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/","sourceName":"talks"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","html":"

Webentwicklung mit Scala von Stefan Bradl

","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","time":null,"speaker":["stefan_bradl"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","programmiersprachen"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/","sourceName":"talks"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","html":"

Webtests mit Selenium von Marcus Döring

","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","time":null,"speaker":["marcus_doering"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","testen"]},"fields":{"slug":"/talks/2012-03-28-webtests/","sourceName":"talks"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","html":"

maven von Thomas Storch

\n

Folien

\n

Beispiel-Code

","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","time":null,"speaker":["thomas_storch"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["build-management"]},"fields":{"slug":"/talks/2012-04-25-maven/","sourceName":"talks"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","html":"

JMonkeyEngine3 und im Allgemeinen 3D-Applikationen in Java von Hans Markwart

","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","time":null,"speaker":["hans_markwart"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/","sourceName":"talks"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","html":"

GridGain - ein Java-Framework für Parallel Computing und Data Grid Anwendungen von Mario Reichel

","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","time":null,"speaker":["mario_reichel"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["cluster"]},"fields":{"slug":"/talks/2012-06-27-gridgain/","sourceName":"talks"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","html":"

Selenium/webdriver - In Ergänzung zu der Vorstellung von Marcus Döring mit praktischen\nBeispielen von Maik Wagner

","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","frontend","testen"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/","sourceName":"talks"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","html":"

Manuel Mauky stellt in seinem Vortrag den zu JavaEE 6 gehörenden Standard BeanValidation vor.

\n

Dabei wird mittels Annotationen im Java-Code bestimmt, welche Werte für bestimmte Felder valide sind, z.B. @NotNull\nfür einen Wert, der nicht null sein darf oder @Size(min=1, max=20) für einen String, der mindestens 1 und maximal 10\nZeichen lang sein darf. Ein Validator kann dann anhand dieser Metainformationen prüfen, ob der Zustand eines Objekts\nvalide ist oder nicht.

\n

Im Vortrag wird zunächst allgemein auf das Thema Validierung eingegangen und anschließend Beispiele für\nBeanValidation-Annotationen gezeigt. Ebenfalls behandelt wird, wie BeanValidation im Frontend mit JavaServer Faces und\nim Backend mit JPA kombiniert werden kann.

\n

Materialien:

\n","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["javaee"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/","sourceName":"talks"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","html":"

Als Vortragende konnten wir Alexander Casall und Michael Thiele, zwei Mittarbeiter der Saxonia Systems AG aus Dresden\ngewinnen, die zum Thema JavaFX 2 sprechen werden.

\n

Sie werden über das neue UI-Framework von Oracle berichten, welches angetreten ist, um das etwas angestaubte Swing\nabzulösen und neuen Schwung in das Thema Java+Desktop zu bringen. Dabei werden sie speziell auf die Touch-Fähigkeiten\nvon JavaFX 2 eingehen und diese an einem großen Touchscreen live vorführen.

\n

Materialien:

\n","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","time":null,"speaker":["alexander_casall","michael_thiele"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","javafx"]},"fields":{"slug":"/talks/2012-11-28-javafx2/","sourceName":"talks"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","html":"

Dieses Mal dreht sich alles um Roboter. Erik Jähne beschäftigt sich in seinem Studium mit NXT-Robotern von Lego\nund wird in seinem Vortrag die Programmierung dieser Roboter mit Java vorstellen. Natürlich wird es dabei auch eine\nLive-Vorführung der Roboter geben.

\n

Videos:

\n","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","time":null,"speaker":["erik_jaehne"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["hardware","roboter"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/","sourceName":"talks"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","html":"

Sebastian Schmeck von der Saxonia Systems AG aus Dresden wird in diesem Vortrag die Programmiersprache Ruby\nvorstellen und anschließend genauer auf die Implementierung JRuby eingehen. Damit lassen sich Ruby-Programme auf der\nJava VM ausführen, was einige konkrete Vorteile gegenüber der Standard-Implementierung bietet.

\n

Ausserdem wird er zeigen, wie die Integration von Java und Ruby in beiden Richtungen funktioniert, d.h. wie man\nRuby-Code in Java benutzt und wie von Ruby aus auf Java-Klassen zugegriffen werden kann.

\n

Materialien:

\n","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","time":null,"speaker":["sebastian_schmeck"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen"]},"fields":{"slug":"/talks/2013-05-29-jruby/","sourceName":"talks"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","html":"

In diesem Vortrag von Marlene Knoche geht es um Usability, genauer um so genannte Persona. Personas sind Modelle\nvon Usern. Sie personifizieren eine bestimmte (Ziel-)Gruppe von Benutzern einer Software. Ziel ist es, Entwickler und\n(Usability-)Tester in die Lage zuversetzen, sich besser in Nutzer hinein denken zu können.

\n

Materialien:

\n","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","time":null,"speaker":["marlene_knoche"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","softwareentwicklung"]},"fields":{"slug":"/talks/2013-07-31-persona/","sourceName":"talks"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","html":"

Die Android-Plattform hat sich in den letzten 2 Jahren sehr stark weiterentwickelt. Sie wurde nicht nur um\nFunktionalitäten erweitert, sondern hat seit der Android-Version 4.0 eine attraktive und sehr gut dokumentierte\nDesign-Sprache erhalten. Die Bedeutung eines konsistenten und funktionalen Designs ist damit ein kritischer\nErfolgsfaktor für eine App. Dies ist die Motivation sich intensiver mit dem Thema UI und UX-Design auseinandersetzen. In\neinem Vortrag wird dies zwar auf die Entwicklung von Android-Apps bezogen, jedoch werden auch allgemeine Konzepte\nvorgestellt, die auf das App-Design plattformübergreifend anwendbar sind.

","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","mobile","android"]},"fields":{"slug":"/talks/2013-10-30-app-design/","sourceName":"talks"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","html":"

Google und Microsoft haben Studien zum Thema \"Ladezeiten von Webseiten\" durchgeführt. Kurzgefasst: Schnelle Websites\nhaben eine bessere User Experience, Nutzer bleiben länger, und auch die Konversionsraten sind besser. Ab einer halben\nSekunde gingen die Umsätze pro Nutzer messbar zurück, ab 2 Sekunden waren es über 4%. Es lohnt sich also, in die\nPerformance einer Webanwendung zu investieren.

","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","performance"]},"fields":{"slug":"/talks/2013-11-27-web-performance/","sourceName":"talks"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","html":"

Tool-Integration im Softwareentwicklungsprozess ist kein neues Thema. Dennoch gibt es immer noch Bedarf, die Integration\nvon Tools und Systemen zu verbessern. Je nach konkretem Entwicklungsvorgehen bzw. -prozess werden weitere ergänzende\nFunktionalitäten und Daten benötigt, die wenige Tools allein nicht liefern können. Das heißt, es ist notwendig,\nIntegration zwischen Tools und Systemen verschiedener Hersteller zu schaffen, sodass diese so verwendet werden können,\nwie es nötig ist. Ziel ist dabei, Daten und Funktionalitäten unabhängig von konkreten Tools oder Systemen dynamisch\nverwenden zu können. Neue und bestehende Tools und kleine Skripte sollen genau an den Entwicklungsprozess und die\nMenschen in diesem Prozess anpassbar sein. Einmal entwickelte Funktionalität soll frei wiederverwendbar sein. Unter\nanderem für diese Ziele wurde OpenDIP, eine offene Platform für die Integration im Entwicklungsprozess, entworfen. Über\ndie Konzepte und die Realisierung dieser Platform wurden zwei Masterarbeiten und ein Paper\nhttp://arxiv.org/find/all/1/all:+AND+Max+Wielsch/0/1/0/all/0/1\ngeschrieben. Im Vortrag wird auf die Motivation und die Verwendung der Platform eingangen, wobei die Architektur\nausgehend von einem Fallbeispiel erläutert wird.

","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["integration","platform","softwareentwicklung"]},"fields":{"slug":"/talks/2014-01-29-opendip/","sourceName":"talks"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","html":"

Damit Testgetriebene Entwicklung in der Praxis funktionieren kann, müssen sich Tests möglichst einfach und trotzdem\nausdrucksstark schreiben lassen und gut lesbar sein. Auch die (Neben-)Aufgabe von Unittests, eine lebendige\nEntwicklerdokumentation zu bilden, kann nur erfüllt werden, wenn die Tests gut lesbar sind.

\n

Die klassischen Assertions von JUnit lassen hier teilweise zu wünschen übrig. Neben assertTrue und assertNotNull\nbestehen viele Unittests nur aus unzähligen assertEquals-Anweisungen, was in der Regel sehr weit weg von natürlicher\nSprache ist. Diese Lücke versucht das Hamcrest-Projekt zu schließen, welches mittlerweile teilweise in JUnit\neingeflossen ist. Hamcrest ist jedoch ebenfalls nicht unproblematisch und bietet durch seinen Aufbau aus statischen\nMethoden in der Praxis zahlreiche Schwächen und Nachteile.

\n

Einen moderneren Ansatz verfolgt das Framework AssertJ bzw. FEST-Assert. Auf den ersten Blick sehen die\nAssertions denen von Hamcrest zwar sehr ähnlich, jedoch wurde für die Implementierung statt statischer Methoden der\nmodernere Ansatz einer Fluent-API gewählt, wodurch sich einige Vorteile ergeben, wie z.B. bessere IDE-Integration.

\n

Im Vortrag wird das eigentliche Problem und die bisherige Lösung mit Hamcrest gezeigt. Dem wird anschließend das\nFramework AssertJ gegenüber gestellt. Anhand von zahlreichen Core-Beispielen soll gezeigt werden, wie einfach sich\nlesbare Unittests formulieren lassen, wenn man die richtigen Werkzeuge zur Hand hat. Anschließend wird ebenfalls darauf\neingegangen, wie mit AssertJ eigene, domänenspezifische Assertions erstellt werden können. Damit kann sich der Anwender\nseine eigenen Werkzeuge erstellen, um in seiner Domäne gut lesbare und ausdrucksstarke Unittests schreiben zu können.

","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["junit","testen"]},"fields":{"slug":"/talks/2014-04-02-assertj/","sourceName":"talks"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","html":"

Hazelcast ist ein vielseitiges Framework zur einfachen Synchronization von Daten, die sich In-Memory innerhalb einer\nApplikation befinden. Damit ist es für Anwendungen gedacht, bei denen eine Synchronization durch eine \"externe\"\nTechnologie wie Datenbanken zu einem erheblichen Performanceverlust führt.

\n

Durch die Verteilung der Daten auf mehrere Knoten ist es ein gutes Mittel zur horizontalen Skalierbarkeit bei\nSynchronität der Daten innerhalb des Clusters. Zusätzlich lässt sich die Verfügbarkeit/Ausfallsicherheit durch die\nHinzunahme weiterer (Backup-)Knoten steigern.

","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["cluster"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/","sourceName":"talks"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","html":"

Seit April ist die neue Version 8 von Java offiziell verfügbar. Dieses Update ist sicherlich das bedeutendste Update\nseit Java 5, da zahlreiche interessante Neuerungen Einzug in die Sprache und das JDK gehalten haben.

\n

Die am meisten diskutierte Neuerung stellt sicherlich die Einführung von Lambda-Ausdrücken dar, mit denen Java nun auch\nfunktionale Eigenschaften bekommt.

\n

Im Vortrag wird Paul Weinhold die praktische Anwendung von Lambdas vorstellen und dabei vor allem auch auf die neue\nStreams-API von Java eingehen, da diese ganz besonders von Lambda-Ausdrücken profitiert.

\n

Paul Weinhold ist Master-Student im Studiengang Informatik an der Hochschule in Görlitz. Daneben arbeitet er als\nWerksstudent bei der Deutschen Bahn AG und setzt dort seit einiger Zeit aktiv die neuen Möglichkeiten von Java 8 ein.

\n

Materialien:

\n","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","time":null,"speaker":["paul_weinhold"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["java","functional-programming"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/","sourceName":"talks"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","html":"

Solr ist ein mächtiges Werkzeug um strukturierte Dokumente durchsuchbar zu machen. Solr kann als ein Aufsatz für Apache\nLucene verstanden werden und wartet mit zahlreichen Erweiterungen auf.

\n

Unter Anderem kann Solr in einem Apache Tomcat laufen und kommuniziert über HTTP. Dabei können nicht nur mittels HTTP\nGET Suchanfragen auf den indizierten Datenbestand ausgelöst werden, sondern mittels HTTP POST auch neue Dokumente\nhinzugefügt werden.

\n

Dabei können verschiedene Datequellen (Filesystem, Datenbanken, REST-Services, ...) angebunden werden, um den\nDatenbestand des Suchindex zu füllen. Dabei besteht ein großer Vorteil bei den vielen Erweiterung bei der Indizierung\nder Daten. Z.B. Silbentrennung, Wortstammbildung, ...

\n

Zur eigentlichen Suche existiert eine leicht zu erlernende Syntax. Insbesondere lassen sich mehrere Felder der\nstrukturierten Dokumente gleichzeitig abfragen und durch ein Ranking können die Suchergebnisse noch weiter verfeinert\nwerden.

","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["database"]},"fields":{"slug":"/talks/2014-09-24-solr/","sourceName":"talks"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","html":"

Infrastructure as Code is one of the important cornerstones of continuous delivery. The concept that infrastructure\nshould be treated as code is really powerful. Server configuration, services, installed packages, relationships with\nother servers etc...should be modeled as code to be automated and have a predictable outcome, removing manual steps\nprone to errors and decreasing the cycle time.

\n

Spinning up a new virtual environment or a new version of the environment then becomes a matter of executing a script\nthat can create and provision an image or set of images – from the barebone operating system to the complete application\nstack installed and configured.

\n

This concept is increasingly important today when the number of environments and their instances has gone up by orders\nof magnitudes and the release frequency has moved from monthly to weekly or even daily releases.

\n

In this session we will showcase a few popular tools used to implement this concept: Vagrant, Puppet and Docker.

\n

Materialien:

\n","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","time":null,"speaker":["bruno_devic"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["devops"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/","sourceName":"talks"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","html":"

Die meisten Softwareentwickler haben irgendwann einmal Model-View-Controller als Design-Pattern gelernt. In der\nPraxis existieren aber viele verschiedene Ansichten darüber, was MVC eigentlich genau bedeutet und wie es implementiert\nwird. Darüber hinaus haben sich mit der Zeit auch neue, eigenständige UI-Design-Patterns entwickelt, die aber oft noch\ngewissen Gemeinsamkeiten mit dem klassischen MVC aufweisen. Dazu gehören z.B. Model-View-Presenter,\nPresentation-Model und Model-View-ViewModel.

\n

In diesem Vortrag soll zum einen ein Überblick über UI-Design-Patterns gegeben werden, zum anderen aber auch ein\ntieferer Eindruck über die tatsächliche Umsetzung und der praktischen Konsequenzen dieser Patterns gegeben werden. Dabei\nsollen weniger UML-Diagramme als viel mehr Code-Beispiele im Vordergrund stehen. Es wird dabei auch auf Aspekte wie\nTestbarkeit, Koppelung und Wiederverwendung eingegangen.

\n

Der Vortragende ist Softwareentwickler bei der Saxonia Systems AG und ist dort vor allem im UI-Bereich tätig. Er hat\nErfahrungen gesammelt mit JavaServer-Faces, HTML(5)+JavaScript sowie im Bereich Desktop-Oberflächen mit JavaFX.\nAktuell arbeitet er als Hauptentwickler an dem OpenSource-Framework MvvmFX,\nwelches Komponenten zur Umsetzung des Design-Patterns Model-View-ViewModel für JavaFX bereitstellt.

\n","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","patterns"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/","sourceName":"talks"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","html":"

Es wird immer wichtiger WebAnwendungen überwachen zu können, um Probleme frühzeitig zu erkennen und Gegenmaßnahmen\neinleiten zu können. Hierfür wurde MoSKito geschaffen. Ursprünglich wurde es für Parship entwickelt, aber inzwischen ist\nes in ein eigenständiges Projekt auf GitHub ausgegliedert und steht nun allen Interessierten zur Verfügung.

\n

In dem Vortrag werden wir die einzelnen Komponenten der MoSKito-Toolbox anhand einer simplen Beispiel-Anwendung\nvorstellen. Dazu zählen die Datenerhebung für das Monitoring technischer Auffälligkeiten, die Visualisierung über eine\nintegriertes oder standalone WebUI, zentrale Persistierung zur späteren Auswertung, sowie ein Kontrollzentrum, welches\ndurchaus auch als Wall-Monitor eignet.

\n

Desweiteren werden wir die einfache Integration, sowie Möglichkeiten zur Erweiterung näher beleuchten. Denn in MoSKito\nkann man nicht nur Informationen technischer Natur sammeln, die für Entwickler relevant sind (Verarbeitungszeiten,\nSystemlast, etc.), sondern auch Daten mit Businessvalue (Verkaufszahlen, etc.). So kann MoSKito auch für Management und\nMarketing interessant sein.

","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","monitoring"]},"fields":{"slug":"/talks/2015-01-28-moskito/","sourceName":"talks"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","html":"

Smartphones und Apps sind für viele Menschen mittlerweile unentbehrlich. Nahezu für jeden Aspekt des Alltags und auch in\nder Geschäftswelt gibt es Anwendungen. Bei diesem JUG-Treffen werden wir in einer Praxisveranstaltung den Start eines\nApp-Entwicklungsprojekts mit Android betrachten. Die Veranstaltung richtet sich vor allem auch an\nProgrammier-Einsteiger, die einen Einblick in die Android-App-Entwicklung bekommen wollen.

\n
\n

These days mobile phones and apps are indispensable to people. Nearly for every aspect of life and also in the business\nworld there are applications. In this JUG meeting we will take a look at how to start an app development project in\npractice. The session is especially addressed to programming beginners who like to get started with Android app\ndevelopment.

\n

Materialien:

\n","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["android","mobile"]},"fields":{"slug":"/talks/2015-03-25-android/","sourceName":"talks"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","html":"

Aufbauend auf dem letzten Beitrag der Java User Group Görlitz\n(Einstieg in die Android-App-Entwicklung) soll das Beispiel der Notiz\nApp live weiterentwickelt werden, um Konzepte und deren Umsetzung für die fortgeschrittene Android-Programmierung zu\nzeigen.

\n

Mit dem Ziel, eine testbare und entkoppelte Applikationsarchitektur zu erreichen wird der Einsatz geeigneter Patterns\nund Frameworks diskutiert.

\n

Materialien:

\n","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["mobile","android"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/","sourceName":"talks"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","html":"

Drools ist ein Business-Rules-Mangement-System, mit dem sich Regelbasierte Systeme entwickeln lassen. Dazu stellt es\neine Domainen-Spezifische Sprache zur Verfügung, mit der Regeln definiert und anschließend durch die Rule-Engine\nverarbeitet werden können.

\n

Paul Weinhold ist Student im Masterstudiengang Informatik der Hochschule Zittau/Görlitz. Daneben arbeitet er bei der\nDB-Netz AG und setzt dort u.a. auch Drools ein. Im Vortrag stellt er die Technik vor und gibt einen Einblick anhand\npraktischer Beispiele.

\n

Materialien:

\n","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","time":null,"speaker":["paul_weinhold"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["dsl"]},"fields":{"slug":"/talks/2015-07-29-drools/","sourceName":"talks"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","html":"

Das Framework Guava wurde von Google geschaffen, um eine einheitliche und einfach zu\nhandhabende Lösung für verschiedenste alltäglich wiederkehrende Probleme anzubieten. Insbesondere für die Codebasis von\nGoogle selbst. Dabei wurde großen Wert darauf gelegt ältere JDK-Versionen 5+ (ab Release 12 inzwischen JDK 6+) zu\nunterstützen. Damit ist Guava ein Framework, mit dem sich jeder JAVA-Entwickler näher beschäftigen sollte, um sich die\neigene Arbeit zu erleichtern.

\n

Auch wenn inzwischen einige Features mit JDK 7 (wie bspw. die Klasse Objects) und JDK 8 (wie bspw. Funktionale Ansätze)\nin ähnlicher Form inzwischen auch direkt in JAVA nutzbar sind, lohnt die Verwendung von Guava immernoch. Zudem ist Guava\nnicht als Konkurrenz zu Lösungen des JDKs oder ähnlicher Libaries wie Apache Commons zu verstehen, sondern als\nsymbiotische Ergänzung.

\n

Zu einer solchen Ergänzung zählt definitiv die umfangreiche Erweiterung der JDK-Collection-Vielfalt um viele weitere\nnützliche Typen zu den Vozügen von Guava. Insbesondere kann der spezielle Ansatz bei deren Verarbeitung immernoch\nVorteile gegenüber Streams bieten. Andersherum lassen viele Dinge in Guava mit Lambdas inzwischen noch komfortabler\nbedienen.

\n

In dem Vortrag wird ein Überblick über die zahlreichen Möglichkeiten von Guava gegeben. Auch unter dem Gesichtspunkt der\nneuen Möglichkeiten unter JDK 7/8. Die genannte Collection-Erweiterung ist dabei nur ein Bruchteil dessen was Guava\nbietet. (Object- und StringUtils, Orderings, Comparisons, Preconditions, ExceptionHandler, neue Collections und ihr\nHandling, Funktionale Ansätze, Ranges, ReflectionUtils)

","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_elisabethstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["java"]},"fields":{"slug":"/talks/2015-09-30-guava/","sourceName":"talks"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","html":"

JavaFX ist die neue Java-Technologie im Desktop-Bereich und somit die Ablösung von Swing. Damit ist es möglich\nJava-Anwendungen für Desktop, Browser und mobile Geräte zu entwickeln. Allerdings bietet Oracle keinen direkten Support\nfür mobile Endgeräte an, sondern überlässt dies der Community.

\n

In dem Vortrag geht es um den Aktuellen Stand der Entwicklung in diesem Bereich. Was muss gemacht werden, um eine\nJavaFX-Anwendung auf einem Smartphone zum laufen zu bekommen und welche Grenzen hat dieser Ansatz für die Entwicklung\nvon mobilen Anwendungen mit JavaFX.

\n

Einen weiteren Ansatz verfolgt die Firma Gluon zum Erstellen von mobilen Anwendungen auf JavaFX.\nEine gemeinsame Code-Basis für IOS- und Android-Anwendungen basierend auf JavaFX. Was derzeit damit möglich ist wird\nebenfalls Inhalt des Vortrages sein.

\n

Abschließend wird unser Ansatz für mobile Anwendungen in JavaFX vorgestellt. Mittels des MVVM-Pattern in Kombination mit\nJavaFX-Ports. Vorgestellt wird der aktuelle Entwicklungsstand mit einer offenen Diskussion über Vor- und Nachteile des\nAnsatzes.

\n

Materialien:

\n","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","time":null,"speaker":["stefan_heinze","stefan_barth"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","javafx","mobile","android"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/","sourceName":"talks"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","html":"

Mit Java 8 wurden einige Features in die Sprache integriert, die von funktionaler Programmierung inspiriert sind. Im\nVortrag Java 8: Lambdas und Streams im Juli 2014 hat Paul uns die\ntechnischen Möglichkeiten dazu bereits vorgestellt. Doch ist Java damit nun auch eine Funktionale Sprache? Gibt es\nüberhaupt noch Gründe, andere funktionale Sprachen zu beachten?

\n

In diesem Vortrag möchten wir tiefer in die Materie der funktionalen Programmierung eintauchen und die Konzepte dieses\nParadigmas betrachten. Wir werden sehen, wie Java-Programmierer von funktionalen Konzepten profitieren können. Dabei\ngehen wir unter anderem auf Dinge wie Rekursion, Pure Funktionen, Immutable Datenstrukturen, Monaden und\nFunktionskomposition ein.

\n

Wir werden aber auch zeigen, wo die Grenzen von Java liegen und warum wir der Meinung sind, dass Java letztlich doch\nkeine wirklich funktionale Sprache ist und weshalb wir unbedingt empfehlen, sich mit funktionalen Sprachen zu\nbeschäftigen. In diesem Sinne werden wir beim darauf folgenden JUG-Treffen die funktionale Sprache \"Haskell\" vorstellen\nund dabei viele der hier vorgestellten Konzepte wiederfinden. Außerdem werden wir die Haskell-Variante \"Frege\"\nbesprechen, die auch auf der JVM läuft.

\n

Materialien:

\n\n

Links:

\n","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky","max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"627917ce-c50f-59e9-98d8-4897b4f220c5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png","srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen.","tags":["java","functional-programming"]},"fields":{"slug":"/talks/2016-01-27-functional_java/","sourceName":"talks"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","html":"

Haskell ist eine funktionale Programmiersprache, die das Paradigma der funktionalen Programmierung so konsequent\numsetzt, wie kaum eine andere Sprache. Beispielsweise sind Funktionen in Haskell standardmäßig \"pure\", können also keine\nSeiteneffekte besitzen, was durch das statische Typ-System sichergestellt wird. Eine weitere Eigenschaft, die Haskell\nvon den meisten anderen Sprachen unterscheidet, ist die nicht-strikte Auswertung von Ausdrücken, was im allgemeinen\ndurch Lazy-Evaluation umgesetzt wird. Dadurch kann Haskell beispielsweise ohne weiteres mit unendlichen Listen umgehen,\nohne dafür besondere Sprachkonstrukte zu benötigen.

\n

Haskell selbst läuft nicht auf der Java-VM, allerdings existiert mit der Programmiersprache \"Frege\" eine\nHaskell-Variante, die zu Java-Sourcecode kompiliert. Damit steht nun auch auf der JVM eine rein funktionale Sprache\nbereit.

","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"5c9d56a7-72a3-5960-83a9-42dc599be063","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#588888","images":{"fallback":{"src":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png","srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen","tags":["programmiersprachen","functional-programming"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/","sourceName":"talks"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","html":"

In vielen Software-Projekten wissen häufig nicht nur Anwender sondern auch Entwickler nicht, warum sich ihre Anwendung\nverhält wie sie sich eben verhält. Wieso ist meine Anwendung so langsam? An Performance-Tests wurde während der\nEntwicklung nicht gespart. Was kann also das Problem sein? Abhilfe kann in solchen Fällen ein Application Performance\nManagement Werkzeug schaffen, wie beispielsweise das Open Source-Werkzeug inspectIT.

\n

inspectIT ist ein leistungsstarkes Werkzeug, dass dazu dient, die Leistung von Software-Anwendungen sowohl zu überwachen\nals auch zu analysieren. Mithilfe verschiedener Sensoren erfasst inspectIT Informationen über Abfragen des Endnutzers\nund die Verarbeitung im Business-Layer bis hin zum Backend. Mit der Nutzung von inspectIT sind Informationen über die\nSoftware-Anwendung verfügbar, um jedes potenzielle Funktions-, Leistungs- oder Zuverlässigkeitsproblem mühelos\nanalysieren zu können. Dieser Vortrag wird das Open Source Projekt inspectIT vorstellen und einen einfachen Einstieg in\ndie Performance-Analyse mit inspectIT bieten.

\n

Website: http://inspectit.rocks

\n

Git: https://github.com/inspectIT/inspectIT

\n

Dokumentation:\nhttps://inspectit-performance.atlassian.net/wiki/display/HOME/inspectIT+Home

","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","time":null,"speaker":["mario_mann"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"34708531-529f-5d8b-9a4f-7e69705d60db","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#880818","images":{"fallback":{"src":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png","srcSet":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.","tags":["performance","monitoring"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/","sourceName":"talks"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","html":"

Softwareentwicklungsprojekte leben vom Einsatz von modernen Werkzeugen, die die Projektbeteiligten bei ihrer Arbeit\nunterstützen. JavaFX-Entwicklungsprojekte haben hier eine besondere Herausforderung. Die „neue“ Technologie stellt eine\nHerausforderung an die Testwerkzeuge, speziell an die Werkzeuge zur Testautomatisierung. Viele Hersteller werben mit\nJavaFX-Unterstützung, aber nicht immer wird JavaFX vollständig unterstützt.

\n

Der Vortrag geht den Fragen nach:

\n
    \n
  • Welche Kategorien von Testwerkzeugen für JavaFX gibt es?
  • \n
  • Welche Unterschiede gibt es zwischen den Testwerkzeugen?
  • \n
  • Wie werden die Testwerkzeuge in meine Toolkette eingebunden?
  • \n
","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","time":null,"speaker":["kay_grebenstein"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["javafx","testen"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/","sourceName":"talks"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","html":"

Im Vortrag von Daniel Sernow wird die Kommunikation in Software-Projekten und mit den Projekt-Partnern thematisiert. Er\nwird uns an seinen Erfahrungen und Erkenntnissen aus langjähriger Praxis im Projektgeschäft teilhaben lassen. Für\nEntwickler dürfte dabei vor allem auch die Perspektive der Qualitätssicherung interessante neue Einblicke bereithalten.

\n

Eine Besonderheit: Wir werden eine neuen Veranstaltungsort einweihen - siehe unten.

","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","time":null,"speaker":["daniel_sernow"],"location":"sqs","virtual":null,"poster":{"childImageSharp":{"id":"d76f475f-a8c8-5319-96d2-a1474885f516","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#788818","images":{"fallback":{"src":"/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png","srcSet":"/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,\n/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,\n/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,\n/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,\n/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,\n/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,\n/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand","tags":["testen","softwareentwicklung"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/","sourceName":"talks"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","html":"

Wie funktioniert die virtuelle Maschine? Wo kommt der Just-in-Time-Compiler ins Spiel und was hat es mit InvokeDynamic\nauf sich? Diese und weitere Fragen beantwortet Michael Wiedeking bei einem Blick unter die Haube der Java Virtual\nMachine.

","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","time":null,"speaker":["michael_wiedeking"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"d5ac0466-71cb-5950-ad4c-692645dec780","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#185818","images":{"fallback":{"src":"/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png","srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich.","tags":["java"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/","sourceName":"talks"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","html":"

Unit Testing in Java - dafür ist JUnit das Werkzeug der Wahl. Die letzte Version JUnit 4 tat dabei viele Jahre ihre\nDienste und wurde kontinuierlich weiterentwickelt, stieß allerdings nun doch an ihre Grenzen. Der Nachfolger JUnit 5 ist\neine komplette Neuentwicklung und steht kurz vor dem Release. Wir wollen uns ansehen, welche Neuerungen JUnit 5 mit sich\nbringt und was es beim Umstieg zu beachten gilt.

\n

Materialien:

\n","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","time":null,"speaker":["stefan_bley"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"389f1a05-558e-58a8-a8f2-8f0f783fbb5f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3868c8","images":{"fallback":{"src":"/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png","srcSet":"/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,\n/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,\n/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf","tags":["testen","junit"]},"fields":{"slug":"/talks/2017-01-25-junit5/","sourceName":"talks"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","html":"

CSS ist verwirrend, entbehrt jeglicher Logik und rendert mein HTML völlig willkürlich. Ziel von CSS ist es, den Alltag\neines Webentwicklers möglichst qualvoll zu gestalten. FALSCH Mit Live-Coding gehen wir CSS auf den Grund und werden\neinige Aha-Effekte erzielen. Dafür erklären wir Grundlagen, welche vielen Entwicklern unbekannt sind, und zeigen den\nMehrwert von Präprozessoren. Um euch dann vollends von CSS zu überzeugen, haben wir als Special Guest CSS3 eingeladen.\nDa wird selbst JavaScript blass vor Neid.

","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","time":null,"speaker":["uwe_manteuffel"],"location":"hochschule_obermarkt","virtual":null,"poster":{"childImageSharp":{"id":"f98f07d3-05f0-5b44-a8c4-f59df52e978d","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#087868","images":{"fallback":{"src":"/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png","srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel.","tags":["frontend","web"]},"fields":{"slug":"/talks/2017-02-22-css/","sourceName":"talks"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","html":"

Mit Angular bietet Google ein komponenten-basiertes Webframework an, welches den Anspruch erhebt, die Anforderungen an\nzeitgemäße Softwareentwicklung ganzheitlich zu unterstützen.

\n

Seit dem Release von Angular 2 war es für gestandene Java Entwickler noch nie so einfach in die Webentwicklung\neinzusteigen. Mit Klassen, Dependency Injection, Annotations und Data-Binding bietet Angular dem versierten Desktop\nEntwickler ein vertrautes Umfeld, in dem man sich schnell zurecht findet.

\n

In dieser Veranstaltung möchte ich am lebenden Beispiel zeigen, wie es sich heutzutage anfühlt eine Webanwendung,\nkonkret mit Angular 2, zu erstellen.

\n

Materialien:

\n","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","time":null,"speaker":["sven_hoffmann"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"eddd4dc5-4156-509b-bf5c-e09b0c5c330e","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#084858","images":{"fallback":{"src":"/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png","srcSet":"/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,\n/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,\n/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht.","tags":["frontend","web","javascript"]},"fields":{"slug":"/talks/2017-03-22-angular/","sourceName":"talks"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","html":"

Nach der Ausdehnung vom JDK 9 Feature-Complete-Status, begann die Fehlerbereinigung, mit allen notwendigen Vorarbeiten,\num den finalen Release-Candidate für das JDK 9 bereitzustellen. Der Schwerpunkt vom JDK 9 liegt bei der neuen\nPlattformmodularisierung mit dem Projekt Jigsaw. Über die JDK-Enhancement-Vorschläge JEP 200 (Modulares JDK), JEP 201\n(Modularer Source-Code) und JEP 220 (Modulare Laufzeit-Images) gelangen die technischen Vorschläge ins JDK 9. Der JSR\n376 (Java Platform Module System) schafft die Grundlage für die Referenzimplementierung vom OpenJDK Projekt Jigsaw.\nDiese Veränderungen lassen es zu, mit dem JDK 9 die gewünschte technische Paketierung von ausgewählter\nJava-Funktionalität selbst zu bestimmen. Das Projekt Jigsaw hat die primäre Aufgabe, das Design und die Implementierung\neines Standard-Modulsystems für die Java-Plattform und für das JDK 9 bereitzustellen. Dabei soll die durchgängige,\ndynamische und einfache Anpassbarkeit der Java-SE-Plattform & dem JDK, auch für kleine Endgeräte berücksichtigt werden,\nsowie die Verbesserung von Sicherheit und Wartbarkeit von Java-SE-Plattform-Implementierungen, speziell vom JDK,\nverwirklicht werden. Im Vortrag werden Demo-Beispiele gezeigt, die eine Erstellung von individueller Java Runtime mit\nAnwendung anhand der JDK 9-Werkzeuge verdeutlichen. Die geplante Verfügbarkeit vom JDK 9 ist für Ende Juli 2017\nvorgesehen.

\n

Materialien:

\n","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"2573407c-9387-55d4-81ac-f02dffdbfe14","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#38a838","images":{"fallback":{"src":"/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png","srcSet":"/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,\n/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,\n/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java.","tags":["java"]},"fields":{"slug":"/talks/2017-04-26-jdk9/","sourceName":"talks"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","html":"

React ist eine von Facebook entwickelte JavaScript-Bibliothek zur Entwicklung von UI-Komponenten. Dabei macht React\neiniges anders als andere Web-Frameworks, beispielsweise der Verzicht auf Templates und die Limitierung auf\nunidirektionalen Datenfluss. Interessant ist auch der vollständig deklarative Ansatz, der es u.a. ermöglicht,\nUI-Komponenten als Funktionen zu entwickeln.

\n

React ist aber nicht auf den Browser beschränkt: Mit React-Native können darüber hinaus auf die gleiche Art und Weise\nauch native Mobile-Apps entwickelt werden. Aber anders die meisten HTML5-Hybrid-Frameworks ist bei React-Native kein\nHTML im Spiel. Stattdessen werden tatsächlich native UI-Controls gerendert.

\n

In diesem Vortrag möchte ich React und auch React-Native vorstellen und mittels Live-Coding einen Eindruck von dem\nFramework vermitteln. Dabei möchte ich aber auch auf die Ansätze aus der funktionalen Programmierung eingehen, die React\nmeines Erachtens so besonders machen.

","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"6b8717ce-a995-58f6-82e5-62fb5ef3cca9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58c8d8","images":{"fallback":{"src":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png","srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4119791666666668}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen.","tags":["frontend","javascript","web","mobile","functional-programming"]},"fields":{"slug":"/talks/2017-05-31-react/","sourceName":"talks"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","html":"

Amazon Alexa ist eine Smart-Home-Technologie, die vor allem als Lösung für Spracherkennung bekannt ist. Für Entwickler\nist dabei vor allem die Möglichkeit interessant, eigene Anwendungen mit Spracherkennung erstellen zu können.

\n

Andre und Maik beleuchten in ihrem Vortrag die Theorie hinter Spracherkennung und zeigen am Beispiel von Amazon Alexa,\nwie damit Anwendungen gebaut werden können.

","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","time":null,"speaker":["andre_tepper","maik_wagner"],"location":"dser_elisabethstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["ki"]},"fields":{"slug":"/talks/2017-08-30-alexa/","sourceName":"talks"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","html":"

Kaum haben wir uns von dem klassischen Monolithen und der zugehörigen Ablaufumgebung namens Application Server,\nzugunsten von Microservices und Embedded Runtimes, verabschiedet, taucht am Horizont mit Serverless Applications bzw.\nArchitectures schon die nächste Evolutionsstufe auf. Was bitte ist das jetzt schon wieder? Und wer braucht so etwas? Die\nSession zeigt, wie sich dank BaaS, FaaS und einiger anderer Akronyme, Mobile und Enterpriese Anwendungen implementieren\nlassen - ganz ohne Server! Ganz ohne? Naja, fast.

\n

Materialien:

\n\n
\n

Bei bei diesem Treffen verlosen wir unter den Teilnehmern ein Tutorial von\nhttps://tutorials.entwickler.de/. Mit freundlicher Unterstützung durch Software &\nSupport Media GmbH.

","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","time":null,"speaker":["lars_roewekamp"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"754076b2-57c3-5796-89f2-711200e78c58","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389858","images":{"fallback":{"src":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png","srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w","sizes":"100vw"},"sources":[{"srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145234493192134}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.","tags":["architektur"]},"fields":{"slug":"/talks/2017-10-25-serverless/","sourceName":"talks"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","html":"

Im letzten Jahr waren die Panama Papers in aller Munde, die Journalisten der Süddeutschen Zeitung und des ICIJ\nuntersuchten und publizierten die breite Nutzung von Briefkastenfirmen durch Politiker, Geschäftsleute, Banken usw. Für\ndie Untersuchung des größten Leaks einer Geldwäschefirma wurde unter anderem auch Neo4j genutzt. Heute werde ich\ndemonstrieren, wie solche Daten in einem Graph modelliert, importiert und abgefragt werden können. Da die Informationen\nöffentlich verfügbar sind, kann jetzt jeder zum Journalisten werden.

","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","time":null,"speaker":["michael_hunger"],"location":"sqs","virtual":null,"poster":{"childImageSharp":{"id":"0d8148d9-9587-5da3-aaf0-f92c5603d344","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#587828","images":{"fallback":{"src":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png","srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir.","tags":["database"]},"fields":{"slug":"/talks/2017-11-29-neo4j/","sourceName":"talks"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","html":"

Beim Bauen monolithischer Systeme nutzen Entwicklerteams eine Reihe typischer Muster um die Interaktion verschiedener\nSystemteile zu implementieren. Behält man diese Interaktionsmuster bei, während man ein System in verschiedene aufteilt,\nergeben sich oft große Komplexität und architektonische Nachteile, die oft die ursprüngliche Idee, die hinter der\nAufteilung stand, konterkarieren.

\n

Der Vortrag betrachtet ein konkretes Beispiel von Modulinteraktion in einem monolithischen System und identifiziert die\nProblemstellungen die sich ergeben, wenn man dieses System in exakt dem gleichen Interaktionsstil aufteilt. Danach wird\neine alternative Implementierungsstrategie für das monolithische System diskutiert, die die Modularität des\nUrsprungssystems stark verbessert und im Falle einer Aufteilung in unabhängige Teilsysteme zu einer besseren Architektur\nführt.

\n

Materialien:

\n","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","time":null,"speaker":["oliver_drotbohm"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"9685adbf-d27b-5f98-934a-54d7dc3fcdb8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383898","images":{"fallback":{"src":"/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png","srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w","sizes":"100vw"},"sources":[{"srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4141821112006447}}},"poster_alt":"Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet.","tags":["architektur"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/","sourceName":"talks"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","html":"

Die SAP Cloud Platform (SCP) beschreibt ein „Platform as a Service“ (PaaS) Angebot der SAP. Mit der SCP liefert SAP\nsowohl die Entwicklungsumgebung als auch die Laufzeitumgebung zur Realisierung kundenindividueller Erweiterungen von\nCloud- und On-Premise-Lösungen (z.B. SAP S/4HANA). Basierend auf der In-Memory-Plattform SAP HANA stellt die SCP eine\nVielzahl an Datenbank- und Cloud-Services zur Verfügung, welche das PaaS Angebot erweitern und die Integration von SAP-\nund Non-SAP-Lösungen ermöglichen. Im Vortrag wird illustriert, wie die Verbindung aus einer Java EE Applikation zu einem\nSAP On-Premise System hergestellt und dessen Funktionalität in der Cloud genutzt wird.

\n

Materialien:

\n","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","time":null,"speaker":["jens_leuschner","mariusz_zienkiewicz"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"65d7329c-3fb6-5a77-8b25-3984a599f9e8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png","srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol.","tags":["cloud"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/","sourceName":"talks"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","html":"

Während in einer klassischen Konzern-IT Standards und Blaupausen für immer gleiche Anwendungsarchitekturen sorgen,\nbetonen Microservice-Ansätze die technologische Freiheit. Zwei extreme Spielarten der Ausgestaltung von Makro- und\nMikroarchitektur. In diesem Vortrag lernt Ihr neben dem Konzept selbst auch die auf Eure Ziele abgestimmte Richtung, die\nIhr in dieser Fragestellung einschlagen solltet. Wie sieht in Eurem Kontext die Balance aus -- was gebt Ihr für alle\nElemente Eurer Anwendung(slandschaft) vor, wo lasst Ihr bewusst Spielraum? Und gibt es auch noch etwas dazwischen? Zu\ndiesem Zweck passen wir organisatorische und technologische Trends wie 2-Speed/Bimodale Architekturen, Cloud und\nDomänenorientierung in das Entwurfsdoppel Makro und Mikro ein.

","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","time":null,"speaker":["stefan_zoerner"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"96d1873a-e218-5bea-9d77-8dc2e42dbbc6","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#082868","images":{"fallback":{"src":"/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png","srcSet":"/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,\n/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,\n/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen freut sich und hält einen Bauplan in der Hand.","tags":["architektur"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/","sourceName":"talks"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","html":"

Die Ankündigung der Unterstützung von Kotlin für die Android-Entwicklung auf der Google I/O Keynote 2017 bewirkte\nspontan kräftigen Applaus. Kotlin ist nur eine weitere Programmiersprache für die JVM. Warum also bewirkt die\nverhältnismäßig dröge Ankündigung zur Unterstützung einer JVM-Sprache solche Begeisterung? Was ist das Besondere an\nKotlin gegenüber Java? Der Vortrag gibt einen ersten allgemeinen Einblick in die Sprachfeatures von Kotlin und gibt\nKotlin-Neulingen die Möglichkeit, sich selbst einen Eindruck über die Sprache zu verschaffen.

\n

Materialien:

\n","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","time":null,"speaker":["tobias_blaschke"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"1a259f6b-01d1-58d9-9813-e4fb56a34153","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8b808","images":{"fallback":{"src":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png","srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze","tags":["programmiersprachen"]},"fields":{"slug":"/talks/2018-04-25-kotlin/","sourceName":"talks"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","html":"

Die RESTful-Architektur ist eine etablierte Möglichkeit, Schnittstellen zwischen Client und Server zu gestalten. Dies\nbringt allerdings einige Nachteile mit sich. Als Beispiel können hier die hohe Anzahl an benötigten Requests sowie die\nnur unvollständige Dokumentation der Schnittstelle genannt werden. Mit GraphQL entwickelte Facebook eine alternative\nAbfragesprache, welche die genannten Nachteile beseitigen sollte. Dabei wird eine Abfrage ähnlich der Struktur der\nJSON-Syntax an den Server übermittelt, welcher die gewünschten Daten mit nur einer Antwort zur Verfügung stellt.

\n

Im Vortrag wird GraphQL anhand von Beispielen vorgestellt und dabei sowohl die Client- als auch Serverseite betrachtet.

\n

Materialien:

\n","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","time":null,"speaker":["stephan_strehler"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"90e1be0b-07fd-5977-ad85-c716671424c1","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e838a8","images":{"fallback":{"src":"/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png","srcSet":"/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,\n/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,\n/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen.","tags":["programmiersprachen","web","architektur"]},"fields":{"slug":"/talks/2018-05-30-graphql/","sourceName":"talks"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","html":"

Unveränderliche Datenstrukturen sind ein wichtiges Werkzeug der funktionalen Programmierung. Aber auch abseits dessen\nkönnen Immutables ungemein nützlich sein: Richtig angewandt erhöhen sie die Verständlichkeit des Codes, da\nEntwicklerInnen nicht mehr auf die mühsame Suche gehen müssen, an welcher Stelle ein Objekt möglicherweise ungewollt\nverändert wurde. Darüber hinaus sind Immutables inhärent Threadsafe und können auch hier die Nachvollziehbarkeit des\nCodes erhöhen.

\n

Da Java als Sprache aber keine besondere Unterstützung für Immutables mitbringt, müssen EntwicklerInnen auf Patterns und\nBibliotheken zurückgreifen, um in den Genuss von unveränderlichen Datenstrukturen zu kommen. Denn natürlich müssen auch\nin funktionalen Programmen letztlich Veränderungen der Daten abgebildet werden und dafür bedarf es geeigneter\nUnterstützung.

\n

Im Vortrag möchte ich neben einer grundsätzlichen Einführung in die Thematik auch einige dieser Techniken vorstellen und\nihre Vor- und Nachteile besprechen.

\n

Materialien:

\n","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"314ba704-f1f4-5d2c-8535-b32da028a3c9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#780838","images":{"fallback":{"src":"/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png","srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand.","tags":["programmiersprachen","functional-programming"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/","sourceName":"talks"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","html":"

Spätestens seit Java 8 gibt es monadische Typen in Java. Aber was bedeutet das eigentlich? Was sind die Eigenschaften,\ndie Monaden ausmachen? Und wo liegen unsere Schwierigkeiten beim Verständnis von Monaden? Dieser Vortrag beschreibt, was\neine Monade ist und wie wir eine monadische Transaktion nutzen können, um in domänenspezifischer Sprache mit einer\nDatenbank zu reden. Hierbei bauen wir monadische Transaktionen in ein vorhandenes Repository ein. Weiter beleuchten wir\ndie Vor- und Nachteile dieses Ansatzes und diskutieren die Unterstützung von Monaden in Java. Voraussetzung sind erste\nErfahrungen mit funktionaler Programmierung und Lambdas.

\n

Materialien:

\n","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","time":null,"speaker":["gregor_trefs"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"918002c9-e393-5b8d-a2d6-ee73c1735383","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#680838","images":{"fallback":{"src":"/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png","srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben.","tags":["functional-programming"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/","sourceName":"talks"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","html":"

Anstelle über Microservices, NO-SQL Lösungen oder Container-Management zu reden werden im Workshop Bestandteile des\nStandard Java API vorgestellt. Diese Java Features helfen jedem Entwickler eine wartbare und zukunftssichere Anwendung\nzu entwickeln, egal ob mit Spring, JavaFX oder JavaEE. Verschiedene Sprach-Features und Konzepte der Standard Java APIs\nwerden genauer unter die Lupe genommen und deren sinnvoller Einsatz anhand von Beispielen gezeigt. Hierdurch werden\nunter anderem folgende Fragen beantwortet: Wie funktionieren eigentlich Annotations? Wie entwickle ich Plug-In\nFunktionalität ohne auf OSGI zurückgreifen zu müssen? Wie gehe ich am besten mit NullPointerExceptions um? Wie schreibe\nich nebenläufigen Code der trotzdem wartbar ist?

","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","time":null,"speaker":["hendrik_ebbers"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"8509bc59-0ad5-5d24-87e3-f253d53d68b2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3858b8","images":{"fallback":{"src":"/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png","srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'","tags":["java"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/","sourceName":"talks"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","html":"

Java Reflections sind ein Feature der Java Sprache und werden von der JVM für das interne Handling von Klassen, Feldern\nund Methoden verwendet. Intern werden darüber Methodenaufrufe, Zugriffsrechte wie public/privat oder seit Java 9 auch\ndie Modulexporte geregelt.

\n

Dieses Feature kann man sich in der normalen Java Umgebung zu Nutze machen, um auf alle Informationen einer Klasse\nzuzugreifen. So ist es möglich, auf deren Methoden und Felder zuzugreifen, selbst wenn diese privat sind. Felder können\nüberschreiben, Template-Parameter in Feldern und Methoden angezeigt, sowie auch Annotationen der Klasse, Methoden und\nFelder gelesen werden. Am Beispiel eines abstrakten Klassen-Editors werden diese Möglichkeiten in dem Vortrag näher\nbetrachtet.

","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","time":null,"speaker":["erik_jaehne"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"b2cb5256-0c61-5e8b-8a34-23f74562f16f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png","srcSet":"/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,\n/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,\n/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.","tags":["java"]},"fields":{"slug":"/talks/2019-02-27_reflection/","sourceName":"talks"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","html":"

Die Website der JUG Görlitz läuft fast Serverless. Natürlich muss ein Webserver Dateien ausliefern aber ansonsten sind\nkeine Datenbank, Applicationserver, PHP oder sonstige aktive Serverkomponenten im Einsatz. Stattdessen sind alle Inhalte\nals Markdown-Textdateien in einem Git-Repository abgelegt (dieser Talk\nbeispielsweise\nhier). Ein so\ngenannter \"Static-Site-Generator\" generiert daraus HTML-, CSS- und JavaScript-Dateien, die nur noch von einem ganz\nnormalen HTTP-Server ausgeliefert werden müssen. Dieses Vorgehen vereinfacht das Hosting, beschleunigt Website-Aufrufe\nund minimiert die Angriffsfläche des Servers.

\n

Im Vortrag wird das Konzept von Static-Site-Generators erklärt und die möglichen Einsatzgebiete beschrieben. Mit dem\nTool Gatsby werden wir eine einfache Blog-Website bauen. Am Beispiel der JUG-Website wird\naber auch gezeigt, wie komplexere Daten-Modelle mit mehreren Entitäten (Vorträge, Speaker,\nVeranstaltungsorte, Tags) umgesetzt werden können. Die technische Grundlage von Gatsby stellt\nReact für Templates und GraphQL für die Daten-Organisation dar.

\n

Materialien:

\n","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"bffb7b05-0e58-5922-92df-21ce241ccd84","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c868","images":{"fallback":{"src":"/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png","srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w","sizes":"100vw"},"sources":[{"srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.414516129032258}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen.","tags":["web","javascript"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/","sourceName":"talks"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","html":"

Mit dem JDK-Enhancement-Proposal (JEP 322) wird die zeitbasierte Java-Release-Versionierung definiert, die auf dem\naktuellen Java SE Version-String-Schema basiert und die Namensgebung für die kommenden Versionen der Java SE Plattform\nund vom JDK vorgibt. Seit dem Jahr 2018 erscheinen die künftigen Java-Feature-Releases alle 6 Monate. Das JDK 11 wurde\nals Long-Term-Support-Release (LTS-Release) im September 2018 veröffentlicht und nach sechs Monaten folgte das OpenJDK\n12 im März 2019. Mit dem zeitlichen Abstand von sechs Monaten bekommen die Entwickler wesentlich schneller neue\nJava-Funktionsmerkmale als dies mit dem bisherigen Dreijahreszyklus der Fall war. Zwischen den\nOpenJDK/JDK-Feature-Releases sind zwei Updates geplant, bei denen es um die Wartung und Bugfixes geht, die wie gewohnt,\njeweils im Januar, April, Juli und Oktober eines Jahres als Java Critical Patch Update erscheinen werden. Die Planung\nsieht vor, jeweils alle drei Jahre ein weiteres Java-LTS-Release zu veröffentlichen, damit der Anwendungsbetrieb eine\nstabile und ausgereifte Java-Basis bekommt, die mit der nachfolgenden Versionierung $FEATURE.$INTERIM.$UPDATE.$PATCH\ngekennzeichnet wird. Im Vortrag werden Beispiele zum Version-String besprochen, sowie Empfehlungen diskutiert, wie die\nkünftige Java-Strategie mit dem OpenJDK, Oracle JDK (LTS) und der neuen Java SE Subscription (Support) für die\nEntwickler und für den Anwendungsbetrieb aussehen soll. Zudem wird die Weiterentwicklung der OpenJFX/JavaFX\nUI-Technologie mit den Aktivitäten der Developer-Community dargestellt.

","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"e335d1a1-3789-5e42-9670-a3e1c361eadc","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png","srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle.","tags":["java"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/","sourceName":"talks"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","html":"

Der Vortrag erläutert zunächst die Grundlagen der Standards OAuth 2.0 und OpenID-Connect und geht danach auf den Einsatz\ndieser Standards mittels Keycloak ein. Dabei wird anhand einer Beispielanwendung (React, Spring Boot) gezeigt, wie man\nKeycloak in seine Anwendung einbinden kann.

","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","time":null,"speaker":["denny_israel"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"cb4beaed-8514-5a8a-8dfe-7bec12fbdd27","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#386898","images":{"fallback":{"src":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png","srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.","tags":["java","security"]},"fields":{"slug":"/talks/2019-05-29-oauth/","sourceName":"talks"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","html":"

HashMap und ArrayList kennt jeder, na klar. Aber wann stellen diese eigentlich die richtige Wahl dar? Und vor allem:\nWann nicht? Das Collections Framework enthält zahlreiche, teils recht spezialisierte Implementierungen. Doch viele\nEntwickler kennen nur einen kleinen Teil davon. Schon mal was von EnumSet oder WeakHashMap gehört? Und was ist der\nUnterschied zwischen ConcurrentSkipListMap und ConcurrentHashMap? Für jeden Java-Entwickler ist es wichtig, die Stärken\nund Schwächen der einzelnen Implementierungen zu kennen. Dieser Vortrag diskutiert Details wie Threadsicherheit,\nLaufzeitverhalten und sinnvolle Initialisierung anhand einiger ausgewählter Collection-Klassen.

\n

Materialien:

\n","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","time":null,"speaker":["thilo_frotscher"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"ecc9b098-2be1-50e1-87d8-48488a256061","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389838","images":{"fallback":{"src":"/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png","srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'.","tags":["java"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/","sourceName":"talks"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","html":"

Hattest du auch schon mal das Problem, dass du deine eigenen komplizierten und unleserlichen Testfälle nicht mehr\nverstanden hast? Wir kennen das Problem und zeigen euch mögliche Lösungen.

","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"tallence","virtual":null,"poster":{"childImageSharp":{"id":"6f443280-7e6e-5951-ab2a-0815064e81b4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86868","images":{"fallback":{"src":"/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png","srcSet":"/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,\n/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,\n/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben.","tags":["java","test"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/","sourceName":"talks"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","html":"

\"Create Apps, Not the Platform\" - Cloud Foundry verspricht, dass sich Entwicker voll und ganz auf die\nAnwendungsentwicklung fokussieren können, anstatt einen erheblichen Teil ihrer Zeit auf Infrastruktur, Deployment usw.\nverwenden zu müssen. Was ist Cloud Foundry überhaupt? Und hält sie, was sie verspricht?

","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","time":null,"speaker":["simon_roloff"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#583898","images":{"fallback":{"src":"/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png","srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken.","tags":["cloud"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/","sourceName":"talks"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","html":"

Nach der Freigabe vom JDK 14 werden die aktuellen Merkmale vorgestellt. Neben Bug-Fixes und Security-Patches, stecken im\nJDK 14 Feature-Release, Sprach- und JVM-Änderungen, Erweiterungen, zugefügte und entfernte Klassen und Methoden,\ndeprecated markierte Features und JDK-Tool-Änderungen. Bereits mit der Einführung der JDK Version 11 wurden die\ntechnischen Unterschiede bei der Gleichstellung vom Oracle JDK mit dem Oracle OpenJDK entfernt. Bei diesem\nTechnologietransfer sind alle Bestandteile vom Oracle JDK als Open-Source-Implentierungen in das OpenJDK geflossen,\nsodass das Oracle JDK 14 durch das OpenJDK 14 augetauscht werden kann. Die Anwender können ein JDK oder ein OpenJDK\nverschiedener Hersteller frei auswählen. Dazu werden die Migrationsaspekte älterer Java-Anwendungen zum JDK 14\nerläutert. Im Vortrag wird auch ein Blick auf den langfristigen Einsatz vom Java Modulsystem geworfen und dies anhand\nvon Beispielen durch Erstellung einer individueller Java Runtime mit der Anwendung verdeutlicht. Zudem wird die die\nGraalVM als universelle Virtuelle Maschine (VM) für Anwendungen im Java Ökosystem betrachtet.

\n

Materialien:

\n\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu hat Wolfgang ein Zoom-Meeting aufgesetzt. Dieser Meeting-Raum ist\nPasswortgeschützt. Bitte meldet euch vorab per E-Mail an. Wir schicken euch dann vor dem Meeting das Passwort per Mail\nzu.

\n

Dieses Mal geht es schon 18:00 Uhr los.

","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","time":"18:00","speaker":["wolfgang_weigend"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"59ef0a09-a854-5bc5-a122-2d35ddcf6987","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#486888","images":{"fallback":{"src":"/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png","srcSet":"/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,\n/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,\n/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,\n/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,\n/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,\n/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,\n/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen.","tags":["java"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/","sourceName":"talks"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","html":"

Als Softwareentwickler ist man auf die Verwendung von Versionsverwaltungssystemen und deren Branching- und\nMerging-Strategien angewiesen. Vorgaben, wie diese Strategien angewendet werden müssen, liefern diverse\nBranching-Modelle. Sie sollen vor Allem den Entwickleralltag erleichtern, indem sie für eine saubere Historie sorgen,\nden Softwarereleaseprozess unterstützen oder verhindern, dass man in der Merge-Hölle landet. In dem Vortrag werden\neinige Branching-Modelle vorgestellt. Dabei wird der Frage auf den Grund gegangen, welche Art von Modell zu welcher Art\nvon Softwareprojekt passt und welche allgemeingültigen Vorgehensweisen beim Branching und Merging daraus gezogen werden\nkönnen.

\n

Materialien:

\n\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt:\nhttps://meet.digitale-oberlausitz.eu/jug

","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","time":null,"speaker":["hannes_kretschmer"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"1908832c-2f77-598f-a24b-2bcdee954b3a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png","srcSet":"/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,\n/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,\n/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet.","tags":["java"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/","sourceName":"talks"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","html":"

Durch die Veröffentlichung von immer neuen Schwachstellen in Softwareprodukten rückt das Thema Application Security\nzunehmend in den Fokus vieler Softwareentwickler. Sichere Software zu erstellen muss aber keine große Herausforderung\nsein, wenn man Best Practices befolgt und der Application Security einen festen Platz im Entwicklungszyklus einräumt.\nZiel des Vortrags ist es, einen Überblick zu Secure Coding in Java zu vermitteln und die Wichtigkeit dieses Themas\nhervorzuheben. Im Detail wird außerdem an praktischen Beispielen demonstriert, wie Sicherheitsschwachstellen im\nProgrammcode aussehen, ausgenutzt und behoben werden können.

\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt:\nhttps://meet.digitale-oberlausitz.eu/jug

","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","time":null,"speaker":["nico_foerster"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#182838","images":{"fallback":{"src":"/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png","srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben.","tags":["java","security"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/","sourceName":"talks"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","html":"

Web-Components sind eine Möglichkeit, auf Basis von Web-Standards wiederverwendbare UI-Komponenten zu bauen, die sich\nbrowserübergreifend und unabhängig von JavaScript-Frameworks einsetzen lassen. Im Vortrag möchte ich die relevanten\nWeb-Standards kurz vorstellen und im Live-Coding eine Web-Componente from Scratch bauen.

\n

Dabei möchte ich auch auf die Stärken und Schwächen von Web-Components eingehen und einige Erfahrungen teilen, die ich\nbei der Entwicklung einer firmeninternen Component-Library machen konnte.

\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt:\nhttps://meet.digitale-oberlausitz.eu/jug

","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"9bba5bef-9d0e-50c8-b451-ffed64ad6bd4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#981848","images":{"fallback":{"src":"/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png","srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus.","tags":["web"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/","sourceName":"talks"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","html":"

MicroStream ist ein fundamental neues Persistenz-Framework für die native Speicherung komplexer Java Objektgraphen.\nD.h., Objekte werden damit genau so persistent gespeichert, wie diese im Hauptspeicher von der JVM verwaltet werden.\nUmgekehrt lassen sich zu jeder Zeit einzelne Subgraphen in den RAM laden und der Objektgraph im Hauptspeicher wird\nautomatisch aktualisiert.

\n

Dadurch ergeben sich völlig neue Möglichkeiten: Objektgraphen lassen sich als In-Memory Datenbank verwenden. Ein\nObjektgraph ist dabei eine sehr mächtige Multi-Model Datenstruktur. Es lassen sich beliebige Java-Typen, Collections\nsowie Formate wie JSON verwenden und beliebig kombinieren. Passend dazu bietet Java die perfekte Abfragesprache. Mit\nJava Streams dauert das Durchsuchen selbst sehr großer und komplexer Objektgraphen nur Mikrosekunden - bis zu 1000 Mal\nschneller als vergleichbare SQL-Abfragen und sogar sehr viel schneller als das direkte Lesen von Abfrageergebnissen aus\neinem lokalen Cache. DB-spezifische Datenstrukturen oder Formate werden damit bedeutungslos für Java. Keine teuren\nMappings mehr. Keine Datentyp-Konvertierungen mehr. Keine DB-spezifischen Abfragesprachen. Nur noch ein Datenmodell:\nJava-Klassen (POJOs). Kein zusätzliches Caching-Framework mehr. Keine unkomfortablen Objektkopien mehr. Simple\nArchitektur und typsicherer Abfrage-Code. Reine Core-Java Features anstatt DB-spezifische Konzepte. Das Endresultat ist\neine ultraschnelle Java In-Memory Datenbankanwendung oder Microservice.

\n

MicroStream wird bereits seit über 5 Jahren in Unternehmensanwendung produktiv eingesetzt. Jetzt wird MicroStream Open\nSource und Teil der populären Microservice Frameworks Helidon und Open Liberty.

\n

Materialien:

\n\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt:\nhttps://meet.digitale-oberlausitz.eu/jug

","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","time":null,"speaker":["markus_kett","christian_kuemmel"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"1567f34a-c228-511c-a368-2041cf79e3fa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f85838","images":{"fallback":{"src":"/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png","srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen.","tags":["web"]},"fields":{"slug":"/talks/2021-06-30-microstream/","sourceName":"talks"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","html":"

Die Persistenz von IoT Daten sowie die Steuerung von IoT-Endgeräten benötigt im klassischen Verständnis eine\nServereinheit. Bei den Bastlern sind das oft on-premise Raspberry-Pi-Geräte oder gehostete Linux-Maschinen. Ihre\nkorrekte Konfiguration und anschließende Wartung kann Kopfzerbrechen bereiten. Es ist jedoch möglich, diese\nVerantwortung an den Cloud-Betreiber zu übertragen und eine entsprechende Infrastruktur zu schaffen. In der\nHands-On-Session wird gezeigt, wie man mit der Erstellung der gewünschten Infrastruktur in der AWS-Cloud beginnen kann.\nDazu wird ein Mikrocontroller vom Typ ESP als physisches IoT-Gerät verwendet.

\n
\n

Hinweis: Bitte meldet euch zur Teilnahme über jug-gr(at)digitale-oberlausitz.eu an. Wir haben eine begrenzte Anzahl\nvon 25 Plätzen zur Verfügung, die nicht überschritten werden darf.

","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","time":null,"speaker":["pawel_adaszewski"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8b838","images":{"fallback":{"src":"/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png","srcSet":"/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,\n/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,\n/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln.","tags":["cloud","iot","serverless","infrastructure"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/","sourceName":"talks"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","html":"

Mit der fischertechnik Lernfabrik haben wir eine Fabrik im Kleinformat! Steuerung, Edge und Cloud in Einem!

\n

\n \n \n \n \n

\n

In diesem Vortrag lernen wir die Technologien und Möglichkeiten von Industrie 4.0 praktisch kennen. Wir nutzen das\nIndustrieprotokoll OPC-UA zur Maschinenkommunikation und Edge-Services um Fabrikdaten in die Cloud zu laden. Wir sehen\nuns die Services hinter einem Dashboard an und mit der Siemens S7 Steuerung tunen wir unsere Fabrik.

\n
\n

Hinweis: Bitte meldet euch zur Teilnahme über jug-gr(at)digitale-oberlausitz.eu an. Wir haben eine begrenzte Anzahl\nvon 25 Plätzen zur Verfügung, die nicht überschritten werden darf.

","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","time":null,"speaker":["marco_gotthans"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"1a0dbc74-dd80-5566-aa7d-5a4aac2ba518","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#28b898","images":{"fallback":{"src":"/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png","srcSet":"/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,\n/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,\n/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen.","tags":["cloud","iot","industrie4.0","infrastructure"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/","sourceName":"talks"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","html":"

Keycloak ist ein Open Source IAM (Identity and Access Management) System, das größtenteils in Java implementiert ist.
\nEs wird von vielen Unternehmen eingesetzt, um Authentifizierung und Authorisierung für verschiedenste Anwendungen\numzusetzen. Eine große Stärke von Keycloak ist die Konfigurierbarkeit und Erweiterbarkeit.
\nIm Vortrag wird ein Überblick über die Konfigurations- und Erweiterungsmöglichkeiten gegeben. In einer Live-Demo wird\ngezeigt, wie man diese Möglichkeiten nutzen kann, um ein kundenspezifisches IAM bereitzustellen.

","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","time":null,"speaker":["daniel_fesenmeyer"],"location":"innolabs","virtual":null,"poster":{"childImageSharp":{"id":"0b48a461-1420-5309-b315-926387e3fc44","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png","srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.","tags":["security"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/","sourceName":"talks"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","html":"

Die Mehrheit aktueller Content Management Systeme (CMS) verwaltet Inhalte auf vergleichbare Art wie Dateien in einem Windows-Netzwerkordner. Wie könnte dagegen ein CMS aussehen, wenn wir nochmal von Null starten und auf heutige Technologien wie Git, GraphQL und der Cloud aufbauen?\nIm Vortrag sehen wir uns die Architektur von Contentlab an, einem Git-basierten Open Source CMS, und erstellen live eine CMS Instanz zum Verwalten von Veranstaltungen.

","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","time":null,"speaker":["markus_weiland"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"86c1c8d2-94ea-5866-bbdb-3ac21398dcc3","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#9868a8","images":{"fallback":{"src":"/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png","srcSet":"/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,\n/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,\n/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,\n/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,\n/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,\n/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,\n/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Laborkittel und eine Sicherheitsbrille. In der Hand trägt er zwei Reagenzgläser. Über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub.","tags":["platform","web"]},"fields":{"slug":"/talks/2023-01-25-contentlab/","sourceName":"talks"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","html":"

Fehler sind ein fester Bestandteil unserer Arbeit. Die Suche und das Verstehen dieser nimmt viel Zeit in Anspruch. Die Fehlerbehebung ist häufig nur eine Zeile Code. Wie kann der Prozess des Suchens und Verstehens optimiert werden? Dies ist durch eine strategische Vorbereitung der Codebasis möglich.

\n

Hierfür stelle ich zwei Transformationen vor. Ziel der ersten Transformation: Beim Auftreten eines Fehlers erfolgt der sofortige Ausstieg aus dem Code mit einer aussagekräftigen Exception. Das ist sehr ähnlich zur Validierung. Auf Ähnlichkeiten und Unterschiede gehe ich im Detail ein. Ziel der zweiten Transformation: Trennung der Standard-Logik von den Sonderfällen. Dies verbessert die Lesbarkeit. Zusätzlich ergänzt es die erste Transformation.

\n

Anhand der vorgestellten Beispiele kannst du schon morgen deinen Code stabilisieren und deine eigenen Analysen effizienter durchführen. Außerdem gebe ich einen Ausblick darauf, wie du noch mehr aus diesem Konzept rausholen kannst.

","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","time":null,"speaker":["sergej_tihonov"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"85b5c33a-1b3d-5625-8375-408b5c1f84bf","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e88838","images":{"fallback":{"src":"/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png","srcSet":"/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,\n/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,\n/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.","tags":["architektur"]},"fields":{"slug":"/talks/2023-02-22-exception_first/","sourceName":"talks"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","html":"

Die Architektur und das Design einer Applikation beeinflussen ihre Wartbarkeit, Testbarkeit und Qualität im Allgemeinen.\nSpring war schon immer ein vielseitiges Werkzeug, das Architekt:innen dabei unterstützt, Muster zu implementieren, mit\nHilfe derer technische Bausteine der Applikation mit Domänenkonzepten und -grenzen verknüpft werden können. Es erlaubt\nEntwickler:innen Anwendungen zu schreiben, die ihre architektonischen Ideen deutlich reflektieren und so ultimativ\nänder- und damit wartbarere Anwendungen zu schreiben. Schlüsselaspekte dahin gehend sind Codeorganisation, das\nSpring-Bean-Arrangement und die Nutzung von Domänen-Events, um fachlich individuelle Teile der Applikation voneinander\nzu entkoppeln. Der Vortrag diskutiert diese Muster und Ansätze und stellt Blibliotheken wie jMolecules und Moduliths\nvor, um zu zeigen, wie Spring-Entwickler in die Lage versetzt werden, besonders gut strukturierte und wartbare\nAnwendungen zu schreiben.

\n
\n

Hinweis: Wir treffen uns heute das erste mal im Fraunhofer-Institut IOSB. Hier wird vor allem im Bereich\nIT-Sicherheit für Kritische Infrastrukturen für Energie und Wasser geforscht und wir haben die Möglichkeit, eine kurze\nFührung durch das Institut zu bekommen. Deshalb treffen wir uns dieses Mal bereits 18:30 Uhr. Der reguläre Vortrag\nstartet wie gewohnt um 19:00 Uhr.

\n

Einen kurzen Einblick darüber, was wir in diesen Ersten Teil gesehen und gehört haben, könnt ihr auf der Website der Digitalen Oberlausitz e. V. nachlesen.

","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","time":"18:30","speaker":["oliver_drotbohm"],"location":"fraunhofer","virtual":null,"poster":{"childImageSharp":{"id":"ab1c70db-cea4-586b-be81-643ef56fc65a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8a808","images":{"fallback":{"src":"/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png","srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt.","tags":["architektur"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/","sourceName":"talks"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","html":"

Architektur und Code driften immer weiter auseinander? Die Umsetzung von nicht-funktionalen Anforderungen und Querschnittsaspekten wird häufig vergessen? Zu viel Spaghetti-Code durch zyklische Abhängigkeiten? Solche Dinge kommen leider viel zu häufig vor und führen schnell zu einer unwartbaren Codebasis.\nIm Java-Umfeld ist die Bibliothek ArchUnit eine mögliche Lösung für diese Situation. Wir schauen, wie wir mit ArchUnit unsere Architektur innerhalb von Unit-Tests testen können und endlich wieder Struktur ins System bekommen. Außerdem schauen wir uns darauf aufbauend jMolecules an, womit wir Architekturkonzepte direkt im Code abbilden können.

","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","time":null,"speaker":["roland_weisleder"],"location":"expleo","virtual":null,"poster":{"childImageSharp":{"id":"197c670b-992f-54d0-9a49-0aac78c4b5e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a848","images":{"fallback":{"src":"/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png","srcSet":"/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,\n/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,\n/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. In den Hängen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen.","tags":["architektur","test"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/","sourceName":"talks"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","html":"

Dániel Sulyok von der Tallence AG stellt seine Arbeit im Rahmen des Themas Accessibility (Barrierefreiheit) vor. Das Team wurde beauftragt mit der Umsetzung des Redesigns und technischem Neubau der Webanwendung \"Account Manager\" mit einem besonderen Fokus auf Barrierefreiheit. In enger Abstimmung zwischen Design, Entwicklung und Endnutzern wurden entwicklungsbegleitende UX-Tests durchgeführt und iterativ die Zugänglichkeit und Bedienbarkeit der Anwendung verbessert.

\n

Materialien:

\n","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","time":null,"speaker":["daniel_sulyok"],"location":"tallence","virtual":null,"poster":{"childImageSharp":{"id":"2289c524-859b-5899-a8d7-b9ae17afcad5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85888","images":{"fallback":{"src":"/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png","srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake.","tags":["java"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/","sourceName":"talks"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","html":"

Die GraalVM ist eine Virtuelle Maschine (VM) für Anwendungen, die in JavaScript, Python, Ruby, R oder mit den JVM-basierten Programmiersprachen Java, Scala, Kotlin, Clojure und LLVM-basierten Sprachen C/C++ geschrieben wurden. Am 13. Juni 2023 wurde die GraalVM 23 freigegeben, mit Performanceverbesserungen und Native-Image-Optimierungen, sowie polyglotter Unterstützung für verschiedene Programmiersprachen, zur Interoperabilität in einer gemeinsamen Laufzeitumgebung. GraalVM kann eigenständig oder im Kontext von OpenJDK, Node.js und Datenbanken betrieben werden. Mit GraalVM‘s Ahead-of-Time-Fähigkeit kompilierte Native Images verfügen über eine optimierte Startup-Time und sie verringern den Memory-Verbrauch von JVM-basierten Applikationen. Die GraalVM kann wahlweise als Open-Source-Community-Edition (CE) oder als optimierte Oracle GraalVM mit GFTC-Lizenz “GraalVM Free Terms and Conditions (GFTC) including License for Early Adopter Versions” verwendet werden. Im Vortrag wird die GraalVM-Architektur im Java-Ökosystem dargestellt und die Einsatzgebiete erläutert, beispielsweise der in Java entwickelte C2-JIT-Compiler und die Verwendung von GraalVM Native Images. GraalVM kann für Spring Boot und Microservices-Frameworks verwendet werden.

","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b878a8","images":{"fallback":{"src":"/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png","srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt.","tags":["java"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/","sourceName":"talks"}}},{"node":{"id":"5bfff80b-ea15-5ee9-8b28-c9449c05ca8c","html":"

Wie funktionieren eigentlich kollaborative Web-Anwendungen, bei denen mehrere Leute gleichzeitig an den gleichen\nDokumenten arbeiten können? Live-Kollaboration bieten Anwendungen wie Google-Docs schon seit Langem. Das Verfahren,\nwelches hier zum Einsatz kommt, setzt aber immer einen zentralen Server voraus, was für die Anwender*innen auch\nNachteile mit sich bringt.

\n

Eine moderne Alternative können so genannte \"Conflict-Free Replicated DataTypes\", kurz CRDT sein. Anwendungen auf dieser\nBasis können prinzipiell auch ohne eine zentrale Instanz auskommen. Im Vortrag wollen wir uns die verschiedenen\nVarianten anschauen und sehen, wie sich damit Anwendungen bauen lassen, die moderne Annehmlichkeiten wie\nLive-Kollaboration, Synchronisierung zwischen Geräten und Offline-Fähigkeit bieten, ohne dabei zwingend auf eine\nzentrale Cloud angewiesen zu sein.

","frontmatter":{"title":"Kollaborative Anwendungen und 'local first apps'","date":"2023-09-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"zeiss","virtual":null,"poster":null,"poster_alt":null,"tags":[]},"fields":{"slug":"/talks/2023-09-27-kollaborative-anwendungen/","sourceName":"talks"}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","html":"

Heutzutage gibt es viele Möglichkeiten, um Cloud-Infrastrukturen aufzubauen. Dazu gehören die Containerisierung, die manuelle Erstellung von Ressourcen (auch bekannt als Click-Ops) und die populären deklarativen YAML-Definitionen. Jede dieser Lösungen hat ihre Vorteile. Allerdings haben sie auch Limitierungen, die bei der Entwicklung von Produktionssoftware vermieden werden sollten.

\n

Einige Lösungen bieten einen einfachen Einstieg, dafür muss mangelnde Skalierbarkeit und Replizierbarkeit in Kauf genommen werden. Andere bieten zwar Skalierbarkeit, können aber nicht modularisiert werden, was den Aufbau und die Wartung großer Infrastrukturen erschwert.

\n

Das AWS CDK Framework löst diese Probleme und ermöglicht die Erstellung von Ressourcen mit bekannten Programmiersprachen wie Java. Mit dessen Hilfe wird vorgestellt, wie die Entwicklung von Cloud-Infrastrukturen auf ein höheres Level gebracht werden kann. Der Vortrag wird aus der Sicht eines Anfängers, der in der neuen Technologie die Lösung für alle Probleme der Welt sieht, und aus der Sicht eines erfahrenen Anwenders, der täglich mit dem Framework arbeitet und sich an seine Anfänge im Jahr 2019 erinnert, präsentiert.

\n

Durch die Kombination dieser beiden Perspektiven wird nicht nur veranschaulicht, wie einfach der Einstieg in diese Art von Technologie ist, sondern es werden auch praktische Erfahrungen weitergegeben. Auch mögliche Probleme und deren Lösungen werden angesprochen.\nIm Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die Skalierung und Modularisierung von Serverless AWS Infrastrukturen verwendet werden kann.

","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","time":null,"speaker":["pawel_adaszewski","damian_dudziec"],"location":"zeiss","virtual":null,"poster":null,"poster_alt":null,"tags":["java","cloud"]},"fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/","sourceName":"talks"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","html":"

In einer Welt, in der Microservices mehr und mehr zu einer Standardarchitektur für Java-basierte Anwendungen in der\nCloud werden, kann die JVM-Aufwärmzeit zu einer Einschränkung werden.

\n

Vor allem wenn es darum geht, als Reaktion auf Laständerungen neue Instanzen einer Anwendung aufzusetzen, kann die\nAufwärmzeit ein Problem darstellen. Native Images sind eine Möglichkeit, diese Probleme zu lösen, da ihr statisch im\nVoraus kompilierter Code keine Aufwärmzeit benötigt und somit eine kurze Startzeit hat. Aber selbst die kürzere\nStartzeit und der geringere Platzbedarf sind nicht ohne Nachteil. Die Gesamtleistung kann aufgrund der fehlenden\nJIT-Optimierungen zur Laufzeit langsamer sein. Es gibt ein neues OpenJDK-Projekt namens CRaC (Coordinated Restore at\nCheckpoint), dessen Ziel es ist, das JVM-Aufwärmproblem mit einem anderen Ansatz anzugehen. Die Idee ist, einen\nSchnappschuss der laufenden JVM zu machen, diesen in Dateien zu speichern und die JVM zu einem späteren Zeitpunkt (oder\nsogar auf einer anderen Maschine) wiederherzustellen.

\n

Dieser Vortrag gibt Ihnen einen kurzen Überblick über das CRaC-Projekt und zeigt einige Ergebnisse einer\nProof-of-Concept-Implementierung.

","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","time":null,"speaker":["gerrit_grundwald"],"location":"zeiss","virtual":null,"poster":null,"poster_alt":null,"tags":[]},"fields":{"slug":"/talks/2023-11-29-crac/","sourceName":"talks"}}}]},"posts":{"edges":[]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","html":"","frontmatter":{"name":"Alexander Casall","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/alexander_casall/","speakerId":"alexander_casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","html":"","frontmatter":{"name":"Andre Tepper","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/andre_tepper/","speakerId":"andre_tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","html":"","frontmatter":{"name":"Bruno Devic","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/bruno_devic/","speakerId":"bruno_devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","html":"

Christian beschäftigt sich seit über 10 Jahren mit Java und ist seit über 7 Jahren Java-Trainer. Als Projektleiter und\nSoftware-Architekt konzipiert und implementiert er seit 10 Jahren komplexe Software-Systeme für Kunden aus\nunterschiedlichsten Branchen. Als Scrum Master ist er maßgeblich an der Entwicklung der freien Eclipse Distribution und\nvisuellen Java Entwicklungsumgebung RapidClipse.com sowie der Open Source Abfragesprache JPA-SQL beteiligt. Zudem ist\nChristian als Speaker bei zahlreichen Entwicklerkonferenzen bekannt.

","frontmatter":{"name":"Christian Kümmel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8c8c8","images":{"fallback":{"src":"/static/663d1d267755d1addb5f7399c798dd28/9652e/christian_kuemmel.jpg","srcSet":"/static/663d1d267755d1addb5f7399c798dd28/1728b/christian_kuemmel.jpg 750w,\n/static/663d1d267755d1addb5f7399c798dd28/ab791/christian_kuemmel.jpg 1080w,\n/static/663d1d267755d1addb5f7399c798dd28/0955b/christian_kuemmel.jpg 1366w,\n/static/663d1d267755d1addb5f7399c798dd28/9652e/christian_kuemmel.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/663d1d267755d1addb5f7399c798dd28/d6c6a/christian_kuemmel.webp 750w,\n/static/663d1d267755d1addb5f7399c798dd28/ffa03/christian_kuemmel.webp 1080w,\n/static/663d1d267755d1addb5f7399c798dd28/af66e/christian_kuemmel.webp 1366w,\n/static/663d1d267755d1addb5f7399c798dd28/eb0ac/christian_kuemmel.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.0177083333333334}}},"twitter_name":null},"fields":{"slug":"/speakers/christian_kuemmel/","speakerId":"christian_kuemmel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","html":"

Damian ist Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. In den letzten Jahren war er für die Wartung und Weiterentwicklung einer großen Java-Enterprise-Anwendung im Bereich Logistik verantwortlich. Aktuell beschäftigt er sich mit Serverless, automatisierter Infrastrukturbereitstellung und ist ein begeisterter Wanderer durch die AWS-Landschaft geworden, der jeden Tag etwas Neues entdeckt.

","frontmatter":{"name":"Damian Dudziec","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383838","images":{"fallback":{"src":"/static/5640e558ae686329d65703c5e957bb07/1f67d/damian_dudziec.jpg","srcSet":"/static/5640e558ae686329d65703c5e957bb07/74e81/damian_dudziec.jpg 750w,\n/static/5640e558ae686329d65703c5e957bb07/c4291/damian_dudziec.jpg 1080w,\n/static/5640e558ae686329d65703c5e957bb07/80c2b/damian_dudziec.jpg 1366w,\n/static/5640e558ae686329d65703c5e957bb07/1f67d/damian_dudziec.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5640e558ae686329d65703c5e957bb07/77dd0/damian_dudziec.webp 750w,\n/static/5640e558ae686329d65703c5e957bb07/847ea/damian_dudziec.webp 1080w,\n/static/5640e558ae686329d65703c5e957bb07/c5bbd/damian_dudziec.webp 1366w,\n/static/5640e558ae686329d65703c5e957bb07/70a54/damian_dudziec.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4890625000000002}}},"twitter_name":null},"fields":{"slug":"/speakers/damian_dudziec/","speakerId":"damian_dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","html":"

Daniel Fesenmeyer arbeitet als Software Entwickler bei Bosch IO (Berlin). Seine Schwerpunkte sind Backend-Entwicklung, Testing und\nIAM. Derzeit besteht seine Haupttätigkeit darin, Keycloak-Erweiterungen und -Bugfixes zu implementieren, sowohl in\nKundenprojekten als auch in der Open Source Community.

","frontmatter":{"name":"Daniel Fesenmeyer","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484848","images":{"fallback":{"src":"/static/ff8a246288f95ed463003fb141d5e735/f39ed/daniel_fesenmeyer.jpg","srcSet":"/static/ff8a246288f95ed463003fb141d5e735/53ca3/daniel_fesenmeyer.jpg 750w,\n/static/ff8a246288f95ed463003fb141d5e735/f39ed/daniel_fesenmeyer.jpg 1006w","sizes":"100vw"},"sources":[{"srcSet":"/static/ff8a246288f95ed463003fb141d5e735/4512e/daniel_fesenmeyer.webp 750w,\n/static/ff8a246288f95ed463003fb141d5e735/36031/daniel_fesenmeyer.webp 1006w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.18389662027833}}},"twitter_name":"fesicraft"},"fields":{"slug":"/speakers/daniel_fesenmeyer/","speakerId":"daniel_fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","html":"
    \n
  • 2008 -2011 bei der SQS AG als Softwaretester, Projektkoordinator, Testmanager in den Branchen Telekommunikation,\nBanken, öffentlicher Dienst
  • \n
  • Seit 2011 Trainer für ISTQB Foundation und Advanced Level
  • \n
  • Seit 2011 als Dozent an der FH Görlitz (Grundlagen des Softwaretestens)
  • \n
  • Seit 2011 Junior Operation Manager mit Themenschwerpunkte: Mitarbeiterführung, Aus- und Weiterbildung,\nMitarbeitergewinnung, Öffentlichkeitsarbeit
  • \n
","frontmatter":{"name":"Daniel Sernow","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/daniel_sernow/","speakerId":"daniel_sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","html":"

Dániel Sulyok ist Software Developer bei Tallence. Am Standort Görlitz entwickelt er Anwendungen in Fullstack mit einem strengen Blick auf Usability und Accessibility.

","frontmatter":{"name":"Dániel Sulyok","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/50081822309e984340e546ad54f158db/f2005/daniel_sulyok.jpg","srcSet":"/static/50081822309e984340e546ad54f158db/53c59/daniel_sulyok.jpg 750w,\n/static/50081822309e984340e546ad54f158db/64b93/daniel_sulyok.jpg 1080w,\n/static/50081822309e984340e546ad54f158db/2baac/daniel_sulyok.jpg 1366w,\n/static/50081822309e984340e546ad54f158db/f2005/daniel_sulyok.jpg 1778w","sizes":"100vw"},"sources":[{"srcSet":"/static/50081822309e984340e546ad54f158db/3970f/daniel_sulyok.webp 750w,\n/static/50081822309e984340e546ad54f158db/90a5d/daniel_sulyok.webp 1080w,\n/static/50081822309e984340e546ad54f158db/1e947/daniel_sulyok.webp 1366w,\n/static/50081822309e984340e546ad54f158db/8afd9/daniel_sulyok.webp 1778w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.6659167604049494}}},"twitter_name":null},"fields":{"slug":"/speakers/daniel_sulyok/","speakerId":"daniel_sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","html":"

Denny arbeitet als Softwareentwickler bei der Ottogroup Solution Provider (OSP) GmbH, derzeit mit den Schwerpunkten\nSecurity und DevOps. Seit ca. 8 Jahren entwickelt er im Team Softwarelösungen in den verschiedensten Branchen und\nThemen. Immer mit Fokus auf agile Vorgehensweise und pragmatische Problemlösung.

","frontmatter":{"name":"Denny Israel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/5d26c2337d3979921b663ac24f9c75b4/18869/denny.israel.jpg","srcSet":"/static/5d26c2337d3979921b663ac24f9c75b4/18869/denny.israel.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/5d26c2337d3979921b663ac24f9c75b4/3d164/denny.israel.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":"sideisra"},"fields":{"slug":"/speakers/denny_israel/","speakerId":"denny_israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","html":"

Erik Jähne hat von 2010 bis 2015 an der HS Zittau/Görlitz Bachelor und Master Informatik studiert. Seit 2015 ist er bei\nder Quanteo GmbH in Görlitz für Daimler tätig. Dort unter anderem im Lastest und PoC Bereich und als letztes an der\nEntwicklung der Testumgebung für die Sprachsteuerung der neuen Mercedes Fahrzeuge beteiligt.

","frontmatter":{"name":"Erik Jähne","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/erik_jaehne/","speakerId":"erik_jaehne"}}},{"node":{"id":"dcff0301-b7e2-57b8-93a7-219a768e06e5","html":"

Gerrit Grunwald ist ein Softwareentwickler, der schon seit 40 Jahren gerne programmiert. Er ist ein echter Anhänger von\nOpen Source und hat sowohl an populären Projekten wie JFXtras.org als auch an seinen eigenen\nProjekten (TilesFX, Medusa, Enzo, SteelSeries Swing, SteelSeries Canvas, JDKMon) mitgewirkt.

\n

Gerrit bloggt regelmäßig auf http://harmonic-code.org, er ist ein aktives Mitglied der\nJava-Community, in der er die Java User Group Münster gegründet hat und leitet, er ist ein JavaOne Rockstar und ein Java\nChampion. Er ist Sprecher auf internationalen Konferenzen und User Groups und schreibt für verschiedene Magazine.

","frontmatter":{"name":"Gerrit Grundwald","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/eb32dcf4d119698fb4c41c828663b429/83d4e/gerrit_grundwald.jpg","srcSet":"/static/eb32dcf4d119698fb4c41c828663b429/b32a2/gerrit_grundwald.jpg 750w,\n/static/eb32dcf4d119698fb4c41c828663b429/83d4e/gerrit_grundwald.jpg 1031w","sizes":"100vw"},"sources":[{"srcSet":"/static/eb32dcf4d119698fb4c41c828663b429/1bd31/gerrit_grundwald.webp 750w,\n/static/eb32dcf4d119698fb4c41c828663b429/3847e/gerrit_grundwald.webp 1031w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.0775945683802135}}},"twitter_name":null},"fields":{"slug":"/speakers/gerrit_grundwald/","speakerId":"gerrit_grundwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","html":"

Gregor ist einer der Organisatoren der Java User Group Mannheim und Gründer der Softwerkskammer Rhein-Neckar. Er\narbeitet als Team Lead bei LivePerson. Sein erstes Programm war ein in BASIC geschriebenes Text Adventure.

","frontmatter":{"name":"Gregor Trefs","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b8a898","images":{"fallback":{"src":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/d6138/gregor_trefs.png","srcSet":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/d6138/gregor_trefs.png 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/416c3/gregor_trefs.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"gtrefs"},"fields":{"slug":"/speakers/gregor_trefs/","speakerId":"gregor_trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","html":"

Hannes Kretschmer arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation AG in Görlitz. Dabei beschäftigt\ner sich neben der Entwicklung von Java Applikationen mit der Optimierung von Build- und Deployment-Prozessen.

","frontmatter":{"name":"Hannes Kretschmer","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/bd0c7/hannes_kretschmer.jpg","srcSet":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/51b3b/hannes_kretschmer.jpg 750w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/4693e/hannes_kretschmer.jpg 1080w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/b5f28/hannes_kretschmer.jpg 1366w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/bd0c7/hannes_kretschmer.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/6e47b/hannes_kretschmer.webp 750w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/6e082/hannes_kretschmer.webp 1080w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/19fb5/hannes_kretschmer.webp 1366w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/a1630/hannes_kretschmer.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4979166666666666}}},"twitter_name":null},"fields":{"slug":"/speakers/hannes_kretschmer/","speakerId":"hannes_kretschmer"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","html":"","frontmatter":{"name":"Hans Markwart","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/hans_markwart/","speakerId":"hans_markwart"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","html":"

Hendrik Ebbers (@hendrikEbbers) ist Co-Founder der Karakun AG\n(dev.karakun.com). Hendrik leitet die JUG Dortmund. Sein Buch \"Mastering JavaFX 8 Controls\"\nist 2014 bei Oracle Press erschienen. Hendrik ist Java Champion, JavaOne Rockstar und JCP Expert Group Member.

","frontmatter":{"name":"Hendrik Ebbers","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/274aec9265704ce5d8cbe2794470665a/d6138/hendrik_ebbers.png","srcSet":"/static/274aec9265704ce5d8cbe2794470665a/d6138/hendrik_ebbers.png 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/274aec9265704ce5d8cbe2794470665a/416c3/hendrik_ebbers.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"hendrikEbbers"},"fields":{"slug":"/speakers/hendrik_ebbers/","speakerId":"hendrik_ebbers"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","html":"","frontmatter":{"name":"Ingo Körner","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/ingo_koerner/","speakerId":"ingo_koerner"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","html":"

Jens Leuschner hat vor einem Jahr sein Informatik-Studium an der Hochschule Zittau/Görlitz abgeschlossen und\narbeitet seitdem als Junior Softwareentwickler bei der CIDEON Software GmbH & Co. KG in Görlitz, wo er zuvor als\nWerksstudent tätig war. Ein besonderer Schwerpunkt seiner Arbeit beschäftigt sich mit der Entwicklung webbasierter\nIntegrationslösungen im Bereich von SAP und cloudbasierten CAD-Systemen.

","frontmatter":{"name":"Jens Leuschner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8f8f8","images":{"fallback":{"src":"/static/a1e48f2c95b162ec6bf5d44449042bca/0fdf4/jens_leuschner.jpg","srcSet":"/static/a1e48f2c95b162ec6bf5d44449042bca/0fdf4/jens_leuschner.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/a1e48f2c95b162ec6bf5d44449042bca/078c3/jens_leuschner.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/jens_leuschner/","speakerId":"jens_leuschner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","html":"

Kay Grebenstein arbeitet als Tester und agiler QA-Coach für die Saxiona Systems AG, Dresden. Er hat in den letzten\nJahren in Projekten unterschiedlicher fachlicher Domänen (Telekommunikation, Industrie, Versandhandel, Energie, …)\nQualität gesichert und Software getestet.

","frontmatter":{"name":"Kay Grebenstein","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/kay_grebenstein/","speakerId":"kay_grebenstein"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","html":"

Lars Röwekamp, Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen\nseiner Tätigkeit als \"CIO New Technologies\" mit der eingehenden Analyse und Bewertung neuer Software- und\nTechnologietrends. Ein besonderer Schwerpunkt seiner Arbeit liegt derzeit in den Bereichen Enterprise und Mobile\nComputing, wobei neben Design- und Architekturfragen insbesondere die Real-Life-Aspekte im Fokus seiner Betrachtung\nstehen. Lars Röwekamp, Autor mehrerer Fachartikel und -bücher, beschäftigt sich seit der Geburtsstunde von Java mit\ndieser Programmiersprache, wobei er einen Großteil seiner praktischen Erfahrungen im Rahmen großer internationaler\nProjekte sammeln konnte.

","frontmatter":{"name":"Lars Röwekamp","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/861b10f092bc6e58a4082b1150733dc8/6f086/lars_roewekamp.png","srcSet":"/static/861b10f092bc6e58a4082b1150733dc8/6f086/lars_roewekamp.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/861b10f092bc6e58a4082b1150733dc8/b9f92/lars_roewekamp.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.144}}},"twitter_name":"mobileLarson"},"fields":{"slug":"/speakers/lars_roewekamp/","speakerId":"lars_roewekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","html":"

Maik arbeitet als Softwareentwickler bei der Tallence AG, derzeit mit den Schwerpunkten Java und OAuth/OpenID Connect.\nSeit ca. 12 Jahren entwickelt er im Team Softwarelösungen in den verschiedensten Branchen und Themen. Immer mit Fokus\nauf agile Vorgehensweise und pragmatische Problemlösung.

","frontmatter":{"name":"Maik Wagner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c8e8","images":{"fallback":{"src":"/static/5950914f5c41841b7071a04a8e9bbcfd/5b03d/maik_wagner.jpg","srcSet":"/static/5950914f5c41841b7071a04a8e9bbcfd/4423a/maik_wagner.jpg 750w,\n/static/5950914f5c41841b7071a04a8e9bbcfd/5b03d/maik_wagner.jpg 960w","sizes":"100vw"},"sources":[{"srcSet":"/static/5950914f5c41841b7071a04a8e9bbcfd/3131c/maik_wagner.webp 750w,\n/static/5950914f5c41841b7071a04a8e9bbcfd/479a8/maik_wagner.webp 960w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.25}}},"twitter_name":null},"fields":{"slug":"/speakers/maik_wagner/","speakerId":"maik_wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","html":"

Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten\nder Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale\nProgrammierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz\nund steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.

","frontmatter":{"name":"Manuel Mauky","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8d8e8","images":{"fallback":{"src":"/static/c80baf199647599d13cde2f183750fd7/9ce86/manuel_mauky.jpg","srcSet":"/static/c80baf199647599d13cde2f183750fd7/d2e45/manuel_mauky.jpg 750w,\n/static/c80baf199647599d13cde2f183750fd7/fd5af/manuel_mauky.jpg 1080w,\n/static/c80baf199647599d13cde2f183750fd7/c71d7/manuel_mauky.jpg 1366w,\n/static/c80baf199647599d13cde2f183750fd7/9ce86/manuel_mauky.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c80baf199647599d13cde2f183750fd7/4d4e9/manuel_mauky.webp 750w,\n/static/c80baf199647599d13cde2f183750fd7/8ff35/manuel_mauky.webp 1080w,\n/static/c80baf199647599d13cde2f183750fd7/2b2db/manuel_mauky.webp 1366w,\n/static/c80baf199647599d13cde2f183750fd7/7188c/manuel_mauky.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3161458333333333}}},"twitter_name":"manuel_mauky"},"fields":{"slug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","html":"

Marco Gotthans arbeitet als Tester bei der ZEISS Digital Innovation in Görlitz. Mit automatisierten Testscripten stellt er\nSoftwarequalität sicher. In der Industrie 4.0 beschäftigt er sich mit den vielen neuen Herausforderungen der\nQualitätssicherung, die sich aus der Verbindung von komplexen Maschinensteuerungen mit Cloudsystemen ergeben.

","frontmatter":{"name":"Marco Gotthans","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#081838","images":{"fallback":{"src":"/static/d96c9533996a3deed2a5551b1a94c812/3b4fe/marco_gotthans.jpg","srcSet":"/static/d96c9533996a3deed2a5551b1a94c812/b0c6e/marco_gotthans.jpg 750w,\n/static/d96c9533996a3deed2a5551b1a94c812/3b4fe/marco_gotthans.jpg 768w","sizes":"100vw"},"sources":[{"srcSet":"/static/d96c9533996a3deed2a5551b1a94c812/4c1cf/marco_gotthans.webp 750w,\n/static/d96c9533996a3deed2a5551b1a94c812/9f5d6/marco_gotthans.webp 768w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3333333333333333}}},"twitter_name":null},"fields":{"slug":"/speakers/marco_gotthans/","speakerId":"marco_gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","html":"","frontmatter":{"name":"Marcus Döring","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/marcus_doering/","speakerId":"marcus_doering"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","html":"","frontmatter":{"name":"Mario Mann","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mario_mann/","speakerId":"mario_mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","html":"","frontmatter":{"name":"Mario Reichel","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mario_reichel/","speakerId":"mario_reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","html":"

Mariusz Zienkiewicz hat nach seinem Studium an HTWS Zittau/Görlitz bei CIDEON Software GmbH & Co. KG angefangen und\nist dort seit 19 Jahren tätig. Hier arbeitet er als Senior Expert Developer. Seine beruflichen Schwerpunkte liegen in\nder Steuerung von ALM-Prozessen und der agilen Softwareentwicklung im Umfeld von C, C++ und Java. Aktuell beschäftigt er\nsich mit Cloud-Technologien.

","frontmatter":{"name":"Mariusz Zienkiewicz","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#281818","images":{"fallback":{"src":"/static/bae1e2f992c7bebba96ec2dc974a0895/0fdf4/mariusz_zienkiewicz.jpg","srcSet":"/static/bae1e2f992c7bebba96ec2dc974a0895/0fdf4/mariusz_zienkiewicz.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/bae1e2f992c7bebba96ec2dc974a0895/078c3/mariusz_zienkiewicz.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/mariusz_zienkiewicz/","speakerId":"mariusz_zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","html":"","frontmatter":{"name":"Mark Ziener","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mark_ziener/","speakerId":"mark_ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","html":"","frontmatter":{"name":"Marko Modsching","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/marko_modsching/","speakerId":"marko_modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","html":"

Markus entwickelt seit 20 Jahren mit seinem Team Developer-Tools für Java und alle wichtigen Datenbanksysteme sowie\nIndividualsoftware für Endkunden. Er ist Product Owner der freien Eclipse Distribution und visuellen Java\nEntwicklungsumgebung RapidClipse sowie der Open Source Abfragesprache JPA-SQL. Markus ist Gründer und CEO von\nMicroStream, Chefredakteur des kostenlosen Java Magazins JAVAPRO, Co-Organisator der Java Konferenz JCON, freier Autor\nfür verschiedene Fachzeitschriften sowie Speaker bei zahlreichen Entwicklerkonferenzen, User Groups und Meetups.

","frontmatter":{"name":"Markus Kett","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a8d8","images":{"fallback":{"src":"/static/ce58d8e1afec86c71bef3c5971759db8/eadd3/markus_kett.png","srcSet":"/static/ce58d8e1afec86c71bef3c5971759db8/eadd3/markus_kett.png 640w","sizes":"100vw"},"sources":[{"srcSet":"/static/ce58d8e1afec86c71bef3c5971759db8/90d07/markus_kett.webp 640w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"MarkusKett"},"fields":{"slug":"/speakers/markus_kett/","speakerId":"markus_kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","html":"

Markus Weiland arbeitet als Freelance Solution Architect im ecommerce unter anderem an der Einführung und Migration von Content Management Lösungen für größere Unternehmen mit komplexen Geschäftsprozessen. Er ist notorisch unzufrieden mit den Lock-in-Effekten geschlossener Plattformen und Verfechter von Libre Software.

","frontmatter":{"name":"Markus Weiland","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/9a5a3c451d197c3c973e2af76ac66c29/47930/markus_weiland.jpg","srcSet":"/static/9a5a3c451d197c3c973e2af76ac66c29/47930/markus_weiland.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/9a5a3c451d197c3c973e2af76ac66c29/416c3/markus_weiland.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/markus_weiland/","speakerId":"markus_weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","html":"

Marlene ist freischaffende Illustratorin und Künstlerin und widmet sich in ihrem künstlerischen Schaffen regelmäßig\nThemen aus der Informatik und Mathematik. Davor hat sie als Software-Entwicklerin gearbeitet. Zudem ist sie\nMitorganisatorin der Java User Group Görlitz und organisiert den Chaostreff Görlitz.

","frontmatter":{"name":"Marlene Knoche","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8f8f8","images":{"fallback":{"src":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/afa21/marlene_knoche.jpg","srcSet":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/0f5ce/marlene_knoche.jpg 750w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/b74b1/marlene_knoche.jpg 1080w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/afa21/marlene_knoche.jpg 1280w","sizes":"100vw"},"sources":[{"srcSet":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/4f03f/marlene_knoche.webp 750w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/4f506/marlene_knoche.webp 1080w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/9e21f/marlene_knoche.webp 1280w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/marlene_knoche/","speakerId":"marlene_knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","html":"

Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der\nMigration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von\nJava-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für\nReact als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen.\nIn seiner Freizeit engagiert sich Max als Organisator der Java User Group Görlitz, um auch in der östlichsten Stadt\nDeutschlands die Vielfalt von IT-Angeboten zu erhöhen und insbesondere die Community zu unterstützen.

","frontmatter":{"name":"Max Wielsch","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484858","images":{"fallback":{"src":"/static/0fb18b404d101e5878db1bc4a490cf19/bbd03/max_wielsch.jpg","srcSet":"/static/0fb18b404d101e5878db1bc4a490cf19/99918/max_wielsch.jpg 750w,\n/static/0fb18b404d101e5878db1bc4a490cf19/f449b/max_wielsch.jpg 1080w,\n/static/0fb18b404d101e5878db1bc4a490cf19/34fc5/max_wielsch.jpg 1366w,\n/static/0fb18b404d101e5878db1bc4a490cf19/bbd03/max_wielsch.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/0fb18b404d101e5878db1bc4a490cf19/e5fa4/max_wielsch.webp 750w,\n/static/0fb18b404d101e5878db1bc4a490cf19/171d7/max_wielsch.webp 1080w,\n/static/0fb18b404d101e5878db1bc4a490cf19/b1984/max_wielsch.webp 1366w,\n/static/0fb18b404d101e5878db1bc4a490cf19/ad9f4/max_wielsch.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":null},"fields":{"slug":"/speakers/max_wielsch/","speakerId":"max_wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","html":"","frontmatter":{"name":"Michael Förster","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_foerster/","speakerId":"michael_foerster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","html":"

Seit Mitte 2010 arbeitet Michael Hunger eng mit Neo Technology zusammen, um deren Graphendatenbank\nNeo4j noch leichter für Entwickler zugänglich zu machen. Hauptinteressensgebiete sind dort Integration mit anderen\nTechnologien, wie z.B. Spring-Data, Datenimport und Performance. Er unterstützt alle Nutzer von Neo4j tagtäglich bei der\nerfolgreichen Realisierung ihrer Projekte und Lösung ihrer Fragen und Probleme.

\n

Michael arbeitet an mehreren Open Source Projekten mit, ist Autor, Editor, Buch-Reviewer und häufiger Sprecher und\nOrganisator von Konferenzen.

","frontmatter":{"name":"Michael Hunger","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181808","images":{"fallback":{"src":"/static/a27527592fa9acc54399d3ab9508193f/30cdc/michael_hunger.png","srcSet":"/static/a27527592fa9acc54399d3ab9508193f/30cdc/michael_hunger.png 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/a27527592fa9acc54399d3ab9508193f/078c3/michael_hunger.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"mesirii"},"fields":{"slug":"/speakers/michael_hunger/","speakerId":"michael_hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","html":"","frontmatter":{"name":"Michael Thiele","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_thiele/","speakerId":"michael_thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","html":"","frontmatter":{"name":"Michael Wiedeking","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_wiedeking/","speakerId":"michael_wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","html":"

Nico Förster arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. Er ist im Bereich\nder Softwareevolution tätig und beschäftigt sich aktuell mit der Weiterentwicklung und Wartung einer umfangreichen\nJava-Enterprise-Applikation im Bereich Schienenlogistik. Sein Interessengebiet umfasst außerdem die Bereiche IT- und\nApplication Security.

","frontmatter":{"name":"Nico Förster","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#485858","images":{"fallback":{"src":"/static/01f1f076678841fa70905cc41bb50757/18869/nico_foerster.jpg","srcSet":"/static/01f1f076678841fa70905cc41bb50757/18869/nico_foerster.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/01f1f076678841fa70905cc41bb50757/3d164/nico_foerster.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":null},"fields":{"slug":"/speakers/nico_foerster/","speakerId":"nico_foerster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","html":"

Oliver Drotbohm ist Teil des Spring Engineering Teams bei VMware. Seine Arbeitsschwerpunkte liegen im Bereich Softwarearchitektur, Domain-Driven Design, REST, Spring und Persistenztechnologien. Sein neues Buch \"Modulithic Applications with Spring\" erscheint 2023.

","frontmatter":{"name":"Oliver Drotbohm","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/bc32a8e1242b1987951435e5d8008305/94804/oliver_drotbohm.png","srcSet":"/static/bc32a8e1242b1987951435e5d8008305/94804/oliver_drotbohm.png 491w","sizes":"100vw"},"sources":[{"srcSet":"/static/bc32a8e1242b1987951435e5d8008305/d94cc/oliver_drotbohm.webp 491w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"odrotbohm"},"fields":{"slug":"/speakers/oliver_drotbohm/","speakerId":"oliver_drotbohm"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","html":"","frontmatter":{"name":"Paul Weinhold","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/paul_weinhold/","speakerId":"paul_weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","html":"

Pawel Adaszewski ist als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz tätig. In seiner täglichen Arbeit\nversucht er die Herausforderungen aus der Industrial-IoT-Welt mithilfe der AWS-Cloud zu bewältigen. Zu seinen\nHauptaufgaben gehören das Design und die Erstellung von automatisch bereitgestellten Serverless-Cloud-Infrastrukturen.

","frontmatter":{"name":"Pawel Adaszewski","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8c8e8","images":{"fallback":{"src":"/static/276b01211c38e45a877d2f2a5d1a4532/00175/pawel_adaszewski.jpg","srcSet":"/static/276b01211c38e45a877d2f2a5d1a4532/ffc4f/pawel_adaszewski.jpg 750w,\n/static/276b01211c38e45a877d2f2a5d1a4532/00175/pawel_adaszewski.jpg 1080w","sizes":"100vw"},"sources":[{"srcSet":"/static/276b01211c38e45a877d2f2a5d1a4532/6e066/pawel_adaszewski.webp 750w,\n/static/276b01211c38e45a877d2f2a5d1a4532/9683a/pawel_adaszewski.webp 1080w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.6444444444444444}}},"twitter_name":null},"fields":{"slug":"/speakers/pawel_adaszewski/","speakerId":"pawel_adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","html":"","frontmatter":{"name":"Richard Hauswald","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/richard_hauswald/","speakerId":"richard_hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","html":"","frontmatter":{"name":"Robert Wirbs","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/robert_wirbs/","speakerId":"robert_wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","html":"

Roland Weisleder ist freiberuflicher Softwareentwickler und seit 2009 im Java-Ökosystem unterwegs. Sein Schwerpunkt ist die Stabilisierung und Weiterentwicklung von gewachsenen Enterprise-Anwendungen. Er hat eine Leidenschaft für Test- und Buildautomatisierung und verfolgt das Ziel, dass Prozesse in der Softwareentwicklung einfacher und robuster werden. Seine Erfahrungen teilt er in Vorträgen im In- und Ausland.

","frontmatter":{"name":"Roland Weisleder","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#98c8f8","images":{"fallback":{"src":"/static/0292a65386102f7b15c663142861115e/22e9f/roland_weisleder.jpg","srcSet":"/static/0292a65386102f7b15c663142861115e/22e9f/roland_weisleder.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/0292a65386102f7b15c663142861115e/024c8/roland_weisleder.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.7}}},"twitter_name":"Ro_Wei"},"fields":{"slug":"/speakers/roland_weisleder/","speakerId":"roland_weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","html":"","frontmatter":{"name":"Sebastian Schmeck","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/sebastian_schmeck/","speakerId":"sebastian_schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","html":"

Sergej Tihonov ist ein freiberuflicher Softwareentwickler. Seit mehr als 8 Jahren widmet er sich der Entwicklung von komplexen Softwaresystemen und Open-Source-Projekten. Seine Tätigkeitsschwerpunkte sind Projektmanagement, Softwarearchitektur und Projektstabilisierung. Privat geht er gerne barfuß joggen.

","frontmatter":{"name":"Sergej Tihonov","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#787878","images":{"fallback":{"src":"/static/b485586e0b2c66703b49784827202ddd/22e9f/sergej_tihonov.jpg","srcSet":"/static/b485586e0b2c66703b49784827202ddd/22e9f/sergej_tihonov.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/b485586e0b2c66703b49784827202ddd/024c8/sergej_tihonov.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.7}}},"twitter_name":"EvenMoreDev"},"fields":{"slug":"/speakers/sergej_tihonov/","speakerId":"sergej_tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","html":"

Simon arbeitet als Softwareentwickler bei der Korasoft GmbH. Er findet es spannend, wie in der SAP Welt wenige Zeilen\nCode riesige Unternehmen steuern. Manchmal hat er dabei das Gefühl, sich in einem Museum zu befinden, während er auf der\nanderen Seite mit innovativen Technologien am Puls der Zeit sein darf. Dementsprechend reicht sein Erfahrungsspektrum\nvon traditionsreichen ABAP Reports bis hin zu modernen Cloud Foundry Apps.

","frontmatter":{"name":"Simon Roloff","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/8997189be722553b2c839d4576fdee41/f76fb/simon_roloff.png","srcSet":"/static/8997189be722553b2c839d4576fdee41/0dee1/simon_roloff.png 750w,\n/static/8997189be722553b2c839d4576fdee41/8beaa/simon_roloff.png 1080w,\n/static/8997189be722553b2c839d4576fdee41/f76fb/simon_roloff.png 1182w","sizes":"100vw"},"sources":[{"srcSet":"/static/8997189be722553b2c839d4576fdee41/a66aa/simon_roloff.webp 750w,\n/static/8997189be722553b2c839d4576fdee41/65dd5/simon_roloff.webp 1080w,\n/static/8997189be722553b2c839d4576fdee41/3c6ec/simon_roloff.webp 1182w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.5626057529610828}}},"twitter_name":null},"fields":{"slug":"/speakers/simon_roloff/","speakerId":"simon_roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","html":"","frontmatter":{"name":"Stefan Barth","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_barth/","speakerId":"stefan_barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","html":"

Stefan Bley ist Senior Consultant und Coach bei der Saxonia Systems AG in Dresden. Sein Schwerpunkt in Kundenprojekten\nsind webbasierte Softwarelösungen mit Java-EE- Toolstack. Er beschäftigt sich gern mit innovativen Technologien und gibt\nsein Wissen auf Konferenzen und Community-Veranstaltung weiter. Aktuell befasst er sich mit Microservices im Java-Umfeld\nund Single-Page-Apps mit Angular 2.

","frontmatter":{"name":"Stefan Bley","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#686868","images":{"fallback":{"src":"/static/92076116610bf424c9719adb66fa22c0/f3dd0/stefan_bley.jpg","srcSet":"/static/92076116610bf424c9719adb66fa22c0/f3dd0/stefan_bley.jpg 299w","sizes":"100vw"},"sources":[{"srcSet":"/static/92076116610bf424c9719adb66fa22c0/04c61/stefan_bley.webp 299w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4983277591973243}}},"twitter_name":"sbley"},"fields":{"slug":"/speakers/stefan_bley/","speakerId":"stefan_bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","html":"","frontmatter":{"name":"Stefan Bradl","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_bradl/","speakerId":"stefan_bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","html":"","frontmatter":{"name":"Stefan Heinze","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_heinze/","speakerId":"stefan_heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","html":"","frontmatter":{"name":"Stefan Scheumann","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_scheumann/","speakerId":"stefan_scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","html":"

Von der Bayer AG über IBM und oose zu embarc. Stefan Zörner blickt auf zwanzig Jahre IT-Erfahrung zurück und stets\ngespannt nach vorn. Er unterstützt in Architektur- und Umsetzungsfragen mit dem Ziel, gute Architekturansätze wirksam in\nder Implementierung zu verankern. Sein Wissen und seine Erfahrung teilt er regelmäßig in Vorträgen, Artikeln und\nWorkshops. Stefan ist Apache Committer, aktives Board-Mitglied im iSAQB und Autor des Buchs „Softwarearchitekturen\ndokumentieren und kommunizieren“ (Hanser Verlag).

","frontmatter":{"name":"Stefan Zörner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b8a878","images":{"fallback":{"src":"/static/357c5655cc1d492de0f8357e5419c624/47930/stefan_zoerner.jpg","srcSet":"/static/357c5655cc1d492de0f8357e5419c624/47930/stefan_zoerner.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/357c5655cc1d492de0f8357e5419c624/416c3/stefan_zoerner.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stefan_zoerner/","speakerId":"stefan_zoerner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","html":"","frontmatter":{"name":"Steffen Seidler","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/steffen_seidler/","speakerId":"steffen_seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","html":"

Stephan ist seit 2013 Informatikstudent an der Hochschule Zittau/Görlitz und schreibt derzeit seine Masterarbeit über\nGraphQL in der Microservice Architektur bei Saxonia Systems AG in Görlitz. Er beschäftigt sich mit Webanwendungen sowie\nFrontend-Technologien. Dabei finden GraphQL und React Verwendungen in mehreren Projekten.

","frontmatter":{"name":"Stephan Strehler","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/a123ccdaefc129dd10224cd767e2c9b9/30f07/stephan_strehler.jpg","srcSet":"/static/a123ccdaefc129dd10224cd767e2c9b9/30f07/stephan_strehler.jpg 640w","sizes":"100vw"},"sources":[{"srcSet":"/static/a123ccdaefc129dd10224cd767e2c9b9/90d07/stephan_strehler.webp 640w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stephan_strehler/","speakerId":"stephan_strehler"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","html":"

Sven Hoffmann ist seit über 8 Jahren für die Saxonia Systems AG tätig. Er beschäftigte sich in dieser Zeit mit einer\nVielzahl von Backend und Frontend-Technologien. Zu seinen technologischen Hauptschwerpunkten zählen Webanwendungen und\nJavaEE.

","frontmatter":{"name":"Sven Hoffmann","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484848","images":{"fallback":{"src":"/static/9b60a5387f4809c8bf0c20f0de29922e/69538/sven_hoffmann.jpg","srcSet":"/static/9b60a5387f4809c8bf0c20f0de29922e/69538/sven_hoffmann.jpg 406w","sizes":"100vw"},"sources":[{"srcSet":"/static/9b60a5387f4809c8bf0c20f0de29922e/2ccb1/sven_hoffmann.webp 406w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.502463054187192}}},"twitter_name":null},"fields":{"slug":"/speakers/sven_hoffmann/","speakerId":"sven_hoffmann"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","html":"

Thilo Frotscher arbeitet als freiberuflicher Software-Architekt und Trainer. Als Experte für Enterprise Java und\nSystemintegration unterstützt er seine Kunden überwiegend durch Entwicklung, Reviews oder die Durchführung von\nSchulungen. Thilo ist (Co-)Autor mehrerer Bücher sowie zahlreicher Fachartikel und spricht regelmäßig auf\nFachkonferenzen oder bei User Groups.

","frontmatter":{"name":"Thilo Frotscher","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8a8a8","images":{"fallback":{"src":"/static/5e6dbea52d281cdada5adcd4769087bc/147a6/thilo_frotscher.jpg","srcSet":"/static/5e6dbea52d281cdada5adcd4769087bc/147a6/thilo_frotscher.jpg 313w","sizes":"100vw"},"sources":[{"srcSet":"/static/5e6dbea52d281cdada5adcd4769087bc/acaa7/thilo_frotscher.webp 313w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3099041533546325}}},"twitter_name":"thfro"},"fields":{"slug":"/speakers/thilo_frotscher/","speakerId":"thilo_frotscher"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","html":"","frontmatter":{"name":"Thomas Storch","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/thomas_storch/","speakerId":"thomas_storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","html":"

Tobias Blaschke hat sein Informatik-Studium an der Universität Magdeburg abgeschlossen. In den letzten Jahren ist er\nbei der Eudemonia Solutions AG als Software-Architekt tätig und unterstützt dort insbesondere die Entwicklung einer\nwebbasierten Lösung zur Firmenkundenberatung in den Volks- und Raiffeisenbanken auf Basis von Java und GWT.

","frontmatter":{"name":"Tobias Blaschke","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/tobias_blaschke/","speakerId":"tobias_blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","html":"

Uwe Manteuffel ist Senior Consultant für Webentwicklung bei Saxonia Systems AG in Görlitz. Er ist seit 2008 im Umfeld\nvon Webtechnologien und ASP.NET unterwegs. Sein Schwerpunkt liegt dabei auf dem Design und der Umsetzung von\nOberflächen. Besonderer Fokus liegt dabei auf der Verwendung von CSS. Hierbei beschäftigt er sich mit verschiedenen\nMethoden wie OOCSS (Objektorientiertes CSS) und der Verwendung von Präprozessoren wie LESS oder SASS. Aktuell entwickelt\ner ASP.NET MVC Anwendungen für B2B Kunden.

","frontmatter":{"name":"Uwe Manteuffel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#585868","images":{"fallback":{"src":"/static/26d3f744bce66e93610087ebefd7fcb2/0fdf4/uwe_manteuffel.jpg","srcSet":"/static/26d3f744bce66e93610087ebefd7fcb2/0fdf4/uwe_manteuffel.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/26d3f744bce66e93610087ebefd7fcb2/078c3/uwe_manteuffel.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"dasuew"},"fields":{"slug":"/speakers/uwe_manteuffel/","speakerId":"uwe_manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","html":"

Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei ORACLE Global Services Germany GmbH. Er gehört zum\nweltweiten Java Team und ist zuständig für Java Technologie & GraalVM und Architektur für unternehmensweite\nAnwendungsentwicklung.

","frontmatter":{"name":"Wolfgang Weigend","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/afd51a81ad1e8768bed62639c9389490/c2725/wolfgang_weigend.jpg","srcSet":"/static/afd51a81ad1e8768bed62639c9389490/c2725/wolfgang_weigend.jpg 559w","sizes":"100vw"},"sources":[{"srcSet":"/static/afd51a81ad1e8768bed62639c9389490/fa89f/wolfgang_weigend.webp 559w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.2629695885509837}}},"twitter_name":"wolflook"},"fields":{"slug":"/speakers/wolfgang_weigend/","speakerId":"wolfgang_weigend"}}}]},"locations":{"edges":[{"node":{"fields":{"slug":"/locations/cideon/","locationId":"cideon"},"frontmatter":{"name":"CIDEON Software & Services GmbH & Co. KG","number":"25","info":null,"zip":"02826","city":"Görlitz","street":"Untermarkt"}}},{"node":{"fields":{"slug":"/locations/dser_elisabethstrasse/","locationId":"dser_elisabethstrasse"},"frontmatter":{"name":"DSER","number":"42/43","info":null,"zip":"02826","city":"Görlitz","street":"Elisabethstraße"}}},{"node":{"fields":{"slug":"/locations/dser_steinstrasse/","locationId":"dser_steinstrasse"},"frontmatter":{"name":"DSER","number":"11","info":null,"zip":"02826","city":"Görlitz","street":"Steinstraße"}}},{"node":{"fields":{"slug":"/locations/expleo/","locationId":"expleo"},"frontmatter":{"name":"Expleo","number":"23","info":null,"zip":"02826","city":"Görlitz","street":"Konsulstraße"}}},{"node":{"fields":{"slug":"/locations/fraunhofer/","locationId":"fraunhofer"},"frontmatter":{"name":"Fraunhofer-Institut IOSB - Angewandte Systemtechnik","number":"11","info":null,"zip":"02826","city":"Görlitz","street":"Wilhelmsplatz"}}},{"node":{"fields":{"slug":"/locations/hochschule_campus/","locationId":"hochschule_campus"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"1","info":"Haus G2 Raum 0.10","zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},{"node":{"fields":{"slug":"/locations/hochschule_obermarkt/","locationId":"hochschule_obermarkt"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"17","info":null,"zip":"02826","city":"Görlitz","street":"Obermarkt"}}},{"node":{"fields":{"slug":"/locations/innolabs/","locationId":"innolabs"},"frontmatter":{"name":"Innolabs Görlitz","number":"22","info":null,"zip":"02826","city":"Görlitz","street":"Bahnhofstraße"}}},{"node":{"fields":{"slug":"/locations/saxsys/","locationId":"saxsys"},"frontmatter":{"name":"Saxonia Systems AG","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}},{"node":{"fields":{"slug":"/locations/sqs/","locationId":"sqs"},"frontmatter":{"name":"SQS TestCenter Görlitz","number":"10","info":null,"zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},{"node":{"fields":{"slug":"/locations/tallence/","locationId":"tallence"},"frontmatter":{"name":"Tallence AG","number":"27","info":null,"zip":"02826","city":"Görlitz","street":"Neißstraße"}}},{"node":{"fields":{"slug":"/locations/zeiss/","locationId":"zeiss"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-index-tsx","path":"/","result":{"data":{"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","html":"

EasyMock - Was ist ein Mock?, Warum sollte ich mocken? Was ist EasyMock? Wie kann ich es\nbenutzen? All diese Fragen werden in der Präsentation beantwortet.

","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","time":null,"speaker":["richard_hauswald"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["testen"]},"fields":{"slug":"/talks/2011-03-22-easymock/","sourceName":"talks"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","html":"

Hudson bzw. Jenkins ist ein Build-Server, der für\nContinuous Integration eingesetzt wird. Darunter versteht\nman das Vorgehen, nach jeder Code-Änderung einen Build-Vorgang (inklusive Kompilieren des Codes und Ausführen der Tests)\ndurchzuführen. Damit kann sichergestellt werden, dass Fehlerhafte Änderungen sofort auffallen und behoben werden können.

\n

Im Vortrag werden die Begriffe \"Build Management\" und \"Continuous Integration\" näher erleutert und am konkreten Beispiel\nvon Jenkins gezeigt, wie dies in der Praxis umgesetzt werden kann.

","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","time":null,"speaker":["stefan_scheumann"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["build-management"]},"fields":{"slug":"/talks/2011-03-22-jenkins/","sourceName":"talks"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","html":"

GWT - Google Web Toolkit (Ingo Körner)

","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","time":null,"speaker":["ingo_koerner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","frontend"]},"fields":{"slug":"/talks/2011-04-27-gwt/","sourceName":"talks"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","html":"

Die OSGi beschreibt eine spezifikation, auf deren Basis Software Modular entwickelt werden kann. Die einzelnen Module\nsind in sich geschlossene Einheiten mit einem klaren Interface, welches einerseits ihre angebotene Funktionalität inf\nForm von Services beschreibt und andererseits die Abhängigkeiten auf Services anderer Module enthält.

\n

Spring-DM (DM steht für Dynamic Modules) ist eine auf OSGi basierende Plattform, die OSGi mit den Vorteilen von Spring,\nallen voran Dependency Injection, verbindet.

\n

Im Vortrag wird neben den theoretischen Grundlagen vor allem an praktischen Beispielen inklusive Live-Coding gezeigt,\nwie mit Spring-DM und OSGi lose gekoppelte Module erstellt und diese dynamisch zur Laufzeit getauscht werden können.

\n

Materialien:

\n","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":null},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/","sourceName":"talks"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","html":"

Google Guice - Dependency Injection (DI) und Aspect-Orientierte Programmierung (AOP) von Robert Wirbs

","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","time":null,"speaker":["robert_wirbs"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["patterns"]},"fields":{"slug":"/talks/2011-05-27-guice/","sourceName":"talks"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","html":"

Diesmal stellt Michael Förster Java EE vor. Es wird sowohl Einblicke in Theorie, wie auch wieder praktische Beispiele\ngeben.

","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","time":null,"speaker":["michael_foerster"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["javaee"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/","sourceName":"talks"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","html":"

Scala - Vorstellung der Sprache, Demo und das Testen (Stefan Bradl)

\n

Materialien:

\n","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","time":null,"speaker":["stefan_bradl"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen"]},"fields":{"slug":"/talks/2011-07-27-scala/","sourceName":"talks"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","html":"

Das Thema wird diesmal Testen sein. Marko Modsching wird Testpatterns und Best Practices vorstellen

","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","time":null,"speaker":["marko_modsching"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["testen","patterns"]},"fields":{"slug":"/talks/2011-08-31-testen/","sourceName":"talks"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","html":"

TestNG (Marcus Döring)

","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","time":null,"speaker":["marcus_doering"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["testen"]},"fields":{"slug":"/talks/2011-07-27-testng/","sourceName":"talks"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","html":"

JDOM- Einlesen, Verändern und Erzeugen von XML-Dokumenten (Mark Ziener)

","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","time":null,"speaker":["mark_ziener"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["xml"]},"fields":{"slug":"/talks/2011-09-28-jdom/","sourceName":"talks"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","html":"

Vom Single Sign-On zum sicheren Kanal - Authentifizierung und Autorisierung mit JAAS und JGSS (Mario Reichel)

","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","time":null,"speaker":["mario_reichel"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["security"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/","sourceName":"talks"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","html":"

Mit einem Vortrag und der Programmierung einer Biepsiel-App für Notitzen führte Max Wielsch in die\nAndroid-Programmierung ein. Im Vortrag ging es zunächst um die Motivation, eine App für die Android-Plattform zu\nentwickeln. Darauffolgend wurden die grundlegeneden Konzepte und Systemmerkmale erläutert. Nach der Theorie folgte die\nPraxis. Max Wielsch programmierte Schritt für Schritte eine \"kleine\" Notitz-App wobei die theoretischen Konzepte in der\nPraxis erläutert wurden.

\n

Die Präsentation und das Beispielprojekt können auf seinem\nBlog heruntergeladen werden.

","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["mobile","android"]},"fields":{"slug":"/talks/2011-10-26-android/","sourceName":"talks"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","html":"

Der Vortrag bietet eine Einführung in JavaServer Faces 2 und Beleuchtet unter anderem folgende Aspekte:

\n\n

Ausserdem wird kurz Contexts and Dependency Injection (CDI) vorgestellt und dessen Kombination mit JSF\nhervorgehoben.

\n

Diese theoretischen Aspekte werden anschließend anhand eines praktischen Beispiels inklusive Live-Coding gezeigt und\nerklärt.

\n

Materialien:

\n","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","javaee","jsf"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/","sourceName":"talks"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","html":"

JPA - Hibernate von Marko Modsching

\n

Materialien:

\n","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","time":null,"speaker":["marko_modsching"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["database","javaee"]},"fields":{"slug":"/talks/2012-01-01-hibernate/","sourceName":"talks"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","html":"

Dieser Vortrag baut auf den Vortrag zur \"Einführung in JavaServer Faces 2\" auf. Es werden\nfortgeschrittene Techniken aus dem Bereich JSF vorgestellt:

\n
    \n
  • Navigation mit JSF
  • \n
  • Templates und Wiederverwendung von Facelets
  • \n
  • Ajax
  • \n
  • PrimeFaces
  • \n
\n

Im Bereich CDI wird zunächst das Konzept der CDI-Producer beleuchtet, mit welchem der Entwickler Einfluss auf die\nDependency Injection nehmen kann. Anschließend wird das Design Pattern \"Observer\" mit den Techniken von CDI\nimplementiert und gezeigt, wie damit (im Gegensatz zur klassischen Observer-Implementierung) der Beobachter und die\nbeobachtete Klasse komplett von einander entkoppelt werden können.

","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","javaee","jsf"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/","sourceName":"talks"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","html":"

Webentwicklung mit Scala von Stefan Bradl

","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","time":null,"speaker":["stefan_bradl"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","programmiersprachen"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/","sourceName":"talks"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","html":"

Webtests mit Selenium von Marcus Döring

","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","time":null,"speaker":["marcus_doering"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","web","testen"]},"fields":{"slug":"/talks/2012-03-28-webtests/","sourceName":"talks"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","html":"

maven von Thomas Storch

\n

Folien

\n

Beispiel-Code

","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","time":null,"speaker":["thomas_storch"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["build-management"]},"fields":{"slug":"/talks/2012-04-25-maven/","sourceName":"talks"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","html":"

JMonkeyEngine3 und im Allgemeinen 3D-Applikationen in Java von Hans Markwart

","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","time":null,"speaker":["hans_markwart"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/","sourceName":"talks"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","html":"

GridGain - ein Java-Framework für Parallel Computing und Data Grid Anwendungen von Mario Reichel

","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","time":null,"speaker":["mario_reichel"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["cluster"]},"fields":{"slug":"/talks/2012-06-27-gridgain/","sourceName":"talks"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","html":"

Selenium/webdriver - In Ergänzung zu der Vorstellung von Marcus Döring mit praktischen\nBeispielen von Maik Wagner

","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","frontend","testen"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/","sourceName":"talks"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","html":"

Manuel Mauky stellt in seinem Vortrag den zu JavaEE 6 gehörenden Standard BeanValidation vor.

\n

Dabei wird mittels Annotationen im Java-Code bestimmt, welche Werte für bestimmte Felder valide sind, z.B. @NotNull\nfür einen Wert, der nicht null sein darf oder @Size(min=1, max=20) für einen String, der mindestens 1 und maximal 10\nZeichen lang sein darf. Ein Validator kann dann anhand dieser Metainformationen prüfen, ob der Zustand eines Objekts\nvalide ist oder nicht.

\n

Im Vortrag wird zunächst allgemein auf das Thema Validierung eingegangen und anschließend Beispiele für\nBeanValidation-Annotationen gezeigt. Ebenfalls behandelt wird, wie BeanValidation im Frontend mit JavaServer Faces und\nim Backend mit JPA kombiniert werden kann.

\n

Materialien:

\n","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["javaee"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/","sourceName":"talks"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","html":"

Als Vortragende konnten wir Alexander Casall und Michael Thiele, zwei Mittarbeiter der Saxonia Systems AG aus Dresden\ngewinnen, die zum Thema JavaFX 2 sprechen werden.

\n

Sie werden über das neue UI-Framework von Oracle berichten, welches angetreten ist, um das etwas angestaubte Swing\nabzulösen und neuen Schwung in das Thema Java+Desktop zu bringen. Dabei werden sie speziell auf die Touch-Fähigkeiten\nvon JavaFX 2 eingehen und diese an einem großen Touchscreen live vorführen.

\n

Materialien:

\n","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","time":null,"speaker":["alexander_casall","michael_thiele"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","javafx"]},"fields":{"slug":"/talks/2012-11-28-javafx2/","sourceName":"talks"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","html":"

Dieses Mal dreht sich alles um Roboter. Erik Jähne beschäftigt sich in seinem Studium mit NXT-Robotern von Lego\nund wird in seinem Vortrag die Programmierung dieser Roboter mit Java vorstellen. Natürlich wird es dabei auch eine\nLive-Vorführung der Roboter geben.

\n

Videos:

\n","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","time":null,"speaker":["erik_jaehne"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["hardware","roboter"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/","sourceName":"talks"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","html":"

Sebastian Schmeck von der Saxonia Systems AG aus Dresden wird in diesem Vortrag die Programmiersprache Ruby\nvorstellen und anschließend genauer auf die Implementierung JRuby eingehen. Damit lassen sich Ruby-Programme auf der\nJava VM ausführen, was einige konkrete Vorteile gegenüber der Standard-Implementierung bietet.

\n

Ausserdem wird er zeigen, wie die Integration von Java und Ruby in beiden Richtungen funktioniert, d.h. wie man\nRuby-Code in Java benutzt und wie von Ruby aus auf Java-Klassen zugegriffen werden kann.

\n

Materialien:

\n","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","time":null,"speaker":["sebastian_schmeck"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["programmiersprachen"]},"fields":{"slug":"/talks/2013-05-29-jruby/","sourceName":"talks"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","html":"

In diesem Vortrag von Marlene Knoche geht es um Usability, genauer um so genannte Persona. Personas sind Modelle\nvon Usern. Sie personifizieren eine bestimmte (Ziel-)Gruppe von Benutzern einer Software. Ziel ist es, Entwickler und\n(Usability-)Tester in die Lage zuversetzen, sich besser in Nutzer hinein denken zu können.

\n

Materialien:

\n","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","time":null,"speaker":["marlene_knoche"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","softwareentwicklung"]},"fields":{"slug":"/talks/2013-07-31-persona/","sourceName":"talks"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","html":"

Die Android-Plattform hat sich in den letzten 2 Jahren sehr stark weiterentwickelt. Sie wurde nicht nur um\nFunktionalitäten erweitert, sondern hat seit der Android-Version 4.0 eine attraktive und sehr gut dokumentierte\nDesign-Sprache erhalten. Die Bedeutung eines konsistenten und funktionalen Designs ist damit ein kritischer\nErfolgsfaktor für eine App. Dies ist die Motivation sich intensiver mit dem Thema UI und UX-Design auseinandersetzen. In\neinem Vortrag wird dies zwar auf die Entwicklung von Android-Apps bezogen, jedoch werden auch allgemeine Konzepte\nvorgestellt, die auf das App-Design plattformübergreifend anwendbar sind.

","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","mobile","android"]},"fields":{"slug":"/talks/2013-10-30-app-design/","sourceName":"talks"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","html":"

Google und Microsoft haben Studien zum Thema \"Ladezeiten von Webseiten\" durchgeführt. Kurzgefasst: Schnelle Websites\nhaben eine bessere User Experience, Nutzer bleiben länger, und auch die Konversionsraten sind besser. Ab einer halben\nSekunde gingen die Umsätze pro Nutzer messbar zurück, ab 2 Sekunden waren es über 4%. Es lohnt sich also, in die\nPerformance einer Webanwendung zu investieren.

","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","performance"]},"fields":{"slug":"/talks/2013-11-27-web-performance/","sourceName":"talks"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","html":"

Tool-Integration im Softwareentwicklungsprozess ist kein neues Thema. Dennoch gibt es immer noch Bedarf, die Integration\nvon Tools und Systemen zu verbessern. Je nach konkretem Entwicklungsvorgehen bzw. -prozess werden weitere ergänzende\nFunktionalitäten und Daten benötigt, die wenige Tools allein nicht liefern können. Das heißt, es ist notwendig,\nIntegration zwischen Tools und Systemen verschiedener Hersteller zu schaffen, sodass diese so verwendet werden können,\nwie es nötig ist. Ziel ist dabei, Daten und Funktionalitäten unabhängig von konkreten Tools oder Systemen dynamisch\nverwenden zu können. Neue und bestehende Tools und kleine Skripte sollen genau an den Entwicklungsprozess und die\nMenschen in diesem Prozess anpassbar sein. Einmal entwickelte Funktionalität soll frei wiederverwendbar sein. Unter\nanderem für diese Ziele wurde OpenDIP, eine offene Platform für die Integration im Entwicklungsprozess, entworfen. Über\ndie Konzepte und die Realisierung dieser Platform wurden zwei Masterarbeiten und ein Paper\nhttp://arxiv.org/find/all/1/all:+AND+Max+Wielsch/0/1/0/all/0/1\ngeschrieben. Im Vortrag wird auf die Motivation und die Verwendung der Platform eingangen, wobei die Architektur\nausgehend von einem Fallbeispiel erläutert wird.

","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["integration","platform","softwareentwicklung"]},"fields":{"slug":"/talks/2014-01-29-opendip/","sourceName":"talks"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","html":"

Damit Testgetriebene Entwicklung in der Praxis funktionieren kann, müssen sich Tests möglichst einfach und trotzdem\nausdrucksstark schreiben lassen und gut lesbar sein. Auch die (Neben-)Aufgabe von Unittests, eine lebendige\nEntwicklerdokumentation zu bilden, kann nur erfüllt werden, wenn die Tests gut lesbar sind.

\n

Die klassischen Assertions von JUnit lassen hier teilweise zu wünschen übrig. Neben assertTrue und assertNotNull\nbestehen viele Unittests nur aus unzähligen assertEquals-Anweisungen, was in der Regel sehr weit weg von natürlicher\nSprache ist. Diese Lücke versucht das Hamcrest-Projekt zu schließen, welches mittlerweile teilweise in JUnit\neingeflossen ist. Hamcrest ist jedoch ebenfalls nicht unproblematisch und bietet durch seinen Aufbau aus statischen\nMethoden in der Praxis zahlreiche Schwächen und Nachteile.

\n

Einen moderneren Ansatz verfolgt das Framework AssertJ bzw. FEST-Assert. Auf den ersten Blick sehen die\nAssertions denen von Hamcrest zwar sehr ähnlich, jedoch wurde für die Implementierung statt statischer Methoden der\nmodernere Ansatz einer Fluent-API gewählt, wodurch sich einige Vorteile ergeben, wie z.B. bessere IDE-Integration.

\n

Im Vortrag wird das eigentliche Problem und die bisherige Lösung mit Hamcrest gezeigt. Dem wird anschließend das\nFramework AssertJ gegenüber gestellt. Anhand von zahlreichen Core-Beispielen soll gezeigt werden, wie einfach sich\nlesbare Unittests formulieren lassen, wenn man die richtigen Werkzeuge zur Hand hat. Anschließend wird ebenfalls darauf\neingegangen, wie mit AssertJ eigene, domänenspezifische Assertions erstellt werden können. Damit kann sich der Anwender\nseine eigenen Werkzeuge erstellen, um in seiner Domäne gut lesbare und ausdrucksstarke Unittests schreiben zu können.

","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["junit","testen"]},"fields":{"slug":"/talks/2014-04-02-assertj/","sourceName":"talks"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","html":"

Hazelcast ist ein vielseitiges Framework zur einfachen Synchronization von Daten, die sich In-Memory innerhalb einer\nApplikation befinden. Damit ist es für Anwendungen gedacht, bei denen eine Synchronization durch eine \"externe\"\nTechnologie wie Datenbanken zu einem erheblichen Performanceverlust führt.

\n

Durch die Verteilung der Daten auf mehrere Knoten ist es ein gutes Mittel zur horizontalen Skalierbarkeit bei\nSynchronität der Daten innerhalb des Clusters. Zusätzlich lässt sich die Verfügbarkeit/Ausfallsicherheit durch die\nHinzunahme weiterer (Backup-)Knoten steigern.

","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["cluster"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/","sourceName":"talks"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","html":"

Seit April ist die neue Version 8 von Java offiziell verfügbar. Dieses Update ist sicherlich das bedeutendste Update\nseit Java 5, da zahlreiche interessante Neuerungen Einzug in die Sprache und das JDK gehalten haben.

\n

Die am meisten diskutierte Neuerung stellt sicherlich die Einführung von Lambda-Ausdrücken dar, mit denen Java nun auch\nfunktionale Eigenschaften bekommt.

\n

Im Vortrag wird Paul Weinhold die praktische Anwendung von Lambdas vorstellen und dabei vor allem auch auf die neue\nStreams-API von Java eingehen, da diese ganz besonders von Lambda-Ausdrücken profitiert.

\n

Paul Weinhold ist Master-Student im Studiengang Informatik an der Hochschule in Görlitz. Daneben arbeitet er als\nWerksstudent bei der Deutschen Bahn AG und setzt dort seit einiger Zeit aktiv die neuen Möglichkeiten von Java 8 ein.

\n

Materialien:

\n","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","time":null,"speaker":["paul_weinhold"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["java","functional-programming"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/","sourceName":"talks"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","html":"

Solr ist ein mächtiges Werkzeug um strukturierte Dokumente durchsuchbar zu machen. Solr kann als ein Aufsatz für Apache\nLucene verstanden werden und wartet mit zahlreichen Erweiterungen auf.

\n

Unter Anderem kann Solr in einem Apache Tomcat laufen und kommuniziert über HTTP. Dabei können nicht nur mittels HTTP\nGET Suchanfragen auf den indizierten Datenbestand ausgelöst werden, sondern mittels HTTP POST auch neue Dokumente\nhinzugefügt werden.

\n

Dabei können verschiedene Datequellen (Filesystem, Datenbanken, REST-Services, ...) angebunden werden, um den\nDatenbestand des Suchindex zu füllen. Dabei besteht ein großer Vorteil bei den vielen Erweiterung bei der Indizierung\nder Daten. Z.B. Silbentrennung, Wortstammbildung, ...

\n

Zur eigentlichen Suche existiert eine leicht zu erlernende Syntax. Insbesondere lassen sich mehrere Felder der\nstrukturierten Dokumente gleichzeitig abfragen und durch ein Ranking können die Suchergebnisse noch weiter verfeinert\nwerden.

","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["database"]},"fields":{"slug":"/talks/2014-09-24-solr/","sourceName":"talks"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","html":"

Infrastructure as Code is one of the important cornerstones of continuous delivery. The concept that infrastructure\nshould be treated as code is really powerful. Server configuration, services, installed packages, relationships with\nother servers etc...should be modeled as code to be automated and have a predictable outcome, removing manual steps\nprone to errors and decreasing the cycle time.

\n

Spinning up a new virtual environment or a new version of the environment then becomes a matter of executing a script\nthat can create and provision an image or set of images – from the barebone operating system to the complete application\nstack installed and configured.

\n

This concept is increasingly important today when the number of environments and their instances has gone up by orders\nof magnitudes and the release frequency has moved from monthly to weekly or even daily releases.

\n

In this session we will showcase a few popular tools used to implement this concept: Vagrant, Puppet and Docker.

\n

Materialien:

\n","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","time":null,"speaker":["bruno_devic"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["devops"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/","sourceName":"talks"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","html":"

Die meisten Softwareentwickler haben irgendwann einmal Model-View-Controller als Design-Pattern gelernt. In der\nPraxis existieren aber viele verschiedene Ansichten darüber, was MVC eigentlich genau bedeutet und wie es implementiert\nwird. Darüber hinaus haben sich mit der Zeit auch neue, eigenständige UI-Design-Patterns entwickelt, die aber oft noch\ngewissen Gemeinsamkeiten mit dem klassischen MVC aufweisen. Dazu gehören z.B. Model-View-Presenter,\nPresentation-Model und Model-View-ViewModel.

\n

In diesem Vortrag soll zum einen ein Überblick über UI-Design-Patterns gegeben werden, zum anderen aber auch ein\ntieferer Eindruck über die tatsächliche Umsetzung und der praktischen Konsequenzen dieser Patterns gegeben werden. Dabei\nsollen weniger UML-Diagramme als viel mehr Code-Beispiele im Vordergrund stehen. Es wird dabei auch auf Aspekte wie\nTestbarkeit, Koppelung und Wiederverwendung eingegangen.

\n

Der Vortragende ist Softwareentwickler bei der Saxonia Systems AG und ist dort vor allem im UI-Bereich tätig. Er hat\nErfahrungen gesammelt mit JavaServer-Faces, HTML(5)+JavaScript sowie im Bereich Desktop-Oberflächen mit JavaFX.\nAktuell arbeitet er als Hauptentwickler an dem OpenSource-Framework MvvmFX,\nwelches Komponenten zur Umsetzung des Design-Patterns Model-View-ViewModel für JavaFX bereitstellt.

\n","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","patterns"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/","sourceName":"talks"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","html":"

Es wird immer wichtiger WebAnwendungen überwachen zu können, um Probleme frühzeitig zu erkennen und Gegenmaßnahmen\neinleiten zu können. Hierfür wurde MoSKito geschaffen. Ursprünglich wurde es für Parship entwickelt, aber inzwischen ist\nes in ein eigenständiges Projekt auf GitHub ausgegliedert und steht nun allen Interessierten zur Verfügung.

\n

In dem Vortrag werden wir die einzelnen Komponenten der MoSKito-Toolbox anhand einer simplen Beispiel-Anwendung\nvorstellen. Dazu zählen die Datenerhebung für das Monitoring technischer Auffälligkeiten, die Visualisierung über eine\nintegriertes oder standalone WebUI, zentrale Persistierung zur späteren Auswertung, sowie ein Kontrollzentrum, welches\ndurchaus auch als Wall-Monitor eignet.

\n

Desweiteren werden wir die einfache Integration, sowie Möglichkeiten zur Erweiterung näher beleuchten. Denn in MoSKito\nkann man nicht nur Informationen technischer Natur sammeln, die für Entwickler relevant sind (Verarbeitungszeiten,\nSystemlast, etc.), sondern auch Daten mit Businessvalue (Verkaufszahlen, etc.). So kann MoSKito auch für Management und\nMarketing interessant sein.

","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_steinstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["web","monitoring"]},"fields":{"slug":"/talks/2015-01-28-moskito/","sourceName":"talks"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","html":"

Smartphones und Apps sind für viele Menschen mittlerweile unentbehrlich. Nahezu für jeden Aspekt des Alltags und auch in\nder Geschäftswelt gibt es Anwendungen. Bei diesem JUG-Treffen werden wir in einer Praxisveranstaltung den Start eines\nApp-Entwicklungsprojekts mit Android betrachten. Die Veranstaltung richtet sich vor allem auch an\nProgrammier-Einsteiger, die einen Einblick in die Android-App-Entwicklung bekommen wollen.

\n
\n

These days mobile phones and apps are indispensable to people. Nearly for every aspect of life and also in the business\nworld there are applications. In this JUG meeting we will take a look at how to start an app development project in\npractice. The session is especially addressed to programming beginners who like to get started with Android app\ndevelopment.

\n

Materialien:

\n","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":null,"poster_alt":null,"tags":["android","mobile"]},"fields":{"slug":"/talks/2015-03-25-android/","sourceName":"talks"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","html":"

Aufbauend auf dem letzten Beitrag der Java User Group Görlitz\n(Einstieg in die Android-App-Entwicklung) soll das Beispiel der Notiz\nApp live weiterentwickelt werden, um Konzepte und deren Umsetzung für die fortgeschrittene Android-Programmierung zu\nzeigen.

\n

Mit dem Ziel, eine testbare und entkoppelte Applikationsarchitektur zu erreichen wird der Einsatz geeigneter Patterns\nund Frameworks diskutiert.

\n

Materialien:

\n","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","time":null,"speaker":["max_wielsch"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["mobile","android"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/","sourceName":"talks"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","html":"

Drools ist ein Business-Rules-Mangement-System, mit dem sich Regelbasierte Systeme entwickeln lassen. Dazu stellt es\neine Domainen-Spezifische Sprache zur Verfügung, mit der Regeln definiert und anschließend durch die Rule-Engine\nverarbeitet werden können.

\n

Paul Weinhold ist Student im Masterstudiengang Informatik der Hochschule Zittau/Görlitz. Daneben arbeitet er bei der\nDB-Netz AG und setzt dort u.a. auch Drools ein. Im Vortrag stellt er die Technik vor und gibt einen Einblick anhand\npraktischer Beispiele.

\n

Materialien:

\n","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","time":null,"speaker":["paul_weinhold"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["dsl"]},"fields":{"slug":"/talks/2015-07-29-drools/","sourceName":"talks"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","html":"

Das Framework Guava wurde von Google geschaffen, um eine einheitliche und einfach zu\nhandhabende Lösung für verschiedenste alltäglich wiederkehrende Probleme anzubieten. Insbesondere für die Codebasis von\nGoogle selbst. Dabei wurde großen Wert darauf gelegt ältere JDK-Versionen 5+ (ab Release 12 inzwischen JDK 6+) zu\nunterstützen. Damit ist Guava ein Framework, mit dem sich jeder JAVA-Entwickler näher beschäftigen sollte, um sich die\neigene Arbeit zu erleichtern.

\n

Auch wenn inzwischen einige Features mit JDK 7 (wie bspw. die Klasse Objects) und JDK 8 (wie bspw. Funktionale Ansätze)\nin ähnlicher Form inzwischen auch direkt in JAVA nutzbar sind, lohnt die Verwendung von Guava immernoch. Zudem ist Guava\nnicht als Konkurrenz zu Lösungen des JDKs oder ähnlicher Libaries wie Apache Commons zu verstehen, sondern als\nsymbiotische Ergänzung.

\n

Zu einer solchen Ergänzung zählt definitiv die umfangreiche Erweiterung der JDK-Collection-Vielfalt um viele weitere\nnützliche Typen zu den Vozügen von Guava. Insbesondere kann der spezielle Ansatz bei deren Verarbeitung immernoch\nVorteile gegenüber Streams bieten. Andersherum lassen viele Dinge in Guava mit Lambdas inzwischen noch komfortabler\nbedienen.

\n

In dem Vortrag wird ein Überblick über die zahlreichen Möglichkeiten von Guava gegeben. Auch unter dem Gesichtspunkt der\nneuen Möglichkeiten unter JDK 7/8. Die genannte Collection-Erweiterung ist dabei nur ein Bruchteil dessen was Guava\nbietet. (Object- und StringUtils, Orderings, Comparisons, Preconditions, ExceptionHandler, neue Collections und ihr\nHandling, Funktionale Ansätze, Ranges, ReflectionUtils)

","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","time":null,"speaker":["steffen_seidler"],"location":"dser_elisabethstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["java"]},"fields":{"slug":"/talks/2015-09-30-guava/","sourceName":"talks"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","html":"

JavaFX ist die neue Java-Technologie im Desktop-Bereich und somit die Ablösung von Swing. Damit ist es möglich\nJava-Anwendungen für Desktop, Browser und mobile Geräte zu entwickeln. Allerdings bietet Oracle keinen direkten Support\nfür mobile Endgeräte an, sondern überlässt dies der Community.

\n

In dem Vortrag geht es um den Aktuellen Stand der Entwicklung in diesem Bereich. Was muss gemacht werden, um eine\nJavaFX-Anwendung auf einem Smartphone zum laufen zu bekommen und welche Grenzen hat dieser Ansatz für die Entwicklung\nvon mobilen Anwendungen mit JavaFX.

\n

Einen weiteren Ansatz verfolgt die Firma Gluon zum Erstellen von mobilen Anwendungen auf JavaFX.\nEine gemeinsame Code-Basis für IOS- und Android-Anwendungen basierend auf JavaFX. Was derzeit damit möglich ist wird\nebenfalls Inhalt des Vortrages sein.

\n

Abschließend wird unser Ansatz für mobile Anwendungen in JavaFX vorgestellt. Mittels des MVVM-Pattern in Kombination mit\nJavaFX-Ports. Vorgestellt wird der aktuelle Entwicklungsstand mit einer offenen Diskussion über Vor- und Nachteile des\nAnsatzes.

\n

Materialien:

\n","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","time":null,"speaker":["stefan_heinze","stefan_barth"],"location":"saxsys","virtual":null,"poster":null,"poster_alt":null,"tags":["frontend","javafx","mobile","android"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/","sourceName":"talks"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","html":"

Mit Java 8 wurden einige Features in die Sprache integriert, die von funktionaler Programmierung inspiriert sind. Im\nVortrag Java 8: Lambdas und Streams im Juli 2014 hat Paul uns die\ntechnischen Möglichkeiten dazu bereits vorgestellt. Doch ist Java damit nun auch eine Funktionale Sprache? Gibt es\nüberhaupt noch Gründe, andere funktionale Sprachen zu beachten?

\n

In diesem Vortrag möchten wir tiefer in die Materie der funktionalen Programmierung eintauchen und die Konzepte dieses\nParadigmas betrachten. Wir werden sehen, wie Java-Programmierer von funktionalen Konzepten profitieren können. Dabei\ngehen wir unter anderem auf Dinge wie Rekursion, Pure Funktionen, Immutable Datenstrukturen, Monaden und\nFunktionskomposition ein.

\n

Wir werden aber auch zeigen, wo die Grenzen von Java liegen und warum wir der Meinung sind, dass Java letztlich doch\nkeine wirklich funktionale Sprache ist und weshalb wir unbedingt empfehlen, sich mit funktionalen Sprachen zu\nbeschäftigen. In diesem Sinne werden wir beim darauf folgenden JUG-Treffen die funktionale Sprache \"Haskell\" vorstellen\nund dabei viele der hier vorgestellten Konzepte wiederfinden. Außerdem werden wir die Haskell-Variante \"Frege\"\nbesprechen, die auch auf der JVM läuft.

\n

Materialien:

\n\n

Links:

\n","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky","max_wielsch"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"627917ce-c50f-59e9-98d8-4897b4f220c5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png","srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen.","tags":["java","functional-programming"]},"fields":{"slug":"/talks/2016-01-27-functional_java/","sourceName":"talks"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","html":"

Haskell ist eine funktionale Programmiersprache, die das Paradigma der funktionalen Programmierung so konsequent\numsetzt, wie kaum eine andere Sprache. Beispielsweise sind Funktionen in Haskell standardmäßig \"pure\", können also keine\nSeiteneffekte besitzen, was durch das statische Typ-System sichergestellt wird. Eine weitere Eigenschaft, die Haskell\nvon den meisten anderen Sprachen unterscheidet, ist die nicht-strikte Auswertung von Ausdrücken, was im allgemeinen\ndurch Lazy-Evaluation umgesetzt wird. Dadurch kann Haskell beispielsweise ohne weiteres mit unendlichen Listen umgehen,\nohne dafür besondere Sprachkonstrukte zu benötigen.

\n

Haskell selbst läuft nicht auf der Java-VM, allerdings existiert mit der Programmiersprache \"Frege\" eine\nHaskell-Variante, die zu Java-Sourcecode kompiliert. Damit steht nun auch auf der JVM eine rein funktionale Sprache\nbereit.

","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"5c9d56a7-72a3-5960-83a9-42dc599be063","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#588888","images":{"fallback":{"src":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png","srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen","tags":["programmiersprachen","functional-programming"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/","sourceName":"talks"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","html":"

In vielen Software-Projekten wissen häufig nicht nur Anwender sondern auch Entwickler nicht, warum sich ihre Anwendung\nverhält wie sie sich eben verhält. Wieso ist meine Anwendung so langsam? An Performance-Tests wurde während der\nEntwicklung nicht gespart. Was kann also das Problem sein? Abhilfe kann in solchen Fällen ein Application Performance\nManagement Werkzeug schaffen, wie beispielsweise das Open Source-Werkzeug inspectIT.

\n

inspectIT ist ein leistungsstarkes Werkzeug, dass dazu dient, die Leistung von Software-Anwendungen sowohl zu überwachen\nals auch zu analysieren. Mithilfe verschiedener Sensoren erfasst inspectIT Informationen über Abfragen des Endnutzers\nund die Verarbeitung im Business-Layer bis hin zum Backend. Mit der Nutzung von inspectIT sind Informationen über die\nSoftware-Anwendung verfügbar, um jedes potenzielle Funktions-, Leistungs- oder Zuverlässigkeitsproblem mühelos\nanalysieren zu können. Dieser Vortrag wird das Open Source Projekt inspectIT vorstellen und einen einfachen Einstieg in\ndie Performance-Analyse mit inspectIT bieten.

\n

Website: http://inspectit.rocks

\n

Git: https://github.com/inspectIT/inspectIT

\n

Dokumentation:\nhttps://inspectit-performance.atlassian.net/wiki/display/HOME/inspectIT+Home

","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","time":null,"speaker":["mario_mann"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"34708531-529f-5d8b-9a4f-7e69705d60db","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#880818","images":{"fallback":{"src":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png","srcSet":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.","tags":["performance","monitoring"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/","sourceName":"talks"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","html":"

Softwareentwicklungsprojekte leben vom Einsatz von modernen Werkzeugen, die die Projektbeteiligten bei ihrer Arbeit\nunterstützen. JavaFX-Entwicklungsprojekte haben hier eine besondere Herausforderung. Die „neue“ Technologie stellt eine\nHerausforderung an die Testwerkzeuge, speziell an die Werkzeuge zur Testautomatisierung. Viele Hersteller werben mit\nJavaFX-Unterstützung, aber nicht immer wird JavaFX vollständig unterstützt.

\n

Der Vortrag geht den Fragen nach:

\n
    \n
  • Welche Kategorien von Testwerkzeugen für JavaFX gibt es?
  • \n
  • Welche Unterschiede gibt es zwischen den Testwerkzeugen?
  • \n
  • Wie werden die Testwerkzeuge in meine Toolkette eingebunden?
  • \n
","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","time":null,"speaker":["kay_grebenstein"],"location":"hochschule_obermarkt","virtual":null,"poster":null,"poster_alt":null,"tags":["javafx","testen"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/","sourceName":"talks"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","html":"

Im Vortrag von Daniel Sernow wird die Kommunikation in Software-Projekten und mit den Projekt-Partnern thematisiert. Er\nwird uns an seinen Erfahrungen und Erkenntnissen aus langjähriger Praxis im Projektgeschäft teilhaben lassen. Für\nEntwickler dürfte dabei vor allem auch die Perspektive der Qualitätssicherung interessante neue Einblicke bereithalten.

\n

Eine Besonderheit: Wir werden eine neuen Veranstaltungsort einweihen - siehe unten.

","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","time":null,"speaker":["daniel_sernow"],"location":"sqs","virtual":null,"poster":{"childImageSharp":{"id":"d76f475f-a8c8-5319-96d2-a1474885f516","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#788818","images":{"fallback":{"src":"/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png","srcSet":"/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,\n/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,\n/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,\n/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,\n/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,\n/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,\n/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand","tags":["testen","softwareentwicklung"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/","sourceName":"talks"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","html":"

Wie funktioniert die virtuelle Maschine? Wo kommt der Just-in-Time-Compiler ins Spiel und was hat es mit InvokeDynamic\nauf sich? Diese und weitere Fragen beantwortet Michael Wiedeking bei einem Blick unter die Haube der Java Virtual\nMachine.

","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","time":null,"speaker":["michael_wiedeking"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"d5ac0466-71cb-5950-ad4c-692645dec780","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#185818","images":{"fallback":{"src":"/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png","srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich.","tags":["java"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/","sourceName":"talks"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","html":"

Unit Testing in Java - dafür ist JUnit das Werkzeug der Wahl. Die letzte Version JUnit 4 tat dabei viele Jahre ihre\nDienste und wurde kontinuierlich weiterentwickelt, stieß allerdings nun doch an ihre Grenzen. Der Nachfolger JUnit 5 ist\neine komplette Neuentwicklung und steht kurz vor dem Release. Wir wollen uns ansehen, welche Neuerungen JUnit 5 mit sich\nbringt und was es beim Umstieg zu beachten gilt.

\n

Materialien:

\n","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","time":null,"speaker":["stefan_bley"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"389f1a05-558e-58a8-a8f2-8f0f783fbb5f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3868c8","images":{"fallback":{"src":"/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png","srcSet":"/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,\n/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,\n/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf","tags":["testen","junit"]},"fields":{"slug":"/talks/2017-01-25-junit5/","sourceName":"talks"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","html":"

CSS ist verwirrend, entbehrt jeglicher Logik und rendert mein HTML völlig willkürlich. Ziel von CSS ist es, den Alltag\neines Webentwicklers möglichst qualvoll zu gestalten. FALSCH Mit Live-Coding gehen wir CSS auf den Grund und werden\neinige Aha-Effekte erzielen. Dafür erklären wir Grundlagen, welche vielen Entwicklern unbekannt sind, und zeigen den\nMehrwert von Präprozessoren. Um euch dann vollends von CSS zu überzeugen, haben wir als Special Guest CSS3 eingeladen.\nDa wird selbst JavaScript blass vor Neid.

","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","time":null,"speaker":["uwe_manteuffel"],"location":"hochschule_obermarkt","virtual":null,"poster":{"childImageSharp":{"id":"f98f07d3-05f0-5b44-a8c4-f59df52e978d","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#087868","images":{"fallback":{"src":"/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png","srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel.","tags":["frontend","web"]},"fields":{"slug":"/talks/2017-02-22-css/","sourceName":"talks"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","html":"

Mit Angular bietet Google ein komponenten-basiertes Webframework an, welches den Anspruch erhebt, die Anforderungen an\nzeitgemäße Softwareentwicklung ganzheitlich zu unterstützen.

\n

Seit dem Release von Angular 2 war es für gestandene Java Entwickler noch nie so einfach in die Webentwicklung\neinzusteigen. Mit Klassen, Dependency Injection, Annotations und Data-Binding bietet Angular dem versierten Desktop\nEntwickler ein vertrautes Umfeld, in dem man sich schnell zurecht findet.

\n

In dieser Veranstaltung möchte ich am lebenden Beispiel zeigen, wie es sich heutzutage anfühlt eine Webanwendung,\nkonkret mit Angular 2, zu erstellen.

\n

Materialien:

\n","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","time":null,"speaker":["sven_hoffmann"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"eddd4dc5-4156-509b-bf5c-e09b0c5c330e","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#084858","images":{"fallback":{"src":"/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png","srcSet":"/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,\n/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,\n/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht.","tags":["frontend","web","javascript"]},"fields":{"slug":"/talks/2017-03-22-angular/","sourceName":"talks"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","html":"

Nach der Ausdehnung vom JDK 9 Feature-Complete-Status, begann die Fehlerbereinigung, mit allen notwendigen Vorarbeiten,\num den finalen Release-Candidate für das JDK 9 bereitzustellen. Der Schwerpunkt vom JDK 9 liegt bei der neuen\nPlattformmodularisierung mit dem Projekt Jigsaw. Über die JDK-Enhancement-Vorschläge JEP 200 (Modulares JDK), JEP 201\n(Modularer Source-Code) und JEP 220 (Modulare Laufzeit-Images) gelangen die technischen Vorschläge ins JDK 9. Der JSR\n376 (Java Platform Module System) schafft die Grundlage für die Referenzimplementierung vom OpenJDK Projekt Jigsaw.\nDiese Veränderungen lassen es zu, mit dem JDK 9 die gewünschte technische Paketierung von ausgewählter\nJava-Funktionalität selbst zu bestimmen. Das Projekt Jigsaw hat die primäre Aufgabe, das Design und die Implementierung\neines Standard-Modulsystems für die Java-Plattform und für das JDK 9 bereitzustellen. Dabei soll die durchgängige,\ndynamische und einfache Anpassbarkeit der Java-SE-Plattform & dem JDK, auch für kleine Endgeräte berücksichtigt werden,\nsowie die Verbesserung von Sicherheit und Wartbarkeit von Java-SE-Plattform-Implementierungen, speziell vom JDK,\nverwirklicht werden. Im Vortrag werden Demo-Beispiele gezeigt, die eine Erstellung von individueller Java Runtime mit\nAnwendung anhand der JDK 9-Werkzeuge verdeutlichen. Die geplante Verfügbarkeit vom JDK 9 ist für Ende Juli 2017\nvorgesehen.

\n

Materialien:

\n","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"2573407c-9387-55d4-81ac-f02dffdbfe14","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#38a838","images":{"fallback":{"src":"/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png","srcSet":"/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,\n/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,\n/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java.","tags":["java"]},"fields":{"slug":"/talks/2017-04-26-jdk9/","sourceName":"talks"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","html":"

React ist eine von Facebook entwickelte JavaScript-Bibliothek zur Entwicklung von UI-Komponenten. Dabei macht React\neiniges anders als andere Web-Frameworks, beispielsweise der Verzicht auf Templates und die Limitierung auf\nunidirektionalen Datenfluss. Interessant ist auch der vollständig deklarative Ansatz, der es u.a. ermöglicht,\nUI-Komponenten als Funktionen zu entwickeln.

\n

React ist aber nicht auf den Browser beschränkt: Mit React-Native können darüber hinaus auf die gleiche Art und Weise\nauch native Mobile-Apps entwickelt werden. Aber anders die meisten HTML5-Hybrid-Frameworks ist bei React-Native kein\nHTML im Spiel. Stattdessen werden tatsächlich native UI-Controls gerendert.

\n

In diesem Vortrag möchte ich React und auch React-Native vorstellen und mittels Live-Coding einen Eindruck von dem\nFramework vermitteln. Dabei möchte ich aber auch auf die Ansätze aus der funktionalen Programmierung eingehen, die React\nmeines Erachtens so besonders machen.

","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"6b8717ce-a995-58f6-82e5-62fb5ef3cca9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58c8d8","images":{"fallback":{"src":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png","srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4119791666666668}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen.","tags":["frontend","javascript","web","mobile","functional-programming"]},"fields":{"slug":"/talks/2017-05-31-react/","sourceName":"talks"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","html":"

Amazon Alexa ist eine Smart-Home-Technologie, die vor allem als Lösung für Spracherkennung bekannt ist. Für Entwickler\nist dabei vor allem die Möglichkeit interessant, eigene Anwendungen mit Spracherkennung erstellen zu können.

\n

Andre und Maik beleuchten in ihrem Vortrag die Theorie hinter Spracherkennung und zeigen am Beispiel von Amazon Alexa,\nwie damit Anwendungen gebaut werden können.

","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","time":null,"speaker":["andre_tepper","maik_wagner"],"location":"dser_elisabethstrasse","virtual":null,"poster":null,"poster_alt":null,"tags":["ki"]},"fields":{"slug":"/talks/2017-08-30-alexa/","sourceName":"talks"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","html":"

Kaum haben wir uns von dem klassischen Monolithen und der zugehörigen Ablaufumgebung namens Application Server,\nzugunsten von Microservices und Embedded Runtimes, verabschiedet, taucht am Horizont mit Serverless Applications bzw.\nArchitectures schon die nächste Evolutionsstufe auf. Was bitte ist das jetzt schon wieder? Und wer braucht so etwas? Die\nSession zeigt, wie sich dank BaaS, FaaS und einiger anderer Akronyme, Mobile und Enterpriese Anwendungen implementieren\nlassen - ganz ohne Server! Ganz ohne? Naja, fast.

\n

Materialien:

\n\n
\n

Bei bei diesem Treffen verlosen wir unter den Teilnehmern ein Tutorial von\nhttps://tutorials.entwickler.de/. Mit freundlicher Unterstützung durch Software &\nSupport Media GmbH.

","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","time":null,"speaker":["lars_roewekamp"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"754076b2-57c3-5796-89f2-711200e78c58","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389858","images":{"fallback":{"src":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png","srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w","sizes":"100vw"},"sources":[{"srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145234493192134}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.","tags":["architektur"]},"fields":{"slug":"/talks/2017-10-25-serverless/","sourceName":"talks"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","html":"

Im letzten Jahr waren die Panama Papers in aller Munde, die Journalisten der Süddeutschen Zeitung und des ICIJ\nuntersuchten und publizierten die breite Nutzung von Briefkastenfirmen durch Politiker, Geschäftsleute, Banken usw. Für\ndie Untersuchung des größten Leaks einer Geldwäschefirma wurde unter anderem auch Neo4j genutzt. Heute werde ich\ndemonstrieren, wie solche Daten in einem Graph modelliert, importiert und abgefragt werden können. Da die Informationen\nöffentlich verfügbar sind, kann jetzt jeder zum Journalisten werden.

","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","time":null,"speaker":["michael_hunger"],"location":"sqs","virtual":null,"poster":{"childImageSharp":{"id":"0d8148d9-9587-5da3-aaf0-f92c5603d344","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#587828","images":{"fallback":{"src":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png","srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir.","tags":["database"]},"fields":{"slug":"/talks/2017-11-29-neo4j/","sourceName":"talks"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","html":"

Beim Bauen monolithischer Systeme nutzen Entwicklerteams eine Reihe typischer Muster um die Interaktion verschiedener\nSystemteile zu implementieren. Behält man diese Interaktionsmuster bei, während man ein System in verschiedene aufteilt,\nergeben sich oft große Komplexität und architektonische Nachteile, die oft die ursprüngliche Idee, die hinter der\nAufteilung stand, konterkarieren.

\n

Der Vortrag betrachtet ein konkretes Beispiel von Modulinteraktion in einem monolithischen System und identifiziert die\nProblemstellungen die sich ergeben, wenn man dieses System in exakt dem gleichen Interaktionsstil aufteilt. Danach wird\neine alternative Implementierungsstrategie für das monolithische System diskutiert, die die Modularität des\nUrsprungssystems stark verbessert und im Falle einer Aufteilung in unabhängige Teilsysteme zu einer besseren Architektur\nführt.

\n

Materialien:

\n","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","time":null,"speaker":["oliver_drotbohm"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"9685adbf-d27b-5f98-934a-54d7dc3fcdb8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383898","images":{"fallback":{"src":"/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png","srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w","sizes":"100vw"},"sources":[{"srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4141821112006447}}},"poster_alt":"Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet.","tags":["architektur"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/","sourceName":"talks"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","html":"

Die SAP Cloud Platform (SCP) beschreibt ein „Platform as a Service“ (PaaS) Angebot der SAP. Mit der SCP liefert SAP\nsowohl die Entwicklungsumgebung als auch die Laufzeitumgebung zur Realisierung kundenindividueller Erweiterungen von\nCloud- und On-Premise-Lösungen (z.B. SAP S/4HANA). Basierend auf der In-Memory-Plattform SAP HANA stellt die SCP eine\nVielzahl an Datenbank- und Cloud-Services zur Verfügung, welche das PaaS Angebot erweitern und die Integration von SAP-\nund Non-SAP-Lösungen ermöglichen. Im Vortrag wird illustriert, wie die Verbindung aus einer Java EE Applikation zu einem\nSAP On-Premise System hergestellt und dessen Funktionalität in der Cloud genutzt wird.

\n

Materialien:

\n","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","time":null,"speaker":["jens_leuschner","mariusz_zienkiewicz"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"65d7329c-3fb6-5a77-8b25-3984a599f9e8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png","srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol.","tags":["cloud"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/","sourceName":"talks"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","html":"

Während in einer klassischen Konzern-IT Standards und Blaupausen für immer gleiche Anwendungsarchitekturen sorgen,\nbetonen Microservice-Ansätze die technologische Freiheit. Zwei extreme Spielarten der Ausgestaltung von Makro- und\nMikroarchitektur. In diesem Vortrag lernt Ihr neben dem Konzept selbst auch die auf Eure Ziele abgestimmte Richtung, die\nIhr in dieser Fragestellung einschlagen solltet. Wie sieht in Eurem Kontext die Balance aus -- was gebt Ihr für alle\nElemente Eurer Anwendung(slandschaft) vor, wo lasst Ihr bewusst Spielraum? Und gibt es auch noch etwas dazwischen? Zu\ndiesem Zweck passen wir organisatorische und technologische Trends wie 2-Speed/Bimodale Architekturen, Cloud und\nDomänenorientierung in das Entwurfsdoppel Makro und Mikro ein.

","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","time":null,"speaker":["stefan_zoerner"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"96d1873a-e218-5bea-9d77-8dc2e42dbbc6","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#082868","images":{"fallback":{"src":"/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png","srcSet":"/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,\n/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,\n/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen freut sich und hält einen Bauplan in der Hand.","tags":["architektur"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/","sourceName":"talks"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","html":"

Die Ankündigung der Unterstützung von Kotlin für die Android-Entwicklung auf der Google I/O Keynote 2017 bewirkte\nspontan kräftigen Applaus. Kotlin ist nur eine weitere Programmiersprache für die JVM. Warum also bewirkt die\nverhältnismäßig dröge Ankündigung zur Unterstützung einer JVM-Sprache solche Begeisterung? Was ist das Besondere an\nKotlin gegenüber Java? Der Vortrag gibt einen ersten allgemeinen Einblick in die Sprachfeatures von Kotlin und gibt\nKotlin-Neulingen die Möglichkeit, sich selbst einen Eindruck über die Sprache zu verschaffen.

\n

Materialien:

\n","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","time":null,"speaker":["tobias_blaschke"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"1a259f6b-01d1-58d9-9813-e4fb56a34153","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8b808","images":{"fallback":{"src":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png","srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze","tags":["programmiersprachen"]},"fields":{"slug":"/talks/2018-04-25-kotlin/","sourceName":"talks"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","html":"

Die RESTful-Architektur ist eine etablierte Möglichkeit, Schnittstellen zwischen Client und Server zu gestalten. Dies\nbringt allerdings einige Nachteile mit sich. Als Beispiel können hier die hohe Anzahl an benötigten Requests sowie die\nnur unvollständige Dokumentation der Schnittstelle genannt werden. Mit GraphQL entwickelte Facebook eine alternative\nAbfragesprache, welche die genannten Nachteile beseitigen sollte. Dabei wird eine Abfrage ähnlich der Struktur der\nJSON-Syntax an den Server übermittelt, welcher die gewünschten Daten mit nur einer Antwort zur Verfügung stellt.

\n

Im Vortrag wird GraphQL anhand von Beispielen vorgestellt und dabei sowohl die Client- als auch Serverseite betrachtet.

\n

Materialien:

\n","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","time":null,"speaker":["stephan_strehler"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"90e1be0b-07fd-5977-ad85-c716671424c1","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e838a8","images":{"fallback":{"src":"/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png","srcSet":"/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,\n/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,\n/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen.","tags":["programmiersprachen","web","architektur"]},"fields":{"slug":"/talks/2018-05-30-graphql/","sourceName":"talks"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","html":"

Unveränderliche Datenstrukturen sind ein wichtiges Werkzeug der funktionalen Programmierung. Aber auch abseits dessen\nkönnen Immutables ungemein nützlich sein: Richtig angewandt erhöhen sie die Verständlichkeit des Codes, da\nEntwicklerInnen nicht mehr auf die mühsame Suche gehen müssen, an welcher Stelle ein Objekt möglicherweise ungewollt\nverändert wurde. Darüber hinaus sind Immutables inhärent Threadsafe und können auch hier die Nachvollziehbarkeit des\nCodes erhöhen.

\n

Da Java als Sprache aber keine besondere Unterstützung für Immutables mitbringt, müssen EntwicklerInnen auf Patterns und\nBibliotheken zurückgreifen, um in den Genuss von unveränderlichen Datenstrukturen zu kommen. Denn natürlich müssen auch\nin funktionalen Programmen letztlich Veränderungen der Daten abgebildet werden und dafür bedarf es geeigneter\nUnterstützung.

\n

Im Vortrag möchte ich neben einer grundsätzlichen Einführung in die Thematik auch einige dieser Techniken vorstellen und\nihre Vor- und Nachteile besprechen.

\n

Materialien:

\n","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"314ba704-f1f4-5d2c-8535-b32da028a3c9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#780838","images":{"fallback":{"src":"/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png","srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand.","tags":["programmiersprachen","functional-programming"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/","sourceName":"talks"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","html":"

Spätestens seit Java 8 gibt es monadische Typen in Java. Aber was bedeutet das eigentlich? Was sind die Eigenschaften,\ndie Monaden ausmachen? Und wo liegen unsere Schwierigkeiten beim Verständnis von Monaden? Dieser Vortrag beschreibt, was\neine Monade ist und wie wir eine monadische Transaktion nutzen können, um in domänenspezifischer Sprache mit einer\nDatenbank zu reden. Hierbei bauen wir monadische Transaktionen in ein vorhandenes Repository ein. Weiter beleuchten wir\ndie Vor- und Nachteile dieses Ansatzes und diskutieren die Unterstützung von Monaden in Java. Voraussetzung sind erste\nErfahrungen mit funktionaler Programmierung und Lambdas.

\n

Materialien:

\n","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","time":null,"speaker":["gregor_trefs"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"918002c9-e393-5b8d-a2d6-ee73c1735383","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#680838","images":{"fallback":{"src":"/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png","srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben.","tags":["functional-programming"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/","sourceName":"talks"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","html":"

Anstelle über Microservices, NO-SQL Lösungen oder Container-Management zu reden werden im Workshop Bestandteile des\nStandard Java API vorgestellt. Diese Java Features helfen jedem Entwickler eine wartbare und zukunftssichere Anwendung\nzu entwickeln, egal ob mit Spring, JavaFX oder JavaEE. Verschiedene Sprach-Features und Konzepte der Standard Java APIs\nwerden genauer unter die Lupe genommen und deren sinnvoller Einsatz anhand von Beispielen gezeigt. Hierdurch werden\nunter anderem folgende Fragen beantwortet: Wie funktionieren eigentlich Annotations? Wie entwickle ich Plug-In\nFunktionalität ohne auf OSGI zurückgreifen zu müssen? Wie gehe ich am besten mit NullPointerExceptions um? Wie schreibe\nich nebenläufigen Code der trotzdem wartbar ist?

","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","time":null,"speaker":["hendrik_ebbers"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"8509bc59-0ad5-5d24-87e3-f253d53d68b2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3858b8","images":{"fallback":{"src":"/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png","srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'","tags":["java"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/","sourceName":"talks"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","html":"

Java Reflections sind ein Feature der Java Sprache und werden von der JVM für das interne Handling von Klassen, Feldern\nund Methoden verwendet. Intern werden darüber Methodenaufrufe, Zugriffsrechte wie public/privat oder seit Java 9 auch\ndie Modulexporte geregelt.

\n

Dieses Feature kann man sich in der normalen Java Umgebung zu Nutze machen, um auf alle Informationen einer Klasse\nzuzugreifen. So ist es möglich, auf deren Methoden und Felder zuzugreifen, selbst wenn diese privat sind. Felder können\nüberschreiben, Template-Parameter in Feldern und Methoden angezeigt, sowie auch Annotationen der Klasse, Methoden und\nFelder gelesen werden. Am Beispiel eines abstrakten Klassen-Editors werden diese Möglichkeiten in dem Vortrag näher\nbetrachtet.

","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","time":null,"speaker":["erik_jaehne"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"b2cb5256-0c61-5e8b-8a34-23f74562f16f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png","srcSet":"/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,\n/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,\n/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.","tags":["java"]},"fields":{"slug":"/talks/2019-02-27_reflection/","sourceName":"talks"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","html":"

Die Website der JUG Görlitz läuft fast Serverless. Natürlich muss ein Webserver Dateien ausliefern aber ansonsten sind\nkeine Datenbank, Applicationserver, PHP oder sonstige aktive Serverkomponenten im Einsatz. Stattdessen sind alle Inhalte\nals Markdown-Textdateien in einem Git-Repository abgelegt (dieser Talk\nbeispielsweise\nhier). Ein so\ngenannter \"Static-Site-Generator\" generiert daraus HTML-, CSS- und JavaScript-Dateien, die nur noch von einem ganz\nnormalen HTTP-Server ausgeliefert werden müssen. Dieses Vorgehen vereinfacht das Hosting, beschleunigt Website-Aufrufe\nund minimiert die Angriffsfläche des Servers.

\n

Im Vortrag wird das Konzept von Static-Site-Generators erklärt und die möglichen Einsatzgebiete beschrieben. Mit dem\nTool Gatsby werden wir eine einfache Blog-Website bauen. Am Beispiel der JUG-Website wird\naber auch gezeigt, wie komplexere Daten-Modelle mit mehreren Entitäten (Vorträge, Speaker,\nVeranstaltungsorte, Tags) umgesetzt werden können. Die technische Grundlage von Gatsby stellt\nReact für Templates und GraphQL für die Daten-Organisation dar.

\n

Materialien:

\n","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"bffb7b05-0e58-5922-92df-21ce241ccd84","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c868","images":{"fallback":{"src":"/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png","srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w","sizes":"100vw"},"sources":[{"srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.414516129032258}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen.","tags":["web","javascript"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/","sourceName":"talks"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","html":"

Mit dem JDK-Enhancement-Proposal (JEP 322) wird die zeitbasierte Java-Release-Versionierung definiert, die auf dem\naktuellen Java SE Version-String-Schema basiert und die Namensgebung für die kommenden Versionen der Java SE Plattform\nund vom JDK vorgibt. Seit dem Jahr 2018 erscheinen die künftigen Java-Feature-Releases alle 6 Monate. Das JDK 11 wurde\nals Long-Term-Support-Release (LTS-Release) im September 2018 veröffentlicht und nach sechs Monaten folgte das OpenJDK\n12 im März 2019. Mit dem zeitlichen Abstand von sechs Monaten bekommen die Entwickler wesentlich schneller neue\nJava-Funktionsmerkmale als dies mit dem bisherigen Dreijahreszyklus der Fall war. Zwischen den\nOpenJDK/JDK-Feature-Releases sind zwei Updates geplant, bei denen es um die Wartung und Bugfixes geht, die wie gewohnt,\njeweils im Januar, April, Juli und Oktober eines Jahres als Java Critical Patch Update erscheinen werden. Die Planung\nsieht vor, jeweils alle drei Jahre ein weiteres Java-LTS-Release zu veröffentlichen, damit der Anwendungsbetrieb eine\nstabile und ausgereifte Java-Basis bekommt, die mit der nachfolgenden Versionierung $FEATURE.$INTERIM.$UPDATE.$PATCH\ngekennzeichnet wird. Im Vortrag werden Beispiele zum Version-String besprochen, sowie Empfehlungen diskutiert, wie die\nkünftige Java-Strategie mit dem OpenJDK, Oracle JDK (LTS) und der neuen Java SE Subscription (Support) für die\nEntwickler und für den Anwendungsbetrieb aussehen soll. Zudem wird die Weiterentwicklung der OpenJFX/JavaFX\nUI-Technologie mit den Aktivitäten der Developer-Community dargestellt.

","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"e335d1a1-3789-5e42-9670-a3e1c361eadc","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png","srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle.","tags":["java"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/","sourceName":"talks"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","html":"

Der Vortrag erläutert zunächst die Grundlagen der Standards OAuth 2.0 und OpenID-Connect und geht danach auf den Einsatz\ndieser Standards mittels Keycloak ein. Dabei wird anhand einer Beispielanwendung (React, Spring Boot) gezeigt, wie man\nKeycloak in seine Anwendung einbinden kann.

","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","time":null,"speaker":["denny_israel"],"location":"hochschule_campus","virtual":null,"poster":{"childImageSharp":{"id":"cb4beaed-8514-5a8a-8dfe-7bec12fbdd27","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#386898","images":{"fallback":{"src":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png","srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.","tags":["java","security"]},"fields":{"slug":"/talks/2019-05-29-oauth/","sourceName":"talks"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","html":"

HashMap und ArrayList kennt jeder, na klar. Aber wann stellen diese eigentlich die richtige Wahl dar? Und vor allem:\nWann nicht? Das Collections Framework enthält zahlreiche, teils recht spezialisierte Implementierungen. Doch viele\nEntwickler kennen nur einen kleinen Teil davon. Schon mal was von EnumSet oder WeakHashMap gehört? Und was ist der\nUnterschied zwischen ConcurrentSkipListMap und ConcurrentHashMap? Für jeden Java-Entwickler ist es wichtig, die Stärken\nund Schwächen der einzelnen Implementierungen zu kennen. Dieser Vortrag diskutiert Details wie Threadsicherheit,\nLaufzeitverhalten und sinnvolle Initialisierung anhand einiger ausgewählter Collection-Klassen.

\n

Materialien:

\n","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","time":null,"speaker":["thilo_frotscher"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"ecc9b098-2be1-50e1-87d8-48488a256061","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389838","images":{"fallback":{"src":"/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png","srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'.","tags":["java"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/","sourceName":"talks"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","html":"

Hattest du auch schon mal das Problem, dass du deine eigenen komplizierten und unleserlichen Testfälle nicht mehr\nverstanden hast? Wir kennen das Problem und zeigen euch mögliche Lösungen.

","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","time":null,"speaker":["maik_wagner"],"location":"tallence","virtual":null,"poster":{"childImageSharp":{"id":"6f443280-7e6e-5951-ab2a-0815064e81b4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86868","images":{"fallback":{"src":"/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png","srcSet":"/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,\n/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,\n/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben.","tags":["java","test"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/","sourceName":"talks"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","html":"

\"Create Apps, Not the Platform\" - Cloud Foundry verspricht, dass sich Entwicker voll und ganz auf die\nAnwendungsentwicklung fokussieren können, anstatt einen erheblichen Teil ihrer Zeit auf Infrastruktur, Deployment usw.\nverwenden zu müssen. Was ist Cloud Foundry überhaupt? Und hält sie, was sie verspricht?

","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","time":null,"speaker":["simon_roloff"],"location":"saxsys","virtual":null,"poster":{"childImageSharp":{"id":"abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#583898","images":{"fallback":{"src":"/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png","srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken.","tags":["cloud"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/","sourceName":"talks"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","html":"

Nach der Freigabe vom JDK 14 werden die aktuellen Merkmale vorgestellt. Neben Bug-Fixes und Security-Patches, stecken im\nJDK 14 Feature-Release, Sprach- und JVM-Änderungen, Erweiterungen, zugefügte und entfernte Klassen und Methoden,\ndeprecated markierte Features und JDK-Tool-Änderungen. Bereits mit der Einführung der JDK Version 11 wurden die\ntechnischen Unterschiede bei der Gleichstellung vom Oracle JDK mit dem Oracle OpenJDK entfernt. Bei diesem\nTechnologietransfer sind alle Bestandteile vom Oracle JDK als Open-Source-Implentierungen in das OpenJDK geflossen,\nsodass das Oracle JDK 14 durch das OpenJDK 14 augetauscht werden kann. Die Anwender können ein JDK oder ein OpenJDK\nverschiedener Hersteller frei auswählen. Dazu werden die Migrationsaspekte älterer Java-Anwendungen zum JDK 14\nerläutert. Im Vortrag wird auch ein Blick auf den langfristigen Einsatz vom Java Modulsystem geworfen und dies anhand\nvon Beispielen durch Erstellung einer individueller Java Runtime mit der Anwendung verdeutlicht. Zudem wird die die\nGraalVM als universelle Virtuelle Maschine (VM) für Anwendungen im Java Ökosystem betrachtet.

\n

Materialien:

\n\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu hat Wolfgang ein Zoom-Meeting aufgesetzt. Dieser Meeting-Raum ist\nPasswortgeschützt. Bitte meldet euch vorab per E-Mail an. Wir schicken euch dann vor dem Meeting das Passwort per Mail\nzu.

\n

Dieses Mal geht es schon 18:00 Uhr los.

","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","time":"18:00","speaker":["wolfgang_weigend"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"59ef0a09-a854-5bc5-a122-2d35ddcf6987","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#486888","images":{"fallback":{"src":"/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png","srcSet":"/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,\n/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,\n/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,\n/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,\n/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,\n/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,\n/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen.","tags":["java"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/","sourceName":"talks"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","html":"

Als Softwareentwickler ist man auf die Verwendung von Versionsverwaltungssystemen und deren Branching- und\nMerging-Strategien angewiesen. Vorgaben, wie diese Strategien angewendet werden müssen, liefern diverse\nBranching-Modelle. Sie sollen vor Allem den Entwickleralltag erleichtern, indem sie für eine saubere Historie sorgen,\nden Softwarereleaseprozess unterstützen oder verhindern, dass man in der Merge-Hölle landet. In dem Vortrag werden\neinige Branching-Modelle vorgestellt. Dabei wird der Frage auf den Grund gegangen, welche Art von Modell zu welcher Art\nvon Softwareprojekt passt und welche allgemeingültigen Vorgehensweisen beim Branching und Merging daraus gezogen werden\nkönnen.

\n

Materialien:

\n\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt:\nhttps://meet.digitale-oberlausitz.eu/jug

","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","time":null,"speaker":["hannes_kretschmer"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"1908832c-2f77-598f-a24b-2bcdee954b3a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png","srcSet":"/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,\n/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,\n/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet.","tags":["java"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/","sourceName":"talks"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","html":"

Durch die Veröffentlichung von immer neuen Schwachstellen in Softwareprodukten rückt das Thema Application Security\nzunehmend in den Fokus vieler Softwareentwickler. Sichere Software zu erstellen muss aber keine große Herausforderung\nsein, wenn man Best Practices befolgt und der Application Security einen festen Platz im Entwicklungszyklus einräumt.\nZiel des Vortrags ist es, einen Überblick zu Secure Coding in Java zu vermitteln und die Wichtigkeit dieses Themas\nhervorzuheben. Im Detail wird außerdem an praktischen Beispielen demonstriert, wie Sicherheitsschwachstellen im\nProgrammcode aussehen, ausgenutzt und behoben werden können.

\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt:\nhttps://meet.digitale-oberlausitz.eu/jug

","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","time":null,"speaker":["nico_foerster"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#182838","images":{"fallback":{"src":"/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png","srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben.","tags":["java","security"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/","sourceName":"talks"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","html":"

Web-Components sind eine Möglichkeit, auf Basis von Web-Standards wiederverwendbare UI-Komponenten zu bauen, die sich\nbrowserübergreifend und unabhängig von JavaScript-Frameworks einsetzen lassen. Im Vortrag möchte ich die relevanten\nWeb-Standards kurz vorstellen und im Live-Coding eine Web-Componente from Scratch bauen.

\n

Dabei möchte ich auch auf die Stärken und Schwächen von Web-Components eingehen und einige Erfahrungen teilen, die ich\nbei der Entwicklung einer firmeninternen Component-Library machen konnte.

\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt:\nhttps://meet.digitale-oberlausitz.eu/jug

","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","time":null,"speaker":["manuel_mauky"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"9bba5bef-9d0e-50c8-b451-ffed64ad6bd4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#981848","images":{"fallback":{"src":"/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png","srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus.","tags":["web"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/","sourceName":"talks"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","html":"

MicroStream ist ein fundamental neues Persistenz-Framework für die native Speicherung komplexer Java Objektgraphen.\nD.h., Objekte werden damit genau so persistent gespeichert, wie diese im Hauptspeicher von der JVM verwaltet werden.\nUmgekehrt lassen sich zu jeder Zeit einzelne Subgraphen in den RAM laden und der Objektgraph im Hauptspeicher wird\nautomatisch aktualisiert.

\n

Dadurch ergeben sich völlig neue Möglichkeiten: Objektgraphen lassen sich als In-Memory Datenbank verwenden. Ein\nObjektgraph ist dabei eine sehr mächtige Multi-Model Datenstruktur. Es lassen sich beliebige Java-Typen, Collections\nsowie Formate wie JSON verwenden und beliebig kombinieren. Passend dazu bietet Java die perfekte Abfragesprache. Mit\nJava Streams dauert das Durchsuchen selbst sehr großer und komplexer Objektgraphen nur Mikrosekunden - bis zu 1000 Mal\nschneller als vergleichbare SQL-Abfragen und sogar sehr viel schneller als das direkte Lesen von Abfrageergebnissen aus\neinem lokalen Cache. DB-spezifische Datenstrukturen oder Formate werden damit bedeutungslos für Java. Keine teuren\nMappings mehr. Keine Datentyp-Konvertierungen mehr. Keine DB-spezifischen Abfragesprachen. Nur noch ein Datenmodell:\nJava-Klassen (POJOs). Kein zusätzliches Caching-Framework mehr. Keine unkomfortablen Objektkopien mehr. Simple\nArchitektur und typsicherer Abfrage-Code. Reine Core-Java Features anstatt DB-spezifische Konzepte. Das Endresultat ist\neine ultraschnelle Java In-Memory Datenbankanwendung oder Microservice.

\n

MicroStream wird bereits seit über 5 Jahren in Unternehmensanwendung produktiv eingesetzt. Jetzt wird MicroStream Open\nSource und Teil der populären Microservice Frameworks Helidon und Open Liberty.

\n

Materialien:

\n\n
\n

Hinweis

\n

Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt:\nhttps://meet.digitale-oberlausitz.eu/jug

","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","time":null,"speaker":["markus_kett","christian_kuemmel"],"location":null,"virtual":true,"poster":{"childImageSharp":{"id":"1567f34a-c228-511c-a368-2041cf79e3fa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f85838","images":{"fallback":{"src":"/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png","srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen.","tags":["web"]},"fields":{"slug":"/talks/2021-06-30-microstream/","sourceName":"talks"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","html":"

Die Persistenz von IoT Daten sowie die Steuerung von IoT-Endgeräten benötigt im klassischen Verständnis eine\nServereinheit. Bei den Bastlern sind das oft on-premise Raspberry-Pi-Geräte oder gehostete Linux-Maschinen. Ihre\nkorrekte Konfiguration und anschließende Wartung kann Kopfzerbrechen bereiten. Es ist jedoch möglich, diese\nVerantwortung an den Cloud-Betreiber zu übertragen und eine entsprechende Infrastruktur zu schaffen. In der\nHands-On-Session wird gezeigt, wie man mit der Erstellung der gewünschten Infrastruktur in der AWS-Cloud beginnen kann.\nDazu wird ein Mikrocontroller vom Typ ESP als physisches IoT-Gerät verwendet.

\n
\n

Hinweis: Bitte meldet euch zur Teilnahme über jug-gr(at)digitale-oberlausitz.eu an. Wir haben eine begrenzte Anzahl\nvon 25 Plätzen zur Verfügung, die nicht überschritten werden darf.

","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","time":null,"speaker":["pawel_adaszewski"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8b838","images":{"fallback":{"src":"/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png","srcSet":"/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,\n/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,\n/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln.","tags":["cloud","iot","serverless","infrastructure"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/","sourceName":"talks"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","html":"

Mit der fischertechnik Lernfabrik haben wir eine Fabrik im Kleinformat! Steuerung, Edge und Cloud in Einem!

\n

\n \n \n \n \n

\n

In diesem Vortrag lernen wir die Technologien und Möglichkeiten von Industrie 4.0 praktisch kennen. Wir nutzen das\nIndustrieprotokoll OPC-UA zur Maschinenkommunikation und Edge-Services um Fabrikdaten in die Cloud zu laden. Wir sehen\nuns die Services hinter einem Dashboard an und mit der Siemens S7 Steuerung tunen wir unsere Fabrik.

\n
\n

Hinweis: Bitte meldet euch zur Teilnahme über jug-gr(at)digitale-oberlausitz.eu an. Wir haben eine begrenzte Anzahl\nvon 25 Plätzen zur Verfügung, die nicht überschritten werden darf.

","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","time":null,"speaker":["marco_gotthans"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"1a0dbc74-dd80-5566-aa7d-5a4aac2ba518","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#28b898","images":{"fallback":{"src":"/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png","srcSet":"/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,\n/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,\n/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen.","tags":["cloud","iot","industrie4.0","infrastructure"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/","sourceName":"talks"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","html":"

Keycloak ist ein Open Source IAM (Identity and Access Management) System, das größtenteils in Java implementiert ist.
\nEs wird von vielen Unternehmen eingesetzt, um Authentifizierung und Authorisierung für verschiedenste Anwendungen\numzusetzen. Eine große Stärke von Keycloak ist die Konfigurierbarkeit und Erweiterbarkeit.
\nIm Vortrag wird ein Überblick über die Konfigurations- und Erweiterungsmöglichkeiten gegeben. In einer Live-Demo wird\ngezeigt, wie man diese Möglichkeiten nutzen kann, um ein kundenspezifisches IAM bereitzustellen.

","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","time":null,"speaker":["daniel_fesenmeyer"],"location":"innolabs","virtual":null,"poster":{"childImageSharp":{"id":"0b48a461-1420-5309-b315-926387e3fc44","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png","srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.","tags":["security"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/","sourceName":"talks"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","html":"

Die Mehrheit aktueller Content Management Systeme (CMS) verwaltet Inhalte auf vergleichbare Art wie Dateien in einem Windows-Netzwerkordner. Wie könnte dagegen ein CMS aussehen, wenn wir nochmal von Null starten und auf heutige Technologien wie Git, GraphQL und der Cloud aufbauen?\nIm Vortrag sehen wir uns die Architektur von Contentlab an, einem Git-basierten Open Source CMS, und erstellen live eine CMS Instanz zum Verwalten von Veranstaltungen.

","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","time":null,"speaker":["markus_weiland"],"location":"cideon","virtual":null,"poster":{"childImageSharp":{"id":"86c1c8d2-94ea-5866-bbdb-3ac21398dcc3","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#9868a8","images":{"fallback":{"src":"/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png","srcSet":"/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,\n/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,\n/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,\n/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,\n/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,\n/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,\n/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Laborkittel und eine Sicherheitsbrille. In der Hand trägt er zwei Reagenzgläser. Über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub.","tags":["platform","web"]},"fields":{"slug":"/talks/2023-01-25-contentlab/","sourceName":"talks"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","html":"

Fehler sind ein fester Bestandteil unserer Arbeit. Die Suche und das Verstehen dieser nimmt viel Zeit in Anspruch. Die Fehlerbehebung ist häufig nur eine Zeile Code. Wie kann der Prozess des Suchens und Verstehens optimiert werden? Dies ist durch eine strategische Vorbereitung der Codebasis möglich.

\n

Hierfür stelle ich zwei Transformationen vor. Ziel der ersten Transformation: Beim Auftreten eines Fehlers erfolgt der sofortige Ausstieg aus dem Code mit einer aussagekräftigen Exception. Das ist sehr ähnlich zur Validierung. Auf Ähnlichkeiten und Unterschiede gehe ich im Detail ein. Ziel der zweiten Transformation: Trennung der Standard-Logik von den Sonderfällen. Dies verbessert die Lesbarkeit. Zusätzlich ergänzt es die erste Transformation.

\n

Anhand der vorgestellten Beispiele kannst du schon morgen deinen Code stabilisieren und deine eigenen Analysen effizienter durchführen. Außerdem gebe ich einen Ausblick darauf, wie du noch mehr aus diesem Konzept rausholen kannst.

","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","time":null,"speaker":["sergej_tihonov"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"85b5c33a-1b3d-5625-8375-408b5c1f84bf","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e88838","images":{"fallback":{"src":"/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png","srcSet":"/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,\n/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,\n/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.","tags":["architektur"]},"fields":{"slug":"/talks/2023-02-22-exception_first/","sourceName":"talks"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","html":"

Die Architektur und das Design einer Applikation beeinflussen ihre Wartbarkeit, Testbarkeit und Qualität im Allgemeinen.\nSpring war schon immer ein vielseitiges Werkzeug, das Architekt:innen dabei unterstützt, Muster zu implementieren, mit\nHilfe derer technische Bausteine der Applikation mit Domänenkonzepten und -grenzen verknüpft werden können. Es erlaubt\nEntwickler:innen Anwendungen zu schreiben, die ihre architektonischen Ideen deutlich reflektieren und so ultimativ\nänder- und damit wartbarere Anwendungen zu schreiben. Schlüsselaspekte dahin gehend sind Codeorganisation, das\nSpring-Bean-Arrangement und die Nutzung von Domänen-Events, um fachlich individuelle Teile der Applikation voneinander\nzu entkoppeln. Der Vortrag diskutiert diese Muster und Ansätze und stellt Blibliotheken wie jMolecules und Moduliths\nvor, um zu zeigen, wie Spring-Entwickler in die Lage versetzt werden, besonders gut strukturierte und wartbare\nAnwendungen zu schreiben.

\n
\n

Hinweis: Wir treffen uns heute das erste mal im Fraunhofer-Institut IOSB. Hier wird vor allem im Bereich\nIT-Sicherheit für Kritische Infrastrukturen für Energie und Wasser geforscht und wir haben die Möglichkeit, eine kurze\nFührung durch das Institut zu bekommen. Deshalb treffen wir uns dieses Mal bereits 18:30 Uhr. Der reguläre Vortrag\nstartet wie gewohnt um 19:00 Uhr.

\n

Einen kurzen Einblick darüber, was wir in diesen Ersten Teil gesehen und gehört haben, könnt ihr auf der Website der Digitalen Oberlausitz e. V. nachlesen.

","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","time":"18:30","speaker":["oliver_drotbohm"],"location":"fraunhofer","virtual":null,"poster":{"childImageSharp":{"id":"ab1c70db-cea4-586b-be81-643ef56fc65a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8a808","images":{"fallback":{"src":"/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png","srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt.","tags":["architektur"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/","sourceName":"talks"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","html":"

Architektur und Code driften immer weiter auseinander? Die Umsetzung von nicht-funktionalen Anforderungen und Querschnittsaspekten wird häufig vergessen? Zu viel Spaghetti-Code durch zyklische Abhängigkeiten? Solche Dinge kommen leider viel zu häufig vor und führen schnell zu einer unwartbaren Codebasis.\nIm Java-Umfeld ist die Bibliothek ArchUnit eine mögliche Lösung für diese Situation. Wir schauen, wie wir mit ArchUnit unsere Architektur innerhalb von Unit-Tests testen können und endlich wieder Struktur ins System bekommen. Außerdem schauen wir uns darauf aufbauend jMolecules an, womit wir Architekturkonzepte direkt im Code abbilden können.

","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","time":null,"speaker":["roland_weisleder"],"location":"expleo","virtual":null,"poster":{"childImageSharp":{"id":"197c670b-992f-54d0-9a49-0aac78c4b5e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a848","images":{"fallback":{"src":"/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png","srcSet":"/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,\n/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,\n/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. In den Hängen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen.","tags":["architektur","test"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/","sourceName":"talks"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","html":"

Dániel Sulyok von der Tallence AG stellt seine Arbeit im Rahmen des Themas Accessibility (Barrierefreiheit) vor. Das Team wurde beauftragt mit der Umsetzung des Redesigns und technischem Neubau der Webanwendung \"Account Manager\" mit einem besonderen Fokus auf Barrierefreiheit. In enger Abstimmung zwischen Design, Entwicklung und Endnutzern wurden entwicklungsbegleitende UX-Tests durchgeführt und iterativ die Zugänglichkeit und Bedienbarkeit der Anwendung verbessert.

\n

Materialien:

\n","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","time":null,"speaker":["daniel_sulyok"],"location":"tallence","virtual":null,"poster":{"childImageSharp":{"id":"2289c524-859b-5899-a8d7-b9ae17afcad5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85888","images":{"fallback":{"src":"/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png","srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake.","tags":["java"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/","sourceName":"talks"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","html":"

Die GraalVM ist eine Virtuelle Maschine (VM) für Anwendungen, die in JavaScript, Python, Ruby, R oder mit den JVM-basierten Programmiersprachen Java, Scala, Kotlin, Clojure und LLVM-basierten Sprachen C/C++ geschrieben wurden. Am 13. Juni 2023 wurde die GraalVM 23 freigegeben, mit Performanceverbesserungen und Native-Image-Optimierungen, sowie polyglotter Unterstützung für verschiedene Programmiersprachen, zur Interoperabilität in einer gemeinsamen Laufzeitumgebung. GraalVM kann eigenständig oder im Kontext von OpenJDK, Node.js und Datenbanken betrieben werden. Mit GraalVM‘s Ahead-of-Time-Fähigkeit kompilierte Native Images verfügen über eine optimierte Startup-Time und sie verringern den Memory-Verbrauch von JVM-basierten Applikationen. Die GraalVM kann wahlweise als Open-Source-Community-Edition (CE) oder als optimierte Oracle GraalVM mit GFTC-Lizenz “GraalVM Free Terms and Conditions (GFTC) including License for Early Adopter Versions” verwendet werden. Im Vortrag wird die GraalVM-Architektur im Java-Ökosystem dargestellt und die Einsatzgebiete erläutert, beispielsweise der in Java entwickelte C2-JIT-Compiler und die Verwendung von GraalVM Native Images. GraalVM kann für Spring Boot und Microservices-Frameworks verwendet werden.

","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","time":null,"speaker":["wolfgang_weigend"],"location":"zeiss","virtual":null,"poster":{"childImageSharp":{"id":"61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b878a8","images":{"fallback":{"src":"/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png","srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt.","tags":["java"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/","sourceName":"talks"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","html":"

In September 2023 the latest version of JDK 21 will be officially released. During this lecture we will look into most\nimportant changes in Java Development Kit and their impact on everyday use of the Java Language. In particular, we will\ndive into performance impact of virtual threads and their comparison to existing solutions, the further improvements in\nrecently introduced record objects and also look into the future plans for Java.

","frontmatter":{"title":"Java 21: Virtual Threads - Why should I care?","date":"2023-09-27T00:00:00.000Z","time":null,"speaker":["patryk_lewandowski"],"location":"zeiss","virtual":null,"poster":null,"poster_alt":null,"tags":[]},"fields":{"slug":"/talks/2023-09-27-virtual-threads/","sourceName":"talks"}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","html":"

Heutzutage gibt es viele Möglichkeiten, um Cloud-Infrastrukturen aufzubauen. Dazu gehören die Containerisierung, die manuelle Erstellung von Ressourcen (auch bekannt als Click-Ops) und die populären deklarativen YAML-Definitionen. Jede dieser Lösungen hat ihre Vorteile. Allerdings haben sie auch Limitierungen, die bei der Entwicklung von Produktionssoftware vermieden werden sollten.

\n

Einige Lösungen bieten einen einfachen Einstieg, dafür muss mangelnde Skalierbarkeit und Replizierbarkeit in Kauf genommen werden. Andere bieten zwar Skalierbarkeit, können aber nicht modularisiert werden, was den Aufbau und die Wartung großer Infrastrukturen erschwert.

\n

Das AWS CDK Framework löst diese Probleme und ermöglicht die Erstellung von Ressourcen mit bekannten Programmiersprachen wie Java. Mit dessen Hilfe wird vorgestellt, wie die Entwicklung von Cloud-Infrastrukturen auf ein höheres Level gebracht werden kann. Der Vortrag wird aus der Sicht eines Anfängers, der in der neuen Technologie die Lösung für alle Probleme der Welt sieht, und aus der Sicht eines erfahrenen Anwenders, der täglich mit dem Framework arbeitet und sich an seine Anfänge im Jahr 2019 erinnert, präsentiert.

\n

Durch die Kombination dieser beiden Perspektiven wird nicht nur veranschaulicht, wie einfach der Einstieg in diese Art von Technologie ist, sondern es werden auch praktische Erfahrungen weitergegeben. Auch mögliche Probleme und deren Lösungen werden angesprochen.\nIm Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die Skalierung und Modularisierung von Serverless AWS Infrastrukturen verwendet werden kann.

","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","time":null,"speaker":["pawel_adaszewski","damian_dudziec"],"location":"zeiss","virtual":null,"poster":null,"poster_alt":null,"tags":["java","cloud"]},"fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/","sourceName":"talks"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","html":"

In einer Welt, in der Microservices mehr und mehr zu einer Standardarchitektur für Java-basierte Anwendungen in der\nCloud werden, kann die JVM-Aufwärmzeit zu einer Einschränkung werden.

\n

Vor allem wenn es darum geht, als Reaktion auf Laständerungen neue Instanzen einer Anwendung aufzusetzen, kann die\nAufwärmzeit ein Problem darstellen. Native Images sind eine Möglichkeit, diese Probleme zu lösen, da ihr statisch im\nVoraus kompilierter Code keine Aufwärmzeit benötigt und somit eine kurze Startzeit hat. Aber selbst die kürzere\nStartzeit und der geringere Platzbedarf sind nicht ohne Nachteil. Die Gesamtleistung kann aufgrund der fehlenden\nJIT-Optimierungen zur Laufzeit langsamer sein. Es gibt ein neues OpenJDK-Projekt namens CRaC (Coordinated Restore at\nCheckpoint), dessen Ziel es ist, das JVM-Aufwärmproblem mit einem anderen Ansatz anzugehen. Die Idee ist, einen\nSchnappschuss der laufenden JVM zu machen, diesen in Dateien zu speichern und die JVM zu einem späteren Zeitpunkt (oder\nsogar auf einer anderen Maschine) wiederherzustellen.

\n

Dieser Vortrag gibt Ihnen einen kurzen Überblick über das CRaC-Projekt und zeigt einige Ergebnisse einer\nProof-of-Concept-Implementierung.

","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","time":null,"speaker":["gerrit_grundwald"],"location":"zeiss","virtual":null,"poster":null,"poster_alt":null,"tags":[]},"fields":{"slug":"/talks/2023-11-29-crac/","sourceName":"talks"}}}]},"posts":{"edges":[]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","html":"","frontmatter":{"name":"Alexander Casall","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/alexander_casall/","speakerId":"alexander_casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","html":"","frontmatter":{"name":"Andre Tepper","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/andre_tepper/","speakerId":"andre_tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","html":"","frontmatter":{"name":"Bruno Devic","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/bruno_devic/","speakerId":"bruno_devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","html":"

Christian beschäftigt sich seit über 10 Jahren mit Java und ist seit über 7 Jahren Java-Trainer. Als Projektleiter und\nSoftware-Architekt konzipiert und implementiert er seit 10 Jahren komplexe Software-Systeme für Kunden aus\nunterschiedlichsten Branchen. Als Scrum Master ist er maßgeblich an der Entwicklung der freien Eclipse Distribution und\nvisuellen Java Entwicklungsumgebung RapidClipse.com sowie der Open Source Abfragesprache JPA-SQL beteiligt. Zudem ist\nChristian als Speaker bei zahlreichen Entwicklerkonferenzen bekannt.

","frontmatter":{"name":"Christian Kümmel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8c8c8","images":{"fallback":{"src":"/static/663d1d267755d1addb5f7399c798dd28/9652e/christian_kuemmel.jpg","srcSet":"/static/663d1d267755d1addb5f7399c798dd28/1728b/christian_kuemmel.jpg 750w,\n/static/663d1d267755d1addb5f7399c798dd28/ab791/christian_kuemmel.jpg 1080w,\n/static/663d1d267755d1addb5f7399c798dd28/0955b/christian_kuemmel.jpg 1366w,\n/static/663d1d267755d1addb5f7399c798dd28/9652e/christian_kuemmel.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/663d1d267755d1addb5f7399c798dd28/d6c6a/christian_kuemmel.webp 750w,\n/static/663d1d267755d1addb5f7399c798dd28/ffa03/christian_kuemmel.webp 1080w,\n/static/663d1d267755d1addb5f7399c798dd28/af66e/christian_kuemmel.webp 1366w,\n/static/663d1d267755d1addb5f7399c798dd28/eb0ac/christian_kuemmel.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.0177083333333334}}},"twitter_name":null},"fields":{"slug":"/speakers/christian_kuemmel/","speakerId":"christian_kuemmel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","html":"

Damian ist Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. In den letzten Jahren war er für die Wartung und Weiterentwicklung einer großen Java-Enterprise-Anwendung im Bereich Logistik verantwortlich. Aktuell beschäftigt er sich mit Serverless, automatisierter Infrastrukturbereitstellung und ist ein begeisterter Wanderer durch die AWS-Landschaft geworden, der jeden Tag etwas Neues entdeckt.

","frontmatter":{"name":"Damian Dudziec","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383838","images":{"fallback":{"src":"/static/5640e558ae686329d65703c5e957bb07/1f67d/damian_dudziec.jpg","srcSet":"/static/5640e558ae686329d65703c5e957bb07/74e81/damian_dudziec.jpg 750w,\n/static/5640e558ae686329d65703c5e957bb07/c4291/damian_dudziec.jpg 1080w,\n/static/5640e558ae686329d65703c5e957bb07/80c2b/damian_dudziec.jpg 1366w,\n/static/5640e558ae686329d65703c5e957bb07/1f67d/damian_dudziec.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5640e558ae686329d65703c5e957bb07/77dd0/damian_dudziec.webp 750w,\n/static/5640e558ae686329d65703c5e957bb07/847ea/damian_dudziec.webp 1080w,\n/static/5640e558ae686329d65703c5e957bb07/c5bbd/damian_dudziec.webp 1366w,\n/static/5640e558ae686329d65703c5e957bb07/70a54/damian_dudziec.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4890625000000002}}},"twitter_name":null},"fields":{"slug":"/speakers/damian_dudziec/","speakerId":"damian_dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","html":"

Daniel Fesenmeyer arbeitet als Software Entwickler bei Bosch IO (Berlin). Seine Schwerpunkte sind Backend-Entwicklung, Testing und\nIAM. Derzeit besteht seine Haupttätigkeit darin, Keycloak-Erweiterungen und -Bugfixes zu implementieren, sowohl in\nKundenprojekten als auch in der Open Source Community.

","frontmatter":{"name":"Daniel Fesenmeyer","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484848","images":{"fallback":{"src":"/static/ff8a246288f95ed463003fb141d5e735/f39ed/daniel_fesenmeyer.jpg","srcSet":"/static/ff8a246288f95ed463003fb141d5e735/53ca3/daniel_fesenmeyer.jpg 750w,\n/static/ff8a246288f95ed463003fb141d5e735/f39ed/daniel_fesenmeyer.jpg 1006w","sizes":"100vw"},"sources":[{"srcSet":"/static/ff8a246288f95ed463003fb141d5e735/4512e/daniel_fesenmeyer.webp 750w,\n/static/ff8a246288f95ed463003fb141d5e735/36031/daniel_fesenmeyer.webp 1006w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.18389662027833}}},"twitter_name":"fesicraft"},"fields":{"slug":"/speakers/daniel_fesenmeyer/","speakerId":"daniel_fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","html":"
    \n
  • 2008 -2011 bei der SQS AG als Softwaretester, Projektkoordinator, Testmanager in den Branchen Telekommunikation,\nBanken, öffentlicher Dienst
  • \n
  • Seit 2011 Trainer für ISTQB Foundation und Advanced Level
  • \n
  • Seit 2011 als Dozent an der FH Görlitz (Grundlagen des Softwaretestens)
  • \n
  • Seit 2011 Junior Operation Manager mit Themenschwerpunkte: Mitarbeiterführung, Aus- und Weiterbildung,\nMitarbeitergewinnung, Öffentlichkeitsarbeit
  • \n
","frontmatter":{"name":"Daniel Sernow","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/daniel_sernow/","speakerId":"daniel_sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","html":"

Dániel Sulyok ist Software Developer bei Tallence. Am Standort Görlitz entwickelt er Anwendungen in Fullstack mit einem strengen Blick auf Usability und Accessibility.

","frontmatter":{"name":"Dániel Sulyok","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/50081822309e984340e546ad54f158db/f2005/daniel_sulyok.jpg","srcSet":"/static/50081822309e984340e546ad54f158db/53c59/daniel_sulyok.jpg 750w,\n/static/50081822309e984340e546ad54f158db/64b93/daniel_sulyok.jpg 1080w,\n/static/50081822309e984340e546ad54f158db/2baac/daniel_sulyok.jpg 1366w,\n/static/50081822309e984340e546ad54f158db/f2005/daniel_sulyok.jpg 1778w","sizes":"100vw"},"sources":[{"srcSet":"/static/50081822309e984340e546ad54f158db/3970f/daniel_sulyok.webp 750w,\n/static/50081822309e984340e546ad54f158db/90a5d/daniel_sulyok.webp 1080w,\n/static/50081822309e984340e546ad54f158db/1e947/daniel_sulyok.webp 1366w,\n/static/50081822309e984340e546ad54f158db/8afd9/daniel_sulyok.webp 1778w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.6659167604049494}}},"twitter_name":null},"fields":{"slug":"/speakers/daniel_sulyok/","speakerId":"daniel_sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","html":"

Denny arbeitet als Softwareentwickler bei der Ottogroup Solution Provider (OSP) GmbH, derzeit mit den Schwerpunkten\nSecurity und DevOps. Seit ca. 8 Jahren entwickelt er im Team Softwarelösungen in den verschiedensten Branchen und\nThemen. Immer mit Fokus auf agile Vorgehensweise und pragmatische Problemlösung.

","frontmatter":{"name":"Denny Israel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/5d26c2337d3979921b663ac24f9c75b4/18869/denny.israel.jpg","srcSet":"/static/5d26c2337d3979921b663ac24f9c75b4/18869/denny.israel.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/5d26c2337d3979921b663ac24f9c75b4/3d164/denny.israel.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":"sideisra"},"fields":{"slug":"/speakers/denny_israel/","speakerId":"denny_israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","html":"

Erik Jähne hat von 2010 bis 2015 an der HS Zittau/Görlitz Bachelor und Master Informatik studiert. Seit 2015 ist er bei\nder Quanteo GmbH in Görlitz für Daimler tätig. Dort unter anderem im Lastest und PoC Bereich und als letztes an der\nEntwicklung der Testumgebung für die Sprachsteuerung der neuen Mercedes Fahrzeuge beteiligt.

","frontmatter":{"name":"Erik Jähne","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/erik_jaehne/","speakerId":"erik_jaehne"}}},{"node":{"id":"dcff0301-b7e2-57b8-93a7-219a768e06e5","html":"

Gerrit Grunwald ist ein Softwareentwickler, der schon seit 40 Jahren gerne programmiert. Er ist ein echter Anhänger von\nOpen Source und hat sowohl an populären Projekten wie JFXtras.org als auch an seinen eigenen\nProjekten (TilesFX, Medusa, Enzo, SteelSeries Swing, SteelSeries Canvas, JDKMon) mitgewirkt.

\n

Gerrit bloggt regelmäßig auf http://harmonic-code.org, er ist ein aktives Mitglied der\nJava-Community, in der er die Java User Group Münster gegründet hat und leitet, er ist ein JavaOne Rockstar und ein Java\nChampion. Er ist Sprecher auf internationalen Konferenzen und User Groups und schreibt für verschiedene Magazine.

","frontmatter":{"name":"Gerrit Grundwald","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/eb32dcf4d119698fb4c41c828663b429/83d4e/gerrit_grundwald.jpg","srcSet":"/static/eb32dcf4d119698fb4c41c828663b429/b32a2/gerrit_grundwald.jpg 750w,\n/static/eb32dcf4d119698fb4c41c828663b429/83d4e/gerrit_grundwald.jpg 1031w","sizes":"100vw"},"sources":[{"srcSet":"/static/eb32dcf4d119698fb4c41c828663b429/1bd31/gerrit_grundwald.webp 750w,\n/static/eb32dcf4d119698fb4c41c828663b429/3847e/gerrit_grundwald.webp 1031w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.0775945683802135}}},"twitter_name":null},"fields":{"slug":"/speakers/gerrit_grundwald/","speakerId":"gerrit_grundwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","html":"

Gregor ist einer der Organisatoren der Java User Group Mannheim und Gründer der Softwerkskammer Rhein-Neckar. Er\narbeitet als Team Lead bei LivePerson. Sein erstes Programm war ein in BASIC geschriebenes Text Adventure.

","frontmatter":{"name":"Gregor Trefs","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b8a898","images":{"fallback":{"src":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/d6138/gregor_trefs.png","srcSet":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/d6138/gregor_trefs.png 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/4b9c6a7a832986754e4721d4ea4f9fcf/416c3/gregor_trefs.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"gtrefs"},"fields":{"slug":"/speakers/gregor_trefs/","speakerId":"gregor_trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","html":"

Hannes Kretschmer arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation AG in Görlitz. Dabei beschäftigt\ner sich neben der Entwicklung von Java Applikationen mit der Optimierung von Build- und Deployment-Prozessen.

","frontmatter":{"name":"Hannes Kretschmer","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/bd0c7/hannes_kretschmer.jpg","srcSet":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/51b3b/hannes_kretschmer.jpg 750w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/4693e/hannes_kretschmer.jpg 1080w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/b5f28/hannes_kretschmer.jpg 1366w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/bd0c7/hannes_kretschmer.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/cdc8e44feda8ef3b0686a0dce92fa4cb/6e47b/hannes_kretschmer.webp 750w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/6e082/hannes_kretschmer.webp 1080w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/19fb5/hannes_kretschmer.webp 1366w,\n/static/cdc8e44feda8ef3b0686a0dce92fa4cb/a1630/hannes_kretschmer.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4979166666666666}}},"twitter_name":null},"fields":{"slug":"/speakers/hannes_kretschmer/","speakerId":"hannes_kretschmer"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","html":"

Hendrik Ebbers (@hendrikEbbers) ist Co-Founder der Karakun AG\n(dev.karakun.com). Hendrik leitet die JUG Dortmund. Sein Buch \"Mastering JavaFX 8 Controls\"\nist 2014 bei Oracle Press erschienen. Hendrik ist Java Champion, JavaOne Rockstar und JCP Expert Group Member.

","frontmatter":{"name":"Hendrik Ebbers","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/274aec9265704ce5d8cbe2794470665a/d6138/hendrik_ebbers.png","srcSet":"/static/274aec9265704ce5d8cbe2794470665a/d6138/hendrik_ebbers.png 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/274aec9265704ce5d8cbe2794470665a/416c3/hendrik_ebbers.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"hendrikEbbers"},"fields":{"slug":"/speakers/hendrik_ebbers/","speakerId":"hendrik_ebbers"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","html":"","frontmatter":{"name":"Hans Markwart","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/hans_markwart/","speakerId":"hans_markwart"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","html":"","frontmatter":{"name":"Ingo Körner","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/ingo_koerner/","speakerId":"ingo_koerner"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","html":"

Jens Leuschner hat vor einem Jahr sein Informatik-Studium an der Hochschule Zittau/Görlitz abgeschlossen und\narbeitet seitdem als Junior Softwareentwickler bei der CIDEON Software GmbH & Co. KG in Görlitz, wo er zuvor als\nWerksstudent tätig war. Ein besonderer Schwerpunkt seiner Arbeit beschäftigt sich mit der Entwicklung webbasierter\nIntegrationslösungen im Bereich von SAP und cloudbasierten CAD-Systemen.

","frontmatter":{"name":"Jens Leuschner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8f8f8","images":{"fallback":{"src":"/static/a1e48f2c95b162ec6bf5d44449042bca/0fdf4/jens_leuschner.jpg","srcSet":"/static/a1e48f2c95b162ec6bf5d44449042bca/0fdf4/jens_leuschner.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/a1e48f2c95b162ec6bf5d44449042bca/078c3/jens_leuschner.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/jens_leuschner/","speakerId":"jens_leuschner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","html":"

Kay Grebenstein arbeitet als Tester und agiler QA-Coach für die Saxiona Systems AG, Dresden. Er hat in den letzten\nJahren in Projekten unterschiedlicher fachlicher Domänen (Telekommunikation, Industrie, Versandhandel, Energie, …)\nQualität gesichert und Software getestet.

","frontmatter":{"name":"Kay Grebenstein","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/kay_grebenstein/","speakerId":"kay_grebenstein"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","html":"

Lars Röwekamp, Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen\nseiner Tätigkeit als \"CIO New Technologies\" mit der eingehenden Analyse und Bewertung neuer Software- und\nTechnologietrends. Ein besonderer Schwerpunkt seiner Arbeit liegt derzeit in den Bereichen Enterprise und Mobile\nComputing, wobei neben Design- und Architekturfragen insbesondere die Real-Life-Aspekte im Fokus seiner Betrachtung\nstehen. Lars Röwekamp, Autor mehrerer Fachartikel und -bücher, beschäftigt sich seit der Geburtsstunde von Java mit\ndieser Programmiersprache, wobei er einen Großteil seiner praktischen Erfahrungen im Rahmen großer internationaler\nProjekte sammeln konnte.

","frontmatter":{"name":"Lars Röwekamp","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/861b10f092bc6e58a4082b1150733dc8/6f086/lars_roewekamp.png","srcSet":"/static/861b10f092bc6e58a4082b1150733dc8/6f086/lars_roewekamp.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/861b10f092bc6e58a4082b1150733dc8/b9f92/lars_roewekamp.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.144}}},"twitter_name":"mobileLarson"},"fields":{"slug":"/speakers/lars_roewekamp/","speakerId":"lars_roewekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","html":"

Maik arbeitet als Softwareentwickler bei der Tallence AG, derzeit mit den Schwerpunkten Java und OAuth/OpenID Connect.\nSeit ca. 12 Jahren entwickelt er im Team Softwarelösungen in den verschiedensten Branchen und Themen. Immer mit Fokus\nauf agile Vorgehensweise und pragmatische Problemlösung.

","frontmatter":{"name":"Maik Wagner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c8e8","images":{"fallback":{"src":"/static/5950914f5c41841b7071a04a8e9bbcfd/5b03d/maik_wagner.jpg","srcSet":"/static/5950914f5c41841b7071a04a8e9bbcfd/4423a/maik_wagner.jpg 750w,\n/static/5950914f5c41841b7071a04a8e9bbcfd/5b03d/maik_wagner.jpg 960w","sizes":"100vw"},"sources":[{"srcSet":"/static/5950914f5c41841b7071a04a8e9bbcfd/3131c/maik_wagner.webp 750w,\n/static/5950914f5c41841b7071a04a8e9bbcfd/479a8/maik_wagner.webp 960w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.25}}},"twitter_name":null},"fields":{"slug":"/speakers/maik_wagner/","speakerId":"maik_wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","html":"

Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten\nder Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale\nProgrammierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz\nund steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.

","frontmatter":{"name":"Manuel Mauky","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8d8e8","images":{"fallback":{"src":"/static/c80baf199647599d13cde2f183750fd7/9ce86/manuel_mauky.jpg","srcSet":"/static/c80baf199647599d13cde2f183750fd7/d2e45/manuel_mauky.jpg 750w,\n/static/c80baf199647599d13cde2f183750fd7/fd5af/manuel_mauky.jpg 1080w,\n/static/c80baf199647599d13cde2f183750fd7/c71d7/manuel_mauky.jpg 1366w,\n/static/c80baf199647599d13cde2f183750fd7/9ce86/manuel_mauky.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c80baf199647599d13cde2f183750fd7/4d4e9/manuel_mauky.webp 750w,\n/static/c80baf199647599d13cde2f183750fd7/8ff35/manuel_mauky.webp 1080w,\n/static/c80baf199647599d13cde2f183750fd7/2b2db/manuel_mauky.webp 1366w,\n/static/c80baf199647599d13cde2f183750fd7/7188c/manuel_mauky.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3161458333333333}}},"twitter_name":"manuel_mauky"},"fields":{"slug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","html":"

Marco Gotthans arbeitet als Tester bei der ZEISS Digital Innovation in Görlitz. Mit automatisierten Testscripten stellt er\nSoftwarequalität sicher. In der Industrie 4.0 beschäftigt er sich mit den vielen neuen Herausforderungen der\nQualitätssicherung, die sich aus der Verbindung von komplexen Maschinensteuerungen mit Cloudsystemen ergeben.

","frontmatter":{"name":"Marco Gotthans","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#081838","images":{"fallback":{"src":"/static/d96c9533996a3deed2a5551b1a94c812/3b4fe/marco_gotthans.jpg","srcSet":"/static/d96c9533996a3deed2a5551b1a94c812/b0c6e/marco_gotthans.jpg 750w,\n/static/d96c9533996a3deed2a5551b1a94c812/3b4fe/marco_gotthans.jpg 768w","sizes":"100vw"},"sources":[{"srcSet":"/static/d96c9533996a3deed2a5551b1a94c812/4c1cf/marco_gotthans.webp 750w,\n/static/d96c9533996a3deed2a5551b1a94c812/9f5d6/marco_gotthans.webp 768w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3333333333333333}}},"twitter_name":null},"fields":{"slug":"/speakers/marco_gotthans/","speakerId":"marco_gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","html":"","frontmatter":{"name":"Marcus Döring","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/marcus_doering/","speakerId":"marcus_doering"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","html":"","frontmatter":{"name":"Mario Mann","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mario_mann/","speakerId":"mario_mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","html":"","frontmatter":{"name":"Mario Reichel","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mario_reichel/","speakerId":"mario_reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","html":"

Mariusz Zienkiewicz hat nach seinem Studium an HTWS Zittau/Görlitz bei CIDEON Software GmbH & Co. KG angefangen und\nist dort seit 19 Jahren tätig. Hier arbeitet er als Senior Expert Developer. Seine beruflichen Schwerpunkte liegen in\nder Steuerung von ALM-Prozessen und der agilen Softwareentwicklung im Umfeld von C, C++ und Java. Aktuell beschäftigt er\nsich mit Cloud-Technologien.

","frontmatter":{"name":"Mariusz Zienkiewicz","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#281818","images":{"fallback":{"src":"/static/bae1e2f992c7bebba96ec2dc974a0895/0fdf4/mariusz_zienkiewicz.jpg","srcSet":"/static/bae1e2f992c7bebba96ec2dc974a0895/0fdf4/mariusz_zienkiewicz.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/bae1e2f992c7bebba96ec2dc974a0895/078c3/mariusz_zienkiewicz.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/mariusz_zienkiewicz/","speakerId":"mariusz_zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","html":"","frontmatter":{"name":"Mark Ziener","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/mark_ziener/","speakerId":"mark_ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","html":"","frontmatter":{"name":"Marko Modsching","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/marko_modsching/","speakerId":"marko_modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","html":"

Markus entwickelt seit 20 Jahren mit seinem Team Developer-Tools für Java und alle wichtigen Datenbanksysteme sowie\nIndividualsoftware für Endkunden. Er ist Product Owner der freien Eclipse Distribution und visuellen Java\nEntwicklungsumgebung RapidClipse sowie der Open Source Abfragesprache JPA-SQL. Markus ist Gründer und CEO von\nMicroStream, Chefredakteur des kostenlosen Java Magazins JAVAPRO, Co-Organisator der Java Konferenz JCON, freier Autor\nfür verschiedene Fachzeitschriften sowie Speaker bei zahlreichen Entwicklerkonferenzen, User Groups und Meetups.

","frontmatter":{"name":"Markus Kett","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a8d8","images":{"fallback":{"src":"/static/ce58d8e1afec86c71bef3c5971759db8/eadd3/markus_kett.png","srcSet":"/static/ce58d8e1afec86c71bef3c5971759db8/eadd3/markus_kett.png 640w","sizes":"100vw"},"sources":[{"srcSet":"/static/ce58d8e1afec86c71bef3c5971759db8/90d07/markus_kett.webp 640w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"MarkusKett"},"fields":{"slug":"/speakers/markus_kett/","speakerId":"markus_kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","html":"

Markus Weiland arbeitet als Freelance Solution Architect im ecommerce unter anderem an der Einführung und Migration von Content Management Lösungen für größere Unternehmen mit komplexen Geschäftsprozessen. Er ist notorisch unzufrieden mit den Lock-in-Effekten geschlossener Plattformen und Verfechter von Libre Software.

","frontmatter":{"name":"Markus Weiland","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/9a5a3c451d197c3c973e2af76ac66c29/47930/markus_weiland.jpg","srcSet":"/static/9a5a3c451d197c3c973e2af76ac66c29/47930/markus_weiland.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/9a5a3c451d197c3c973e2af76ac66c29/416c3/markus_weiland.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/markus_weiland/","speakerId":"markus_weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","html":"

Marlene ist freischaffende Illustratorin und Künstlerin und widmet sich in ihrem künstlerischen Schaffen regelmäßig\nThemen aus der Informatik und Mathematik. Davor hat sie als Software-Entwicklerin gearbeitet. Zudem ist sie\nMitorganisatorin der Java User Group Görlitz und organisiert den Chaostreff Görlitz.

","frontmatter":{"name":"Marlene Knoche","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8f8f8","images":{"fallback":{"src":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/afa21/marlene_knoche.jpg","srcSet":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/0f5ce/marlene_knoche.jpg 750w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/b74b1/marlene_knoche.jpg 1080w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/afa21/marlene_knoche.jpg 1280w","sizes":"100vw"},"sources":[{"srcSet":"/static/fb8c1a1fc6c46340f65bfc9186c17d03/4f03f/marlene_knoche.webp 750w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/4f506/marlene_knoche.webp 1080w,\n/static/fb8c1a1fc6c46340f65bfc9186c17d03/9e21f/marlene_knoche.webp 1280w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/marlene_knoche/","speakerId":"marlene_knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","html":"

Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der\nMigration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von\nJava-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für\nReact als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen.\nIn seiner Freizeit engagiert sich Max als Organisator der Java User Group Görlitz, um auch in der östlichsten Stadt\nDeutschlands die Vielfalt von IT-Angeboten zu erhöhen und insbesondere die Community zu unterstützen.

","frontmatter":{"name":"Max Wielsch","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484858","images":{"fallback":{"src":"/static/0fb18b404d101e5878db1bc4a490cf19/bbd03/max_wielsch.jpg","srcSet":"/static/0fb18b404d101e5878db1bc4a490cf19/99918/max_wielsch.jpg 750w,\n/static/0fb18b404d101e5878db1bc4a490cf19/f449b/max_wielsch.jpg 1080w,\n/static/0fb18b404d101e5878db1bc4a490cf19/34fc5/max_wielsch.jpg 1366w,\n/static/0fb18b404d101e5878db1bc4a490cf19/bbd03/max_wielsch.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/0fb18b404d101e5878db1bc4a490cf19/e5fa4/max_wielsch.webp 750w,\n/static/0fb18b404d101e5878db1bc4a490cf19/171d7/max_wielsch.webp 1080w,\n/static/0fb18b404d101e5878db1bc4a490cf19/b1984/max_wielsch.webp 1366w,\n/static/0fb18b404d101e5878db1bc4a490cf19/ad9f4/max_wielsch.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":null},"fields":{"slug":"/speakers/max_wielsch/","speakerId":"max_wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","html":"","frontmatter":{"name":"Michael Förster","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_foerster/","speakerId":"michael_foerster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","html":"

Seit Mitte 2010 arbeitet Michael Hunger eng mit Neo Technology zusammen, um deren Graphendatenbank\nNeo4j noch leichter für Entwickler zugänglich zu machen. Hauptinteressensgebiete sind dort Integration mit anderen\nTechnologien, wie z.B. Spring-Data, Datenimport und Performance. Er unterstützt alle Nutzer von Neo4j tagtäglich bei der\nerfolgreichen Realisierung ihrer Projekte und Lösung ihrer Fragen und Probleme.

\n

Michael arbeitet an mehreren Open Source Projekten mit, ist Autor, Editor, Buch-Reviewer und häufiger Sprecher und\nOrganisator von Konferenzen.

","frontmatter":{"name":"Michael Hunger","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181808","images":{"fallback":{"src":"/static/a27527592fa9acc54399d3ab9508193f/30cdc/michael_hunger.png","srcSet":"/static/a27527592fa9acc54399d3ab9508193f/30cdc/michael_hunger.png 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/a27527592fa9acc54399d3ab9508193f/078c3/michael_hunger.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"mesirii"},"fields":{"slug":"/speakers/michael_hunger/","speakerId":"michael_hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","html":"","frontmatter":{"name":"Michael Thiele","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_thiele/","speakerId":"michael_thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","html":"","frontmatter":{"name":"Michael Wiedeking","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/michael_wiedeking/","speakerId":"michael_wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","html":"

Nico Förster arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. Er ist im Bereich\nder Softwareevolution tätig und beschäftigt sich aktuell mit der Weiterentwicklung und Wartung einer umfangreichen\nJava-Enterprise-Applikation im Bereich Schienenlogistik. Sein Interessengebiet umfasst außerdem die Bereiche IT- und\nApplication Security.

","frontmatter":{"name":"Nico Förster","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#485858","images":{"fallback":{"src":"/static/01f1f076678841fa70905cc41bb50757/18869/nico_foerster.jpg","srcSet":"/static/01f1f076678841fa70905cc41bb50757/18869/nico_foerster.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/01f1f076678841fa70905cc41bb50757/3d164/nico_foerster.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.5}}},"twitter_name":null},"fields":{"slug":"/speakers/nico_foerster/","speakerId":"nico_foerster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","html":"

Oliver Drotbohm ist Teil des Spring Engineering Teams bei VMware. Seine Arbeitsschwerpunkte liegen im Bereich Softwarearchitektur, Domain-Driven Design, REST, Spring und Persistenztechnologien. Sein neues Buch \"Modulithic Applications with Spring\" erscheint 2023.

","frontmatter":{"name":"Oliver Drotbohm","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/bc32a8e1242b1987951435e5d8008305/94804/oliver_drotbohm.png","srcSet":"/static/bc32a8e1242b1987951435e5d8008305/94804/oliver_drotbohm.png 491w","sizes":"100vw"},"sources":[{"srcSet":"/static/bc32a8e1242b1987951435e5d8008305/d94cc/oliver_drotbohm.webp 491w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"odrotbohm"},"fields":{"slug":"/speakers/oliver_drotbohm/","speakerId":"oliver_drotbohm"}}},{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","html":"","frontmatter":{"name":"Patryk Lewandowski","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/patryk_lewandowski/","speakerId":"patryk_lewandowski"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","html":"","frontmatter":{"name":"Paul Weinhold","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/paul_weinhold/","speakerId":"paul_weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","html":"

Pawel Adaszewski ist als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz tätig. In seiner täglichen Arbeit\nversucht er die Herausforderungen aus der Industrial-IoT-Welt mithilfe der AWS-Cloud zu bewältigen. Zu seinen\nHauptaufgaben gehören das Design und die Erstellung von automatisch bereitgestellten Serverless-Cloud-Infrastrukturen.

","frontmatter":{"name":"Pawel Adaszewski","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#c8c8e8","images":{"fallback":{"src":"/static/276b01211c38e45a877d2f2a5d1a4532/00175/pawel_adaszewski.jpg","srcSet":"/static/276b01211c38e45a877d2f2a5d1a4532/ffc4f/pawel_adaszewski.jpg 750w,\n/static/276b01211c38e45a877d2f2a5d1a4532/00175/pawel_adaszewski.jpg 1080w","sizes":"100vw"},"sources":[{"srcSet":"/static/276b01211c38e45a877d2f2a5d1a4532/6e066/pawel_adaszewski.webp 750w,\n/static/276b01211c38e45a877d2f2a5d1a4532/9683a/pawel_adaszewski.webp 1080w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.6444444444444444}}},"twitter_name":null},"fields":{"slug":"/speakers/pawel_adaszewski/","speakerId":"pawel_adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","html":"","frontmatter":{"name":"Richard Hauswald","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/richard_hauswald/","speakerId":"richard_hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","html":"","frontmatter":{"name":"Robert Wirbs","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/robert_wirbs/","speakerId":"robert_wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","html":"

Roland Weisleder ist freiberuflicher Softwareentwickler und seit 2009 im Java-Ökosystem unterwegs. Sein Schwerpunkt ist die Stabilisierung und Weiterentwicklung von gewachsenen Enterprise-Anwendungen. Er hat eine Leidenschaft für Test- und Buildautomatisierung und verfolgt das Ziel, dass Prozesse in der Softwareentwicklung einfacher und robuster werden. Seine Erfahrungen teilt er in Vorträgen im In- und Ausland.

","frontmatter":{"name":"Roland Weisleder","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#98c8f8","images":{"fallback":{"src":"/static/0292a65386102f7b15c663142861115e/22e9f/roland_weisleder.jpg","srcSet":"/static/0292a65386102f7b15c663142861115e/22e9f/roland_weisleder.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/0292a65386102f7b15c663142861115e/024c8/roland_weisleder.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.7}}},"twitter_name":"Ro_Wei"},"fields":{"slug":"/speakers/roland_weisleder/","speakerId":"roland_weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","html":"","frontmatter":{"name":"Sebastian Schmeck","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/sebastian_schmeck/","speakerId":"sebastian_schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","html":"

Sergej Tihonov ist ein freiberuflicher Softwareentwickler. Seit mehr als 8 Jahren widmet er sich der Entwicklung von komplexen Softwaresystemen und Open-Source-Projekten. Seine Tätigkeitsschwerpunkte sind Projektmanagement, Softwarearchitektur und Projektstabilisierung. Privat geht er gerne barfuß joggen.

","frontmatter":{"name":"Sergej Tihonov","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#787878","images":{"fallback":{"src":"/static/b485586e0b2c66703b49784827202ddd/22e9f/sergej_tihonov.jpg","srcSet":"/static/b485586e0b2c66703b49784827202ddd/22e9f/sergej_tihonov.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/b485586e0b2c66703b49784827202ddd/024c8/sergej_tihonov.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.7}}},"twitter_name":"EvenMoreDev"},"fields":{"slug":"/speakers/sergej_tihonov/","speakerId":"sergej_tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","html":"

Simon arbeitet als Softwareentwickler bei der Korasoft GmbH. Er findet es spannend, wie in der SAP Welt wenige Zeilen\nCode riesige Unternehmen steuern. Manchmal hat er dabei das Gefühl, sich in einem Museum zu befinden, während er auf der\nanderen Seite mit innovativen Technologien am Puls der Zeit sein darf. Dementsprechend reicht sein Erfahrungsspektrum\nvon traditionsreichen ABAP Reports bis hin zu modernen Cloud Foundry Apps.

","frontmatter":{"name":"Simon Roloff","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e8e8e8","images":{"fallback":{"src":"/static/8997189be722553b2c839d4576fdee41/f76fb/simon_roloff.png","srcSet":"/static/8997189be722553b2c839d4576fdee41/0dee1/simon_roloff.png 750w,\n/static/8997189be722553b2c839d4576fdee41/8beaa/simon_roloff.png 1080w,\n/static/8997189be722553b2c839d4576fdee41/f76fb/simon_roloff.png 1182w","sizes":"100vw"},"sources":[{"srcSet":"/static/8997189be722553b2c839d4576fdee41/a66aa/simon_roloff.webp 750w,\n/static/8997189be722553b2c839d4576fdee41/65dd5/simon_roloff.webp 1080w,\n/static/8997189be722553b2c839d4576fdee41/3c6ec/simon_roloff.webp 1182w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.5626057529610828}}},"twitter_name":null},"fields":{"slug":"/speakers/simon_roloff/","speakerId":"simon_roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","html":"","frontmatter":{"name":"Stefan Barth","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_barth/","speakerId":"stefan_barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","html":"

Stefan Bley ist Senior Consultant und Coach bei der Saxonia Systems AG in Dresden. Sein Schwerpunkt in Kundenprojekten\nsind webbasierte Softwarelösungen mit Java-EE- Toolstack. Er beschäftigt sich gern mit innovativen Technologien und gibt\nsein Wissen auf Konferenzen und Community-Veranstaltung weiter. Aktuell befasst er sich mit Microservices im Java-Umfeld\nund Single-Page-Apps mit Angular 2.

","frontmatter":{"name":"Stefan Bley","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#686868","images":{"fallback":{"src":"/static/92076116610bf424c9719adb66fa22c0/f3dd0/stefan_bley.jpg","srcSet":"/static/92076116610bf424c9719adb66fa22c0/f3dd0/stefan_bley.jpg 299w","sizes":"100vw"},"sources":[{"srcSet":"/static/92076116610bf424c9719adb66fa22c0/04c61/stefan_bley.webp 299w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4983277591973243}}},"twitter_name":"sbley"},"fields":{"slug":"/speakers/stefan_bley/","speakerId":"stefan_bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","html":"","frontmatter":{"name":"Stefan Bradl","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_bradl/","speakerId":"stefan_bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","html":"","frontmatter":{"name":"Stefan Heinze","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_heinze/","speakerId":"stefan_heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","html":"","frontmatter":{"name":"Stefan Scheumann","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/stefan_scheumann/","speakerId":"stefan_scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","html":"

Von der Bayer AG über IBM und oose zu embarc. Stefan Zörner blickt auf zwanzig Jahre IT-Erfahrung zurück und stets\ngespannt nach vorn. Er unterstützt in Architektur- und Umsetzungsfragen mit dem Ziel, gute Architekturansätze wirksam in\nder Implementierung zu verankern. Sein Wissen und seine Erfahrung teilt er regelmäßig in Vorträgen, Artikeln und\nWorkshops. Stefan ist Apache Committer, aktives Board-Mitglied im iSAQB und Autor des Buchs „Softwarearchitekturen\ndokumentieren und kommunizieren“ (Hanser Verlag).

","frontmatter":{"name":"Stefan Zörner","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b8a878","images":{"fallback":{"src":"/static/357c5655cc1d492de0f8357e5419c624/47930/stefan_zoerner.jpg","srcSet":"/static/357c5655cc1d492de0f8357e5419c624/47930/stefan_zoerner.jpg 400w","sizes":"100vw"},"sources":[{"srcSet":"/static/357c5655cc1d492de0f8357e5419c624/416c3/stefan_zoerner.webp 400w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stefan_zoerner/","speakerId":"stefan_zoerner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","html":"","frontmatter":{"name":"Steffen Seidler","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/steffen_seidler/","speakerId":"steffen_seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","html":"

Stephan ist seit 2013 Informatikstudent an der Hochschule Zittau/Görlitz und schreibt derzeit seine Masterarbeit über\nGraphQL in der Microservice Architektur bei Saxonia Systems AG in Görlitz. Er beschäftigt sich mit Webanwendungen sowie\nFrontend-Technologien. Dabei finden GraphQL und React Verwendungen in mehreren Projekten.

","frontmatter":{"name":"Stephan Strehler","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#080808","images":{"fallback":{"src":"/static/a123ccdaefc129dd10224cd767e2c9b9/30f07/stephan_strehler.jpg","srcSet":"/static/a123ccdaefc129dd10224cd767e2c9b9/30f07/stephan_strehler.jpg 640w","sizes":"100vw"},"sources":[{"srcSet":"/static/a123ccdaefc129dd10224cd767e2c9b9/90d07/stephan_strehler.webp 640w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":null},"fields":{"slug":"/speakers/stephan_strehler/","speakerId":"stephan_strehler"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","html":"

Sven Hoffmann ist seit über 8 Jahren für die Saxonia Systems AG tätig. Er beschäftigte sich in dieser Zeit mit einer\nVielzahl von Backend und Frontend-Technologien. Zu seinen technologischen Hauptschwerpunkten zählen Webanwendungen und\nJavaEE.

","frontmatter":{"name":"Sven Hoffmann","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#484848","images":{"fallback":{"src":"/static/9b60a5387f4809c8bf0c20f0de29922e/69538/sven_hoffmann.jpg","srcSet":"/static/9b60a5387f4809c8bf0c20f0de29922e/69538/sven_hoffmann.jpg 406w","sizes":"100vw"},"sources":[{"srcSet":"/static/9b60a5387f4809c8bf0c20f0de29922e/2ccb1/sven_hoffmann.webp 406w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.502463054187192}}},"twitter_name":null},"fields":{"slug":"/speakers/sven_hoffmann/","speakerId":"sven_hoffmann"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","html":"

Thilo Frotscher arbeitet als freiberuflicher Software-Architekt und Trainer. Als Experte für Enterprise Java und\nSystemintegration unterstützt er seine Kunden überwiegend durch Entwicklung, Reviews oder die Durchführung von\nSchulungen. Thilo ist (Co-)Autor mehrerer Bücher sowie zahlreicher Fachartikel und spricht regelmäßig auf\nFachkonferenzen oder bei User Groups.

","frontmatter":{"name":"Thilo Frotscher","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8a8a8","images":{"fallback":{"src":"/static/5e6dbea52d281cdada5adcd4769087bc/147a6/thilo_frotscher.jpg","srcSet":"/static/5e6dbea52d281cdada5adcd4769087bc/147a6/thilo_frotscher.jpg 313w","sizes":"100vw"},"sources":[{"srcSet":"/static/5e6dbea52d281cdada5adcd4769087bc/acaa7/thilo_frotscher.webp 313w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.3099041533546325}}},"twitter_name":"thfro"},"fields":{"slug":"/speakers/thilo_frotscher/","speakerId":"thilo_frotscher"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","html":"","frontmatter":{"name":"Thomas Storch","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/thomas_storch/","speakerId":"thomas_storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","html":"

Tobias Blaschke hat sein Informatik-Studium an der Universität Magdeburg abgeschlossen. In den letzten Jahren ist er\nbei der Eudemonia Solutions AG als Software-Architekt tätig und unterstützt dort insbesondere die Entwicklung einer\nwebbasierten Lösung zur Firmenkundenberatung in den Volks- und Raiffeisenbanken auf Basis von Java und GWT.

","frontmatter":{"name":"Tobias Blaschke","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/tobias_blaschke/","speakerId":"tobias_blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","html":"

Uwe Manteuffel ist Senior Consultant für Webentwicklung bei Saxonia Systems AG in Görlitz. Er ist seit 2008 im Umfeld\nvon Webtechnologien und ASP.NET unterwegs. Sein Schwerpunkt liegt dabei auf dem Design und der Umsetzung von\nOberflächen. Besonderer Fokus liegt dabei auf der Verwendung von CSS. Hierbei beschäftigt er sich mit verschiedenen\nMethoden wie OOCSS (Objektorientiertes CSS) und der Verwendung von Präprozessoren wie LESS oder SASS. Aktuell entwickelt\ner ASP.NET MVC Anwendungen für B2B Kunden.

","frontmatter":{"name":"Uwe Manteuffel","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#585868","images":{"fallback":{"src":"/static/26d3f744bce66e93610087ebefd7fcb2/0fdf4/uwe_manteuffel.jpg","srcSet":"/static/26d3f744bce66e93610087ebefd7fcb2/0fdf4/uwe_manteuffel.jpg 300w","sizes":"100vw"},"sources":[{"srcSet":"/static/26d3f744bce66e93610087ebefd7fcb2/078c3/uwe_manteuffel.webp 300w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}}},"twitter_name":"dasuew"},"fields":{"slug":"/speakers/uwe_manteuffel/","speakerId":"uwe_manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","html":"

Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei ORACLE Global Services Germany GmbH. Er gehört zum\nweltweiten Java Team und ist zuständig für Java Technologie & GraalVM und Architektur für unternehmensweite\nAnwendungsentwicklung.

","frontmatter":{"name":"Wolfgang Weigend","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#181818","images":{"fallback":{"src":"/static/afd51a81ad1e8768bed62639c9389490/c2725/wolfgang_weigend.jpg","srcSet":"/static/afd51a81ad1e8768bed62639c9389490/c2725/wolfgang_weigend.jpg 559w","sizes":"100vw"},"sources":[{"srcSet":"/static/afd51a81ad1e8768bed62639c9389490/fa89f/wolfgang_weigend.webp 559w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.2629695885509837}}},"twitter_name":"wolflook"},"fields":{"slug":"/speakers/wolfgang_weigend/","speakerId":"wolfgang_weigend"}}}]},"locations":{"edges":[{"node":{"fields":{"slug":"/locations/cideon/","locationId":"cideon"},"frontmatter":{"name":"CIDEON Software & Services GmbH & Co. KG","number":"25","info":null,"zip":"02826","city":"Görlitz","street":"Untermarkt"}}},{"node":{"fields":{"slug":"/locations/dser_elisabethstrasse/","locationId":"dser_elisabethstrasse"},"frontmatter":{"name":"DSER","number":"42/43","info":null,"zip":"02826","city":"Görlitz","street":"Elisabethstraße"}}},{"node":{"fields":{"slug":"/locations/dser_steinstrasse/","locationId":"dser_steinstrasse"},"frontmatter":{"name":"DSER","number":"11","info":null,"zip":"02826","city":"Görlitz","street":"Steinstraße"}}},{"node":{"fields":{"slug":"/locations/expleo/","locationId":"expleo"},"frontmatter":{"name":"Expleo","number":"23","info":null,"zip":"02826","city":"Görlitz","street":"Konsulstraße"}}},{"node":{"fields":{"slug":"/locations/fraunhofer/","locationId":"fraunhofer"},"frontmatter":{"name":"Fraunhofer-Institut IOSB - Angewandte Systemtechnik","number":"11","info":null,"zip":"02826","city":"Görlitz","street":"Wilhelmsplatz"}}},{"node":{"fields":{"slug":"/locations/hochschule_campus/","locationId":"hochschule_campus"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"1","info":"Haus G2 Raum 0.10","zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},{"node":{"fields":{"slug":"/locations/hochschule_obermarkt/","locationId":"hochschule_obermarkt"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","number":"17","info":null,"zip":"02826","city":"Görlitz","street":"Obermarkt"}}},{"node":{"fields":{"slug":"/locations/innolabs/","locationId":"innolabs"},"frontmatter":{"name":"Innolabs Görlitz","number":"22","info":null,"zip":"02826","city":"Görlitz","street":"Bahnhofstraße"}}},{"node":{"fields":{"slug":"/locations/saxsys/","locationId":"saxsys"},"frontmatter":{"name":"Saxonia Systems AG","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}},{"node":{"fields":{"slug":"/locations/sqs/","locationId":"sqs"},"frontmatter":{"name":"SQS TestCenter Görlitz","number":"10","info":null,"zip":"02826","city":"Görlitz","street":"Brückenstraße"}}},{"node":{"fields":{"slug":"/locations/tallence/","locationId":"tallence"},"frontmatter":{"name":"Tallence AG","number":"27","info":null,"zip":"02826","city":"Görlitz","street":"Neißstraße"}}},{"node":{"fields":{"slug":"/locations/zeiss/","locationId":"zeiss"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/locations/page-data.json b/page-data/locations/page-data.json index 3c917e902..a8e6a0a0b 100644 --- a/page-data/locations/page-data.json +++ b/page-data/locations/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-locations-tsx","path":"/locations/","result":{"data":{"locations":{"edges":[{"node":{"fields":{"slug":"/locations/cideon/","locationId":"cideon"},"frontmatter":{"name":"CIDEON Software & Services GmbH & Co. KG","info":null,"street":"Untermarkt","number":"25","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/dser_elisabethstrasse/","locationId":"dser_elisabethstrasse"},"frontmatter":{"name":"DSER","info":null,"street":"Elisabethstraße","number":"42/43","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/dser_steinstrasse/","locationId":"dser_steinstrasse"},"frontmatter":{"name":"DSER","info":null,"street":"Steinstraße","number":"11","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/expleo/","locationId":"expleo"},"frontmatter":{"name":"Expleo","info":null,"street":"Konsulstraße","number":"23","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/fraunhofer/","locationId":"fraunhofer"},"frontmatter":{"name":"Fraunhofer-Institut IOSB - Angewandte Systemtechnik","info":null,"street":"Wilhelmsplatz","number":"11","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/hochschule_campus/","locationId":"hochschule_campus"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","info":"Haus G2 Raum 0.10","street":"Brückenstraße","number":"1","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/hochschule_obermarkt/","locationId":"hochschule_obermarkt"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","info":null,"street":"Obermarkt","number":"17","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/innolabs/","locationId":"innolabs"},"frontmatter":{"name":"Innolabs Görlitz","info":null,"street":"Bahnhofstraße","number":"22","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/saxsys/","locationId":"saxsys"},"frontmatter":{"name":"Saxonia Systems AG","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/sqs/","locationId":"sqs"},"frontmatter":{"name":"SQS TestCenter Görlitz","info":null,"street":"Brückenstraße","number":"10","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/tallence/","locationId":"tallence"},"frontmatter":{"name":"Tallence AG","info":null,"street":"Neißstraße","number":"27","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/zeiss/","locationId":"zeiss"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}}}]},"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","location":"hochschule_obermarkt"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","location":"hochschule_obermarkt"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","location":"dser_steinstrasse"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","location":"dser_steinstrasse"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","location":"dser_steinstrasse"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","location":"dser_steinstrasse"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","location":"dser_steinstrasse"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","location":"dser_steinstrasse"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","location":"dser_steinstrasse"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","location":"dser_steinstrasse"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","location":"dser_steinstrasse"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","location":"dser_steinstrasse"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","location":"saxsys"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","location":"dser_steinstrasse"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","location":"hochschule_obermarkt"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","location":"hochschule_obermarkt"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","location":"saxsys"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","location":"dser_steinstrasse"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","location":"hochschule_obermarkt"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","location":"dser_steinstrasse"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","location":"dser_steinstrasse"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","location":"saxsys"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","location":"saxsys"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","location":"dser_steinstrasse"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","location":"hochschule_campus"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","location":"dser_steinstrasse"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","location":"hochschule_campus"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","location":"dser_steinstrasse"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","location":"hochschule_obermarkt"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","location":"saxsys"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","location":"dser_steinstrasse"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","location":"hochschule_obermarkt"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","location":"dser_steinstrasse"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","location":"hochschule_obermarkt"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","location":"saxsys"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","location":"dser_steinstrasse"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","location":"hochschule_campus"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","location":"saxsys"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","location":"hochschule_obermarkt"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","location":"dser_elisabethstrasse"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","location":"saxsys"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","location":"hochschule_campus"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","location":"hochschule_campus"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","location":"saxsys"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","location":"hochschule_obermarkt"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","location":"sqs"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","location":"saxsys"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","location":"hochschule_campus"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","location":"hochschule_obermarkt"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","location":"hochschule_campus"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","location":"saxsys"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","location":"hochschule_campus"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","location":"dser_elisabethstrasse"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","location":"hochschule_campus"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","location":"sqs"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","location":"saxsys"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","location":"cideon"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","location":"hochschule_campus"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","location":"saxsys"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","location":"hochschule_campus"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","location":"hochschule_campus"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","location":"hochschule_campus"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","location":"cideon"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","location":"saxsys"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","location":"hochschule_campus"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","location":"saxsys"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","location":"hochschule_campus"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","location":"cideon"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","location":"tallence"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","location":"saxsys"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","location":null}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","location":null}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","location":null}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","location":null}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","location":null}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","location":"zeiss"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","location":"zeiss"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","location":"innolabs"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","location":"cideon"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","location":"zeiss"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","location":"fraunhofer"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","location":"expleo"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","location":"tallence"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","location":"zeiss"}}},{"node":{"id":"5bfff80b-ea15-5ee9-8b28-c9449c05ca8c","frontmatter":{"title":"Kollaborative Anwendungen und 'local first apps'","location":"zeiss"}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","location":"zeiss"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","location":"zeiss"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-locations-tsx","path":"/locations/","result":{"data":{"locations":{"edges":[{"node":{"fields":{"slug":"/locations/cideon/","locationId":"cideon"},"frontmatter":{"name":"CIDEON Software & Services GmbH & Co. KG","info":null,"street":"Untermarkt","number":"25","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/dser_elisabethstrasse/","locationId":"dser_elisabethstrasse"},"frontmatter":{"name":"DSER","info":null,"street":"Elisabethstraße","number":"42/43","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/dser_steinstrasse/","locationId":"dser_steinstrasse"},"frontmatter":{"name":"DSER","info":null,"street":"Steinstraße","number":"11","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/expleo/","locationId":"expleo"},"frontmatter":{"name":"Expleo","info":null,"street":"Konsulstraße","number":"23","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/fraunhofer/","locationId":"fraunhofer"},"frontmatter":{"name":"Fraunhofer-Institut IOSB - Angewandte Systemtechnik","info":null,"street":"Wilhelmsplatz","number":"11","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/hochschule_campus/","locationId":"hochschule_campus"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","info":"Haus G2 Raum 0.10","street":"Brückenstraße","number":"1","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/hochschule_obermarkt/","locationId":"hochschule_obermarkt"},"frontmatter":{"name":"Hochschule Zittau/Görlitz","info":null,"street":"Obermarkt","number":"17","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/innolabs/","locationId":"innolabs"},"frontmatter":{"name":"Innolabs Görlitz","info":null,"street":"Bahnhofstraße","number":"22","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/saxsys/","locationId":"saxsys"},"frontmatter":{"name":"Saxonia Systems AG","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/sqs/","locationId":"sqs"},"frontmatter":{"name":"SQS TestCenter Görlitz","info":null,"street":"Brückenstraße","number":"10","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/tallence/","locationId":"tallence"},"frontmatter":{"name":"Tallence AG","info":null,"street":"Neißstraße","number":"27","zip":"02826","city":"Görlitz"}}},{"node":{"fields":{"slug":"/locations/zeiss/","locationId":"zeiss"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}}}]},"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","location":"hochschule_obermarkt"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","location":"hochschule_obermarkt"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","location":"dser_steinstrasse"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","location":"dser_steinstrasse"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","location":"dser_steinstrasse"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","location":"dser_steinstrasse"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","location":"dser_steinstrasse"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","location":"dser_steinstrasse"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","location":"dser_steinstrasse"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","location":"dser_steinstrasse"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","location":"dser_steinstrasse"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","location":"dser_steinstrasse"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","location":"saxsys"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","location":"dser_steinstrasse"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","location":"hochschule_obermarkt"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","location":"hochschule_obermarkt"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","location":"saxsys"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","location":"dser_steinstrasse"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","location":"hochschule_obermarkt"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","location":"dser_steinstrasse"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","location":"dser_steinstrasse"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","location":"saxsys"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","location":"saxsys"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","location":"dser_steinstrasse"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","location":"hochschule_campus"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","location":"dser_steinstrasse"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","location":"hochschule_campus"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","location":"dser_steinstrasse"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","location":"hochschule_obermarkt"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","location":"saxsys"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","location":"dser_steinstrasse"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","location":"hochschule_obermarkt"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","location":"dser_steinstrasse"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","location":"hochschule_obermarkt"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","location":"saxsys"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","location":"dser_steinstrasse"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","location":"hochschule_campus"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","location":"saxsys"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","location":"hochschule_obermarkt"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","location":"dser_elisabethstrasse"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","location":"saxsys"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","location":"hochschule_campus"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","location":"hochschule_campus"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","location":"saxsys"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","location":"hochschule_obermarkt"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","location":"sqs"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","location":"saxsys"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","location":"hochschule_campus"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","location":"hochschule_obermarkt"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","location":"hochschule_campus"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","location":"saxsys"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","location":"hochschule_campus"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","location":"dser_elisabethstrasse"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","location":"hochschule_campus"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","location":"sqs"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","location":"saxsys"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","location":"cideon"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","location":"hochschule_campus"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","location":"saxsys"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","location":"hochschule_campus"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","location":"hochschule_campus"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","location":"hochschule_campus"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","location":"cideon"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","location":"saxsys"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","location":"hochschule_campus"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","location":"saxsys"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","location":"hochschule_campus"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","location":"cideon"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","location":"tallence"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","location":"saxsys"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","location":null}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","location":null}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","location":null}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","location":null}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","location":null}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","location":"zeiss"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","location":"zeiss"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","location":"innolabs"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","location":"cideon"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","location":"zeiss"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","location":"fraunhofer"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","location":"expleo"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","location":"tallence"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","location":"zeiss"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"title":"Java 21: Virtual Threads - Why should I care?","location":"zeiss"}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","location":"zeiss"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","location":"zeiss"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/locations/zeiss/page-data.json b/page-data/locations/zeiss/page-data.json index 93f185481..afec9f936 100644 --- a/page-data/locations/zeiss/page-data.json +++ b/page-data/locations/zeiss/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-templates-location-page-tsx","path":"/locations/zeiss/","result":{"data":{"location":{"html":"","fields":{"slug":"/locations/zeiss/"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}},"talks":{"edges":[{"node":{"fields":{"slug":"/talks/2023-11-29-crac/"},"frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/"},"frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2023-09-27-kollaborative-anwendungen/"},"frontmatter":{"title":"Kollaborative Anwendungen und 'local first apps'","date":"2023-09-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2023-06-28-graalvm_23/"},"frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2023-02-22-exception_first/"},"frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"},"frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"},"frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z"}}}]}},"pageContext":{"locationSlug":"/locations/zeiss/","locationId":"zeiss"}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-templates-location-page-tsx","path":"/locations/zeiss/","result":{"data":{"location":{"html":"","fields":{"slug":"/locations/zeiss/"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","info":null,"street":"Berliner Straße","number":"63","zip":"02826","city":"Görlitz"}},"talks":{"edges":[{"node":{"fields":{"slug":"/talks/2023-11-29-crac/"},"frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/"},"frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2023-09-27-virtual-threads/"},"frontmatter":{"title":"Java 21: Virtual Threads - Why should I care?","date":"2023-09-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2023-06-28-graalvm_23/"},"frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2023-02-22-exception_first/"},"frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"},"frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"},"frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z"}}}]}},"pageContext":{"locationSlug":"/locations/zeiss/","locationId":"zeiss"}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/posters/page-data.json b/page-data/posters/page-data.json index ca8ce6e06..d69a9c02b 100644 --- a/page-data/posters/page-data.json +++ b/page-data/posters/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-posters-tsx","path":"/posters/","result":{"data":{"talks":{"edges":[{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","fields":{"slug":"/talks/2023-11-29-crac/"},"frontmatter":{"title":"What the CRaC - Superfast JVM startup","speaker":["gerrit_grundwald"],"poster":null,"poster_alt":null}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/"},"frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","speaker":["pawel_adaszewski","damian_dudziec"],"poster":null,"poster_alt":null}}},{"node":{"id":"5bfff80b-ea15-5ee9-8b28-c9449c05ca8c","fields":{"slug":"/talks/2023-09-27-kollaborative-anwendungen/"},"frontmatter":{"title":"Kollaborative Anwendungen und 'local first apps'","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","fields":{"slug":"/talks/2023-06-28-graalvm_23/"},"frontmatter":{"title":"GraalVM 23 – Konzepte und Features","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b878a8","images":{"fallback":{"src":"/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png","srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt."}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"},"frontmatter":{"title":"Accessibility in the Wild","speaker":["daniel_sulyok"],"poster":{"childImageSharp":{"id":"2289c524-859b-5899-a8d7-b9ae17afcad5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85888","images":{"fallback":{"src":"/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png","srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake."}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"},"frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","speaker":["roland_weisleder"],"poster":{"childImageSharp":{"id":"197c670b-992f-54d0-9a49-0aac78c4b5e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a848","images":{"fallback":{"src":"/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png","srcSet":"/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,\n/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,\n/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. In den Hängen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen."}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"},"frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","speaker":["oliver_drotbohm"],"poster":{"childImageSharp":{"id":"ab1c70db-cea4-586b-be81-643ef56fc65a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8a808","images":{"fallback":{"src":"/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png","srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt."}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","fields":{"slug":"/talks/2023-02-22-exception_first/"},"frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","speaker":["sergej_tihonov"],"poster":{"childImageSharp":{"id":"85b5c33a-1b3d-5625-8375-408b5c1f84bf","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e88838","images":{"fallback":{"src":"/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png","srcSet":"/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,\n/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,\n/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","fields":{"slug":"/talks/2023-01-25-contentlab/"},"frontmatter":{"title":"Content Management neu gedacht mit Contentlab","speaker":["markus_weiland"],"poster":{"childImageSharp":{"id":"86c1c8d2-94ea-5866-bbdb-3ac21398dcc3","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#9868a8","images":{"fallback":{"src":"/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png","srcSet":"/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,\n/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,\n/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,\n/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,\n/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,\n/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,\n/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Laborkittel und eine Sicherheitsbrille. In der Hand trägt er zwei Reagenzgläser. Über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub."}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","fields":{"slug":"/talks/2022-11-30-iam-keycloak/"},"frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","speaker":["daniel_fesenmeyer"],"poster":{"childImageSharp":{"id":"0b48a461-1420-5309-b315-926387e3fc44","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png","srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"},"frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","speaker":["marco_gotthans"],"poster":{"childImageSharp":{"id":"1a0dbc74-dd80-5566-aa7d-5a4aac2ba518","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#28b898","images":{"fallback":{"src":"/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png","srcSet":"/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,\n/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,\n/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen."}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"},"frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","speaker":["pawel_adaszewski"],"poster":{"childImageSharp":{"id":"fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8b838","images":{"fallback":{"src":"/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png","srcSet":"/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,\n/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,\n/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln."}}},{"node":{"id":"e11f95ba-4519-56e7-a60e-e066c5379738","fields":{"slug":"/posts/2022-01-07-javaland/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","fields":{"slug":"/talks/2021-06-30-microstream/"},"frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","speaker":["markus_kett","christian_kuemmel"],"poster":{"childImageSharp":{"id":"1567f34a-c228-511c-a368-2041cf79e3fa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f85838","images":{"fallback":{"src":"/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png","srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen."}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","fields":{"slug":"/talks/2021-01-27-webcomponents/"},"frontmatter":{"title":"Web Components","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"9bba5bef-9d0e-50c8-b451-ffed64ad6bd4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#981848","images":{"fallback":{"src":"/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png","srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus."}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","fields":{"slug":"/talks/2020-11-25-secure_coding/"},"frontmatter":{"title":"Java Secure Coding in der Praxis","speaker":["nico_foerster"],"poster":{"childImageSharp":{"id":"b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#182838","images":{"fallback":{"src":"/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png","srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben."}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","fields":{"slug":"/talks/2020-07-22-branching_modelle/"},"frontmatter":{"title":"Branching-Modelle","speaker":["hannes_kretschmer"],"poster":{"childImageSharp":{"id":"1908832c-2f77-598f-a24b-2bcdee954b3a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png","srcSet":"/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,\n/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,\n/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet."}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"},"frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"59ef0a09-a854-5bc5-a122-2d35ddcf6987","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#486888","images":{"fallback":{"src":"/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png","srcSet":"/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,\n/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,\n/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,\n/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,\n/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,\n/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,\n/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen."}}},{"node":{"id":"b4f5ca9b-9c1d-5041-ac18-4e371787ac48","fields":{"slug":"/posts/2020-03-24-corona/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","fields":{"slug":"/talks/2020-01-27-cloud-foundry/"},"frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","speaker":["simon_roloff"],"poster":{"childImageSharp":{"id":"abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#583898","images":{"fallback":{"src":"/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png","srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken."}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"},"frontmatter":{"title":"Advanced BDD Tests","speaker":["maik_wagner"],"poster":{"childImageSharp":{"id":"6f443280-7e6e-5951-ab2a-0815064e81b4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86868","images":{"fallback":{"src":"/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png","srcSet":"/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,\n/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,\n/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben."}}},{"node":{"id":"1e8e7717-76b0-59ff-b867-620afdfc1cd7","fields":{"slug":"/posts/2019-08-16-grillen/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","fields":{"slug":"/talks/2019-06-26-collection-framework/"},"frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","speaker":["thilo_frotscher"],"poster":{"childImageSharp":{"id":"ecc9b098-2be1-50e1-87d8-48488a256061","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389838","images":{"fallback":{"src":"/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png","srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'."}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","fields":{"slug":"/talks/2019-05-29-oauth/"},"frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","speaker":["denny_israel"],"poster":{"childImageSharp":{"id":"cb4beaed-8514-5a8a-8dfe-7bec12fbdd27","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#386898","images":{"fallback":{"src":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png","srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","fields":{"slug":"/talks/2019-04-24_jdk_jungle/"},"frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"e335d1a1-3789-5e42-9670-a3e1c361eadc","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png","srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle."}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","fields":{"slug":"/talks/2019-03-27-static-site-generators/"},"frontmatter":{"title":"Static-Site-Generators","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"bffb7b05-0e58-5922-92df-21ce241ccd84","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c868","images":{"fallback":{"src":"/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png","srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w","sizes":"100vw"},"sources":[{"srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.414516129032258}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen."}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","fields":{"slug":"/talks/2019-02-27_reflection/"},"frontmatter":{"title":"Java Reflection: Classes behind the scenes","speaker":["erik_jaehne"],"poster":{"childImageSharp":{"id":"b2cb5256-0c61-5e8b-8a34-23f74562f16f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png","srcSet":"/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,\n/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,\n/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"},"frontmatter":{"title":"Java APIs - the missing manual","speaker":["hendrik_ebbers"],"poster":{"childImageSharp":{"id":"8509bc59-0ad5-5d24-87e3-f253d53d68b2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3858b8","images":{"fallback":{"src":"/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png","srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'"}}},{"node":{"id":"2a012a23-7791-512a-af55-7a5d72c7b67d","fields":{"slug":"/posts/2018-12-30-congress-everywhere/"},"frontmatter":{"title":"Congress Everywhere - 35C3@Görlitz","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"},"frontmatter":{"title":"Monadische Transaktionen","speaker":["gregor_trefs"],"poster":{"childImageSharp":{"id":"918002c9-e393-5b8d-a2d6-ee73c1735383","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#680838","images":{"fallback":{"src":"/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png","srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben."}}},{"node":{"id":"fafec1ba-0938-562d-9926-409d1d341c50","fields":{"slug":"/posts/2018-09-26-coding-dojo/"},"frontmatter":{"title":"Vortrag entfällt. Stattdessen Coding-Dojo","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"bb4a6f0c-58fc-590e-9a58-f1ea08fc6cad","fields":{"slug":"/posts/2018-07-31-grillabend/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":{"childImageSharp":{"id":"f72f3e37-dad2-51b5-9e2a-b6413a70715c","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d88828","images":{"fallback":{"src":"/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png","srcSet":"/static/ef0ba78d7c603390b50fd5bee9599b5a/b8e70/plakat_2017_07.png 750w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/e5839/plakat_2017_07.png 1080w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/f51d5/plakat_2017_07.png 1366w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/ef0ba78d7c603390b50fd5bee9599b5a/e5d6f/plakat_2017_07.webp 750w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/0671f/plakat_2017_07.webp 1080w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/7e884/plakat_2017_07.webp 1366w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/e2c0d/plakat_2017_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","fields":{"slug":"/talks/2018-06-27-immutable-data/"},"frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"314ba704-f1f4-5d2c-8535-b32da028a3c9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#780838","images":{"fallback":{"src":"/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png","srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand."}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","fields":{"slug":"/talks/2018-05-30-graphql/"},"frontmatter":{"title":"GraphQL","speaker":["stephan_strehler"],"poster":{"childImageSharp":{"id":"90e1be0b-07fd-5977-ad85-c716671424c1","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e838a8","images":{"fallback":{"src":"/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png","srcSet":"/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,\n/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,\n/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen."}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","fields":{"slug":"/talks/2018-04-25-kotlin/"},"frontmatter":{"title":"Kotlin","speaker":["tobias_blaschke"],"poster":{"childImageSharp":{"id":"1a259f6b-01d1-58d9-9813-e4fb56a34153","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8b808","images":{"fallback":{"src":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png","srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"},"frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","speaker":["stefan_zoerner"],"poster":{"childImageSharp":{"id":"96d1873a-e218-5bea-9d77-8dc2e42dbbc6","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#082868","images":{"fallback":{"src":"/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png","srcSet":"/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,\n/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,\n/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen freut sich und hält einen Bauplan in der Hand."}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"},"frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","speaker":["jens_leuschner","mariusz_zienkiewicz"],"poster":{"childImageSharp":{"id":"65d7329c-3fb6-5a77-8b25-3984a599f9e8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png","srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol."}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","fields":{"slug":"/talks/2018-01-31-system_of_systems/"},"frontmatter":{"title":"Refactoring to a System of Systems","speaker":["oliver_drotbohm"],"poster":{"childImageSharp":{"id":"9685adbf-d27b-5f98-934a-54d7dc3fcdb8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383898","images":{"fallback":{"src":"/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png","srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w","sizes":"100vw"},"sources":[{"srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4141821112006447}}},"poster_alt":"Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet."}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","fields":{"slug":"/talks/2017-11-29-neo4j/"},"frontmatter":{"title":"Neo4j: Panama Papers","speaker":["michael_hunger"],"poster":{"childImageSharp":{"id":"0d8148d9-9587-5da3-aaf0-f92c5603d344","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#587828","images":{"fallback":{"src":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png","srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir."}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","fields":{"slug":"/talks/2017-10-25-serverless/"},"frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","speaker":["lars_roewekamp"],"poster":{"childImageSharp":{"id":"754076b2-57c3-5796-89f2-711200e78c58","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389858","images":{"fallback":{"src":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png","srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w","sizes":"100vw"},"sources":[{"srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145234493192134}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","fields":{"slug":"/talks/2017-08-30-alexa/"},"frontmatter":{"title":"Spracherkennung mit Amazon Alexa","speaker":["andre_tepper","maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"5992b283-78cd-5625-9878-de0f4300018d","fields":{"slug":"/posts/2017-07-21-grillen/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","fields":{"slug":"/talks/2017-05-31-react/"},"frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"6b8717ce-a995-58f6-82e5-62fb5ef3cca9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58c8d8","images":{"fallback":{"src":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png","srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4119791666666668}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen."}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","fields":{"slug":"/talks/2017-04-26-jdk9/"},"frontmatter":{"title":"JDK 9","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"2573407c-9387-55d4-81ac-f02dffdbfe14","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#38a838","images":{"fallback":{"src":"/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png","srcSet":"/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,\n/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,\n/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java."}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","fields":{"slug":"/talks/2017-03-22-angular/"},"frontmatter":{"title":"Angular 2 für Java Entwickler","speaker":["sven_hoffmann"],"poster":{"childImageSharp":{"id":"eddd4dc5-4156-509b-bf5c-e09b0c5c330e","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#084858","images":{"fallback":{"src":"/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png","srcSet":"/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,\n/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,\n/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht."}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","fields":{"slug":"/talks/2017-02-22-css/"},"frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","speaker":["uwe_manteuffel"],"poster":{"childImageSharp":{"id":"f98f07d3-05f0-5b44-a8c4-f59df52e978d","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#087868","images":{"fallback":{"src":"/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png","srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel."}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","fields":{"slug":"/talks/2017-01-25-junit5/"},"frontmatter":{"title":"JUnit 5","speaker":["stefan_bley"],"poster":{"childImageSharp":{"id":"389f1a05-558e-58a8-a8f2-8f0f783fbb5f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3868c8","images":{"fallback":{"src":"/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png","srcSet":"/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,\n/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,\n/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","fields":{"slug":"/talks/2016-11-30-inside_jvm/"},"frontmatter":{"title":"Inside JVM","speaker":["michael_wiedeking"],"poster":{"childImageSharp":{"id":"d5ac0466-71cb-5950-ad4c-692645dec780","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#185818","images":{"fallback":{"src":"/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png","srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich."}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"},"frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","speaker":["daniel_sernow"],"poster":{"childImageSharp":{"id":"d76f475f-a8c8-5319-96d2-a1474885f516","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#788818","images":{"fallback":{"src":"/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png","srcSet":"/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,\n/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,\n/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,\n/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,\n/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,\n/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,\n/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"},"frontmatter":{"title":"Testwerkzeuge für JavaFX","speaker":["kay_grebenstein"],"poster":null,"poster_alt":null}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"},"frontmatter":{"title":"Performance-Analyse mit inspectIT","speaker":["mario_mann"],"poster":{"childImageSharp":{"id":"34708531-529f-5d8b-9a4f-7e69705d60db","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#880818","images":{"fallback":{"src":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png","srcSet":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","fields":{"slug":"/talks/2016-03-30-haskell_frege/"},"frontmatter":{"title":"Haskell und Frege","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"5c9d56a7-72a3-5960-83a9-42dc599be063","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#588888","images":{"fallback":{"src":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png","srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","fields":{"slug":"/talks/2016-01-27-functional_java/"},"frontmatter":{"title":"Funktionale Programmierung mit Java","speaker":["manuel_mauky","max_wielsch"],"poster":{"childImageSharp":{"id":"627917ce-c50f-59e9-98d8-4897b4f220c5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png","srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen."}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","fields":{"slug":"/talks/2015-11-25-javafx-mobile/"},"frontmatter":{"title":"JavaFX auf Mobile","speaker":["stefan_heinze","stefan_barth"],"poster":null,"poster_alt":null}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","fields":{"slug":"/talks/2015-09-30-guava/"},"frontmatter":{"title":"Guava","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","fields":{"slug":"/talks/2015-07-29-drools/"},"frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","speaker":["paul_weinhold"],"poster":null,"poster_alt":null}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","fields":{"slug":"/talks/2015-05-27-advanced-android/"},"frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","fields":{"slug":"/talks/2015-03-25-android/"},"frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","fields":{"slug":"/talks/2015-01-28-moskito/"},"frontmatter":{"title":"MoSKito - Monitoring Framework","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","fields":{"slug":"/talks/2014-12-03-model-view-star/"},"frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"},"frontmatter":{"title":"Infrastructure as Code","speaker":["bruno_devic"],"poster":null,"poster_alt":null}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","fields":{"slug":"/talks/2014-09-24-solr/"},"frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","fields":{"slug":"/talks/2014-07-30-java8-streams/"},"frontmatter":{"title":"Java8 - Streams und Lambdas","speaker":["paul_weinhold"],"poster":null,"poster_alt":null}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","fields":{"slug":"/talks/2014-05-28-hazelcast/"},"frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","fields":{"slug":"/talks/2014-04-02-assertj/"},"frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","fields":{"slug":"/talks/2014-01-29-opendip/"},"frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","fields":{"slug":"/talks/2013-11-27-web-performance/"},"frontmatter":{"title":"Performance-Optimierung im Web","speaker":["maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"02896017-da1f-5c03-b52f-41790bbfe7e7","fields":{"slug":"/posts/2013-10-30-poster/"},"frontmatter":{"title":"JUG-GR Poster","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","fields":{"slug":"/talks/2013-10-30-app-design/"},"frontmatter":{"title":"Modernes App-Design am Beispiel von Android","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","fields":{"slug":"/talks/2013-07-31-persona/"},"frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","speaker":["marlene_knoche"],"poster":null,"poster_alt":null}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","fields":{"slug":"/talks/2013-05-29-jruby/"},"frontmatter":{"title":"JRuby - Ruby auf der Java VM","speaker":["sebastian_schmeck"],"poster":null,"poster_alt":null}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","fields":{"slug":"/talks/2013-03-27-nxt_lego/"},"frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","speaker":["erik_jaehne"],"poster":null,"poster_alt":null}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","fields":{"slug":"/talks/2012-11-28-javafx2/"},"frontmatter":{"title":"JavaFX 2","speaker":["alexander_casall","michael_thiele"],"poster":null,"poster_alt":null}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","fields":{"slug":"/talks/2012-09-26-bean_validation/"},"frontmatter":{"title":"JSR-303 BeanValidation","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","fields":{"slug":"/talks/2012-07-25-selenium_praxis/"},"frontmatter":{"title":"Selenium/Webdriver in der Praxis","speaker":["maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","fields":{"slug":"/talks/2012-06-27-gridgain/"},"frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","speaker":["mario_reichel"],"poster":null,"poster_alt":null}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"},"frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","speaker":["hans_markwart"],"poster":null,"poster_alt":null}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","fields":{"slug":"/talks/2012-04-25-maven/"},"frontmatter":{"title":"Maven","speaker":["thomas_storch"],"poster":null,"poster_alt":null}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","fields":{"slug":"/talks/2012-03-28-webtests/"},"frontmatter":{"title":"Webtests mit Selenium","speaker":["marcus_doering"],"poster":null,"poster_alt":null}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","fields":{"slug":"/talks/2012-02-29-scala_webapps/"},"frontmatter":{"title":"Webentwicklung mit Scala","speaker":["stefan_bradl"],"poster":null,"poster_alt":null}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"},"frontmatter":{"title":"Advanced JSF und CDI","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","fields":{"slug":"/talks/2012-01-01-hibernate/"},"frontmatter":{"title":"JPA - Hibernate","speaker":["marko_modsching"],"poster":null,"poster_alt":null}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","fields":{"slug":"/talks/2011-11-30-jsf-cdi/"},"frontmatter":{"title":"JavaServer Faces 2 und CDI","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","fields":{"slug":"/talks/2011-10-26-android/"},"frontmatter":{"title":"Android","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","fields":{"slug":"/talks/2011-09-28-jdom/"},"frontmatter":{"title":"JDOM","speaker":["mark_ziener"],"poster":null,"poster_alt":null}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","fields":{"slug":"/talks/2011-09-28-single-sign-on/"},"frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","speaker":["mario_reichel"],"poster":null,"poster_alt":null}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","fields":{"slug":"/talks/2011-08-31-testen/"},"frontmatter":{"title":"Testen - Patterns und Best Practices","speaker":["marko_modsching"],"poster":null,"poster_alt":null}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","fields":{"slug":"/talks/2011-07-27-scala/"},"frontmatter":{"title":"Scala","speaker":["stefan_bradl"],"poster":null,"poster_alt":null}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","fields":{"slug":"/talks/2011-07-27-testng/"},"frontmatter":{"title":"TestNG","speaker":["marcus_doering"],"poster":null,"poster_alt":null}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","fields":{"slug":"/talks/2011-06-29-javaee_jboss/"},"frontmatter":{"title":"JavaEE und JBoss","speaker":["michael_foerster"],"poster":null,"poster_alt":null}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","fields":{"slug":"/talks/2011-05-27-guice/"},"frontmatter":{"title":"Google Guice","speaker":["robert_wirbs"],"poster":null,"poster_alt":null}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","fields":{"slug":"/talks/2011-04-27-gwt/"},"frontmatter":{"title":"GWT - Google Web Toolkit","speaker":["ingo_koerner"],"poster":null,"poster_alt":null}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","fields":{"slug":"/talks/2011-04-27-osgi_springdm/"},"frontmatter":{"title":"OSGi mit SpringDM","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","fields":{"slug":"/talks/2011-03-22-easymock/"},"frontmatter":{"title":"EasyMock","speaker":["richard_hauswald"],"poster":null,"poster_alt":null}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","fields":{"slug":"/talks/2011-03-22-jenkins/"},"frontmatter":{"title":"Jenkins/Hudson","speaker":["stefan_scheumann"],"poster":null,"poster_alt":null}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-posters-tsx","path":"/posters/","result":{"data":{"talks":{"edges":[{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","fields":{"slug":"/talks/2023-11-29-crac/"},"frontmatter":{"title":"What the CRaC - Superfast JVM startup","speaker":["gerrit_grundwald"],"poster":null,"poster_alt":null}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/"},"frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","speaker":["pawel_adaszewski","damian_dudziec"],"poster":null,"poster_alt":null}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","fields":{"slug":"/talks/2023-09-27-virtual-threads/"},"frontmatter":{"title":"Java 21: Virtual Threads - Why should I care?","speaker":["patryk_lewandowski"],"poster":null,"poster_alt":null}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","fields":{"slug":"/talks/2023-06-28-graalvm_23/"},"frontmatter":{"title":"GraalVM 23 – Konzepte und Features","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"61b0d0a8-fa3a-58b5-b6f0-eef9f3716b60","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#b878a8","images":{"fallback":{"src":"/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png","srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/b8e70/plakat_2023_06.png 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e5839/plakat_2023_06.png 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/f51d5/plakat_2023_06.png 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/84817/plakat_2023_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d62e1742243833e9e67ff3a5e8ba41e0/e5d6f/plakat_2023_06.webp 750w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/0671f/plakat_2023_06.webp 1080w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/7e884/plakat_2023_06.webp 1366w,\n/static/d62e1742243833e9e67ff3a5e8ba41e0/e2c0d/plakat_2023_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt."}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"},"frontmatter":{"title":"Accessibility in the Wild","speaker":["daniel_sulyok"],"poster":{"childImageSharp":{"id":"2289c524-859b-5899-a8d7-b9ae17afcad5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e85888","images":{"fallback":{"src":"/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png","srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/b8e70/plakat_2023_05.png 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e5839/plakat_2023_05.png 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/f51d5/plakat_2023_05.png 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/84817/plakat_2023_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4d37935c5d380cb8d64e34d12cbd80d2/e5d6f/plakat_2023_05.webp 750w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/0671f/plakat_2023_05.webp 1080w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/7e884/plakat_2023_05.webp 1366w,\n/static/4d37935c5d380cb8d64e34d12cbd80d2/e2c0d/plakat_2023_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake."}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"},"frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","speaker":["roland_weisleder"],"poster":{"childImageSharp":{"id":"197c670b-992f-54d0-9a49-0aac78c4b5e4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58a848","images":{"fallback":{"src":"/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png","srcSet":"/static/3783aca0b180d59828528ae2e9f37788/b8e70/plakat_2023_04.png 750w,\n/static/3783aca0b180d59828528ae2e9f37788/e5839/plakat_2023_04.png 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/f51d5/plakat_2023_04.png 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/84817/plakat_2023_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/3783aca0b180d59828528ae2e9f37788/e5d6f/plakat_2023_04.webp 750w,\n/static/3783aca0b180d59828528ae2e9f37788/0671f/plakat_2023_04.webp 1080w,\n/static/3783aca0b180d59828528ae2e9f37788/7e884/plakat_2023_04.webp 1366w,\n/static/3783aca0b180d59828528ae2e9f37788/e2c0d/plakat_2023_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. In den Hängen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen."}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"},"frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","speaker":["oliver_drotbohm"],"poster":{"childImageSharp":{"id":"ab1c70db-cea4-586b-be81-643ef56fc65a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8a808","images":{"fallback":{"src":"/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png","srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/b8e70/plakat_2023_03.png 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e5839/plakat_2023_03.png 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/f51d5/plakat_2023_03.png 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/84817/plakat_2023_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/bd3df371bc1bfedf9acf732740ac6b34/e5d6f/plakat_2023_03.webp 750w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/0671f/plakat_2023_03.webp 1080w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/7e884/plakat_2023_03.webp 1366w,\n/static/bd3df371bc1bfedf9acf732740ac6b34/e2c0d/plakat_2023_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt."}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","fields":{"slug":"/talks/2023-02-22-exception_first/"},"frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","speaker":["sergej_tihonov"],"poster":{"childImageSharp":{"id":"85b5c33a-1b3d-5625-8375-408b5c1f84bf","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e88838","images":{"fallback":{"src":"/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png","srcSet":"/static/69a227ac221f5d70680e1772e2b66652/b8e70/plakat_2023_02.png 750w,\n/static/69a227ac221f5d70680e1772e2b66652/e5839/plakat_2023_02.png 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/f51d5/plakat_2023_02.png 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/84817/plakat_2023_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/69a227ac221f5d70680e1772e2b66652/e5d6f/plakat_2023_02.webp 750w,\n/static/69a227ac221f5d70680e1772e2b66652/0671f/plakat_2023_02.webp 1080w,\n/static/69a227ac221f5d70680e1772e2b66652/7e884/plakat_2023_02.webp 1366w,\n/static/69a227ac221f5d70680e1772e2b66652/e2c0d/plakat_2023_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","fields":{"slug":"/talks/2023-01-25-contentlab/"},"frontmatter":{"title":"Content Management neu gedacht mit Contentlab","speaker":["markus_weiland"],"poster":{"childImageSharp":{"id":"86c1c8d2-94ea-5866-bbdb-3ac21398dcc3","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#9868a8","images":{"fallback":{"src":"/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png","srcSet":"/static/8f15082e67d772dd339121432ea649d9/b8e70/plakat_2023_01.png 750w,\n/static/8f15082e67d772dd339121432ea649d9/e5839/plakat_2023_01.png 1080w,\n/static/8f15082e67d772dd339121432ea649d9/f51d5/plakat_2023_01.png 1366w,\n/static/8f15082e67d772dd339121432ea649d9/84817/plakat_2023_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f15082e67d772dd339121432ea649d9/e5d6f/plakat_2023_01.webp 750w,\n/static/8f15082e67d772dd339121432ea649d9/0671f/plakat_2023_01.webp 1080w,\n/static/8f15082e67d772dd339121432ea649d9/7e884/plakat_2023_01.webp 1366w,\n/static/8f15082e67d772dd339121432ea649d9/e2c0d/plakat_2023_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen Laborkittel und eine Sicherheitsbrille. In der Hand trägt er zwei Reagenzgläser. Über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub."}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","fields":{"slug":"/talks/2022-11-30-iam-keycloak/"},"frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","speaker":["daniel_fesenmeyer"],"poster":{"childImageSharp":{"id":"0b48a461-1420-5309-b315-926387e3fc44","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png","srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/b8e70/plakat_2022_11.png 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5839/plakat_2022_11.png 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/f51d5/plakat_2022_11.png 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/84817/plakat_2022_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/4313899aa2d31ed4b1e24d7d91e8c20a/e5d6f/plakat_2022_11.webp 750w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/0671f/plakat_2022_11.webp 1080w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/7e884/plakat_2022_11.webp 1366w,\n/static/4313899aa2d31ed4b1e24d7d91e8c20a/e2c0d/plakat_2022_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"},"frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","speaker":["marco_gotthans"],"poster":{"childImageSharp":{"id":"1a0dbc74-dd80-5566-aa7d-5a4aac2ba518","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#28b898","images":{"fallback":{"src":"/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png","srcSet":"/static/f522849df2b2b8add5330999b1f5a484/b8e70/plakat_2022_10.png 750w,\n/static/f522849df2b2b8add5330999b1f5a484/e5839/plakat_2022_10.png 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/f51d5/plakat_2022_10.png 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/84817/plakat_2022_10.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/f522849df2b2b8add5330999b1f5a484/e5d6f/plakat_2022_10.webp 750w,\n/static/f522849df2b2b8add5330999b1f5a484/0671f/plakat_2022_10.webp 1080w,\n/static/f522849df2b2b8add5330999b1f5a484/7e884/plakat_2022_10.webp 1366w,\n/static/f522849df2b2b8add5330999b1f5a484/e2c0d/plakat_2022_10.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen."}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"},"frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","speaker":["pawel_adaszewski"],"poster":{"childImageSharp":{"id":"fff1b9ff-e9ff-5fc3-ac26-c00c71f16bde","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8b838","images":{"fallback":{"src":"/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png","srcSet":"/static/16e022022a45fa9f5687edc16e865aec/b8e70/plakat_2022_06.png 750w,\n/static/16e022022a45fa9f5687edc16e865aec/e5839/plakat_2022_06.png 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/f51d5/plakat_2022_06.png 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/84817/plakat_2022_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/16e022022a45fa9f5687edc16e865aec/e5d6f/plakat_2022_06.webp 750w,\n/static/16e022022a45fa9f5687edc16e865aec/0671f/plakat_2022_06.webp 1080w,\n/static/16e022022a45fa9f5687edc16e865aec/7e884/plakat_2022_06.webp 1366w,\n/static/16e022022a45fa9f5687edc16e865aec/e2c0d/plakat_2022_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln."}}},{"node":{"id":"e11f95ba-4519-56e7-a60e-e066c5379738","fields":{"slug":"/posts/2022-01-07-javaland/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","fields":{"slug":"/talks/2021-06-30-microstream/"},"frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","speaker":["markus_kett","christian_kuemmel"],"poster":{"childImageSharp":{"id":"1567f34a-c228-511c-a368-2041cf79e3fa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f85838","images":{"fallback":{"src":"/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png","srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/b8e70/plakat_2021_06.png 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e5839/plakat_2021_06.png 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/f51d5/plakat_2021_06.png 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/84817/plakat_2021_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8f427a4552cb3ca64fe96511228f5a57/e5d6f/plakat_2021_06.webp 750w,\n/static/8f427a4552cb3ca64fe96511228f5a57/0671f/plakat_2021_06.webp 1080w,\n/static/8f427a4552cb3ca64fe96511228f5a57/7e884/plakat_2021_06.webp 1366w,\n/static/8f427a4552cb3ca64fe96511228f5a57/e2c0d/plakat_2021_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen."}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","fields":{"slug":"/talks/2021-01-27-webcomponents/"},"frontmatter":{"title":"Web Components","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"9bba5bef-9d0e-50c8-b451-ffed64ad6bd4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#981848","images":{"fallback":{"src":"/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png","srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/b8e70/plakat_2021_01.png 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e5839/plakat_2021_01.png 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/f51d5/plakat_2021_01.png 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/84817/plakat_2021_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/540abccd98049d14ae192d2ada3cbcc3/e5d6f/plakat_2021_01.webp 750w,\n/static/540abccd98049d14ae192d2ada3cbcc3/0671f/plakat_2021_01.webp 1080w,\n/static/540abccd98049d14ae192d2ada3cbcc3/7e884/plakat_2021_01.webp 1366w,\n/static/540abccd98049d14ae192d2ada3cbcc3/e2c0d/plakat_2021_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus."}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","fields":{"slug":"/talks/2020-11-25-secure_coding/"},"frontmatter":{"title":"Java Secure Coding in der Praxis","speaker":["nico_foerster"],"poster":{"childImageSharp":{"id":"b5a8cec9-632e-5d2d-acc3-45cfdedb6dfa","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#182838","images":{"fallback":{"src":"/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png","srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/b8e70/plakat_2020_11.png 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e5839/plakat_2020_11.png 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/f51d5/plakat_2020_11.png 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/84817/plakat_2020_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c2b6e13c2719de1c7a0da2b790067455/e5d6f/plakat_2020_11.webp 750w,\n/static/c2b6e13c2719de1c7a0da2b790067455/0671f/plakat_2020_11.webp 1080w,\n/static/c2b6e13c2719de1c7a0da2b790067455/7e884/plakat_2020_11.webp 1366w,\n/static/c2b6e13c2719de1c7a0da2b790067455/e2c0d/plakat_2020_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben."}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","fields":{"slug":"/talks/2020-07-22-branching_modelle/"},"frontmatter":{"title":"Branching-Modelle","speaker":["hannes_kretschmer"],"poster":{"childImageSharp":{"id":"1908832c-2f77-598f-a24b-2bcdee954b3a","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png","srcSet":"/static/595b224b634a1c6694d94578a61bc06c/b8e70/plakat_2020_07.png 750w,\n/static/595b224b634a1c6694d94578a61bc06c/e5839/plakat_2020_07.png 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/f51d5/plakat_2020_07.png 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/84817/plakat_2020_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/595b224b634a1c6694d94578a61bc06c/e5d6f/plakat_2020_07.webp 750w,\n/static/595b224b634a1c6694d94578a61bc06c/0671f/plakat_2020_07.webp 1080w,\n/static/595b224b634a1c6694d94578a61bc06c/7e884/plakat_2020_07.webp 1366w,\n/static/595b224b634a1c6694d94578a61bc06c/e2c0d/plakat_2020_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet."}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"},"frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"59ef0a09-a854-5bc5-a122-2d35ddcf6987","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#486888","images":{"fallback":{"src":"/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png","srcSet":"/static/1b5849494114993b21e29316b4af1f35/b8e70/plakat_2020_04.png 750w,\n/static/1b5849494114993b21e29316b4af1f35/e5839/plakat_2020_04.png 1080w,\n/static/1b5849494114993b21e29316b4af1f35/f51d5/plakat_2020_04.png 1366w,\n/static/1b5849494114993b21e29316b4af1f35/84817/plakat_2020_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1b5849494114993b21e29316b4af1f35/e5d6f/plakat_2020_04.webp 750w,\n/static/1b5849494114993b21e29316b4af1f35/0671f/plakat_2020_04.webp 1080w,\n/static/1b5849494114993b21e29316b4af1f35/7e884/plakat_2020_04.webp 1366w,\n/static/1b5849494114993b21e29316b4af1f35/e2c0d/plakat_2020_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen."}}},{"node":{"id":"b4f5ca9b-9c1d-5041-ac18-4e371787ac48","fields":{"slug":"/posts/2020-03-24-corona/"},"frontmatter":{"title":"","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","fields":{"slug":"/talks/2020-01-27-cloud-foundry/"},"frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","speaker":["simon_roloff"],"poster":{"childImageSharp":{"id":"abe046a7-29a3-5710-9b2b-cf4a5ff0c1a2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#583898","images":{"fallback":{"src":"/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png","srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/b8e70/plakat_2020-01.png 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/e5839/plakat_2020-01.png 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/f51d5/plakat_2020-01.png 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/84817/plakat_2020-01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/5ef746b99e05db0762f96d0a28f278da/e5d6f/plakat_2020-01.webp 750w,\n/static/5ef746b99e05db0762f96d0a28f278da/0671f/plakat_2020-01.webp 1080w,\n/static/5ef746b99e05db0762f96d0a28f278da/7e884/plakat_2020-01.webp 1366w,\n/static/5ef746b99e05db0762f96d0a28f278da/e2c0d/plakat_2020-01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken."}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"},"frontmatter":{"title":"Advanced BDD Tests","speaker":["maik_wagner"],"poster":{"childImageSharp":{"id":"6f443280-7e6e-5951-ab2a-0815064e81b4","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86868","images":{"fallback":{"src":"/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png","srcSet":"/static/c5e4690e979964e9c44af61d883856f8/0e3b9/plakat_2019_11.png 750w,\n/static/c5e4690e979964e9c44af61d883856f8/7aaf4/plakat_2019_11.png 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/006ba/plakat_2019_11.png 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/b6707/plakat_2019_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c5e4690e979964e9c44af61d883856f8/ebc34/plakat_2019_11.webp 750w,\n/static/c5e4690e979964e9c44af61d883856f8/47da9/plakat_2019_11.webp 1080w,\n/static/c5e4690e979964e9c44af61d883856f8/659f9/plakat_2019_11.webp 1366w,\n/static/c5e4690e979964e9c44af61d883856f8/c86cf/plakat_2019_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben."}}},{"node":{"id":"1e8e7717-76b0-59ff-b867-620afdfc1cd7","fields":{"slug":"/posts/2019-08-16-grillen/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","fields":{"slug":"/talks/2019-06-26-collection-framework/"},"frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","speaker":["thilo_frotscher"],"poster":{"childImageSharp":{"id":"ecc9b098-2be1-50e1-87d8-48488a256061","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389838","images":{"fallback":{"src":"/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png","srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/0e3b9/plakat_2019_06.png 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/7aaf4/plakat_2019_06.png 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/006ba/plakat_2019_06.png 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/b6707/plakat_2019_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/359c95f2d624a1b8d7167b6ff2c5340c/ebc34/plakat_2019_06.webp 750w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/47da9/plakat_2019_06.webp 1080w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/659f9/plakat_2019_06.webp 1366w,\n/static/359c95f2d624a1b8d7167b6ff2c5340c/c86cf/plakat_2019_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'."}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","fields":{"slug":"/talks/2019-05-29-oauth/"},"frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","speaker":["denny_israel"],"poster":{"childImageSharp":{"id":"cb4beaed-8514-5a8a-8dfe-7bec12fbdd27","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#386898","images":{"fallback":{"src":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png","srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/0e3b9/plakat_2019_05.png 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/7aaf4/plakat_2019_05.png 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/006ba/plakat_2019_05.png 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/b6707/plakat_2019_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/eaf6c5845a5ab5a40e0dd634a7eaed23/ebc34/plakat_2019_05.webp 750w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/47da9/plakat_2019_05.webp 1080w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/659f9/plakat_2019_05.webp 1366w,\n/static/eaf6c5845a5ab5a40e0dd634a7eaed23/c86cf/plakat_2019_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten."}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","fields":{"slug":"/talks/2019-04-24_jdk_jungle/"},"frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"e335d1a1-3789-5e42-9670-a3e1c361eadc","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png","srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/0e3b9/plakat_2019_04.png 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/7aaf4/plakat_2019_04.png 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/006ba/plakat_2019_04.png 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/b6707/plakat_2019_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/32de550f9e63747cb85192fa0598ae2c/ebc34/plakat_2019_04.webp 750w,\n/static/32de550f9e63747cb85192fa0598ae2c/47da9/plakat_2019_04.webp 1080w,\n/static/32de550f9e63747cb85192fa0598ae2c/659f9/plakat_2019_04.webp 1366w,\n/static/32de550f9e63747cb85192fa0598ae2c/c86cf/plakat_2019_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle."}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","fields":{"slug":"/talks/2019-03-27-static-site-generators/"},"frontmatter":{"title":"Static-Site-Generators","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"bffb7b05-0e58-5922-92df-21ce241ccd84","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#a8c868","images":{"fallback":{"src":"/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png","srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/0e3b9/plakat_2019_03.png 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/7aaf4/plakat_2019_03.png 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/a6b6d/plakat_2019_03.png 1240w","sizes":"100vw"},"sources":[{"srcSet":"/static/a69cadfbb400620dadfb89d178c1c8db/ebc34/plakat_2019_03.webp 750w,\n/static/a69cadfbb400620dadfb89d178c1c8db/47da9/plakat_2019_03.webp 1080w,\n/static/a69cadfbb400620dadfb89d178c1c8db/5c55f/plakat_2019_03.webp 1240w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.414516129032258}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen."}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","fields":{"slug":"/talks/2019-02-27_reflection/"},"frontmatter":{"title":"Java Reflection: Classes behind the scenes","speaker":["erik_jaehne"],"poster":{"childImageSharp":{"id":"b2cb5256-0c61-5e8b-8a34-23f74562f16f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png","srcSet":"/static/15923e5b77de857597a70091dfe03bd5/b8e70/plakat_2019_02.png 750w,\n/static/15923e5b77de857597a70091dfe03bd5/e5839/plakat_2019_02.png 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/f51d5/plakat_2019_02.png 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/84817/plakat_2019_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/15923e5b77de857597a70091dfe03bd5/e5d6f/plakat_2019_02.webp 750w,\n/static/15923e5b77de857597a70091dfe03bd5/0671f/plakat_2019_02.webp 1080w,\n/static/15923e5b77de857597a70091dfe03bd5/7e884/plakat_2019_02.webp 1366w,\n/static/15923e5b77de857597a70091dfe03bd5/e2c0d/plakat_2019_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"},"frontmatter":{"title":"Java APIs - the missing manual","speaker":["hendrik_ebbers"],"poster":{"childImageSharp":{"id":"8509bc59-0ad5-5d24-87e3-f253d53d68b2","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3858b8","images":{"fallback":{"src":"/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png","srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/b8e70/plakat_2019_01.png 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e5839/plakat_2019_01.png 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/f51d5/plakat_2019_01.png 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/84817/plakat_2019_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/8c4759d0cca5ff005992863b4cbbfd0c/e5d6f/plakat_2019_01.webp 750w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/0671f/plakat_2019_01.webp 1080w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/7e884/plakat_2019_01.webp 1366w,\n/static/8c4759d0cca5ff005992863b4cbbfd0c/e2c0d/plakat_2019_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'"}}},{"node":{"id":"2a012a23-7791-512a-af55-7a5d72c7b67d","fields":{"slug":"/posts/2018-12-30-congress-everywhere/"},"frontmatter":{"title":"Congress Everywhere - 35C3@Görlitz","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"},"frontmatter":{"title":"Monadische Transaktionen","speaker":["gregor_trefs"],"poster":{"childImageSharp":{"id":"918002c9-e393-5b8d-a2d6-ee73c1735383","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#680838","images":{"fallback":{"src":"/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png","srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/b8e70/plakat_2018_11.png 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e5839/plakat_2018_11.png 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/f51d5/plakat_2018_11.png 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/84817/plakat_2018_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/d29473cce93e3ade3231fd7ea7b0188e/e5d6f/plakat_2018_11.webp 750w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/0671f/plakat_2018_11.webp 1080w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/7e884/plakat_2018_11.webp 1366w,\n/static/d29473cce93e3ade3231fd7ea7b0188e/e2c0d/plakat_2018_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben."}}},{"node":{"id":"fafec1ba-0938-562d-9926-409d1d341c50","fields":{"slug":"/posts/2018-09-26-coding-dojo/"},"frontmatter":{"title":"Vortrag entfällt. Stattdessen Coding-Dojo","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"bb4a6f0c-58fc-590e-9a58-f1ea08fc6cad","fields":{"slug":"/posts/2018-07-31-grillabend/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":{"childImageSharp":{"id":"f72f3e37-dad2-51b5-9e2a-b6413a70715c","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d88828","images":{"fallback":{"src":"/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png","srcSet":"/static/ef0ba78d7c603390b50fd5bee9599b5a/b8e70/plakat_2017_07.png 750w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/e5839/plakat_2017_07.png 1080w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/f51d5/plakat_2017_07.png 1366w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/84817/plakat_2017_07.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/ef0ba78d7c603390b50fd5bee9599b5a/e5d6f/plakat_2017_07.webp 750w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/0671f/plakat_2017_07.webp 1080w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/7e884/plakat_2017_07.webp 1366w,\n/static/ef0ba78d7c603390b50fd5bee9599b5a/e2c0d/plakat_2017_07.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält einen Teller mit Bratwürsten in der Hand"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","fields":{"slug":"/talks/2018-06-27-immutable-data/"},"frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"314ba704-f1f4-5d2c-8535-b32da028a3c9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#780838","images":{"fallback":{"src":"/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png","srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/b8e70/plakat_2018_06.png 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/e5839/plakat_2018_06.png 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/f51d5/plakat_2018_06.png 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/84817/plakat_2018_06.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1fae33eb72f57d492a22e010e53219f1/e5d6f/plakat_2018_06.webp 750w,\n/static/1fae33eb72f57d492a22e010e53219f1/0671f/plakat_2018_06.webp 1080w,\n/static/1fae33eb72f57d492a22e010e53219f1/7e884/plakat_2018_06.webp 1366w,\n/static/1fae33eb72f57d492a22e010e53219f1/e2c0d/plakat_2018_06.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand."}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","fields":{"slug":"/talks/2018-05-30-graphql/"},"frontmatter":{"title":"GraphQL","speaker":["stephan_strehler"],"poster":{"childImageSharp":{"id":"90e1be0b-07fd-5977-ad85-c716671424c1","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#e838a8","images":{"fallback":{"src":"/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png","srcSet":"/static/70801d1cf0778b63b022c58e167483bf/b8e70/plakat_2018_05.png 750w,\n/static/70801d1cf0778b63b022c58e167483bf/e5839/plakat_2018_05.png 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/f51d5/plakat_2018_05.png 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/84817/plakat_2018_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/70801d1cf0778b63b022c58e167483bf/e5d6f/plakat_2018_05.webp 750w,\n/static/70801d1cf0778b63b022c58e167483bf/0671f/plakat_2018_05.webp 1080w,\n/static/70801d1cf0778b63b022c58e167483bf/7e884/plakat_2018_05.webp 1366w,\n/static/70801d1cf0778b63b022c58e167483bf/e2c0d/plakat_2018_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen."}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","fields":{"slug":"/talks/2018-04-25-kotlin/"},"frontmatter":{"title":"Kotlin","speaker":["tobias_blaschke"],"poster":{"childImageSharp":{"id":"1a259f6b-01d1-58d9-9813-e4fb56a34153","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8b808","images":{"fallback":{"src":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png","srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0e3b9/plakat_2018_04.png 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e5839/plakat_2018_04.png 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/006ba/plakat_2018_04.png 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/84817/plakat_2018_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/7425eb2154d8ac0def6b6a91b1bc7b2d/ebc34/plakat_2018_04.webp 750w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/0671f/plakat_2018_04.webp 1080w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/659f9/plakat_2018_04.webp 1366w,\n/static/7425eb2154d8ac0def6b6a91b1bc7b2d/e2c0d/plakat_2018_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"},"frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","speaker":["stefan_zoerner"],"poster":{"childImageSharp":{"id":"96d1873a-e218-5bea-9d77-8dc2e42dbbc6","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#082868","images":{"fallback":{"src":"/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png","srcSet":"/static/6067d1db118af9c9218894cda3ecec37/0e3b9/plakat_2018_03.png 750w,\n/static/6067d1db118af9c9218894cda3ecec37/e5839/plakat_2018_03.png 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/006ba/plakat_2018_03.png 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/84817/plakat_2018_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/6067d1db118af9c9218894cda3ecec37/ebc34/plakat_2018_03.webp 750w,\n/static/6067d1db118af9c9218894cda3ecec37/0671f/plakat_2018_03.webp 1080w,\n/static/6067d1db118af9c9218894cda3ecec37/659f9/plakat_2018_03.webp 1366w,\n/static/6067d1db118af9c9218894cda3ecec37/e2c0d/plakat_2018_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen freut sich und hält einen Bauplan in der Hand."}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"},"frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","speaker":["jens_leuschner","mariusz_zienkiewicz"],"poster":{"childImageSharp":{"id":"65d7329c-3fb6-5a77-8b25-3984a599f9e8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#78b8b8","images":{"fallback":{"src":"/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png","srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/0e3b9/plakat_2018_02.png 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/e5839/plakat_2018_02.png 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/006ba/plakat_2018_02.png 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/84817/plakat_2018_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/55c9a31f3c453bcd2592f54f307655df/ebc34/plakat_2018_02.webp 750w,\n/static/55c9a31f3c453bcd2592f54f307655df/0671f/plakat_2018_02.webp 1080w,\n/static/55c9a31f3c453bcd2592f54f307655df/659f9/plakat_2018_02.webp 1366w,\n/static/55c9a31f3c453bcd2592f54f307655df/e2c0d/plakat_2018_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol."}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","fields":{"slug":"/talks/2018-01-31-system_of_systems/"},"frontmatter":{"title":"Refactoring to a System of Systems","speaker":["oliver_drotbohm"],"poster":{"childImageSharp":{"id":"9685adbf-d27b-5f98-934a-54d7dc3fcdb8","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#383898","images":{"fallback":{"src":"/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png","srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/0e3b9/plakat_2018_01.png 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/e5839/plakat_2018_01.png 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/242cd/plakat_2018_01.png 1241w","sizes":"100vw"},"sources":[{"srcSet":"/static/88afeee4b9b4d069f5896633d252a8d6/ebc34/plakat_2018_01.webp 750w,\n/static/88afeee4b9b4d069f5896633d252a8d6/0671f/plakat_2018_01.webp 1080w,\n/static/88afeee4b9b4d069f5896633d252a8d6/cbc2f/plakat_2018_01.webp 1241w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4141821112006447}}},"poster_alt":"Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet."}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","fields":{"slug":"/talks/2017-11-29-neo4j/"},"frontmatter":{"title":"Neo4j: Panama Papers","speaker":["michael_hunger"],"poster":{"childImageSharp":{"id":"0d8148d9-9587-5da3-aaf0-f92c5603d344","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#587828","images":{"fallback":{"src":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png","srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/0e3b9/plakat_2017_11.png 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e5839/plakat_2017_11.png 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/006ba/plakat_2017_11.png 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/84817/plakat_2017_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/b722dd1b2e5bde00c9706fb3bb19bd30/ebc34/plakat_2017_11.webp 750w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/0671f/plakat_2017_11.webp 1080w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/659f9/plakat_2017_11.webp 1366w,\n/static/b722dd1b2e5bde00c9706fb3bb19bd30/e2c0d/plakat_2017_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir."}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","fields":{"slug":"/talks/2017-10-25-serverless/"},"frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","speaker":["lars_roewekamp"],"poster":{"childImageSharp":{"id":"754076b2-57c3-5796-89f2-711200e78c58","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#389858","images":{"fallback":{"src":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png","srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/b2ce9/plakat_2017_10.png 661w","sizes":"100vw"},"sources":[{"srcSet":"/static/2d68f12104a5e2d317ff8ac24a6467cc/fa5c8/plakat_2017_10.webp 661w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145234493192134}}},"poster_alt":"Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand."}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","fields":{"slug":"/talks/2017-08-30-alexa/"},"frontmatter":{"title":"Spracherkennung mit Amazon Alexa","speaker":["andre_tepper","maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"5992b283-78cd-5625-9878-de0f4300018d","fields":{"slug":"/posts/2017-07-21-grillen/"},"frontmatter":{"title":"JUG Sommerpause: Grillen","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","fields":{"slug":"/talks/2017-05-31-react/"},"frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"6b8717ce-a995-58f6-82e5-62fb5ef3cca9","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#58c8d8","images":{"fallback":{"src":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png","srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/f1722/plakat_2017_05.png 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/3e58d/plakat_2017_05.png 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8b6fa/plakat_2017_05.png 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/a2ae3/plakat_2017_05.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/55786/plakat_2017_05.webp 750w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/8631a/plakat_2017_05.webp 1080w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/9b1f9/plakat_2017_05.webp 1366w,\n/static/fa2d3177d3e90a7f1a2b98a6f02b90b5/fc882/plakat_2017_05.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4119791666666668}}},"poster_alt":"Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen."}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","fields":{"slug":"/talks/2017-04-26-jdk9/"},"frontmatter":{"title":"JDK 9","speaker":["wolfgang_weigend"],"poster":{"childImageSharp":{"id":"2573407c-9387-55d4-81ac-f02dffdbfe14","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#38a838","images":{"fallback":{"src":"/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png","srcSet":"/static/68885bd1bc71b7c02926be143e289b72/0e3b9/plakat_2017_04.png 750w,\n/static/68885bd1bc71b7c02926be143e289b72/e5839/plakat_2017_04.png 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/006ba/plakat_2017_04.png 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/84817/plakat_2017_04.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/68885bd1bc71b7c02926be143e289b72/ebc34/plakat_2017_04.webp 750w,\n/static/68885bd1bc71b7c02926be143e289b72/0671f/plakat_2017_04.webp 1080w,\n/static/68885bd1bc71b7c02926be143e289b72/659f9/plakat_2017_04.webp 1366w,\n/static/68885bd1bc71b7c02926be143e289b72/e2c0d/plakat_2017_04.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java."}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","fields":{"slug":"/talks/2017-03-22-angular/"},"frontmatter":{"title":"Angular 2 für Java Entwickler","speaker":["sven_hoffmann"],"poster":{"childImageSharp":{"id":"eddd4dc5-4156-509b-bf5c-e09b0c5c330e","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#084858","images":{"fallback":{"src":"/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png","srcSet":"/static/402904640aadf345c0f4e136c31ec42a/0e3b9/plakat_2017_03.png 750w,\n/static/402904640aadf345c0f4e136c31ec42a/e5839/plakat_2017_03.png 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/006ba/plakat_2017_03.png 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/84817/plakat_2017_03.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/402904640aadf345c0f4e136c31ec42a/ebc34/plakat_2017_03.webp 750w,\n/static/402904640aadf345c0f4e136c31ec42a/0671f/plakat_2017_03.webp 1080w,\n/static/402904640aadf345c0f4e136c31ec42a/659f9/plakat_2017_03.webp 1366w,\n/static/402904640aadf345c0f4e136c31ec42a/e2c0d/plakat_2017_03.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht."}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","fields":{"slug":"/talks/2017-02-22-css/"},"frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","speaker":["uwe_manteuffel"],"poster":{"childImageSharp":{"id":"f98f07d3-05f0-5b44-a8c4-f59df52e978d","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#087868","images":{"fallback":{"src":"/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png","srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/0e3b9/plakat_2017_02.png 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e5839/plakat_2017_02.png 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/006ba/plakat_2017_02.png 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/84817/plakat_2017_02.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/17a163b60d0c34cbe1f0cc72f8380225/ebc34/plakat_2017_02.webp 750w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/0671f/plakat_2017_02.webp 1080w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/659f9/plakat_2017_02.webp 1366w,\n/static/17a163b60d0c34cbe1f0cc72f8380225/e2c0d/plakat_2017_02.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel."}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","fields":{"slug":"/talks/2017-01-25-junit5/"},"frontmatter":{"title":"JUnit 5","speaker":["stefan_bley"],"poster":{"childImageSharp":{"id":"389f1a05-558e-58a8-a8f2-8f0f783fbb5f","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#3868c8","images":{"fallback":{"src":"/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png","srcSet":"/static/c46109cdd380f6d96989746b9b268b59/0e3b9/plakat_2017_01.png 750w,\n/static/c46109cdd380f6d96989746b9b268b59/e5839/plakat_2017_01.png 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/006ba/plakat_2017_01.png 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/84817/plakat_2017_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/c46109cdd380f6d96989746b9b268b59/ebc34/plakat_2017_01.webp 750w,\n/static/c46109cdd380f6d96989746b9b268b59/0671f/plakat_2017_01.webp 1080w,\n/static/c46109cdd380f6d96989746b9b268b59/659f9/plakat_2017_01.webp 1366w,\n/static/c46109cdd380f6d96989746b9b268b59/e2c0d/plakat_2017_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","fields":{"slug":"/talks/2016-11-30-inside_jvm/"},"frontmatter":{"title":"Inside JVM","speaker":["michael_wiedeking"],"poster":{"childImageSharp":{"id":"d5ac0466-71cb-5950-ad4c-692645dec780","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#185818","images":{"fallback":{"src":"/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png","srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/0e3b9/plakat_2016_11.png 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e5839/plakat_2016_11.png 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/006ba/plakat_2016_11.png 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/84817/plakat_2016_11.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/df12c15a6674e50adc8ef8427b49c6e7/ebc34/plakat_2016_11.webp 750w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/0671f/plakat_2016_11.webp 1080w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/659f9/plakat_2016_11.webp 1366w,\n/static/df12c15a6674e50adc8ef8427b49c6e7/e2c0d/plakat_2016_11.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4140625}}},"poster_alt":"Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich."}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"},"frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","speaker":["daniel_sernow"],"poster":{"childImageSharp":{"id":"d76f475f-a8c8-5319-96d2-a1474885f516","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#788818","images":{"fallback":{"src":"/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png","srcSet":"/static/614b8174b903933ed9c7392c29039be7/0e3b9/plakat_2016_09.png 750w,\n/static/614b8174b903933ed9c7392c29039be7/7aaf4/plakat_2016_09.png 1080w,\n/static/614b8174b903933ed9c7392c29039be7/006ba/plakat_2016_09.png 1366w,\n/static/614b8174b903933ed9c7392c29039be7/b6707/plakat_2016_09.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/614b8174b903933ed9c7392c29039be7/ebc34/plakat_2016_09.webp 750w,\n/static/614b8174b903933ed9c7392c29039be7/47da9/plakat_2016_09.webp 1080w,\n/static/614b8174b903933ed9c7392c29039be7/659f9/plakat_2016_09.webp 1366w,\n/static/614b8174b903933ed9c7392c29039be7/c86cf/plakat_2016_09.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"},"frontmatter":{"title":"Testwerkzeuge für JavaFX","speaker":["kay_grebenstein"],"poster":null,"poster_alt":null}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"},"frontmatter":{"title":"Performance-Analyse mit inspectIT","speaker":["mario_mann"],"poster":{"childImageSharp":{"id":"34708531-529f-5d8b-9a4f-7e69705d60db","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#880818","images":{"fallback":{"src":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png","srcSet":"/static/db7f178be40d0c331569338538d31bac/5ffd7/plakat_2016_05.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/db7f178be40d0c331569338538d31bac/874d1/plakat_2016_05.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert."}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","fields":{"slug":"/talks/2016-03-30-haskell_frege/"},"frontmatter":{"title":"Haskell und Frege","speaker":["manuel_mauky"],"poster":{"childImageSharp":{"id":"5c9d56a7-72a3-5960-83a9-42dc599be063","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#588888","images":{"fallback":{"src":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png","srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/5ffd7/plakat_2016_03.png 744w","sizes":"100vw"},"sources":[{"srcSet":"/static/64acc764c3779735c4ad382e9f9c0e6e/874d1/plakat_2016_03.webp 744w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4139784946236558}}},"poster_alt":"Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","fields":{"slug":"/talks/2016-01-27-functional_java/"},"frontmatter":{"title":"Funktionale Programmierung mit Java","speaker":["manuel_mauky","max_wielsch"],"poster":{"childImageSharp":{"id":"627917ce-c50f-59e9-98d8-4897b4f220c5","gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d86838","images":{"fallback":{"src":"/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png","srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/0e3b9/plakat_2016_01.png 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/7aaf4/plakat_2016_01.png 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/006ba/plakat_2016_01.png 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/b6707/plakat_2016_01.png 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/1c76b19b6896e55dd13bb48cd2313b20/ebc34/plakat_2016_01.webp 750w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/47da9/plakat_2016_01.webp 1080w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/659f9/plakat_2016_01.webp 1366w,\n/static/1c76b19b6896e55dd13bb48cd2313b20/c86cf/plakat_2016_01.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.4145833333333333}}},"poster_alt":"Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen."}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","fields":{"slug":"/talks/2015-11-25-javafx-mobile/"},"frontmatter":{"title":"JavaFX auf Mobile","speaker":["stefan_heinze","stefan_barth"],"poster":null,"poster_alt":null}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","fields":{"slug":"/talks/2015-09-30-guava/"},"frontmatter":{"title":"Guava","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","fields":{"slug":"/talks/2015-07-29-drools/"},"frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","speaker":["paul_weinhold"],"poster":null,"poster_alt":null}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","fields":{"slug":"/talks/2015-05-27-advanced-android/"},"frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","fields":{"slug":"/talks/2015-03-25-android/"},"frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","fields":{"slug":"/talks/2015-01-28-moskito/"},"frontmatter":{"title":"MoSKito - Monitoring Framework","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","fields":{"slug":"/talks/2014-12-03-model-view-star/"},"frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"},"frontmatter":{"title":"Infrastructure as Code","speaker":["bruno_devic"],"poster":null,"poster_alt":null}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","fields":{"slug":"/talks/2014-09-24-solr/"},"frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","fields":{"slug":"/talks/2014-07-30-java8-streams/"},"frontmatter":{"title":"Java8 - Streams und Lambdas","speaker":["paul_weinhold"],"poster":null,"poster_alt":null}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","fields":{"slug":"/talks/2014-05-28-hazelcast/"},"frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","speaker":["steffen_seidler"],"poster":null,"poster_alt":null}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","fields":{"slug":"/talks/2014-04-02-assertj/"},"frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","fields":{"slug":"/talks/2014-01-29-opendip/"},"frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","fields":{"slug":"/talks/2013-11-27-web-performance/"},"frontmatter":{"title":"Performance-Optimierung im Web","speaker":["maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"02896017-da1f-5c03-b52f-41790bbfe7e7","fields":{"slug":"/posts/2013-10-30-poster/"},"frontmatter":{"title":"JUG-GR Poster","speaker":null,"poster":null,"poster_alt":null}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","fields":{"slug":"/talks/2013-10-30-app-design/"},"frontmatter":{"title":"Modernes App-Design am Beispiel von Android","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","fields":{"slug":"/talks/2013-07-31-persona/"},"frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","speaker":["marlene_knoche"],"poster":null,"poster_alt":null}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","fields":{"slug":"/talks/2013-05-29-jruby/"},"frontmatter":{"title":"JRuby - Ruby auf der Java VM","speaker":["sebastian_schmeck"],"poster":null,"poster_alt":null}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","fields":{"slug":"/talks/2013-03-27-nxt_lego/"},"frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","speaker":["erik_jaehne"],"poster":null,"poster_alt":null}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","fields":{"slug":"/talks/2012-11-28-javafx2/"},"frontmatter":{"title":"JavaFX 2","speaker":["alexander_casall","michael_thiele"],"poster":null,"poster_alt":null}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","fields":{"slug":"/talks/2012-09-26-bean_validation/"},"frontmatter":{"title":"JSR-303 BeanValidation","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","fields":{"slug":"/talks/2012-07-25-selenium_praxis/"},"frontmatter":{"title":"Selenium/Webdriver in der Praxis","speaker":["maik_wagner"],"poster":null,"poster_alt":null}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","fields":{"slug":"/talks/2012-06-27-gridgain/"},"frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","speaker":["mario_reichel"],"poster":null,"poster_alt":null}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"},"frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","speaker":["hans_markwart"],"poster":null,"poster_alt":null}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","fields":{"slug":"/talks/2012-04-25-maven/"},"frontmatter":{"title":"Maven","speaker":["thomas_storch"],"poster":null,"poster_alt":null}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","fields":{"slug":"/talks/2012-03-28-webtests/"},"frontmatter":{"title":"Webtests mit Selenium","speaker":["marcus_doering"],"poster":null,"poster_alt":null}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","fields":{"slug":"/talks/2012-02-29-scala_webapps/"},"frontmatter":{"title":"Webentwicklung mit Scala","speaker":["stefan_bradl"],"poster":null,"poster_alt":null}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"},"frontmatter":{"title":"Advanced JSF und CDI","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","fields":{"slug":"/talks/2012-01-01-hibernate/"},"frontmatter":{"title":"JPA - Hibernate","speaker":["marko_modsching"],"poster":null,"poster_alt":null}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","fields":{"slug":"/talks/2011-11-30-jsf-cdi/"},"frontmatter":{"title":"JavaServer Faces 2 und CDI","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","fields":{"slug":"/talks/2011-10-26-android/"},"frontmatter":{"title":"Android","speaker":["max_wielsch"],"poster":null,"poster_alt":null}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","fields":{"slug":"/talks/2011-09-28-jdom/"},"frontmatter":{"title":"JDOM","speaker":["mark_ziener"],"poster":null,"poster_alt":null}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","fields":{"slug":"/talks/2011-09-28-single-sign-on/"},"frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","speaker":["mario_reichel"],"poster":null,"poster_alt":null}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","fields":{"slug":"/talks/2011-08-31-testen/"},"frontmatter":{"title":"Testen - Patterns und Best Practices","speaker":["marko_modsching"],"poster":null,"poster_alt":null}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","fields":{"slug":"/talks/2011-07-27-scala/"},"frontmatter":{"title":"Scala","speaker":["stefan_bradl"],"poster":null,"poster_alt":null}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","fields":{"slug":"/talks/2011-07-27-testng/"},"frontmatter":{"title":"TestNG","speaker":["marcus_doering"],"poster":null,"poster_alt":null}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","fields":{"slug":"/talks/2011-06-29-javaee_jboss/"},"frontmatter":{"title":"JavaEE und JBoss","speaker":["michael_foerster"],"poster":null,"poster_alt":null}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","fields":{"slug":"/talks/2011-05-27-guice/"},"frontmatter":{"title":"Google Guice","speaker":["robert_wirbs"],"poster":null,"poster_alt":null}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","fields":{"slug":"/talks/2011-04-27-gwt/"},"frontmatter":{"title":"GWT - Google Web Toolkit","speaker":["ingo_koerner"],"poster":null,"poster_alt":null}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","fields":{"slug":"/talks/2011-04-27-osgi_springdm/"},"frontmatter":{"title":"OSGi mit SpringDM","speaker":["manuel_mauky"],"poster":null,"poster_alt":null}}},{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","fields":{"slug":"/talks/2011-03-22-easymock/"},"frontmatter":{"title":"EasyMock","speaker":["richard_hauswald"],"poster":null,"poster_alt":null}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","fields":{"slug":"/talks/2011-03-22-jenkins/"},"frontmatter":{"title":"Jenkins/Hudson","speaker":["stefan_scheumann"],"poster":null,"poster_alt":null}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/speakers/manuel_mauky/page-data.json b/page-data/speakers/manuel_mauky/page-data.json index 4e2a5d578..e33511780 100644 --- a/page-data/speakers/manuel_mauky/page-data.json +++ b/page-data/speakers/manuel_mauky/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-templates-speaker-page-tsx","path":"/speakers/manuel_mauky/","result":{"data":{"speaker":{"html":"

Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten\nder Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale\nProgrammierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz\nund steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.

","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky","twitter_name":"manuel_mauky","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#c8d8e8","images":{"fallback":{"src":"/static/c80baf199647599d13cde2f183750fd7/fa8a0/manuel_mauky.jpg","srcSet":"/static/c80baf199647599d13cde2f183750fd7/01ec6/manuel_mauky.jpg 100w,\n/static/c80baf199647599d13cde2f183750fd7/14355/manuel_mauky.jpg 200w,\n/static/c80baf199647599d13cde2f183750fd7/fa8a0/manuel_mauky.jpg 400w,\n/static/c80baf199647599d13cde2f183750fd7/0f6a8/manuel_mauky.jpg 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/c80baf199647599d13cde2f183750fd7/616bf/manuel_mauky.webp 100w,\n/static/c80baf199647599d13cde2f183750fd7/99dc1/manuel_mauky.webp 200w,\n/static/c80baf199647599d13cde2f183750fd7/c5339/manuel_mauky.webp 400w,\n/static/c80baf199647599d13cde2f183750fd7/c533d/manuel_mauky.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":526}}}}},"talks":{"edges":[{"node":{"fields":{"slug":"/talks/2023-09-27-kollaborative-anwendungen/"},"frontmatter":{"title":"Kollaborative Anwendungen und 'local first apps'","date":"2023-09-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2021-01-27-webcomponents/"},"frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2019-03-27-static-site-generators/"},"frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2018-06-27-immutable-data/"},"frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2017-05-31-react/"},"frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2016-03-30-haskell_frege/"},"frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2016-01-27-functional_java/"},"frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2014-12-03-model-view-star/"},"frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2014-04-02-assertj/"},"frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2012-09-26-bean_validation/"},"frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"},"frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"},"frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"},"frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z"}}}]}},"pageContext":{"speakerSlug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-templates-speaker-page-tsx","path":"/speakers/manuel_mauky/","result":{"data":{"speaker":{"html":"

Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten\nder Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale\nProgrammierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz\nund steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.

","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky","twitter_name":"manuel_mauky","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#c8d8e8","images":{"fallback":{"src":"/static/c80baf199647599d13cde2f183750fd7/fa8a0/manuel_mauky.jpg","srcSet":"/static/c80baf199647599d13cde2f183750fd7/01ec6/manuel_mauky.jpg 100w,\n/static/c80baf199647599d13cde2f183750fd7/14355/manuel_mauky.jpg 200w,\n/static/c80baf199647599d13cde2f183750fd7/fa8a0/manuel_mauky.jpg 400w,\n/static/c80baf199647599d13cde2f183750fd7/0f6a8/manuel_mauky.jpg 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/c80baf199647599d13cde2f183750fd7/616bf/manuel_mauky.webp 100w,\n/static/c80baf199647599d13cde2f183750fd7/99dc1/manuel_mauky.webp 200w,\n/static/c80baf199647599d13cde2f183750fd7/c5339/manuel_mauky.webp 400w,\n/static/c80baf199647599d13cde2f183750fd7/c533d/manuel_mauky.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":526}}}}},"talks":{"edges":[{"node":{"fields":{"slug":"/talks/2021-01-27-webcomponents/"},"frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2019-03-27-static-site-generators/"},"frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2018-06-27-immutable-data/"},"frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2017-05-31-react/"},"frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2016-03-30-haskell_frege/"},"frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2016-01-27-functional_java/"},"frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2014-12-03-model-view-star/"},"frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2014-04-02-assertj/"},"frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2012-09-26-bean_validation/"},"frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"},"frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"},"frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z"}}},{"node":{"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"},"frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z"}}}]}},"pageContext":{"speakerSlug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/speakers/page-data.json b/page-data/speakers/page-data.json index e4fc05a0f..a7afae503 100644 --- a/page-data/speakers/page-data.json +++ b/page-data/speakers/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-speakers-tsx","path":"/speakers/","result":{"data":{"speakers":{"edges":[{"node":{"fields":{"slug":"/speakers/alexander_casall/","speakerId":"alexander_casall"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"fields":{"slug":"/speakers/andre_tepper/","speakerId":"andre_tepper"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"fields":{"slug":"/speakers/bruno_devic/","speakerId":"bruno_devic"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"fields":{"slug":"/speakers/christian_kuemmel/","speakerId":"christian_kuemmel"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"fields":{"slug":"/speakers/damian_dudziec/","speakerId":"damian_dudziec"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"fields":{"slug":"/speakers/daniel_fesenmeyer/","speakerId":"daniel_fesenmeyer"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"fields":{"slug":"/speakers/daniel_sernow/","speakerId":"daniel_sernow"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"fields":{"slug":"/speakers/daniel_sulyok/","speakerId":"daniel_sulyok"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"fields":{"slug":"/speakers/denny_israel/","speakerId":"denny_israel"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"fields":{"slug":"/speakers/erik_jaehne/","speakerId":"erik_jaehne"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"fields":{"slug":"/speakers/gerrit_grundwald/","speakerId":"gerrit_grundwald"},"frontmatter":{"name":"Gerrit Grundwald"}}},{"node":{"fields":{"slug":"/speakers/gregor_trefs/","speakerId":"gregor_trefs"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"fields":{"slug":"/speakers/hannes_kretschmer/","speakerId":"hannes_kretschmer"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"fields":{"slug":"/speakers/hans_markwart/","speakerId":"hans_markwart"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"fields":{"slug":"/speakers/hendrik_ebbers/","speakerId":"hendrik_ebbers"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"fields":{"slug":"/speakers/ingo_koerner/","speakerId":"ingo_koerner"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"fields":{"slug":"/speakers/jens_leuschner/","speakerId":"jens_leuschner"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"fields":{"slug":"/speakers/kay_grebenstein/","speakerId":"kay_grebenstein"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"fields":{"slug":"/speakers/lars_roewekamp/","speakerId":"lars_roewekamp"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"fields":{"slug":"/speakers/maik_wagner/","speakerId":"maik_wagner"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"fields":{"slug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"fields":{"slug":"/speakers/marco_gotthans/","speakerId":"marco_gotthans"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"fields":{"slug":"/speakers/marcus_doering/","speakerId":"marcus_doering"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"fields":{"slug":"/speakers/mario_mann/","speakerId":"mario_mann"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"fields":{"slug":"/speakers/mario_reichel/","speakerId":"mario_reichel"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"fields":{"slug":"/speakers/mariusz_zienkiewicz/","speakerId":"mariusz_zienkiewicz"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"fields":{"slug":"/speakers/mark_ziener/","speakerId":"mark_ziener"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"fields":{"slug":"/speakers/marko_modsching/","speakerId":"marko_modsching"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"fields":{"slug":"/speakers/markus_kett/","speakerId":"markus_kett"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"fields":{"slug":"/speakers/markus_weiland/","speakerId":"markus_weiland"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"fields":{"slug":"/speakers/marlene_knoche/","speakerId":"marlene_knoche"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"fields":{"slug":"/speakers/max_wielsch/","speakerId":"max_wielsch"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"fields":{"slug":"/speakers/michael_foerster/","speakerId":"michael_foerster"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"fields":{"slug":"/speakers/michael_hunger/","speakerId":"michael_hunger"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"fields":{"slug":"/speakers/michael_thiele/","speakerId":"michael_thiele"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"fields":{"slug":"/speakers/michael_wiedeking/","speakerId":"michael_wiedeking"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"fields":{"slug":"/speakers/nico_foerster/","speakerId":"nico_foerster"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"fields":{"slug":"/speakers/oliver_drotbohm/","speakerId":"oliver_drotbohm"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"fields":{"slug":"/speakers/paul_weinhold/","speakerId":"paul_weinhold"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"fields":{"slug":"/speakers/pawel_adaszewski/","speakerId":"pawel_adaszewski"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"fields":{"slug":"/speakers/richard_hauswald/","speakerId":"richard_hauswald"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"fields":{"slug":"/speakers/robert_wirbs/","speakerId":"robert_wirbs"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"fields":{"slug":"/speakers/roland_weisleder/","speakerId":"roland_weisleder"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"fields":{"slug":"/speakers/sebastian_schmeck/","speakerId":"sebastian_schmeck"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"fields":{"slug":"/speakers/sergej_tihonov/","speakerId":"sergej_tihonov"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"fields":{"slug":"/speakers/simon_roloff/","speakerId":"simon_roloff"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"fields":{"slug":"/speakers/stefan_barth/","speakerId":"stefan_barth"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"fields":{"slug":"/speakers/stefan_bley/","speakerId":"stefan_bley"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"fields":{"slug":"/speakers/stefan_bradl/","speakerId":"stefan_bradl"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"fields":{"slug":"/speakers/stefan_heinze/","speakerId":"stefan_heinze"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"fields":{"slug":"/speakers/stefan_scheumann/","speakerId":"stefan_scheumann"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"fields":{"slug":"/speakers/stefan_zoerner/","speakerId":"stefan_zoerner"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"fields":{"slug":"/speakers/steffen_seidler/","speakerId":"steffen_seidler"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"fields":{"slug":"/speakers/stephan_strehler/","speakerId":"stephan_strehler"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"fields":{"slug":"/speakers/sven_hoffmann/","speakerId":"sven_hoffmann"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"fields":{"slug":"/speakers/thilo_frotscher/","speakerId":"thilo_frotscher"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"fields":{"slug":"/speakers/thomas_storch/","speakerId":"thomas_storch"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"fields":{"slug":"/speakers/tobias_blaschke/","speakerId":"tobias_blaschke"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"fields":{"slug":"/speakers/uwe_manteuffel/","speakerId":"uwe_manteuffel"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"fields":{"slug":"/speakers/wolfgang_weigend/","speakerId":"wolfgang_weigend"},"frontmatter":{"name":"Wolfgang Weigend"}}}]},"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"speaker":["richard_hauswald"]}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"speaker":["stefan_scheumann"]}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"speaker":["ingo_koerner"]}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"speaker":["robert_wirbs"]}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"speaker":["michael_foerster"]}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"speaker":["stefan_bradl"]}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"speaker":["marcus_doering"]}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"speaker":["marko_modsching"]}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"speaker":["mark_ziener"]}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"speaker":["mario_reichel"]}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"speaker":["marko_modsching"]}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"speaker":["stefan_bradl"]}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"speaker":["marcus_doering"]}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"speaker":["thomas_storch"]}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"speaker":["hans_markwart"]}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"speaker":["mario_reichel"]}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"speaker":["alexander_casall","michael_thiele"]}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"speaker":["erik_jaehne"]}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"speaker":["sebastian_schmeck"]}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"speaker":["marlene_knoche"]}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"speaker":["paul_weinhold"]}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"speaker":["bruno_devic"]}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"speaker":["paul_weinhold"]}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"speaker":["stefan_heinze","stefan_barth"]}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"speaker":["manuel_mauky","max_wielsch"]}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"speaker":["mario_mann"]}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"speaker":["kay_grebenstein"]}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"speaker":["daniel_sernow"]}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"speaker":["michael_wiedeking"]}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"speaker":["stefan_bley"]}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"speaker":["uwe_manteuffel"]}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"speaker":["sven_hoffmann"]}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"speaker":["andre_tepper","maik_wagner"]}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"speaker":["lars_roewekamp"]}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"speaker":["michael_hunger"]}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"speaker":["oliver_drotbohm"]}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"speaker":["jens_leuschner","mariusz_zienkiewicz"]}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"speaker":["stefan_zoerner"]}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"speaker":["tobias_blaschke"]}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"speaker":["stephan_strehler"]}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"speaker":["gregor_trefs"]}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"speaker":["hendrik_ebbers"]}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"speaker":["erik_jaehne"]}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"speaker":["denny_israel"]}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"speaker":["thilo_frotscher"]}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"speaker":["simon_roloff"]}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"speaker":["hannes_kretschmer"]}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"speaker":["nico_foerster"]}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"speaker":["markus_kett","christian_kuemmel"]}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"speaker":["pawel_adaszewski"]}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"speaker":["marco_gotthans"]}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"speaker":["daniel_fesenmeyer"]}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"speaker":["markus_weiland"]}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"speaker":["sergej_tihonov"]}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"speaker":["oliver_drotbohm"]}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"speaker":["roland_weisleder"]}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"speaker":["daniel_sulyok"]}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"5bfff80b-ea15-5ee9-8b28-c9449c05ca8c","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","frontmatter":{"speaker":["pawel_adaszewski","damian_dudziec"]}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"speaker":["gerrit_grundwald"]}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-speakers-tsx","path":"/speakers/","result":{"data":{"speakers":{"edges":[{"node":{"fields":{"slug":"/speakers/alexander_casall/","speakerId":"alexander_casall"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"fields":{"slug":"/speakers/andre_tepper/","speakerId":"andre_tepper"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"fields":{"slug":"/speakers/bruno_devic/","speakerId":"bruno_devic"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"fields":{"slug":"/speakers/christian_kuemmel/","speakerId":"christian_kuemmel"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"fields":{"slug":"/speakers/damian_dudziec/","speakerId":"damian_dudziec"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"fields":{"slug":"/speakers/daniel_fesenmeyer/","speakerId":"daniel_fesenmeyer"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"fields":{"slug":"/speakers/daniel_sernow/","speakerId":"daniel_sernow"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"fields":{"slug":"/speakers/daniel_sulyok/","speakerId":"daniel_sulyok"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"fields":{"slug":"/speakers/denny_israel/","speakerId":"denny_israel"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"fields":{"slug":"/speakers/erik_jaehne/","speakerId":"erik_jaehne"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"fields":{"slug":"/speakers/gerrit_grundwald/","speakerId":"gerrit_grundwald"},"frontmatter":{"name":"Gerrit Grundwald"}}},{"node":{"fields":{"slug":"/speakers/gregor_trefs/","speakerId":"gregor_trefs"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"fields":{"slug":"/speakers/hannes_kretschmer/","speakerId":"hannes_kretschmer"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"fields":{"slug":"/speakers/hendrik_ebbers/","speakerId":"hendrik_ebbers"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"fields":{"slug":"/speakers/hans_markwart/","speakerId":"hans_markwart"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"fields":{"slug":"/speakers/ingo_koerner/","speakerId":"ingo_koerner"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"fields":{"slug":"/speakers/jens_leuschner/","speakerId":"jens_leuschner"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"fields":{"slug":"/speakers/kay_grebenstein/","speakerId":"kay_grebenstein"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"fields":{"slug":"/speakers/lars_roewekamp/","speakerId":"lars_roewekamp"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"fields":{"slug":"/speakers/maik_wagner/","speakerId":"maik_wagner"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"fields":{"slug":"/speakers/manuel_mauky/","speakerId":"manuel_mauky"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"fields":{"slug":"/speakers/marco_gotthans/","speakerId":"marco_gotthans"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"fields":{"slug":"/speakers/marcus_doering/","speakerId":"marcus_doering"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"fields":{"slug":"/speakers/mario_mann/","speakerId":"mario_mann"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"fields":{"slug":"/speakers/mario_reichel/","speakerId":"mario_reichel"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"fields":{"slug":"/speakers/mariusz_zienkiewicz/","speakerId":"mariusz_zienkiewicz"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"fields":{"slug":"/speakers/mark_ziener/","speakerId":"mark_ziener"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"fields":{"slug":"/speakers/marko_modsching/","speakerId":"marko_modsching"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"fields":{"slug":"/speakers/markus_kett/","speakerId":"markus_kett"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"fields":{"slug":"/speakers/markus_weiland/","speakerId":"markus_weiland"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"fields":{"slug":"/speakers/marlene_knoche/","speakerId":"marlene_knoche"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"fields":{"slug":"/speakers/max_wielsch/","speakerId":"max_wielsch"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"fields":{"slug":"/speakers/michael_foerster/","speakerId":"michael_foerster"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"fields":{"slug":"/speakers/michael_hunger/","speakerId":"michael_hunger"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"fields":{"slug":"/speakers/michael_thiele/","speakerId":"michael_thiele"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"fields":{"slug":"/speakers/michael_wiedeking/","speakerId":"michael_wiedeking"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"fields":{"slug":"/speakers/nico_foerster/","speakerId":"nico_foerster"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"fields":{"slug":"/speakers/oliver_drotbohm/","speakerId":"oliver_drotbohm"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"fields":{"slug":"/speakers/patryk_lewandowski/","speakerId":"patryk_lewandowski"},"frontmatter":{"name":"Patryk Lewandowski"}}},{"node":{"fields":{"slug":"/speakers/paul_weinhold/","speakerId":"paul_weinhold"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"fields":{"slug":"/speakers/pawel_adaszewski/","speakerId":"pawel_adaszewski"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"fields":{"slug":"/speakers/richard_hauswald/","speakerId":"richard_hauswald"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"fields":{"slug":"/speakers/robert_wirbs/","speakerId":"robert_wirbs"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"fields":{"slug":"/speakers/roland_weisleder/","speakerId":"roland_weisleder"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"fields":{"slug":"/speakers/sebastian_schmeck/","speakerId":"sebastian_schmeck"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"fields":{"slug":"/speakers/sergej_tihonov/","speakerId":"sergej_tihonov"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"fields":{"slug":"/speakers/simon_roloff/","speakerId":"simon_roloff"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"fields":{"slug":"/speakers/stefan_barth/","speakerId":"stefan_barth"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"fields":{"slug":"/speakers/stefan_bley/","speakerId":"stefan_bley"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"fields":{"slug":"/speakers/stefan_bradl/","speakerId":"stefan_bradl"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"fields":{"slug":"/speakers/stefan_heinze/","speakerId":"stefan_heinze"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"fields":{"slug":"/speakers/stefan_scheumann/","speakerId":"stefan_scheumann"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"fields":{"slug":"/speakers/stefan_zoerner/","speakerId":"stefan_zoerner"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"fields":{"slug":"/speakers/steffen_seidler/","speakerId":"steffen_seidler"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"fields":{"slug":"/speakers/stephan_strehler/","speakerId":"stephan_strehler"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"fields":{"slug":"/speakers/sven_hoffmann/","speakerId":"sven_hoffmann"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"fields":{"slug":"/speakers/thilo_frotscher/","speakerId":"thilo_frotscher"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"fields":{"slug":"/speakers/thomas_storch/","speakerId":"thomas_storch"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"fields":{"slug":"/speakers/tobias_blaschke/","speakerId":"tobias_blaschke"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"fields":{"slug":"/speakers/uwe_manteuffel/","speakerId":"uwe_manteuffel"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"fields":{"slug":"/speakers/wolfgang_weigend/","speakerId":"wolfgang_weigend"},"frontmatter":{"name":"Wolfgang Weigend"}}}]},"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"speaker":["richard_hauswald"]}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"speaker":["stefan_scheumann"]}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"speaker":["ingo_koerner"]}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"speaker":["robert_wirbs"]}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"speaker":["michael_foerster"]}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"speaker":["stefan_bradl"]}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"speaker":["marko_modsching"]}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"speaker":["marcus_doering"]}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"speaker":["mark_ziener"]}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"speaker":["mario_reichel"]}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"speaker":["marko_modsching"]}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"speaker":["stefan_bradl"]}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"speaker":["marcus_doering"]}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"speaker":["thomas_storch"]}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"speaker":["hans_markwart"]}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"speaker":["mario_reichel"]}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"speaker":["alexander_casall","michael_thiele"]}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"speaker":["erik_jaehne"]}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"speaker":["sebastian_schmeck"]}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"speaker":["marlene_knoche"]}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"speaker":["paul_weinhold"]}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"speaker":["bruno_devic"]}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"speaker":["max_wielsch"]}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"speaker":["paul_weinhold"]}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"speaker":["steffen_seidler"]}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"speaker":["stefan_heinze","stefan_barth"]}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"speaker":["manuel_mauky","max_wielsch"]}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"speaker":["mario_mann"]}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"speaker":["kay_grebenstein"]}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"speaker":["daniel_sernow"]}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"speaker":["michael_wiedeking"]}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"speaker":["stefan_bley"]}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"speaker":["uwe_manteuffel"]}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"speaker":["sven_hoffmann"]}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"speaker":["andre_tepper","maik_wagner"]}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"speaker":["lars_roewekamp"]}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"speaker":["michael_hunger"]}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"speaker":["oliver_drotbohm"]}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"speaker":["jens_leuschner","mariusz_zienkiewicz"]}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"speaker":["stefan_zoerner"]}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"speaker":["tobias_blaschke"]}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"speaker":["stephan_strehler"]}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"speaker":["gregor_trefs"]}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"speaker":["hendrik_ebbers"]}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"speaker":["erik_jaehne"]}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"speaker":["denny_israel"]}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"speaker":["thilo_frotscher"]}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"speaker":["maik_wagner"]}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"speaker":["simon_roloff"]}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"speaker":["hannes_kretschmer"]}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"speaker":["nico_foerster"]}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"speaker":["manuel_mauky"]}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"speaker":["markus_kett","christian_kuemmel"]}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"speaker":["pawel_adaszewski"]}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"speaker":["marco_gotthans"]}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"speaker":["daniel_fesenmeyer"]}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"speaker":["markus_weiland"]}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"speaker":["sergej_tihonov"]}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"speaker":["oliver_drotbohm"]}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"speaker":["roland_weisleder"]}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"speaker":["daniel_sulyok"]}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"speaker":["wolfgang_weigend"]}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"speaker":["patryk_lewandowski"]}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","frontmatter":{"speaker":["pawel_adaszewski","damian_dudziec"]}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"speaker":["gerrit_grundwald"]}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/speakers/patryk_lewandowski/page-data.json b/page-data/speakers/patryk_lewandowski/page-data.json new file mode 100644 index 000000000..4be6bd908 --- /dev/null +++ b/page-data/speakers/patryk_lewandowski/page-data.json @@ -0,0 +1 @@ +{"componentChunkName":"component---src-templates-speaker-page-tsx","path":"/speakers/patryk_lewandowski/","result":{"data":{"speaker":{"html":"","fields":{"slug":"/speakers/patryk_lewandowski/"},"frontmatter":{"name":"Patryk Lewandowski","twitter_name":null,"pic":null}},"talks":{"edges":[{"node":{"fields":{"slug":"/talks/2023-09-27-virtual-threads/"},"frontmatter":{"title":"Java 21: Virtual Threads - Why should I care?","date":"2023-09-27T00:00:00.000Z"}}}]}},"pageContext":{"speakerSlug":"/speakers/patryk_lewandowski/","speakerId":"patryk_lewandowski"}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/tags/page-data.json b/page-data/tags/page-data.json index 88ccecd27..a5ea8a1da 100644 --- a/page-data/tags/page-data.json +++ b/page-data/tags/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-tags-tsx","path":"/tags/","result":{"data":{"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","tags":["testen"],"speaker":["richard_hauswald"]},"fields":{"slug":"/talks/2011-03-22-easymock/"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","tags":["build-management"],"speaker":["stefan_scheumann"]},"fields":{"slug":"/talks/2011-03-22-jenkins/"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","tags":["web","frontend"],"speaker":["ingo_koerner"]},"fields":{"slug":"/talks/2011-04-27-gwt/"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","tags":null,"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","tags":["patterns"],"speaker":["robert_wirbs"]},"fields":{"slug":"/talks/2011-05-27-guice/"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","tags":["javaee"],"speaker":["michael_foerster"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2011-07-27-scala/"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","tags":["testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2011-07-27-testng/"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","tags":["testen","patterns"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2011-08-31-testen/"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","tags":["xml"],"speaker":["mark_ziener"]},"fields":{"slug":"/talks/2011-09-28-jdom/"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","tags":["security"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2011-10-26-android/"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","tags":["database","javaee"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2012-01-01-hibernate/"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","tags":["frontend","web","programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","tags":["frontend","web","testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2012-03-28-webtests/"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","tags":["build-management"],"speaker":["thomas_storch"]},"fields":{"slug":"/talks/2012-04-25-maven/"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","tags":["frontend"],"speaker":["hans_markwart"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","tags":["cluster"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2012-06-27-gridgain/"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","tags":["web","frontend","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","tags":["javaee"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","tags":["frontend","javafx"],"speaker":["alexander_casall","michael_thiele"]},"fields":{"slug":"/talks/2012-11-28-javafx2/"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","tags":["hardware","roboter"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["sebastian_schmeck"]},"fields":{"slug":"/talks/2013-05-29-jruby/"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","tags":["frontend","softwareentwicklung"],"speaker":["marlene_knoche"]},"fields":{"slug":"/talks/2013-07-31-persona/"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","tags":["frontend","mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2013-10-30-app-design/"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","tags":["web","performance"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2013-11-27-web-performance/"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","tags":["integration","platform","softwareentwicklung"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2014-01-29-opendip/"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","tags":["junit","testen"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-04-02-assertj/"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","tags":["cluster"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","tags":["java","functional-programming"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","tags":["database"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-09-24-solr/"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","tags":["devops"],"speaker":["bruno_devic"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","tags":["frontend","patterns"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","tags":["web","monitoring"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-01-28-moskito/"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","tags":["android","mobile"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-03-25-android/"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","tags":["dsl"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2015-07-29-drools/"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","tags":["java"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-09-30-guava/"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","tags":["frontend","javafx","mobile","android"],"speaker":["stefan_heinze","stefan_barth"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","tags":["java","functional-programming"],"speaker":["manuel_mauky","max_wielsch"]},"fields":{"slug":"/talks/2016-01-27-functional_java/"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","tags":["performance","monitoring"],"speaker":["mario_mann"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","tags":["javafx","testen"],"speaker":["kay_grebenstein"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","tags":["testen","softwareentwicklung"],"speaker":["daniel_sernow"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","tags":["java"],"speaker":["michael_wiedeking"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","tags":["testen","junit"],"speaker":["stefan_bley"]},"fields":{"slug":"/talks/2017-01-25-junit5/"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","tags":["frontend","web"],"speaker":["uwe_manteuffel"]},"fields":{"slug":"/talks/2017-02-22-css/"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","tags":["frontend","web","javascript"],"speaker":["sven_hoffmann"]},"fields":{"slug":"/talks/2017-03-22-angular/"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2017-04-26-jdk9/"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","tags":["frontend","javascript","web","mobile","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2017-05-31-react/"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","tags":["ki"],"speaker":["andre_tepper","maik_wagner"]},"fields":{"slug":"/talks/2017-08-30-alexa/"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","tags":["architektur"],"speaker":["lars_roewekamp"]},"fields":{"slug":"/talks/2017-10-25-serverless/"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","tags":["database"],"speaker":["michael_hunger"]},"fields":{"slug":"/talks/2017-11-29-neo4j/"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","tags":["cloud"],"speaker":["jens_leuschner","mariusz_zienkiewicz"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","tags":["architektur"],"speaker":["stefan_zoerner"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["tobias_blaschke"]},"fields":{"slug":"/talks/2018-04-25-kotlin/"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","tags":["programmiersprachen","web","architektur"],"speaker":["stephan_strehler"]},"fields":{"slug":"/talks/2018-05-30-graphql/"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","tags":["functional-programming"],"speaker":["gregor_trefs"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","tags":["java"],"speaker":["hendrik_ebbers"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","tags":["java"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2019-02-27_reflection/"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","tags":["web","javascript"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","tags":["java","security"],"speaker":["denny_israel"]},"fields":{"slug":"/talks/2019-05-29-oauth/"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","tags":["java"],"speaker":["thilo_frotscher"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","tags":["java","test"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","tags":["cloud"],"speaker":["simon_roloff"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","tags":["java"],"speaker":["hannes_kretschmer"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","tags":["java","security"],"speaker":["nico_foerster"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","tags":["web"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","tags":["web"],"speaker":["markus_kett","christian_kuemmel"]},"fields":{"slug":"/talks/2021-06-30-microstream/"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","tags":["cloud","iot","serverless","infrastructure"],"speaker":["pawel_adaszewski"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","tags":["cloud","iot","industrie4.0","infrastructure"],"speaker":["marco_gotthans"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","tags":["security"],"speaker":["daniel_fesenmeyer"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","tags":["platform","web"],"speaker":["markus_weiland"]},"fields":{"slug":"/talks/2023-01-25-contentlab/"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","tags":["architektur"],"speaker":["sergej_tihonov"]},"fields":{"slug":"/talks/2023-02-22-exception_first/"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","tags":["architektur","test"],"speaker":["roland_weisleder"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","tags":["java"],"speaker":["daniel_sulyok"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/"}}},{"node":{"id":"5bfff80b-ea15-5ee9-8b28-c9449c05ca8c","frontmatter":{"title":"Kollaborative Anwendungen und 'local first apps'","date":"2023-09-27T00:00:00.000Z","tags":[],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2023-09-27-kollaborative-anwendungen/"}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","tags":["java","cloud"],"speaker":["pawel_adaszewski","damian_dudziec"]},"fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","tags":[],"speaker":["gerrit_grundwald"]},"fields":{"slug":"/talks/2023-11-29-crac/"}}}]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","fields":{"slug":"/speakers/alexander_casall/"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","fields":{"slug":"/speakers/andre_tepper/"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","fields":{"slug":"/speakers/bruno_devic/"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","fields":{"slug":"/speakers/christian_kuemmel/"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","fields":{"slug":"/speakers/damian_dudziec/"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","fields":{"slug":"/speakers/daniel_fesenmeyer/"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","fields":{"slug":"/speakers/daniel_sernow/"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","fields":{"slug":"/speakers/daniel_sulyok/"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","fields":{"slug":"/speakers/denny_israel/"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","fields":{"slug":"/speakers/erik_jaehne/"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"id":"dcff0301-b7e2-57b8-93a7-219a768e06e5","fields":{"slug":"/speakers/gerrit_grundwald/"},"frontmatter":{"name":"Gerrit Grundwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","fields":{"slug":"/speakers/gregor_trefs/"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","fields":{"slug":"/speakers/hannes_kretschmer/"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","fields":{"slug":"/speakers/hans_markwart/"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","fields":{"slug":"/speakers/hendrik_ebbers/"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","fields":{"slug":"/speakers/ingo_koerner/"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","fields":{"slug":"/speakers/jens_leuschner/"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","fields":{"slug":"/speakers/kay_grebenstein/"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","fields":{"slug":"/speakers/lars_roewekamp/"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","fields":{"slug":"/speakers/maik_wagner/"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","fields":{"slug":"/speakers/marco_gotthans/"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","fields":{"slug":"/speakers/marcus_doering/"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","fields":{"slug":"/speakers/mario_mann/"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","fields":{"slug":"/speakers/mario_reichel/"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","fields":{"slug":"/speakers/mariusz_zienkiewicz/"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","fields":{"slug":"/speakers/mark_ziener/"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","fields":{"slug":"/speakers/marko_modsching/"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","fields":{"slug":"/speakers/markus_kett/"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","fields":{"slug":"/speakers/markus_weiland/"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","fields":{"slug":"/speakers/marlene_knoche/"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","fields":{"slug":"/speakers/max_wielsch/"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","fields":{"slug":"/speakers/michael_foerster/"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","fields":{"slug":"/speakers/michael_hunger/"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","fields":{"slug":"/speakers/michael_thiele/"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","fields":{"slug":"/speakers/michael_wiedeking/"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","fields":{"slug":"/speakers/nico_foerster/"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","fields":{"slug":"/speakers/oliver_drotbohm/"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","fields":{"slug":"/speakers/paul_weinhold/"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","fields":{"slug":"/speakers/pawel_adaszewski/"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","fields":{"slug":"/speakers/richard_hauswald/"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","fields":{"slug":"/speakers/robert_wirbs/"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","fields":{"slug":"/speakers/roland_weisleder/"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","fields":{"slug":"/speakers/sebastian_schmeck/"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","fields":{"slug":"/speakers/sergej_tihonov/"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","fields":{"slug":"/speakers/simon_roloff/"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","fields":{"slug":"/speakers/stefan_barth/"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","fields":{"slug":"/speakers/stefan_bley/"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","fields":{"slug":"/speakers/stefan_bradl/"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","fields":{"slug":"/speakers/stefan_heinze/"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","fields":{"slug":"/speakers/stefan_scheumann/"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","fields":{"slug":"/speakers/stefan_zoerner/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","fields":{"slug":"/speakers/steffen_seidler/"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","fields":{"slug":"/speakers/stephan_strehler/"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","fields":{"slug":"/speakers/sven_hoffmann/"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","fields":{"slug":"/speakers/thilo_frotscher/"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","fields":{"slug":"/speakers/thomas_storch/"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","fields":{"slug":"/speakers/tobias_blaschke/"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","fields":{"slug":"/speakers/uwe_manteuffel/"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","fields":{"slug":"/speakers/wolfgang_weigend/"},"frontmatter":{"name":"Wolfgang Weigend"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-tags-tsx","path":"/tags/","result":{"data":{"talks":{"edges":[{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","tags":["testen"],"speaker":["richard_hauswald"]},"fields":{"slug":"/talks/2011-03-22-easymock/"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","tags":["build-management"],"speaker":["stefan_scheumann"]},"fields":{"slug":"/talks/2011-03-22-jenkins/"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","tags":["web","frontend"],"speaker":["ingo_koerner"]},"fields":{"slug":"/talks/2011-04-27-gwt/"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","tags":null,"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","tags":["patterns"],"speaker":["robert_wirbs"]},"fields":{"slug":"/talks/2011-05-27-guice/"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","tags":["javaee"],"speaker":["michael_foerster"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2011-07-27-scala/"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","tags":["testen","patterns"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2011-08-31-testen/"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","tags":["testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2011-07-27-testng/"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","tags":["xml"],"speaker":["mark_ziener"]},"fields":{"slug":"/talks/2011-09-28-jdom/"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","tags":["security"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2011-10-26-android/"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","tags":["database","javaee"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2012-01-01-hibernate/"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","tags":["frontend","web","programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","tags":["frontend","web","testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2012-03-28-webtests/"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","tags":["build-management"],"speaker":["thomas_storch"]},"fields":{"slug":"/talks/2012-04-25-maven/"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","tags":["frontend"],"speaker":["hans_markwart"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","tags":["cluster"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2012-06-27-gridgain/"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","tags":["web","frontend","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","tags":["javaee"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","tags":["frontend","javafx"],"speaker":["alexander_casall","michael_thiele"]},"fields":{"slug":"/talks/2012-11-28-javafx2/"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","tags":["hardware","roboter"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["sebastian_schmeck"]},"fields":{"slug":"/talks/2013-05-29-jruby/"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","tags":["frontend","softwareentwicklung"],"speaker":["marlene_knoche"]},"fields":{"slug":"/talks/2013-07-31-persona/"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","tags":["frontend","mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2013-10-30-app-design/"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","tags":["web","performance"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2013-11-27-web-performance/"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","tags":["integration","platform","softwareentwicklung"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2014-01-29-opendip/"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","tags":["junit","testen"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-04-02-assertj/"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","tags":["cluster"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","tags":["java","functional-programming"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","tags":["database"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-09-24-solr/"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","tags":["devops"],"speaker":["bruno_devic"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","tags":["frontend","patterns"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","tags":["web","monitoring"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-01-28-moskito/"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","tags":["android","mobile"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-03-25-android/"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","tags":["dsl"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2015-07-29-drools/"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","tags":["java"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-09-30-guava/"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","tags":["frontend","javafx","mobile","android"],"speaker":["stefan_heinze","stefan_barth"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","tags":["java","functional-programming"],"speaker":["manuel_mauky","max_wielsch"]},"fields":{"slug":"/talks/2016-01-27-functional_java/"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","tags":["performance","monitoring"],"speaker":["mario_mann"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","tags":["javafx","testen"],"speaker":["kay_grebenstein"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","tags":["testen","softwareentwicklung"],"speaker":["daniel_sernow"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","tags":["java"],"speaker":["michael_wiedeking"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","tags":["testen","junit"],"speaker":["stefan_bley"]},"fields":{"slug":"/talks/2017-01-25-junit5/"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","tags":["frontend","web"],"speaker":["uwe_manteuffel"]},"fields":{"slug":"/talks/2017-02-22-css/"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","tags":["frontend","web","javascript"],"speaker":["sven_hoffmann"]},"fields":{"slug":"/talks/2017-03-22-angular/"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2017-04-26-jdk9/"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","tags":["frontend","javascript","web","mobile","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2017-05-31-react/"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","tags":["ki"],"speaker":["andre_tepper","maik_wagner"]},"fields":{"slug":"/talks/2017-08-30-alexa/"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","tags":["architektur"],"speaker":["lars_roewekamp"]},"fields":{"slug":"/talks/2017-10-25-serverless/"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","tags":["database"],"speaker":["michael_hunger"]},"fields":{"slug":"/talks/2017-11-29-neo4j/"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","tags":["cloud"],"speaker":["jens_leuschner","mariusz_zienkiewicz"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","tags":["architektur"],"speaker":["stefan_zoerner"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","tags":["programmiersprachen"],"speaker":["tobias_blaschke"]},"fields":{"slug":"/talks/2018-04-25-kotlin/"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","tags":["programmiersprachen","web","architektur"],"speaker":["stephan_strehler"]},"fields":{"slug":"/talks/2018-05-30-graphql/"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","tags":["functional-programming"],"speaker":["gregor_trefs"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","tags":["java"],"speaker":["hendrik_ebbers"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","tags":["java"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2019-02-27_reflection/"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","tags":["web","javascript"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","tags":["java","security"],"speaker":["denny_israel"]},"fields":{"slug":"/talks/2019-05-29-oauth/"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","tags":["java"],"speaker":["thilo_frotscher"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","tags":["java","test"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","tags":["cloud"],"speaker":["simon_roloff"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","tags":["java"],"speaker":["hannes_kretschmer"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","tags":["java","security"],"speaker":["nico_foerster"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","tags":["web"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","tags":["web"],"speaker":["markus_kett","christian_kuemmel"]},"fields":{"slug":"/talks/2021-06-30-microstream/"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","tags":["cloud","iot","serverless","infrastructure"],"speaker":["pawel_adaszewski"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","tags":["cloud","iot","industrie4.0","infrastructure"],"speaker":["marco_gotthans"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","tags":["security"],"speaker":["daniel_fesenmeyer"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","tags":["platform","web"],"speaker":["markus_weiland"]},"fields":{"slug":"/talks/2023-01-25-contentlab/"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","tags":["architektur"],"speaker":["sergej_tihonov"]},"fields":{"slug":"/talks/2023-02-22-exception_first/"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","tags":["architektur","test"],"speaker":["roland_weisleder"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","tags":["java"],"speaker":["daniel_sulyok"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"title":"Java 21: Virtual Threads - Why should I care?","date":"2023-09-27T00:00:00.000Z","tags":[],"speaker":["patryk_lewandowski"]},"fields":{"slug":"/talks/2023-09-27-virtual-threads/"}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","tags":["java","cloud"],"speaker":["pawel_adaszewski","damian_dudziec"]},"fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/"}}},{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","tags":[],"speaker":["gerrit_grundwald"]},"fields":{"slug":"/talks/2023-11-29-crac/"}}}]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","fields":{"slug":"/speakers/alexander_casall/"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","fields":{"slug":"/speakers/andre_tepper/"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","fields":{"slug":"/speakers/bruno_devic/"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","fields":{"slug":"/speakers/christian_kuemmel/"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","fields":{"slug":"/speakers/damian_dudziec/"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","fields":{"slug":"/speakers/daniel_fesenmeyer/"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","fields":{"slug":"/speakers/daniel_sernow/"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","fields":{"slug":"/speakers/daniel_sulyok/"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","fields":{"slug":"/speakers/denny_israel/"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","fields":{"slug":"/speakers/erik_jaehne/"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"id":"dcff0301-b7e2-57b8-93a7-219a768e06e5","fields":{"slug":"/speakers/gerrit_grundwald/"},"frontmatter":{"name":"Gerrit Grundwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","fields":{"slug":"/speakers/gregor_trefs/"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","fields":{"slug":"/speakers/hannes_kretschmer/"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","fields":{"slug":"/speakers/hendrik_ebbers/"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","fields":{"slug":"/speakers/hans_markwart/"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","fields":{"slug":"/speakers/ingo_koerner/"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","fields":{"slug":"/speakers/jens_leuschner/"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","fields":{"slug":"/speakers/kay_grebenstein/"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","fields":{"slug":"/speakers/lars_roewekamp/"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","fields":{"slug":"/speakers/maik_wagner/"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","fields":{"slug":"/speakers/marco_gotthans/"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","fields":{"slug":"/speakers/marcus_doering/"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","fields":{"slug":"/speakers/mario_mann/"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","fields":{"slug":"/speakers/mario_reichel/"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","fields":{"slug":"/speakers/mariusz_zienkiewicz/"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","fields":{"slug":"/speakers/mark_ziener/"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","fields":{"slug":"/speakers/marko_modsching/"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","fields":{"slug":"/speakers/markus_kett/"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","fields":{"slug":"/speakers/markus_weiland/"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","fields":{"slug":"/speakers/marlene_knoche/"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","fields":{"slug":"/speakers/max_wielsch/"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","fields":{"slug":"/speakers/michael_foerster/"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","fields":{"slug":"/speakers/michael_hunger/"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","fields":{"slug":"/speakers/michael_thiele/"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","fields":{"slug":"/speakers/michael_wiedeking/"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","fields":{"slug":"/speakers/nico_foerster/"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","fields":{"slug":"/speakers/oliver_drotbohm/"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","fields":{"slug":"/speakers/patryk_lewandowski/"},"frontmatter":{"name":"Patryk Lewandowski"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","fields":{"slug":"/speakers/paul_weinhold/"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","fields":{"slug":"/speakers/pawel_adaszewski/"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","fields":{"slug":"/speakers/richard_hauswald/"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","fields":{"slug":"/speakers/robert_wirbs/"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","fields":{"slug":"/speakers/roland_weisleder/"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","fields":{"slug":"/speakers/sebastian_schmeck/"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","fields":{"slug":"/speakers/sergej_tihonov/"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","fields":{"slug":"/speakers/simon_roloff/"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","fields":{"slug":"/speakers/stefan_barth/"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","fields":{"slug":"/speakers/stefan_bley/"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","fields":{"slug":"/speakers/stefan_bradl/"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","fields":{"slug":"/speakers/stefan_heinze/"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","fields":{"slug":"/speakers/stefan_scheumann/"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","fields":{"slug":"/speakers/stefan_zoerner/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","fields":{"slug":"/speakers/steffen_seidler/"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","fields":{"slug":"/speakers/stephan_strehler/"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","fields":{"slug":"/speakers/sven_hoffmann/"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","fields":{"slug":"/speakers/thilo_frotscher/"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","fields":{"slug":"/speakers/thomas_storch/"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","fields":{"slug":"/speakers/tobias_blaschke/"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","fields":{"slug":"/speakers/uwe_manteuffel/"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","fields":{"slug":"/speakers/wolfgang_weigend/"},"frontmatter":{"name":"Wolfgang Weigend"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/talks/2023-09-27-kollaborative-anwendungen/page-data.json b/page-data/talks/2023-09-27-kollaborative-anwendungen/page-data.json deleted file mode 100644 index 7c81c5a9c..000000000 --- a/page-data/talks/2023-09-27-kollaborative-anwendungen/page-data.json +++ /dev/null @@ -1 +0,0 @@ -{"componentChunkName":"component---src-templates-talk-page-tsx","path":"/talks/2023-09-27-kollaborative-anwendungen/","result":{"data":{"talk":{"html":"

Wie funktionieren eigentlich kollaborative Web-Anwendungen, bei denen mehrere Leute gleichzeitig an den gleichen\nDokumenten arbeiten können? Live-Kollaboration bieten Anwendungen wie Google-Docs schon seit Langem. Das Verfahren,\nwelches hier zum Einsatz kommt, setzt aber immer einen zentralen Server voraus, was für die Anwender*innen auch\nNachteile mit sich bringt.

\n

Eine moderne Alternative können so genannte \"Conflict-Free Replicated DataTypes\", kurz CRDT sein. Anwendungen auf dieser\nBasis können prinzipiell auch ohne eine zentrale Instanz auskommen. Im Vortrag wollen wir uns die verschiedenen\nVarianten anschauen und sehen, wie sich damit Anwendungen bauen lassen, die moderne Annehmlichkeiten wie\nLive-Kollaboration, Synchronisierung zwischen Geräten und Offline-Fähigkeit bieten, ohne dabei zwingend auf eine\nzentrale Cloud angewiesen zu sein.

","fields":{"slug":"/talks/2023-09-27-kollaborative-anwendungen/"},"frontmatter":{"title":"Kollaborative Anwendungen und 'local first apps'","date":"2023-09-27T00:00:00.000Z","time":null,"virtual":null,"tags":[],"poster":null,"poster_alt":null}},"speakers":{"edges":[{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","html":"

Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten\nder Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale\nProgrammierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz\nund steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.

","frontmatter":{"name":"Manuel Mauky","pic":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#c8d8e8","images":{"fallback":{"src":"/static/c80baf199647599d13cde2f183750fd7/fa8a0/manuel_mauky.jpg","srcSet":"/static/c80baf199647599d13cde2f183750fd7/01ec6/manuel_mauky.jpg 100w,\n/static/c80baf199647599d13cde2f183750fd7/14355/manuel_mauky.jpg 200w,\n/static/c80baf199647599d13cde2f183750fd7/fa8a0/manuel_mauky.jpg 400w,\n/static/c80baf199647599d13cde2f183750fd7/0f6a8/manuel_mauky.jpg 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/c80baf199647599d13cde2f183750fd7/616bf/manuel_mauky.webp 100w,\n/static/c80baf199647599d13cde2f183750fd7/99dc1/manuel_mauky.webp 200w,\n/static/c80baf199647599d13cde2f183750fd7/c5339/manuel_mauky.webp 400w,\n/static/c80baf199647599d13cde2f183750fd7/c533d/manuel_mauky.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":526}}},"twitter_name":"manuel_mauky"},"fields":{"slug":"/speakers/manuel_mauky/"}}}]},"location":{"fields":{"slug":"/locations/zeiss/"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}},"pageContext":{"slug":"/talks/2023-09-27-kollaborative-anwendungen/","speakerSlugs":["/speakers/manuel_mauky/"],"locationSlug":"/locations/zeiss/"}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/talks/2023-09-27-virtual-threads/page-data.json b/page-data/talks/2023-09-27-virtual-threads/page-data.json new file mode 100644 index 000000000..e25661c6e --- /dev/null +++ b/page-data/talks/2023-09-27-virtual-threads/page-data.json @@ -0,0 +1 @@ +{"componentChunkName":"component---src-templates-talk-page-tsx","path":"/talks/2023-09-27-virtual-threads/","result":{"data":{"talk":{"html":"

In September 2023 the latest version of JDK 21 will be officially released. During this lecture we will look into most\nimportant changes in Java Development Kit and their impact on everyday use of the Java Language. In particular, we will\ndive into performance impact of virtual threads and their comparison to existing solutions, the further improvements in\nrecently introduced record objects and also look into the future plans for Java.

","fields":{"slug":"/talks/2023-09-27-virtual-threads/"},"frontmatter":{"title":"Java 21: Virtual Threads - Why should I care?","date":"2023-09-27T00:00:00.000Z","time":null,"virtual":null,"tags":[],"poster":null,"poster_alt":null}},"speakers":{"edges":[{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","html":"","frontmatter":{"name":"Patryk Lewandowski","pic":null,"twitter_name":null},"fields":{"slug":"/speakers/patryk_lewandowski/"}}}]},"location":{"fields":{"slug":"/locations/zeiss/"},"frontmatter":{"name":"Carl Zeiss Digital Innovation","number":"63","info":null,"zip":"02826","city":"Görlitz","street":"Berliner Straße"}}},"pageContext":{"slug":"/talks/2023-09-27-virtual-threads/","speakerSlugs":["/speakers/patryk_lewandowski/"],"locationSlug":"/locations/zeiss/"}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/talks/page-data.json b/page-data/talks/page-data.json index eb3bb3778..5c36b5490 100644 --- a/page-data/talks/page-data.json +++ b/page-data/talks/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-talks-tsx","path":"/talks/","result":{"data":{"talks":{"edges":[{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","time":null,"virtual":null,"tags":[],"speaker":["gerrit_grundwald"]},"fields":{"slug":"/talks/2023-11-29-crac/"}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","time":null,"virtual":null,"tags":["java","cloud"],"speaker":["pawel_adaszewski","damian_dudziec"]},"fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/"}}},{"node":{"id":"5bfff80b-ea15-5ee9-8b28-c9449c05ca8c","frontmatter":{"title":"Kollaborative Anwendungen und 'local first apps'","date":"2023-09-27T00:00:00.000Z","time":null,"virtual":null,"tags":[],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2023-09-27-kollaborative-anwendungen/"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["daniel_sulyok"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur","test"],"speaker":["roland_weisleder"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","time":"18:30","virtual":null,"tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["sergej_tihonov"]},"fields":{"slug":"/talks/2023-02-22-exception_first/"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["platform","web"],"speaker":["markus_weiland"]},"fields":{"slug":"/talks/2023-01-25-contentlab/"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["security"],"speaker":["daniel_fesenmeyer"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud","iot","industrie4.0","infrastructure"],"speaker":["marco_gotthans"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud","iot","serverless","infrastructure"],"speaker":["pawel_adaszewski"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","time":null,"virtual":true,"tags":["web"],"speaker":["markus_kett","christian_kuemmel"]},"fields":{"slug":"/talks/2021-06-30-microstream/"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","time":null,"virtual":true,"tags":["web"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","time":null,"virtual":true,"tags":["java","security"],"speaker":["nico_foerster"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","time":null,"virtual":true,"tags":["java"],"speaker":["hannes_kretschmer"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","time":"18:00","virtual":true,"tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud"],"speaker":["simon_roloff"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","time":null,"virtual":null,"tags":["java","test"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["thilo_frotscher"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","time":null,"virtual":null,"tags":["java","security"],"speaker":["denny_israel"]},"fields":{"slug":"/talks/2019-05-29-oauth/"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","javascript"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2019-02-27_reflection/"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["hendrik_ebbers"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","time":null,"virtual":null,"tags":["functional-programming"],"speaker":["gregor_trefs"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","web","architektur"],"speaker":["stephan_strehler"]},"fields":{"slug":"/talks/2018-05-30-graphql/"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["tobias_blaschke"]},"fields":{"slug":"/talks/2018-04-25-kotlin/"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["stefan_zoerner"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud"],"speaker":["jens_leuschner","mariusz_zienkiewicz"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","time":null,"virtual":null,"tags":["database"],"speaker":["michael_hunger"]},"fields":{"slug":"/talks/2017-11-29-neo4j/"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["lars_roewekamp"]},"fields":{"slug":"/talks/2017-10-25-serverless/"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","time":null,"virtual":null,"tags":["ki"],"speaker":["andre_tepper","maik_wagner"]},"fields":{"slug":"/talks/2017-08-30-alexa/"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javascript","web","mobile","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2017-05-31-react/"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2017-04-26-jdk9/"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javascript"],"speaker":["sven_hoffmann"]},"fields":{"slug":"/talks/2017-03-22-angular/"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web"],"speaker":["uwe_manteuffel"]},"fields":{"slug":"/talks/2017-02-22-css/"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","junit"],"speaker":["stefan_bley"]},"fields":{"slug":"/talks/2017-01-25-junit5/"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["michael_wiedeking"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","softwareentwicklung"],"speaker":["daniel_sernow"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["javafx","testen"],"speaker":["kay_grebenstein"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","time":null,"virtual":null,"tags":["performance","monitoring"],"speaker":["mario_mann"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java","functional-programming"],"speaker":["manuel_mauky","max_wielsch"]},"fields":{"slug":"/talks/2016-01-27-functional_java/"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javafx","mobile","android"],"speaker":["stefan_heinze","stefan_barth"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-09-30-guava/"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","time":null,"virtual":null,"tags":["dsl"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2015-07-29-drools/"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","time":null,"virtual":null,"tags":["android","mobile"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-03-25-android/"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","time":null,"virtual":null,"tags":["web","monitoring"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-01-28-moskito/"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","patterns"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","time":null,"virtual":null,"tags":["devops"],"speaker":["bruno_devic"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","time":null,"virtual":null,"tags":["database"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-09-24-solr/"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java","functional-programming"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","time":null,"virtual":null,"tags":["cluster"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","time":null,"virtual":null,"tags":["junit","testen"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-04-02-assertj/"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","time":null,"virtual":null,"tags":["integration","platform","softwareentwicklung"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2014-01-29-opendip/"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","performance"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2013-11-27-web-performance/"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2013-10-30-app-design/"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","softwareentwicklung"],"speaker":["marlene_knoche"]},"fields":{"slug":"/talks/2013-07-31-persona/"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["sebastian_schmeck"]},"fields":{"slug":"/talks/2013-05-29-jruby/"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","time":null,"virtual":null,"tags":["hardware","roboter"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javafx"],"speaker":["alexander_casall","michael_thiele"]},"fields":{"slug":"/talks/2012-11-28-javafx2/"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","time":null,"virtual":null,"tags":["javaee"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","time":null,"virtual":null,"tags":["web","frontend","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","time":null,"virtual":null,"tags":["cluster"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2012-06-27-gridgain/"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend"],"speaker":["hans_markwart"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["build-management"],"speaker":["thomas_storch"]},"fields":{"slug":"/talks/2012-04-25-maven/"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2012-03-28-webtests/"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","time":null,"virtual":null,"tags":["database","javaee"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2012-01-01-hibernate/"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2011-10-26-android/"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","time":null,"virtual":null,"tags":["xml"],"speaker":["mark_ziener"]},"fields":{"slug":"/talks/2011-09-28-jdom/"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","time":null,"virtual":null,"tags":["security"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","patterns"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2011-08-31-testen/"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2011-07-27-scala/"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2011-07-27-testng/"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","time":null,"virtual":null,"tags":["javaee"],"speaker":["michael_foerster"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","time":null,"virtual":null,"tags":["patterns"],"speaker":["robert_wirbs"]},"fields":{"slug":"/talks/2011-05-27-guice/"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","frontend"],"speaker":["ingo_koerner"]},"fields":{"slug":"/talks/2011-04-27-gwt/"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","time":null,"virtual":null,"tags":null,"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"}}},{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["testen"],"speaker":["richard_hauswald"]},"fields":{"slug":"/talks/2011-03-22-easymock/"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["build-management"],"speaker":["stefan_scheumann"]},"fields":{"slug":"/talks/2011-03-22-jenkins/"}}}]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","fields":{"slug":"/speakers/alexander_casall/"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","fields":{"slug":"/speakers/andre_tepper/"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","fields":{"slug":"/speakers/bruno_devic/"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","fields":{"slug":"/speakers/christian_kuemmel/"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","fields":{"slug":"/speakers/damian_dudziec/"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","fields":{"slug":"/speakers/daniel_fesenmeyer/"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","fields":{"slug":"/speakers/daniel_sernow/"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","fields":{"slug":"/speakers/daniel_sulyok/"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","fields":{"slug":"/speakers/denny_israel/"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","fields":{"slug":"/speakers/erik_jaehne/"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"id":"dcff0301-b7e2-57b8-93a7-219a768e06e5","fields":{"slug":"/speakers/gerrit_grundwald/"},"frontmatter":{"name":"Gerrit Grundwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","fields":{"slug":"/speakers/gregor_trefs/"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","fields":{"slug":"/speakers/hannes_kretschmer/"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","fields":{"slug":"/speakers/hans_markwart/"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","fields":{"slug":"/speakers/hendrik_ebbers/"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","fields":{"slug":"/speakers/ingo_koerner/"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","fields":{"slug":"/speakers/jens_leuschner/"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","fields":{"slug":"/speakers/kay_grebenstein/"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","fields":{"slug":"/speakers/lars_roewekamp/"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","fields":{"slug":"/speakers/maik_wagner/"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","fields":{"slug":"/speakers/marco_gotthans/"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","fields":{"slug":"/speakers/marcus_doering/"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","fields":{"slug":"/speakers/mario_mann/"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","fields":{"slug":"/speakers/mario_reichel/"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","fields":{"slug":"/speakers/mariusz_zienkiewicz/"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","fields":{"slug":"/speakers/mark_ziener/"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","fields":{"slug":"/speakers/marko_modsching/"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","fields":{"slug":"/speakers/markus_kett/"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","fields":{"slug":"/speakers/markus_weiland/"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","fields":{"slug":"/speakers/marlene_knoche/"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","fields":{"slug":"/speakers/max_wielsch/"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","fields":{"slug":"/speakers/michael_foerster/"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","fields":{"slug":"/speakers/michael_hunger/"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","fields":{"slug":"/speakers/michael_thiele/"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","fields":{"slug":"/speakers/michael_wiedeking/"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","fields":{"slug":"/speakers/nico_foerster/"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","fields":{"slug":"/speakers/oliver_drotbohm/"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","fields":{"slug":"/speakers/paul_weinhold/"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","fields":{"slug":"/speakers/pawel_adaszewski/"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","fields":{"slug":"/speakers/richard_hauswald/"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","fields":{"slug":"/speakers/robert_wirbs/"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","fields":{"slug":"/speakers/roland_weisleder/"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","fields":{"slug":"/speakers/sebastian_schmeck/"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","fields":{"slug":"/speakers/sergej_tihonov/"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","fields":{"slug":"/speakers/simon_roloff/"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","fields":{"slug":"/speakers/stefan_barth/"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","fields":{"slug":"/speakers/stefan_bley/"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","fields":{"slug":"/speakers/stefan_bradl/"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","fields":{"slug":"/speakers/stefan_heinze/"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","fields":{"slug":"/speakers/stefan_scheumann/"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","fields":{"slug":"/speakers/stefan_zoerner/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","fields":{"slug":"/speakers/steffen_seidler/"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","fields":{"slug":"/speakers/stephan_strehler/"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","fields":{"slug":"/speakers/sven_hoffmann/"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","fields":{"slug":"/speakers/thilo_frotscher/"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","fields":{"slug":"/speakers/thomas_storch/"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","fields":{"slug":"/speakers/tobias_blaschke/"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","fields":{"slug":"/speakers/uwe_manteuffel/"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","fields":{"slug":"/speakers/wolfgang_weigend/"},"frontmatter":{"name":"Wolfgang Weigend"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-talks-tsx","path":"/talks/","result":{"data":{"talks":{"edges":[{"node":{"id":"e583793f-bcc5-5f78-8931-3357be0f0ba5","frontmatter":{"title":"What the CRaC - Superfast JVM startup","date":"2023-11-29T00:00:00.000Z","time":null,"virtual":null,"tags":[],"speaker":["gerrit_grundwald"]},"fields":{"slug":"/talks/2023-11-29-crac/"}}},{"node":{"id":"6faecfaf-22ea-54dc-8f4a-779af02bfb02","frontmatter":{"title":"AWS-Infrastruktur mit Java erstellen - CDK in Action","date":"2023-10-25T00:00:00.000Z","time":null,"virtual":null,"tags":["java","cloud"],"speaker":["pawel_adaszewski","damian_dudziec"]},"fields":{"slug":"/talks/2023-10-25-_aws_cdk_in_action/"}}},{"node":{"id":"4f2a426a-5b98-5f61-8750-46aac0c6c9f3","frontmatter":{"title":"Java 21: Virtual Threads - Why should I care?","date":"2023-09-27T00:00:00.000Z","time":null,"virtual":null,"tags":[],"speaker":["patryk_lewandowski"]},"fields":{"slug":"/talks/2023-09-27-virtual-threads/"}}},{"node":{"id":"8a2e331b-0f3c-52b6-823e-852ecfff1ba4","frontmatter":{"title":"GraalVM 23 – Konzepte und Features","date":"2023-06-28T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2023-06-28-graalvm_23/"}}},{"node":{"id":"d1758688-b708-5de7-8e59-5646800cc19a","frontmatter":{"title":"Accessibility in the Wild","date":"2023-05-31T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["daniel_sulyok"]},"fields":{"slug":"/talks/2023-05-31-accessibility_in_the_wild/"}}},{"node":{"id":"79b0298f-b45a-5707-a02c-37ea990349ee","frontmatter":{"title":"ArchUnit: Unit-Tests für deine Java-Architektur","date":"2023-04-26T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur","test"],"speaker":["roland_weisleder"]},"fields":{"slug":"/talks/2023-04-26-archunit_unit_tests_java_architektur/"}}},{"node":{"id":"f5233192-6039-5c35-9957-b7023ed9e701","frontmatter":{"title":"Spring für architekturinteressierte Entwickler:innen","date":"2023-03-29T00:00:00.000Z","time":"18:30","virtual":null,"tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/"}}},{"node":{"id":"8fa19a6d-7e84-5d43-a513-0644ddb362d6","frontmatter":{"title":"Exception First – Stabilisiere deinen Code mit mehr Exceptions","date":"2023-02-22T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["sergej_tihonov"]},"fields":{"slug":"/talks/2023-02-22-exception_first/"}}},{"node":{"id":"5d96ee33-16f6-5b4c-aca8-557c4c24c14e","frontmatter":{"title":"Content Management neu gedacht mit Contentlab","date":"2023-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["platform","web"],"speaker":["markus_weiland"]},"fields":{"slug":"/talks/2023-01-25-contentlab/"}}},{"node":{"id":"a0820bff-9a0d-5989-b837-8f769fcc2ba6","frontmatter":{"title":"Kundenspezifisches IAM mit Keycloak","date":"2022-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["security"],"speaker":["daniel_fesenmeyer"]},"fields":{"slug":"/talks/2022-11-30-iam-keycloak/"}}},{"node":{"id":"2b8e8a71-59c4-53fb-baa2-5b6136f7efe8","frontmatter":{"title":"Industrie 4.0? Das JUGt mich!","date":"2022-10-12T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud","iot","industrie4.0","infrastructure"],"speaker":["marco_gotthans"]},"fields":{"slug":"/talks/2022-10-12-indistrie_4.0/"}}},{"node":{"id":"2e3945a5-7de9-5188-b447-47134c218967","frontmatter":{"title":"Hebe deine IoT-Infrastruktur auf das Serverless-Level an","date":"2022-06-22T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud","iot","serverless","infrastructure"],"speaker":["pawel_adaszewski"]},"fields":{"slug":"/talks/2022-06-22-iot-infrastruktur-serverless/"}}},{"node":{"id":"1249d4ab-1401-5936-92b8-3d6dee7f14bb","frontmatter":{"title":"Ultraschnelle Java In-Memory Datenbank-Anwendungen & Microservices mit MicroStream","date":"2021-06-30T00:00:00.000Z","time":null,"virtual":true,"tags":["web"],"speaker":["markus_kett","christian_kuemmel"]},"fields":{"slug":"/talks/2021-06-30-microstream/"}}},{"node":{"id":"3c969ad0-d843-57d0-92c4-91340d71851d","frontmatter":{"title":"Web Components","date":"2021-01-27T00:00:00.000Z","time":null,"virtual":true,"tags":["web"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2021-01-27-webcomponents/"}}},{"node":{"id":"fee8a0ec-6360-5446-9bb0-9ecbe5695536","frontmatter":{"title":"Java Secure Coding in der Praxis","date":"2020-11-25T00:00:00.000Z","time":null,"virtual":true,"tags":["java","security"],"speaker":["nico_foerster"]},"fields":{"slug":"/talks/2020-11-25-secure_coding/"}}},{"node":{"id":"0ebf9412-38af-5831-82e8-2b0aa744f924","frontmatter":{"title":"Branching-Modelle","date":"2020-07-22T00:00:00.000Z","time":null,"virtual":true,"tags":["java"],"speaker":["hannes_kretschmer"]},"fields":{"slug":"/talks/2020-07-22-branching_modelle/"}}},{"node":{"id":"92ec8c3c-c428-5ca1-bb98-7b8ebac5cdfb","frontmatter":{"title":"JDK 14 und GraalVM im Java Ökosystem","date":"2020-04-29T00:00:00.000Z","time":"18:00","virtual":true,"tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2020-04-29-jdk14_graalvm/"}}},{"node":{"id":"c7067e06-b5be-50ec-83d2-9ea30dc14640","frontmatter":{"title":"Innovationsmotor Cloud Foundry!?","date":"2020-01-29T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud"],"speaker":["simon_roloff"]},"fields":{"slug":"/talks/2020-01-27-cloud-foundry/"}}},{"node":{"id":"a0f32bfb-f9fa-5c9c-a70d-ffd93be7d859","frontmatter":{"title":"Advanced BDD Tests","date":"2019-11-28T00:00:00.000Z","time":null,"virtual":null,"tags":["java","test"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2019-11-28-advanced-bdd-tests/"}}},{"node":{"id":"6895717e-291c-581d-8fef-3b5e73bc8369","frontmatter":{"title":"Wie gut kennst Du das Collections Framework?","date":"2019-06-26T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["thilo_frotscher"]},"fields":{"slug":"/talks/2019-06-26-collection-framework/"}}},{"node":{"id":"a5f7b4d5-03e6-588d-9778-62b4b8c44286","frontmatter":{"title":"OAuth 2.0/OpenIDConnect mit Keycloak","date":"2019-05-29T00:00:00.000Z","time":null,"virtual":null,"tags":["java","security"],"speaker":["denny_israel"]},"fields":{"slug":"/talks/2019-05-29-oauth/"}}},{"node":{"id":"9a7e9567-b7fe-59cd-90fe-aec93c90f2af","frontmatter":{"title":"It's a JDK jungle out there - oder wie es mit den neuen Java-Versionen geordnet weitergeht","date":"2019-04-24T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2019-04-24_jdk_jungle/"}}},{"node":{"id":"dd2fc902-b2b3-5256-b24b-e09f17f45415","frontmatter":{"title":"Static-Site-Generators","date":"2019-03-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","javascript"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2019-03-27-static-site-generators/"}}},{"node":{"id":"f37a3185-cf74-5401-9461-328751a5a63e","frontmatter":{"title":"Java Reflection: Classes behind the scenes","date":"2019-02-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2019-02-27_reflection/"}}},{"node":{"id":"6c6f82f3-26da-59ee-a8b6-8c178256b6b7","frontmatter":{"title":"Java APIs - the missing manual","date":"2019-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["hendrik_ebbers"]},"fields":{"slug":"/talks/2019-01-31_java_apis_missing_manual/"}}},{"node":{"id":"f3a5b0e9-0351-58c1-a827-a5f39196ddee","frontmatter":{"title":"Monadische Transaktionen","date":"2018-11-23T00:00:00.000Z","time":null,"virtual":null,"tags":["functional-programming"],"speaker":["gregor_trefs"]},"fields":{"slug":"/talks/2018-11-23-monadische_transaktionen/"}}},{"node":{"id":"f17a3451-b9a5-5b42-b740-3c15fe9268f5","frontmatter":{"title":"Immutable Data - Unveränderliche Daten im Griff","date":"2018-06-27T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2018-06-27-immutable-data/"}}},{"node":{"id":"bba11502-e73b-5c5e-9ce7-f4102b1daed5","frontmatter":{"title":"GraphQL","date":"2018-05-30T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","web","architektur"],"speaker":["stephan_strehler"]},"fields":{"slug":"/talks/2018-05-30-graphql/"}}},{"node":{"id":"1b2f3079-33fa-52a7-8f63-17ed40feb17e","frontmatter":{"title":"Kotlin","date":"2018-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["tobias_blaschke"]},"fields":{"slug":"/talks/2018-04-25-kotlin/"}}},{"node":{"id":"dad0ee9f-ea34-5ce1-b7fe-a0e45b09e845","frontmatter":{"title":"Mikro- vs. Makroarchitektur – Spielraum und Spielregeln","date":"2018-03-20T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["stefan_zoerner"]},"fields":{"slug":"/talks/2018-03-20-mikro_vs_makroarchitektur/"}}},{"node":{"id":"67f5c805-4443-51af-9f87-0a9aff577dce","frontmatter":{"title":"Entwicklung von Java Applikationen auf der SAP Cloud Platform","date":"2018-02-28T00:00:00.000Z","time":null,"virtual":null,"tags":["cloud"],"speaker":["jens_leuschner","mariusz_zienkiewicz"]},"fields":{"slug":"/talks/2018-02-28-java_auf_sap_cloud/"}}},{"node":{"id":"259289d0-862c-5044-bdb1-38c8d853780d","frontmatter":{"title":"Refactoring to a System of Systems","date":"2018-01-31T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["oliver_drotbohm"]},"fields":{"slug":"/talks/2018-01-31-system_of_systems/"}}},{"node":{"id":"92f30cfa-20d5-5aba-8db4-e6e1de091225","frontmatter":{"title":"Neo4j: Panama Papers","date":"2017-11-29T00:00:00.000Z","time":null,"virtual":null,"tags":["database"],"speaker":["michael_hunger"]},"fields":{"slug":"/talks/2017-11-29-neo4j/"}}},{"node":{"id":"fd607630-d7dd-503a-8da0-25a963df4df3","frontmatter":{"title":"Serverless Application - Who the heck needs a Server?","date":"2017-10-25T00:00:00.000Z","time":null,"virtual":null,"tags":["architektur"],"speaker":["lars_roewekamp"]},"fields":{"slug":"/talks/2017-10-25-serverless/"}}},{"node":{"id":"29eb8b61-615f-5f82-afc0-25abdc540af7","frontmatter":{"title":"Spracherkennung mit Amazon Alexa","date":"2017-08-30T00:00:00.000Z","time":null,"virtual":null,"tags":["ki"],"speaker":["andre_tepper","maik_wagner"]},"fields":{"slug":"/talks/2017-08-30-alexa/"}}},{"node":{"id":"935f30df-c07e-5cfa-9188-3564b4e0fab7","frontmatter":{"title":"React und React-Native: Functional UI Development für Browser und mobile Endgeräte","date":"2017-05-31T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javascript","web","mobile","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2017-05-31-react/"}}},{"node":{"id":"9ba71f6c-f0dd-5c4e-b70f-3d7ac1ec19ca","frontmatter":{"title":"JDK 9","date":"2017-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["wolfgang_weigend"]},"fields":{"slug":"/talks/2017-04-26-jdk9/"}}},{"node":{"id":"d7528a15-3b10-587c-9543-5c372945763a","frontmatter":{"title":"Angular 2 für Java Entwickler","date":"2017-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javascript"],"speaker":["sven_hoffmann"]},"fields":{"slug":"/talks/2017-03-22-angular/"}}},{"node":{"id":"f009504d-3327-52e9-8948-6cd4d3ba952e","frontmatter":{"title":"CSS, Aha-Effekte und Perspektiven","date":"2017-02-22T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web"],"speaker":["uwe_manteuffel"]},"fields":{"slug":"/talks/2017-02-22-css/"}}},{"node":{"id":"cf0f1947-1449-5df5-b546-aa31d25046a7","frontmatter":{"title":"JUnit 5","date":"2017-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","junit"],"speaker":["stefan_bley"]},"fields":{"slug":"/talks/2017-01-25-junit5/"}}},{"node":{"id":"c67796c2-6477-5658-a163-1de4870f548e","frontmatter":{"title":"Inside JVM","date":"2016-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["michael_wiedeking"]},"fields":{"slug":"/talks/2016-11-30-inside_jvm/"}}},{"node":{"id":"a4cfc466-b5f6-5b10-be7e-13c92d3ab2f7","frontmatter":{"title":"Kommunikationskultur im Softwareentwicklungsprozess","date":"2016-09-21T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","softwareentwicklung"],"speaker":["daniel_sernow"]},"fields":{"slug":"/talks/2016-09-21-kommunikationskultur/"}}},{"node":{"id":"e14cd50a-435a-5855-ae06-c0d1eb30d8af","frontmatter":{"title":"Testwerkzeuge für JavaFX","date":"2016-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["javafx","testen"],"speaker":["kay_grebenstein"]},"fields":{"slug":"/talks/2016-07-27-testwerkzeuge_javafx/"}}},{"node":{"id":"4dc84ec4-23f6-5438-a2e6-b5944dc868c9","frontmatter":{"title":"Performance-Analyse mit inspectIT","date":"2016-05-25T00:00:00.000Z","time":null,"virtual":null,"tags":["performance","monitoring"],"speaker":["mario_mann"]},"fields":{"slug":"/talks/2016-05-25-performance-analyse-inspectit/"}}},{"node":{"id":"7d996009-4040-5330-a46c-5877cc5668af","frontmatter":{"title":"Haskell und Frege","date":"2016-03-30T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen","functional-programming"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2016-03-30-haskell_frege/"}}},{"node":{"id":"79835d68-651b-57a2-8c75-042baeba5b30","frontmatter":{"title":"Funktionale Programmierung mit Java","date":"2016-01-27T00:00:00.000Z","time":null,"virtual":null,"tags":["java","functional-programming"],"speaker":["manuel_mauky","max_wielsch"]},"fields":{"slug":"/talks/2016-01-27-functional_java/"}}},{"node":{"id":"43538367-514c-5009-b9eb-0f730f52bfd9","frontmatter":{"title":"JavaFX auf Mobile","date":"2015-11-25T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javafx","mobile","android"],"speaker":["stefan_heinze","stefan_barth"]},"fields":{"slug":"/talks/2015-11-25-javafx-mobile/"}}},{"node":{"id":"eff228ab-8f49-5773-905c-fee144de429f","frontmatter":{"title":"Guava","date":"2015-09-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-09-30-guava/"}}},{"node":{"id":"a3c8bbba-0df8-503b-a702-21589e288614","frontmatter":{"title":"Regelbasierte Systeme mit JBoss Drools","date":"2015-07-29T00:00:00.000Z","time":null,"virtual":null,"tags":["dsl"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2015-07-29-drools/"}}},{"node":{"id":"1faa8cf7-10f9-54d5-a480-6d2e44896011","frontmatter":{"title":"Fortgeschrittene Android-Entwicklung","date":"2015-05-27T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-05-27-advanced-android/"}}},{"node":{"id":"d853656a-6dac-5d38-b25a-c241c13cbadb","frontmatter":{"title":"Einstieg in die Android-App-Entwicklung","date":"2015-03-25T00:00:00.000Z","time":null,"virtual":null,"tags":["android","mobile"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2015-03-25-android/"}}},{"node":{"id":"d88d92c2-cf39-5768-b424-1b211f08c8e8","frontmatter":{"title":"MoSKito - Monitoring Framework","date":"2015-01-28T00:00:00.000Z","time":null,"virtual":null,"tags":["web","monitoring"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2015-01-28-moskito/"}}},{"node":{"id":"2fdb9675-dfcf-55b8-899d-8e6d04242b4a","frontmatter":{"title":"Model-View-*: UI-Design-Patterns im Detail","date":"2014-12-03T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","patterns"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-12-03-model-view-star/"}}},{"node":{"id":"5840ef2b-08af-57a6-81b0-7a69c1d1beb0","frontmatter":{"title":"Infrastructure as Code","date":"2014-10-29T00:00:00.000Z","time":null,"virtual":null,"tags":["devops"],"speaker":["bruno_devic"]},"fields":{"slug":"/talks/2014-10-29-infrastructure_as_code/"}}},{"node":{"id":"ded25abd-db1f-5b9b-9cd2-8c905bc15ab0","frontmatter":{"title":"Solr - Eine Enterprise-Suchmaschine","date":"2014-09-24T00:00:00.000Z","time":null,"virtual":null,"tags":["database"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-09-24-solr/"}}},{"node":{"id":"bd5b8775-c069-521b-803e-4a62493c8247","frontmatter":{"title":"Java8 - Streams und Lambdas","date":"2014-07-30T00:00:00.000Z","time":null,"virtual":null,"tags":["java","functional-programming"],"speaker":["paul_weinhold"]},"fields":{"slug":"/talks/2014-07-30-java8-streams/"}}},{"node":{"id":"09dfae71-65f1-52de-81a7-e0746238f502","frontmatter":{"title":"Hazelcast - Synchronisation von In-Memory-Daten","date":"2014-05-28T00:00:00.000Z","time":null,"virtual":null,"tags":["cluster"],"speaker":["steffen_seidler"]},"fields":{"slug":"/talks/2014-05-28-hazelcast/"}}},{"node":{"id":"27050ce5-4d13-504b-90e0-8a4c3f2e6514","frontmatter":{"title":"Besser lesbare Unittests mit AssertJ","date":"2014-04-02T00:00:00.000Z","time":null,"virtual":null,"tags":["junit","testen"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2014-04-02-assertj/"}}},{"node":{"id":"f39e922a-28fe-514b-838c-4b89e4ec981e","frontmatter":{"title":"Tool-Integration im Softwareentwicklungsprozess","date":"2014-01-29T00:00:00.000Z","time":null,"virtual":null,"tags":["integration","platform","softwareentwicklung"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2014-01-29-opendip/"}}},{"node":{"id":"a8a6dc9d-ed19-56f9-9fd3-8c83531f61d0","frontmatter":{"title":"Performance-Optimierung im Web","date":"2013-11-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","performance"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2013-11-27-web-performance/"}}},{"node":{"id":"fb329b7c-5599-55bf-85c5-54a1a6b821bb","frontmatter":{"title":"Modernes App-Design am Beispiel von Android","date":"2013-10-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2013-10-30-app-design/"}}},{"node":{"id":"6cde30c0-930e-5a8f-9a80-e0bfc34878a6","frontmatter":{"title":"Persona - Werkzeug für die GUI-Entwicklung","date":"2013-07-31T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","softwareentwicklung"],"speaker":["marlene_knoche"]},"fields":{"slug":"/talks/2013-07-31-persona/"}}},{"node":{"id":"df78a5f7-4e2e-5f4d-83dd-6ad6432ef93e","frontmatter":{"title":"JRuby - Ruby auf der Java VM","date":"2013-05-29T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["sebastian_schmeck"]},"fields":{"slug":"/talks/2013-05-29-jruby/"}}},{"node":{"id":"a13fb811-969f-5eb3-91f8-c71970bff046","frontmatter":{"title":"Lego NXT-Roboter mit Java programmieren","date":"2013-03-27T00:00:00.000Z","time":null,"virtual":null,"tags":["hardware","roboter"],"speaker":["erik_jaehne"]},"fields":{"slug":"/talks/2013-03-27-nxt_lego/"}}},{"node":{"id":"90157438-0e03-57ef-870f-701aac0b6210","frontmatter":{"title":"JavaFX 2","date":"2012-11-28T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","javafx"],"speaker":["alexander_casall","michael_thiele"]},"fields":{"slug":"/talks/2012-11-28-javafx2/"}}},{"node":{"id":"c044b319-accb-5fca-8339-9f01293583e6","frontmatter":{"title":"JSR-303 BeanValidation","date":"2012-09-26T00:00:00.000Z","time":null,"virtual":null,"tags":["javaee"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-09-26-bean_validation/"}}},{"node":{"id":"09982d70-f13f-5626-8a14-2d8d92abf724","frontmatter":{"title":"Selenium/Webdriver in der Praxis","date":"2012-07-25T00:00:00.000Z","time":null,"virtual":null,"tags":["web","frontend","testen"],"speaker":["maik_wagner"]},"fields":{"slug":"/talks/2012-07-25-selenium_praxis/"}}},{"node":{"id":"5e4ab94f-157d-5292-864d-57606942e1ff","frontmatter":{"title":"GridGain - Parallel Computing und Data Grid Anwendungen","date":"2012-06-27T00:00:00.000Z","time":null,"virtual":null,"tags":["cluster"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2012-06-27-gridgain/"}}},{"node":{"id":"88119287-b9a3-5745-bd33-a7735cb39b4b","frontmatter":{"title":"JMonkeyEngine 3 - 3D-Applikationen in Java","date":"2012-05-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend"],"speaker":["hans_markwart"]},"fields":{"slug":"/talks/2012-05-30-jmonkey-engine3/"}}},{"node":{"id":"fa3c70d9-f376-541d-be0b-ca24e0ac6b89","frontmatter":{"title":"Maven","date":"2012-04-25T00:00:00.000Z","time":null,"virtual":null,"tags":["build-management"],"speaker":["thomas_storch"]},"fields":{"slug":"/talks/2012-04-25-maven/"}}},{"node":{"id":"bd3b256f-6609-52bb-9d05-5a57482e4f42","frontmatter":{"title":"Webtests mit Selenium","date":"2012-03-28T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2012-03-28-webtests/"}}},{"node":{"id":"7881a4dc-ab76-5124-b9b1-dc13c982a250","frontmatter":{"title":"Webentwicklung mit Scala","date":"2012-02-29T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2012-02-29-scala_webapps/"}}},{"node":{"id":"67e2091a-15eb-56f9-bb65-586c4b2a809d","frontmatter":{"title":"Advanced JSF und CDI","date":"2012-01-25T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2012-01-25-jsf_cdi_advanced/"}}},{"node":{"id":"e3831714-860d-5867-9952-89ecfe8b81dd","frontmatter":{"title":"JPA - Hibernate","date":"2012-01-04T00:00:00.000Z","time":null,"virtual":null,"tags":["database","javaee"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2012-01-01-hibernate/"}}},{"node":{"id":"11771522-730a-5373-b0f8-585c9c4f52c1","frontmatter":{"title":"JavaServer Faces 2 und CDI","date":"2011-11-30T00:00:00.000Z","time":null,"virtual":null,"tags":["frontend","web","javaee","jsf"],"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-11-30-jsf-cdi/"}}},{"node":{"id":"c40cc73f-d2be-5960-b15f-87e4b39429c8","frontmatter":{"title":"Android","date":"2011-10-26T00:00:00.000Z","time":null,"virtual":null,"tags":["mobile","android"],"speaker":["max_wielsch"]},"fields":{"slug":"/talks/2011-10-26-android/"}}},{"node":{"id":"9bcc98b0-826d-5513-b828-008dbf11c915","frontmatter":{"title":"JDOM","date":"2011-09-28T00:00:00.000Z","time":null,"virtual":null,"tags":["xml"],"speaker":["mark_ziener"]},"fields":{"slug":"/talks/2011-09-28-jdom/"}}},{"node":{"id":"6cca53f4-9edd-55ac-a225-75c94aa0dd8b","frontmatter":{"title":"Single Sign-On mit JAAS und JGSS","date":"2011-09-28T00:00:00.000Z","time":null,"virtual":null,"tags":["security"],"speaker":["mario_reichel"]},"fields":{"slug":"/talks/2011-09-28-single-sign-on/"}}},{"node":{"id":"67828855-f7d8-5d6d-9d90-7c3760bb7705","frontmatter":{"title":"Testen - Patterns und Best Practices","date":"2011-08-31T00:00:00.000Z","time":null,"virtual":null,"tags":["testen","patterns"],"speaker":["marko_modsching"]},"fields":{"slug":"/talks/2011-08-31-testen/"}}},{"node":{"id":"603cc23a-9840-5867-b78d-99fbd489d472","frontmatter":{"title":"Scala","date":"2011-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["programmiersprachen"],"speaker":["stefan_bradl"]},"fields":{"slug":"/talks/2011-07-27-scala/"}}},{"node":{"id":"4bb73d33-af61-5eac-a5fa-d075fa8660f5","frontmatter":{"title":"TestNG","date":"2011-07-27T00:00:00.000Z","time":null,"virtual":null,"tags":["testen"],"speaker":["marcus_doering"]},"fields":{"slug":"/talks/2011-07-27-testng/"}}},{"node":{"id":"5c110017-4815-5ac0-a4e3-a75e759080ac","frontmatter":{"title":"JavaEE und JBoss","date":"2011-06-29T00:00:00.000Z","time":null,"virtual":null,"tags":["javaee"],"speaker":["michael_foerster"]},"fields":{"slug":"/talks/2011-06-29-javaee_jboss/"}}},{"node":{"id":"54c98b64-64a8-515b-a02c-8a54c51dcca1","frontmatter":{"title":"Google Guice","date":"2011-05-27T00:00:00.000Z","time":null,"virtual":null,"tags":["patterns"],"speaker":["robert_wirbs"]},"fields":{"slug":"/talks/2011-05-27-guice/"}}},{"node":{"id":"6d1edf0b-d32b-5274-baa2-34c7f27786b8","frontmatter":{"title":"GWT - Google Web Toolkit","date":"2011-04-27T00:00:00.000Z","time":null,"virtual":null,"tags":["web","frontend"],"speaker":["ingo_koerner"]},"fields":{"slug":"/talks/2011-04-27-gwt/"}}},{"node":{"id":"2d5fb6de-57a5-54c0-9485-b2ea5bb67a81","frontmatter":{"title":"OSGi mit SpringDM","date":"2011-04-27T00:00:00.000Z","time":null,"virtual":null,"tags":null,"speaker":["manuel_mauky"]},"fields":{"slug":"/talks/2011-04-27-osgi_springdm/"}}},{"node":{"id":"b0252f0d-2a16-5085-913a-7fb7bf5364a6","frontmatter":{"title":"EasyMock","date":"2011-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["testen"],"speaker":["richard_hauswald"]},"fields":{"slug":"/talks/2011-03-22-easymock/"}}},{"node":{"id":"c92b2d55-0d33-50f7-a73c-de8f55b7d75e","frontmatter":{"title":"Jenkins/Hudson","date":"2011-03-22T00:00:00.000Z","time":null,"virtual":null,"tags":["build-management"],"speaker":["stefan_scheumann"]},"fields":{"slug":"/talks/2011-03-22-jenkins/"}}}]},"speakers":{"edges":[{"node":{"id":"ff0ef063-2c62-5f5c-8e8a-3fea00727337","fields":{"slug":"/speakers/alexander_casall/"},"frontmatter":{"name":"Alexander Casall"}}},{"node":{"id":"2fce745c-9aae-524d-a24b-d39e282689b0","fields":{"slug":"/speakers/andre_tepper/"},"frontmatter":{"name":"Andre Tepper"}}},{"node":{"id":"83212ced-9134-55d1-bd90-46f149e95898","fields":{"slug":"/speakers/bruno_devic/"},"frontmatter":{"name":"Bruno Devic"}}},{"node":{"id":"02a5cfde-2b00-5350-a999-f314d4c0ee1e","fields":{"slug":"/speakers/christian_kuemmel/"},"frontmatter":{"name":"Christian Kümmel"}}},{"node":{"id":"7640e853-d184-5946-a052-be3b7deaa867","fields":{"slug":"/speakers/damian_dudziec/"},"frontmatter":{"name":"Damian Dudziec"}}},{"node":{"id":"2adfcaf8-baac-58d8-ac17-2e9e978bea1b","fields":{"slug":"/speakers/daniel_fesenmeyer/"},"frontmatter":{"name":"Daniel Fesenmeyer"}}},{"node":{"id":"2c287f6d-72f9-5142-8d7e-8cb0049f7898","fields":{"slug":"/speakers/daniel_sernow/"},"frontmatter":{"name":"Daniel Sernow"}}},{"node":{"id":"e86d9d23-67e9-58de-853e-30051fb1eabb","fields":{"slug":"/speakers/daniel_sulyok/"},"frontmatter":{"name":"Dániel Sulyok"}}},{"node":{"id":"770e92e8-4326-5909-ace2-ddfcc7deae8b","fields":{"slug":"/speakers/denny_israel/"},"frontmatter":{"name":"Denny Israel"}}},{"node":{"id":"074397e2-c590-59cc-8c29-413f81c9e045","fields":{"slug":"/speakers/erik_jaehne/"},"frontmatter":{"name":"Erik Jähne"}}},{"node":{"id":"dcff0301-b7e2-57b8-93a7-219a768e06e5","fields":{"slug":"/speakers/gerrit_grundwald/"},"frontmatter":{"name":"Gerrit Grundwald"}}},{"node":{"id":"f8ac41fc-2d52-5c52-8a5b-cc148abad020","fields":{"slug":"/speakers/gregor_trefs/"},"frontmatter":{"name":"Gregor Trefs"}}},{"node":{"id":"1dd06ad5-50e3-58f4-b8a3-30ffdf3c4cc0","fields":{"slug":"/speakers/hannes_kretschmer/"},"frontmatter":{"name":"Hannes Kretschmer"}}},{"node":{"id":"93129b19-f730-5e77-879a-58c8e08a198a","fields":{"slug":"/speakers/hendrik_ebbers/"},"frontmatter":{"name":"Hendrik Ebbers"}}},{"node":{"id":"35a72c9a-cbdf-5f39-8b2a-1813b7e94cc7","fields":{"slug":"/speakers/hans_markwart/"},"frontmatter":{"name":"Hans Markwart"}}},{"node":{"id":"44493f6a-f9c2-527b-a086-fed0da68f1c4","fields":{"slug":"/speakers/ingo_koerner/"},"frontmatter":{"name":"Ingo Körner"}}},{"node":{"id":"1f477a08-7805-5bf3-984b-4afec0b2cd45","fields":{"slug":"/speakers/jens_leuschner/"},"frontmatter":{"name":"Jens Leuschner"}}},{"node":{"id":"d857c285-3a43-5120-8453-7b2f87424152","fields":{"slug":"/speakers/kay_grebenstein/"},"frontmatter":{"name":"Kay Grebenstein"}}},{"node":{"id":"184d7622-4aae-50bd-a14c-f44f4db9c575","fields":{"slug":"/speakers/lars_roewekamp/"},"frontmatter":{"name":"Lars Röwekamp"}}},{"node":{"id":"fee4bf04-1e31-54b1-b809-c3d510531b5c","fields":{"slug":"/speakers/maik_wagner/"},"frontmatter":{"name":"Maik Wagner"}}},{"node":{"id":"c48b140e-258d-5030-8fcc-70fedc7dd5b4","fields":{"slug":"/speakers/manuel_mauky/"},"frontmatter":{"name":"Manuel Mauky"}}},{"node":{"id":"83b497c1-a32d-5e39-a543-439154b750d9","fields":{"slug":"/speakers/marco_gotthans/"},"frontmatter":{"name":"Marco Gotthans"}}},{"node":{"id":"d0f25d9d-4106-5691-a1b2-28cbe4275e46","fields":{"slug":"/speakers/marcus_doering/"},"frontmatter":{"name":"Marcus Döring"}}},{"node":{"id":"9e00ea79-267c-5db0-9e41-f5d872b4c595","fields":{"slug":"/speakers/mario_mann/"},"frontmatter":{"name":"Mario Mann"}}},{"node":{"id":"d08d4526-e68f-5a1d-8a78-6c5a99cbe1e4","fields":{"slug":"/speakers/mario_reichel/"},"frontmatter":{"name":"Mario Reichel"}}},{"node":{"id":"678c9f26-730c-5aff-999b-bd4eb93dc92f","fields":{"slug":"/speakers/mariusz_zienkiewicz/"},"frontmatter":{"name":"Mariusz Zienkiewicz"}}},{"node":{"id":"5834f4d7-e0a3-505c-b1d0-81a37f5144f1","fields":{"slug":"/speakers/mark_ziener/"},"frontmatter":{"name":"Mark Ziener"}}},{"node":{"id":"74ed9e96-8a2b-59cb-8642-93f5dec4d7b3","fields":{"slug":"/speakers/marko_modsching/"},"frontmatter":{"name":"Marko Modsching"}}},{"node":{"id":"af5cd69a-023f-577f-9cb1-5f5185d0848d","fields":{"slug":"/speakers/markus_kett/"},"frontmatter":{"name":"Markus Kett"}}},{"node":{"id":"b0aa71a0-d2a3-5a2a-8831-2137b43e583d","fields":{"slug":"/speakers/markus_weiland/"},"frontmatter":{"name":"Markus Weiland"}}},{"node":{"id":"2376b174-04f1-5b56-b72f-8201a1dfb2a5","fields":{"slug":"/speakers/marlene_knoche/"},"frontmatter":{"name":"Marlene Knoche"}}},{"node":{"id":"db05ced3-0480-51fe-83be-d0149d94da93","fields":{"slug":"/speakers/max_wielsch/"},"frontmatter":{"name":"Max Wielsch"}}},{"node":{"id":"f042c1af-7b71-5d8f-ab98-aa158cb2a418","fields":{"slug":"/speakers/michael_foerster/"},"frontmatter":{"name":"Michael Förster"}}},{"node":{"id":"21c7def1-78a4-52e2-bf13-b3a646e3215d","fields":{"slug":"/speakers/michael_hunger/"},"frontmatter":{"name":"Michael Hunger"}}},{"node":{"id":"fc3d2a4f-3ab8-5fc9-aa19-09fc69dd1385","fields":{"slug":"/speakers/michael_thiele/"},"frontmatter":{"name":"Michael Thiele"}}},{"node":{"id":"917f2c35-500a-5f14-bfb1-d99f287d2afe","fields":{"slug":"/speakers/michael_wiedeking/"},"frontmatter":{"name":"Michael Wiedeking"}}},{"node":{"id":"543c0c0e-1ed8-519c-a2d3-544f86c7b5d2","fields":{"slug":"/speakers/nico_foerster/"},"frontmatter":{"name":"Nico Förster"}}},{"node":{"id":"8402dc7e-d767-5b77-8ca3-ff9c967248fb","fields":{"slug":"/speakers/oliver_drotbohm/"},"frontmatter":{"name":"Oliver Drotbohm"}}},{"node":{"id":"c8fa437e-3c34-56b6-b03b-c67c1370f111","fields":{"slug":"/speakers/patryk_lewandowski/"},"frontmatter":{"name":"Patryk Lewandowski"}}},{"node":{"id":"339b9441-8737-533f-aefe-b31bbb6663f4","fields":{"slug":"/speakers/paul_weinhold/"},"frontmatter":{"name":"Paul Weinhold"}}},{"node":{"id":"e52c08b9-aaed-5384-920c-d08af9991f5b","fields":{"slug":"/speakers/pawel_adaszewski/"},"frontmatter":{"name":"Pawel Adaszewski"}}},{"node":{"id":"304f3f2c-44ca-5275-9f73-5b789038daf0","fields":{"slug":"/speakers/richard_hauswald/"},"frontmatter":{"name":"Richard Hauswald"}}},{"node":{"id":"18051d64-e79b-5ad5-bdc3-0b0f822ae644","fields":{"slug":"/speakers/robert_wirbs/"},"frontmatter":{"name":"Robert Wirbs"}}},{"node":{"id":"54a0f9fe-80ab-52ba-9aea-e3f2a5dd045f","fields":{"slug":"/speakers/roland_weisleder/"},"frontmatter":{"name":"Roland Weisleder"}}},{"node":{"id":"cb2ea0b2-b790-5204-9f7b-e1cd0f0583c1","fields":{"slug":"/speakers/sebastian_schmeck/"},"frontmatter":{"name":"Sebastian Schmeck"}}},{"node":{"id":"87a83879-1b5e-50f5-9829-2699d9a01da5","fields":{"slug":"/speakers/sergej_tihonov/"},"frontmatter":{"name":"Sergej Tihonov"}}},{"node":{"id":"4f81ccbd-2893-5804-a68a-04c6b8c20f75","fields":{"slug":"/speakers/simon_roloff/"},"frontmatter":{"name":"Simon Roloff"}}},{"node":{"id":"a26cc991-7e1d-5caa-8926-7a52b0fa93e6","fields":{"slug":"/speakers/stefan_barth/"},"frontmatter":{"name":"Stefan Barth"}}},{"node":{"id":"63ab1902-d259-53c5-99ea-3564ac4ce81a","fields":{"slug":"/speakers/stefan_bley/"},"frontmatter":{"name":"Stefan Bley"}}},{"node":{"id":"dd47473a-7d7f-54fa-9daa-e062ae1c9bef","fields":{"slug":"/speakers/stefan_bradl/"},"frontmatter":{"name":"Stefan Bradl"}}},{"node":{"id":"d4e04ddf-59bb-542f-b6bc-58e5cf77667d","fields":{"slug":"/speakers/stefan_heinze/"},"frontmatter":{"name":"Stefan Heinze"}}},{"node":{"id":"bd7c2828-9149-5013-8dca-331d23b9953f","fields":{"slug":"/speakers/stefan_scheumann/"},"frontmatter":{"name":"Stefan Scheumann"}}},{"node":{"id":"7b63d414-09ef-5e63-bda2-a3259175090c","fields":{"slug":"/speakers/stefan_zoerner/"},"frontmatter":{"name":"Stefan Zörner"}}},{"node":{"id":"39cc0655-cd1a-540e-9553-b9fa67e895cc","fields":{"slug":"/speakers/steffen_seidler/"},"frontmatter":{"name":"Steffen Seidler"}}},{"node":{"id":"a8d3dca8-b87d-568d-8e70-dcac046e98d5","fields":{"slug":"/speakers/stephan_strehler/"},"frontmatter":{"name":"Stephan Strehler"}}},{"node":{"id":"aefd4a1f-a4ed-5e51-a713-1da570fcd2ee","fields":{"slug":"/speakers/sven_hoffmann/"},"frontmatter":{"name":"Sven Hoffmann"}}},{"node":{"id":"9a66bc44-37f7-527c-9f45-6c0b1dd74510","fields":{"slug":"/speakers/thilo_frotscher/"},"frontmatter":{"name":"Thilo Frotscher"}}},{"node":{"id":"3cab3c25-9f08-5d29-a7c2-3e2b0d414c16","fields":{"slug":"/speakers/thomas_storch/"},"frontmatter":{"name":"Thomas Storch"}}},{"node":{"id":"9776c4f1-e686-5cf2-b042-939797958362","fields":{"slug":"/speakers/tobias_blaschke/"},"frontmatter":{"name":"Tobias Blaschke"}}},{"node":{"id":"91d3bc22-4970-51b8-90cf-7583f2dc5ff5","fields":{"slug":"/speakers/uwe_manteuffel/"},"frontmatter":{"name":"Uwe Manteuffel"}}},{"node":{"id":"53f5069e-fb7c-5f5d-b967-b5df3c1df975","fields":{"slug":"/speakers/wolfgang_weigend/"},"frontmatter":{"name":"Wolfgang Weigend"}}}]}},"pageContext":{}},"staticQueryHashes":[],"slicesMap":{}} \ No newline at end of file diff --git a/posters/index.html b/posters/index.html index 0e2c4a7d7..1dba897ca 100644 --- a/posters/index.html +++ b/posters/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2013-10-30-poster/index.html b/posts/2013-10-30-poster/index.html index ef904173b..6d5f8a66e 100644 --- a/posts/2013-10-30-poster/index.html +++ b/posts/2013-10-30-poster/index.html @@ -357,4 +357,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2017-07-21-grillen/index.html b/posts/2017-07-21-grillen/index.html index 49c76a13b..61a4acc17 100644 --- a/posts/2017-07-21-grillen/index.html +++ b/posts/2017-07-21-grillen/index.html @@ -384,4 +384,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2018-07-31-grillabend/index.html b/posts/2018-07-31-grillabend/index.html index f6d85f120..5621c393d 100644 --- a/posts/2018-07-31-grillabend/index.html +++ b/posts/2018-07-31-grillabend/index.html @@ -370,4 +370,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2018-09-26-coding-dojo/index.html b/posts/2018-09-26-coding-dojo/index.html index cdf5e2290..1b5351f58 100644 --- a/posts/2018-09-26-coding-dojo/index.html +++ b/posts/2018-09-26-coding-dojo/index.html @@ -364,4 +364,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2018-12-30-congress-everywhere/index.html b/posts/2018-12-30-congress-everywhere/index.html index da829c19d..3c66aaacc 100644 --- a/posts/2018-12-30-congress-everywhere/index.html +++ b/posts/2018-12-30-congress-everywhere/index.html @@ -395,4 +395,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2019-08-16-grillen/index.html b/posts/2019-08-16-grillen/index.html index eca20968b..f1f5c0a62 100644 --- a/posts/2019-08-16-grillen/index.html +++ b/posts/2019-08-16-grillen/index.html @@ -359,4 +359,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2020-03-24-corona/index.html b/posts/2020-03-24-corona/index.html index 025ac27ea..f8a98dda5 100644 --- a/posts/2020-03-24-corona/index.html +++ b/posts/2020-03-24-corona/index.html @@ -360,4 +360,4 @@

Vorerst keine Vorträge mehr

> window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/posts/2022-01-07-javaland/index.html b/posts/2022-01-07-javaland/index.html index af0dffe00..150bd4b8c 100644 --- a/posts/2022-01-07-javaland/index.html +++ b/posts/2022-01-07-javaland/index.html @@ -365,4 +365,4 @@

JavaLand 2022

> window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/rss.xml b/rss.xml index 381902045..8b95fdccf 100644 --- a/rss.xml +++ b/rss.xml @@ -4,7 +4,7 @@ null https://jug-gr.de/ null - Thu, 07 Sep 2023 07:05:48 GMT + Fri, 15 Sep 2023 12:45:50 GMT https://validator.w3.org/feed/docs/rss2.html https://github.com/jpmonette/feed de @@ -65,14 +65,14 @@ Proof-of-Concept-Implementierung.

]]> Im Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die Skalierung und Modularisierung von Serverless AWS Infrastrukturen verwendet werden kann.

]]> - <![CDATA[Kollaborative Anwendungen und 'local first apps']]> - https://jug-gr.de/talks/2023-09-27-kollaborative-anwendungen/ - https://jug-gr.de/talks/2023-09-27-kollaborative-anwendungen/ + <![CDATA[Java 21: Virtual Threads - Why should I care?]]> + https://jug-gr.de/talks/2023-09-27-virtual-threads/ + https://jug-gr.de/talks/2023-09-27-virtual-threads/ Wed, 27 Sep 2023 00:00:00 GMT Kollaborative Anwendungen und 'local first apps' +

Java 21: Virtual Threads - Why should I care?

Date: September 27, 2023, 19:00 Uhr

-

Speakers: Manuel Mauky

+

Speakers: Patryk Lewandowski

Location:

Carl Zeiss Digital Innovation @@ -82,15 +82,10 @@ Im Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die 02826 Görlitz
]]>
- Wie funktionieren eigentlich kollaborative Web-Anwendungen, bei denen mehrere Leute gleichzeitig an den gleichen -Dokumenten arbeiten können? Live-Kollaboration bieten Anwendungen wie Google-Docs schon seit Langem. Das Verfahren, -welches hier zum Einsatz kommt, setzt aber immer einen zentralen Server voraus, was für die Anwender*innen auch -Nachteile mit sich bringt.

-

Eine moderne Alternative können so genannte "Conflict-Free Replicated DataTypes", kurz CRDT sein. Anwendungen auf dieser -Basis können prinzipiell auch ohne eine zentrale Instanz auskommen. Im Vortrag wollen wir uns die verschiedenen -Varianten anschauen und sehen, wie sich damit Anwendungen bauen lassen, die moderne Annehmlichkeiten wie -Live-Kollaboration, Synchronisierung zwischen Geräten und Offline-Fähigkeit bieten, ohne dabei zwingend auf eine -zentrale Cloud angewiesen zu sein.

]]>
+ In September 2023 the latest version of JDK 21 will be officially released. During this lecture we will look into most +important changes in Java Development Kit and their impact on everyday use of the Java Language. In particular, we will +dive into performance impact of virtual threads and their comparison to existing solutions, the further improvements in +recently introduced record objects and also look into the future plans for Java.

]]>
<![CDATA[GraalVM 23 – Konzepte und Features]]> diff --git a/speakers/alexander_casall/index.html b/speakers/alexander_casall/index.html index 69e21753a..d49cedea6 100644 --- a/speakers/alexander_casall/index.html +++ b/speakers/alexander_casall/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/andre_tepper/index.html b/speakers/andre_tepper/index.html index 218148911..86169a6d0 100644 --- a/speakers/andre_tepper/index.html +++ b/speakers/andre_tepper/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/bruno_devic/index.html b/speakers/bruno_devic/index.html index 6a2c83d71..0fa4edb1d 100644 --- a/speakers/bruno_devic/index.html +++ b/speakers/bruno_devic/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/christian_kuemmel/index.html b/speakers/christian_kuemmel/index.html index efd2fd295..a65c8182b 100644 --- a/speakers/christian_kuemmel/index.html +++ b/speakers/christian_kuemmel/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/damian_dudziec/index.html b/speakers/damian_dudziec/index.html index c31bf8097..ae09c84ac 100644 --- a/speakers/damian_dudziec/index.html +++ b/speakers/damian_dudziec/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/daniel_fesenmeyer/index.html b/speakers/daniel_fesenmeyer/index.html index 8b72b59cc..dbb64b9df 100644 --- a/speakers/daniel_fesenmeyer/index.html +++ b/speakers/daniel_fesenmeyer/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/daniel_sernow/index.html b/speakers/daniel_sernow/index.html index 1a416264b..1cafff69e 100644 --- a/speakers/daniel_sernow/index.html +++ b/speakers/daniel_sernow/index.html @@ -357,4 +357,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/daniel_sulyok/index.html b/speakers/daniel_sulyok/index.html index 7ca5d7471..5a0a1c032 100644 --- a/speakers/daniel_sulyok/index.html +++ b/speakers/daniel_sulyok/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/denny_israel/index.html b/speakers/denny_israel/index.html index b6cc11139..4211baab4 100644 --- a/speakers/denny_israel/index.html +++ b/speakers/denny_israel/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/erik_jaehne/index.html b/speakers/erik_jaehne/index.html index a29941fbb..d2bd6f5fb 100644 --- a/speakers/erik_jaehne/index.html +++ b/speakers/erik_jaehne/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/gerrit_grundwald/index.html b/speakers/gerrit_grundwald/index.html index 84c540d85..a2d7242dd 100644 --- a/speakers/gerrit_grundwald/index.html +++ b/speakers/gerrit_grundwald/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/gregor_trefs/index.html b/speakers/gregor_trefs/index.html index 1503a69b1..1d3b4b071 100644 --- a/speakers/gregor_trefs/index.html +++ b/speakers/gregor_trefs/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/hannes_kretschmer/index.html b/speakers/hannes_kretschmer/index.html index 67def5b99..18e74df50 100644 --- a/speakers/hannes_kretschmer/index.html +++ b/speakers/hannes_kretschmer/index.html @@ -351,4 +351,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/hans_markwart/index.html b/speakers/hans_markwart/index.html index 9171d42f1..8bccf6785 100644 --- a/speakers/hans_markwart/index.html +++ b/speakers/hans_markwart/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/hendrik_ebbers/index.html b/speakers/hendrik_ebbers/index.html index d1943f4ec..e1ebcd909 100644 --- a/speakers/hendrik_ebbers/index.html +++ b/speakers/hendrik_ebbers/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/index.html b/speakers/index.html index 404d80e95..c2b1cc2ec 100644 --- a/speakers/index.html +++ b/speakers/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

Alle Speaker

+

Alle Speaker

- \ No newline at end of file + \ No newline at end of file diff --git a/speakers/ingo_koerner/index.html b/speakers/ingo_koerner/index.html index dc22134e9..356ffe8a0 100644 --- a/speakers/ingo_koerner/index.html +++ b/speakers/ingo_koerner/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/jens_leuschner/index.html b/speakers/jens_leuschner/index.html index 6226fb39c..7287d8ca2 100644 --- a/speakers/jens_leuschner/index.html +++ b/speakers/jens_leuschner/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/kay_grebenstein/index.html b/speakers/kay_grebenstein/index.html index 410e77535..3e30925ea 100644 --- a/speakers/kay_grebenstein/index.html +++ b/speakers/kay_grebenstein/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/lars_roewekamp/index.html b/speakers/lars_roewekamp/index.html index 70b1a231f..be0f91e9e 100644 --- a/speakers/lars_roewekamp/index.html +++ b/speakers/lars_roewekamp/index.html @@ -356,4 +356,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/maik_wagner/index.html b/speakers/maik_wagner/index.html index 69a123b4d..39e7f7b8c 100644 --- a/speakers/maik_wagner/index.html +++ b/speakers/maik_wagner/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/manuel_mauky/index.html b/speakers/manuel_mauky/index.html index 9da810883..8bb1ae7a4 100644 --- a/speakers/manuel_mauky/index.html +++ b/speakers/manuel_mauky/index.html @@ -347,10 +347,10 @@

Manuel Mauky

picture of the speaker

Twitter: @manuel_mauky

Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz -und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.


13 Talks:
+und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.


12 Talks:
- \ No newline at end of file + \ No newline at end of file diff --git a/speakers/marco_gotthans/index.html b/speakers/marco_gotthans/index.html index 5ab03fef0..9b7196cf1 100644 --- a/speakers/marco_gotthans/index.html +++ b/speakers/marco_gotthans/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/marcus_doering/index.html b/speakers/marcus_doering/index.html index e3ab595a7..e58ac4026 100644 --- a/speakers/marcus_doering/index.html +++ b/speakers/marcus_doering/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/mario_mann/index.html b/speakers/mario_mann/index.html index 5df506502..84964cab2 100644 --- a/speakers/mario_mann/index.html +++ b/speakers/mario_mann/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/mario_reichel/index.html b/speakers/mario_reichel/index.html index 83dc36b86..9f2583cb2 100644 --- a/speakers/mario_reichel/index.html +++ b/speakers/mario_reichel/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/mariusz_zienkiewicz/index.html b/speakers/mariusz_zienkiewicz/index.html index c102c0f7b..e51787d65 100644 --- a/speakers/mariusz_zienkiewicz/index.html +++ b/speakers/mariusz_zienkiewicz/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/mark_ziener/index.html b/speakers/mark_ziener/index.html index 6e7db95a8..9242e47ae 100644 --- a/speakers/mark_ziener/index.html +++ b/speakers/mark_ziener/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/marko_modsching/index.html b/speakers/marko_modsching/index.html index aff7234bc..3d148613d 100644 --- a/speakers/marko_modsching/index.html +++ b/speakers/marko_modsching/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/markus_kett/index.html b/speakers/markus_kett/index.html index 2d9953f2c..8fef199e1 100644 --- a/speakers/markus_kett/index.html +++ b/speakers/markus_kett/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/markus_weiland/index.html b/speakers/markus_weiland/index.html index 7b17e0fea..a64a34787 100644 --- a/speakers/markus_weiland/index.html +++ b/speakers/markus_weiland/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/marlene_knoche/index.html b/speakers/marlene_knoche/index.html index 561c51b36..9e68e4b0c 100644 --- a/speakers/marlene_knoche/index.html +++ b/speakers/marlene_knoche/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/max_wielsch/index.html b/speakers/max_wielsch/index.html index 22cb0179f..d4fed5221 100644 --- a/speakers/max_wielsch/index.html +++ b/speakers/max_wielsch/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/michael_foerster/index.html b/speakers/michael_foerster/index.html index 22bcaccc4..89bbf88a1 100644 --- a/speakers/michael_foerster/index.html +++ b/speakers/michael_foerster/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/michael_hunger/index.html b/speakers/michael_hunger/index.html index 82b49fb23..4b3fdf464 100644 --- a/speakers/michael_hunger/index.html +++ b/speakers/michael_hunger/index.html @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/michael_thiele/index.html b/speakers/michael_thiele/index.html index dcbee5fad..5a8fea177 100644 --- a/speakers/michael_thiele/index.html +++ b/speakers/michael_thiele/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/michael_wiedeking/index.html b/speakers/michael_wiedeking/index.html index 4c2bf2823..73f7a13e5 100644 --- a/speakers/michael_wiedeking/index.html +++ b/speakers/michael_wiedeking/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/nico_foerster/index.html b/speakers/nico_foerster/index.html index ac47ef5d7..1f567b465 100644 --- a/speakers/nico_foerster/index.html +++ b/speakers/nico_foerster/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/oliver_drotbohm/index.html b/speakers/oliver_drotbohm/index.html index c3aa8a0f4..f657d902e 100644 --- a/speakers/oliver_drotbohm/index.html +++ b/speakers/oliver_drotbohm/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-09-27-kollaborative-anwendungen/index.html b/speakers/patryk_lewandowski/index.html similarity index 96% rename from talks/2023-09-27-kollaborative-anwendungen/index.html rename to speakers/patryk_lewandowski/index.html index aa12d3a98..ef3c3b36c 100644 --- a/talks/2023-09-27-kollaborative-anwendungen/index.html +++ b/speakers/patryk_lewandowski/index.html @@ -344,21 +344,10 @@ overflow: visible; position: static; width: auto; } -

Kollaborative Anwendungen und 'local first apps'

von Manuel Mauky | 27. September 2023

Wie funktionieren eigentlich kollaborative Web-Anwendungen, bei denen mehrere Leute gleichzeitig an den gleichen -Dokumenten arbeiten können? Live-Kollaboration bieten Anwendungen wie Google-Docs schon seit Langem. Das Verfahren, -welches hier zum Einsatz kommt, setzt aber immer einen zentralen Server voraus, was für die Anwender*innen auch -Nachteile mit sich bringt.

-

Eine moderne Alternative können so genannte "Conflict-Free Replicated DataTypes", kurz CRDT sein. Anwendungen auf dieser -Basis können prinzipiell auch ohne eine zentrale Instanz auskommen. Im Vortrag wollen wir uns die verschiedenen -Varianten anschauen und sehen, wie sich damit Anwendungen bauen lassen, die moderne Annehmlichkeiten wie -Live-Kollaboration, Synchronisierung zwischen Geräten und Offline-Fähigkeit bieten, ohne dabei zwingend auf eine -zentrale Cloud angewiesen zu sein.


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten -der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale -Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz -und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.



Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+ - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/paul_weinhold/index.html b/speakers/paul_weinhold/index.html index 081279d57..dbe4f4a3c 100644 --- a/speakers/paul_weinhold/index.html +++ b/speakers/paul_weinhold/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/pawel_adaszewski/index.html b/speakers/pawel_adaszewski/index.html index 34d17597d..5390b5f72 100644 --- a/speakers/pawel_adaszewski/index.html +++ b/speakers/pawel_adaszewski/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/richard_hauswald/index.html b/speakers/richard_hauswald/index.html index 19c4761c1..736b52d76 100644 --- a/speakers/richard_hauswald/index.html +++ b/speakers/richard_hauswald/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/robert_wirbs/index.html b/speakers/robert_wirbs/index.html index 63423500c..57d9012ce 100644 --- a/speakers/robert_wirbs/index.html +++ b/speakers/robert_wirbs/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/roland_weisleder/index.html b/speakers/roland_weisleder/index.html index 9dcddb2b6..339ea9bad 100644 --- a/speakers/roland_weisleder/index.html +++ b/speakers/roland_weisleder/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/sebastian_schmeck/index.html b/speakers/sebastian_schmeck/index.html index f72f2bcd2..2d0c3f1e3 100644 --- a/speakers/sebastian_schmeck/index.html +++ b/speakers/sebastian_schmeck/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/sergej_tihonov/index.html b/speakers/sergej_tihonov/index.html index 5dbea7da0..86058e85f 100644 --- a/speakers/sergej_tihonov/index.html +++ b/speakers/sergej_tihonov/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/simon_roloff/index.html b/speakers/simon_roloff/index.html index 9254c94b3..0a0ff5608 100644 --- a/speakers/simon_roloff/index.html +++ b/speakers/simon_roloff/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_barth/index.html b/speakers/stefan_barth/index.html index 2a1fee435..cec65aad5 100644 --- a/speakers/stefan_barth/index.html +++ b/speakers/stefan_barth/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_bley/index.html b/speakers/stefan_bley/index.html index 367e09183..9fbac485b 100644 --- a/speakers/stefan_bley/index.html +++ b/speakers/stefan_bley/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_bradl/index.html b/speakers/stefan_bradl/index.html index 8ad38af4a..d502ff684 100644 --- a/speakers/stefan_bradl/index.html +++ b/speakers/stefan_bradl/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_heinze/index.html b/speakers/stefan_heinze/index.html index 4ffc2da20..b4f960880 100644 --- a/speakers/stefan_heinze/index.html +++ b/speakers/stefan_heinze/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_scheumann/index.html b/speakers/stefan_scheumann/index.html index 5dbd7167f..67d41c62e 100644 --- a/speakers/stefan_scheumann/index.html +++ b/speakers/stefan_scheumann/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stefan_zoerner/index.html b/speakers/stefan_zoerner/index.html index 5377ee6ea..279ae958a 100644 --- a/speakers/stefan_zoerner/index.html +++ b/speakers/stefan_zoerner/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/steffen_seidler/index.html b/speakers/steffen_seidler/index.html index bf188da5a..27de745ad 100644 --- a/speakers/steffen_seidler/index.html +++ b/speakers/steffen_seidler/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/stephan_strehler/index.html b/speakers/stephan_strehler/index.html index 8f786c3b1..8f675618d 100644 --- a/speakers/stephan_strehler/index.html +++ b/speakers/stephan_strehler/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/sven_hoffmann/index.html b/speakers/sven_hoffmann/index.html index 5404f4d0b..bd29b4d0c 100644 --- a/speakers/sven_hoffmann/index.html +++ b/speakers/sven_hoffmann/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/thilo_frotscher/index.html b/speakers/thilo_frotscher/index.html index b54526038..e738078bd 100644 --- a/speakers/thilo_frotscher/index.html +++ b/speakers/thilo_frotscher/index.html @@ -353,4 +353,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/thomas_storch/index.html b/speakers/thomas_storch/index.html index de6a6e745..3b54a52a6 100644 --- a/speakers/thomas_storch/index.html +++ b/speakers/thomas_storch/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/tobias_blaschke/index.html b/speakers/tobias_blaschke/index.html index eb1a7df1e..9fb58b14f 100644 --- a/speakers/tobias_blaschke/index.html +++ b/speakers/tobias_blaschke/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/uwe_manteuffel/index.html b/speakers/uwe_manteuffel/index.html index 1dc232d64..66dbc8b82 100644 --- a/speakers/uwe_manteuffel/index.html +++ b/speakers/uwe_manteuffel/index.html @@ -354,4 +354,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/speakers/wolfgang_weigend/index.html b/speakers/wolfgang_weigend/index.html index a9a242495..7c4852f4c 100644 --- a/speakers/wolfgang_weigend/index.html +++ b/speakers/wolfgang_weigend/index.html @@ -352,4 +352,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/tags/index.html b/tags/index.html index 28437fb91..e13bc4606 100644 --- a/tags/index.html +++ b/tags/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

Tags

android architektur build-management cloud cluster database devops dsl frontend functional-programming hardware industrie4.0 infrastructure integration iot java javaee javafx javascript jsf junit ki mobile monitoring patterns performance platform programmiersprachen roboter security serverless softwareentwicklung test testen web xml

android

architektur

build-management

cloud

cluster

database

devops

dsl

frontend

functional-programming

hardware

industrie4.0

infrastructure

integration

iot

java

javaee

javafx

javascript

jsf

junit

ki

mobile

monitoring

patterns

performance

platform

programmiersprachen

roboter

security

serverless

softwareentwicklung

test

testen

web

xml

  • JDOM |

    von Mark Ziener

+

Tags

android architektur build-management cloud cluster database devops dsl frontend functional-programming hardware industrie4.0 infrastructure integration iot java javaee javafx javascript jsf junit ki mobile monitoring patterns performance platform programmiersprachen roboter security serverless softwareentwicklung test testen web xml

android

architektur

build-management

cloud

cluster

database

devops

dsl

frontend

functional-programming

hardware

industrie4.0

infrastructure

integration

iot

java

javaee

javafx

javascript

jsf

junit

ki

mobile

monitoring

patterns

performance

platform

programmiersprachen

roboter

security

serverless

softwareentwicklung

test

testen

web

xml

  • JDOM |

    von Mark Ziener

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-03-22-easymock/index.html b/talks/2011-03-22-easymock/index.html index cf190aea5..003d9b7c4 100644 --- a/talks/2011-03-22-easymock/index.html +++ b/talks/2011-03-22-easymock/index.html @@ -345,10 +345,10 @@ position: static; width: auto; }

EasyMock

von Richard Hauswald | 22. März 2011

testen

+benutzen? All diese Fragen werden in der Präsentation beantwortet.



Datum: 22. März 2011, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-03-22-jenkins/index.html b/talks/2011-03-22-jenkins/index.html index 02ebe1377..528c416ae 100644 --- a/talks/2011-03-22-jenkins/index.html +++ b/talks/2011-03-22-jenkins/index.html @@ -349,10 +349,10 @@ man das Vorgehen, nach jeder Code-Änderung einen Build-Vorgang (inklusive Kompilieren des Codes und Ausführen der Tests) durchzuführen. Damit kann sichergestellt werden, dass Fehlerhafte Änderungen sofort auffallen und behoben werden können.

Im Vortrag werden die Begriffe "Build Management" und "Continuous Integration" näher erleutert und am konkreten Beispiel -von Jenkins gezeigt, wie dies in der Praxis umgesetzt werden kann.



Datum: 22. März 2011, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+von Jenkins gezeigt, wie dies in der Praxis umgesetzt werden kann.



Datum: 22. März 2011, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-04-27-gwt/index.html b/talks/2011-04-27-gwt/index.html index 1814c72cf..d087e0dea 100644 --- a/talks/2011-04-27-gwt/index.html +++ b/talks/2011-04-27-gwt/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

GWT - Google Web Toolkit

von Ingo Körner | 27. April 2011

web, frontend

+

GWT - Google Web Toolkit

von Ingo Körner | 27. April 2011

web, frontend

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-04-27-osgi_springdm/index.html b/talks/2011-04-27-osgi_springdm/index.html index 848b43de0..6bb8b7a69 100644 --- a/talks/2011-04-27-osgi_springdm/index.html +++ b/talks/2011-04-27-osgi_springdm/index.html @@ -354,7 +354,7 @@

Materialien:


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.


Datum: 27. April 2011, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

@@ -363,4 +363,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-05-27-guice/index.html b/talks/2011-05-27-guice/index.html index c14777e3b..6dd60725b 100644 --- a/talks/2011-05-27-guice/index.html +++ b/talks/2011-05-27-guice/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

Google Guice

von Robert Wirbs | 27. Mai 2011

patterns

+

Google Guice

von Robert Wirbs | 27. Mai 2011

patterns

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-06-29-javaee_jboss/index.html b/talks/2011-06-29-javaee_jboss/index.html index b1faec4f3..4b9be9bd3 100644 --- a/talks/2011-06-29-javaee_jboss/index.html +++ b/talks/2011-06-29-javaee_jboss/index.html @@ -345,10 +345,10 @@ position: static; width: auto; }

JavaEE und JBoss

von Michael Förster | 29. Juni 2011

javaee

+geben.



Datum: 29. Juni 2011, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-07-27-scala/index.html b/talks/2011-07-27-scala/index.html index 3b0d0628a..df66ee873 100644 --- a/talks/2011-07-27-scala/index.html +++ b/talks/2011-07-27-scala/index.html @@ -349,10 +349,10 @@

Datum: 27. Juli 2011, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+

Datum: 27. Juli 2011, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-07-27-testng/index.html b/talks/2011-07-27-testng/index.html index a7085425c..00bd162f0 100644 --- a/talks/2011-07-27-testng/index.html +++ b/talks/2011-07-27-testng/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

TestNG

von Marcus Döring | 27. Juli 2011

testen

+

TestNG

von Marcus Döring | 27. Juli 2011

testen

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-08-31-testen/index.html b/talks/2011-08-31-testen/index.html index 63bc95ece..c57d94c95 100644 --- a/talks/2011-08-31-testen/index.html +++ b/talks/2011-08-31-testen/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

Testen - Patterns und Best Practices

von Marko Modsching | 31. August 2011

testen, patterns

+

Testen - Patterns und Best Practices

von Marko Modsching | 31. August 2011

testen, patterns

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-09-28-jdom/index.html b/talks/2011-09-28-jdom/index.html index 1a307d26f..8f04dc482 100644 --- a/talks/2011-09-28-jdom/index.html +++ b/talks/2011-09-28-jdom/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

JDOM

von Mark Ziener | 28. September 2011

xml

+

JDOM

von Mark Ziener | 28. September 2011

xml

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-09-28-single-sign-on/index.html b/talks/2011-09-28-single-sign-on/index.html index 07e45f3b0..7dba193e3 100644 --- a/talks/2011-09-28-single-sign-on/index.html +++ b/talks/2011-09-28-single-sign-on/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

Single Sign-On mit JAAS und JGSS

von Mario Reichel | 28. September 2011

security

+

Single Sign-On mit JAAS und JGSS

von Mario Reichel | 28. September 2011

security

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-10-26-android/index.html b/talks/2011-10-26-android/index.html index c4dbf766b..0b9a9cc23 100644 --- a/talks/2011-10-26-android/index.html +++ b/talks/2011-10-26-android/index.html @@ -350,7 +350,7 @@ Praxis. Max Wielsch programmierte Schritt für Schritte eine "kleine" Notitz-App wobei die theoretischen Konzepte in der Praxis erläutert wurden.

Die Präsentation und das Beispielprojekt können auf seinem -Blog heruntergeladen werden.


Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der +Blog heruntergeladen werden.


Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der Migration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von Java-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für React als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen. @@ -361,4 +361,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2011-11-30-jsf-cdi/index.html b/talks/2011-11-30-jsf-cdi/index.html index c8d1b805e..f81eb7a1d 100644 --- a/talks/2011-11-30-jsf-cdi/index.html +++ b/talks/2011-11-30-jsf-cdi/index.html @@ -361,7 +361,7 @@


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.


Datum: 30. November 2011, 19:00 Uhr

Ort:
Saxonia Systems AG
Berliner Straße 63
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

@@ -370,4 +370,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-01-01-hibernate/index.html b/talks/2012-01-01-hibernate/index.html index b673cd06d..974d8e4b4 100644 --- a/talks/2012-01-01-hibernate/index.html +++ b/talks/2012-01-01-hibernate/index.html @@ -349,10 +349,10 @@


Datum: 4. Januar 2012, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+

Datum: 4. Januar 2012, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-01-25-jsf_cdi_advanced/index.html b/talks/2012-01-25-jsf_cdi_advanced/index.html index 27ed65b22..986cf2df3 100644 --- a/talks/2012-01-25-jsf_cdi_advanced/index.html +++ b/talks/2012-01-25-jsf_cdi_advanced/index.html @@ -355,7 +355,7 @@

Im Bereich CDI wird zunächst das Konzept der CDI-Producer beleuchtet, mit welchem der Entwickler Einfluss auf die Dependency Injection nehmen kann. Anschließend wird das Design Pattern "Observer" mit den Techniken von CDI implementiert und gezeigt, wie damit (im Gegensatz zur klassischen Observer-Implementierung) der Beobachter und die -beobachtete Klasse komplett von einander entkoppelt werden können.


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +beobachtete Klasse komplett von einander entkoppelt werden können.


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.


Datum: 25. Januar 2012, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

@@ -364,4 +364,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-02-29-scala_webapps/index.html b/talks/2012-02-29-scala_webapps/index.html index 0809ac21c..ff4b36355 100644 --- a/talks/2012-02-29-scala_webapps/index.html +++ b/talks/2012-02-29-scala_webapps/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

Webentwicklung mit Scala

von Stefan Bradl | 29. Februar 2012

frontend, web, programmiersprachen

+

Webentwicklung mit Scala

von Stefan Bradl | 29. Februar 2012

frontend, web, programmiersprachen

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-03-28-webtests/index.html b/talks/2012-03-28-webtests/index.html index d85d58b17..e59163429 100644 --- a/talks/2012-03-28-webtests/index.html +++ b/talks/2012-03-28-webtests/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

Webtests mit Selenium

von Marcus Döring | 28. März 2012

frontend, web, testen

+

Webtests mit Selenium

von Marcus Döring | 28. März 2012

frontend, web, testen

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-04-25-maven/index.html b/talks/2012-04-25-maven/index.html index 9994dc3aa..e04e9118c 100644 --- a/talks/2012-04-25-maven/index.html +++ b/talks/2012-04-25-maven/index.html @@ -346,10 +346,10 @@ width: auto; }

Maven

von Thomas Storch | 25. April 2012

build-management

+

Beispiel-Code



Datum: 25. April 2012, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-05-30-jmonkey-engine3/index.html b/talks/2012-05-30-jmonkey-engine3/index.html index 71c848dc3..66b3d07ab 100644 --- a/talks/2012-05-30-jmonkey-engine3/index.html +++ b/talks/2012-05-30-jmonkey-engine3/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

JMonkeyEngine 3 - 3D-Applikationen in Java

von Hans Markwart | 30. Mai 2012

frontend

+

JMonkeyEngine 3 - 3D-Applikationen in Java

von Hans Markwart | 30. Mai 2012

frontend

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-06-27-gridgain/index.html b/talks/2012-06-27-gridgain/index.html index 91062f2e1..1ed3bfe11 100644 --- a/talks/2012-06-27-gridgain/index.html +++ b/talks/2012-06-27-gridgain/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

GridGain - Parallel Computing und Data Grid Anwendungen

von Mario Reichel | 27. Juni 2012

cluster

+

GridGain - Parallel Computing und Data Grid Anwendungen

von Mario Reichel | 27. Juni 2012

cluster

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-07-25-selenium_praxis/index.html b/talks/2012-07-25-selenium_praxis/index.html index 227452a2c..f12de6ea0 100644 --- a/talks/2012-07-25-selenium_praxis/index.html +++ b/talks/2012-07-25-selenium_praxis/index.html @@ -345,7 +345,7 @@ position: static; width: auto; }

Selenium/Webdriver in der Praxis

von Maik Wagner | 25. Juli 2012

web, frontend, testen

Selenium/webdriver - In Ergänzung zu der Vorstellung von Marcus Döring mit praktischen -Beispielen von Maik Wagner


Maik arbeitet als Softwareentwickler bei der Tallence AG, derzeit mit den Schwerpunkten Java und OAuth/OpenID Connect. +Beispielen von Maik Wagner



Datum: 25. Juli 2012, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-09-26-bean_validation/index.html b/talks/2012-09-26-bean_validation/index.html index 10bbee3f3..764742487 100644 --- a/talks/2012-09-26-bean_validation/index.html +++ b/talks/2012-09-26-bean_validation/index.html @@ -356,7 +356,7 @@

Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.


Datum: 26. September 2012, 19:00 Uhr

Ort:
Saxonia Systems AG
Berliner Straße 63
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

@@ -365,4 +365,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2012-11-28-javafx2/index.html b/talks/2012-11-28-javafx2/index.html index f159d3b6f..fad4b26f2 100644 --- a/talks/2012-11-28-javafx2/index.html +++ b/talks/2012-11-28-javafx2/index.html @@ -352,10 +352,10 @@

Materialien:



Datum: 28. November 2012, 19:00 Uhr

Ort:
Saxonia Systems AG
Berliner Straße 63
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+

Datum: 28. November 2012, 19:00 Uhr

Ort:
Saxonia Systems AG
Berliner Straße 63
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-03-27-nxt_lego/index.html b/talks/2013-03-27-nxt_lego/index.html index de728e679..2eaaf1c2c 100644 --- a/talks/2013-03-27-nxt_lego/index.html +++ b/talks/2013-03-27-nxt_lego/index.html @@ -351,7 +351,7 @@

Erik Jähne hat von 2010 bis 2015 an der HS Zittau/Görlitz Bachelor und Master Informatik studiert. Seit 2015 ist er bei +


Erik Jähne hat von 2010 bis 2015 an der HS Zittau/Görlitz Bachelor und Master Informatik studiert. Seit 2015 ist er bei der Quanteo GmbH in Görlitz für Daimler tätig. Dort unter anderem im Lastest und PoC Bereich und als letztes an der Entwicklung der Testumgebung für die Sprachsteuerung der neuen Mercedes Fahrzeuge beteiligt.


Datum: 27. März 2013, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-05-29-jruby/index.html b/talks/2013-05-29-jruby/index.html index e9ec97350..0fb886256 100644 --- a/talks/2013-05-29-jruby/index.html +++ b/talks/2013-05-29-jruby/index.html @@ -352,10 +352,10 @@

Materialien:




Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+


Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-07-31-persona/index.html b/talks/2013-07-31-persona/index.html index abb08894d..89166a76a 100644 --- a/talks/2013-07-31-persona/index.html +++ b/talks/2013-07-31-persona/index.html @@ -350,7 +350,7 @@

Materialien:


Marlene ist freischaffende Illustratorin und Künstlerin und widmet sich in ihrem künstlerischen Schaffen regelmäßig +



Datum: 31. Juli 2013, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-10-30-app-design/index.html b/talks/2013-10-30-app-design/index.html index e65c83f33..2a2cd9c4a 100644 --- a/talks/2013-10-30-app-design/index.html +++ b/talks/2013-10-30-app-design/index.html @@ -349,7 +349,7 @@ Design-Sprache erhalten. Die Bedeutung eines konsistenten und funktionalen Designs ist damit ein kritischer Erfolgsfaktor für eine App. Dies ist die Motivation sich intensiver mit dem Thema UI und UX-Design auseinandersetzen. In einem Vortrag wird dies zwar auf die Entwicklung von Android-Apps bezogen, jedoch werden auch allgemeine Konzepte -vorgestellt, die auf das App-Design plattformübergreifend anwendbar sind.


Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der +vorgestellt, die auf das App-Design plattformübergreifend anwendbar sind.


Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der Migration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von Java-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für React als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen. @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2013-11-27-web-performance/index.html b/talks/2013-11-27-web-performance/index.html index 3f0087a1c..2798e9c38 100644 --- a/talks/2013-11-27-web-performance/index.html +++ b/talks/2013-11-27-web-performance/index.html @@ -347,7 +347,7 @@

Performance-Optimierung im Web

von Maik Wagner | 27. November 2013

web, performance

Google und Microsoft haben Studien zum Thema "Ladezeiten von Webseiten" durchgeführt. Kurzgefasst: Schnelle Websites haben eine bessere User Experience, Nutzer bleiben länger, und auch die Konversionsraten sind besser. Ab einer halben Sekunde gingen die Umsätze pro Nutzer messbar zurück, ab 2 Sekunden waren es über 4%. Es lohnt sich also, in die -Performance einer Webanwendung zu investieren.


Maik arbeitet als Softwareentwickler bei der Tallence AG, derzeit mit den Schwerpunkten Java und OAuth/OpenID Connect. +Performance einer Webanwendung zu investieren.



Datum: 27. November 2013, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-01-29-opendip/index.html b/talks/2014-01-29-opendip/index.html index 762da776f..f9a3228cd 100644 --- a/talks/2014-01-29-opendip/index.html +++ b/talks/2014-01-29-opendip/index.html @@ -355,7 +355,7 @@ die Konzepte und die Realisierung dieser Platform wurden zwei Masterarbeiten und ein Paper http://arxiv.org/find/all/1/all:+AND+Max+Wielsch/0/1/0/all/0/1 geschrieben. Im Vortrag wird auf die Motivation und die Verwendung der Platform eingangen, wobei die Architektur -ausgehend von einem Fallbeispiel erläutert wird.


Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der +ausgehend von einem Fallbeispiel erläutert wird.


Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der Migration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von Java-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für React als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen. @@ -366,4 +366,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-04-02-assertj/index.html b/talks/2014-04-02-assertj/index.html index c32426eb9..e19ce7df2 100644 --- a/talks/2014-04-02-assertj/index.html +++ b/talks/2014-04-02-assertj/index.html @@ -359,7 +359,7 @@ Framework AssertJ gegenüber gestellt. Anhand von zahlreichen Core-Beispielen soll gezeigt werden, wie einfach sich lesbare Unittests formulieren lassen, wenn man die richtigen Werkzeuge zur Hand hat. Anschließend wird ebenfalls darauf eingegangen, wie mit AssertJ eigene, domänenspezifische Assertions erstellt werden können. Damit kann sich der Anwender -seine eigenen Werkzeuge erstellen, um in seiner Domäne gut lesbare und ausdrucksstarke Unittests schreiben zu können.


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +seine eigenen Werkzeuge erstellen, um in seiner Domäne gut lesbare und ausdrucksstarke Unittests schreiben zu können.


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.


Datum: 2. April 2014, 19:00 Uhr

Ort:
Saxonia Systems AG
Berliner Straße 63
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

@@ -368,4 +368,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-05-28-hazelcast/index.html b/talks/2014-05-28-hazelcast/index.html index b49111e0c..6d74368c7 100644 --- a/talks/2014-05-28-hazelcast/index.html +++ b/talks/2014-05-28-hazelcast/index.html @@ -349,10 +349,10 @@ Technologie wie Datenbanken zu einem erheblichen Performanceverlust führt.

Durch die Verteilung der Daten auf mehrere Knoten ist es ein gutes Mittel zur horizontalen Skalierbarkeit bei Synchronität der Daten innerhalb des Clusters. Zusätzlich lässt sich die Verfügbarkeit/Ausfallsicherheit durch die -Hinzunahme weiterer (Backup-)Knoten steigern.



Datum: 28. Mai 2014, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+Hinzunahme weiterer (Backup-)Knoten steigern.



Datum: 28. Mai 2014, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-07-30-java8-streams/index.html b/talks/2014-07-30-java8-streams/index.html index e834ba04b..98670de68 100644 --- a/talks/2014-07-30-java8-streams/index.html +++ b/talks/2014-07-30-java8-streams/index.html @@ -355,10 +355,10 @@

Materialien:



Datum: 30. Juli 2014, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+

Datum: 30. Juli 2014, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-09-24-solr/index.html b/talks/2014-09-24-solr/index.html index 92e221c32..a9aa36ad4 100644 --- a/talks/2014-09-24-solr/index.html +++ b/talks/2014-09-24-solr/index.html @@ -354,10 +354,10 @@ der Daten. Z.B. Silbentrennung, Wortstammbildung, ...

Zur eigentlichen Suche existiert eine leicht zu erlernende Syntax. Insbesondere lassen sich mehrere Felder der strukturierten Dokumente gleichzeitig abfragen und durch ein Ranking können die Suchergebnisse noch weiter verfeinert -werden.



Datum: 24. September 2014, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+werden.



Datum: 24. September 2014, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-10-29-infrastructure_as_code/index.html b/talks/2014-10-29-infrastructure_as_code/index.html index af87d7232..80456e45d 100644 --- a/talks/2014-10-29-infrastructure_as_code/index.html +++ b/talks/2014-10-29-infrastructure_as_code/index.html @@ -358,10 +358,10 @@

Datum: 29. Oktober 2014, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+

Datum: 29. Oktober 2014, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2014-12-03-model-view-star/index.html b/talks/2014-12-03-model-view-star/index.html index 90b7eaa8a..93ebadf44 100644 --- a/talks/2014-12-03-model-view-star/index.html +++ b/talks/2014-12-03-model-view-star/index.html @@ -360,7 +360,7 @@

Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +


Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.


Datum: 3. Dezember 2014, 19:00 Uhr

Ort:
Saxonia Systems AG
Berliner Straße 63
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

@@ -369,4 +369,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-01-28-moskito/index.html b/talks/2015-01-28-moskito/index.html index b1f04f6d6..cf2fdc08c 100644 --- a/talks/2015-01-28-moskito/index.html +++ b/talks/2015-01-28-moskito/index.html @@ -354,10 +354,10 @@

Desweiteren werden wir die einfache Integration, sowie Möglichkeiten zur Erweiterung näher beleuchten. Denn in MoSKito kann man nicht nur Informationen technischer Natur sammeln, die für Entwickler relevant sind (Verarbeitungszeiten, Systemlast, etc.), sondern auch Daten mit Businessvalue (Verkaufszahlen, etc.). So kann MoSKito auch für Management und -Marketing interessant sein.



Datum: 28. Januar 2015, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+Marketing interessant sein.



Datum: 28. Januar 2015, 19:00 Uhr

Ort:
DSER
Steinstraße 11
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-03-25-android/index.html b/talks/2015-03-25-android/index.html index a8c30cc77..6896929cf 100644 --- a/talks/2015-03-25-android/index.html +++ b/talks/2015-03-25-android/index.html @@ -357,7 +357,7 @@

Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der +


Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der Migration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von Java-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für React als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen. @@ -368,4 +368,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-05-27-advanced-android/index.html b/talks/2015-05-27-advanced-android/index.html index 1310f463e..3c4a990b0 100644 --- a/talks/2015-05-27-advanced-android/index.html +++ b/talks/2015-05-27-advanced-android/index.html @@ -354,7 +354,7 @@


Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der +


Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der Migration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von Java-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für React als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen. @@ -365,4 +365,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-07-29-drools/index.html b/talks/2015-07-29-drools/index.html index cff64ef68..755b95d88 100644 --- a/talks/2015-07-29-drools/index.html +++ b/talks/2015-07-29-drools/index.html @@ -353,10 +353,10 @@

Materialien:



Datum: 29. Juli 2015, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+


Datum: 29. Juli 2015, 19:00 Uhr

Ort:
Hochschule Zittau/Görlitz
Obermarkt 17
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-09-30-guava/index.html b/talks/2015-09-30-guava/index.html index ff4f14c02..2d0941f9c 100644 --- a/talks/2015-09-30-guava/index.html +++ b/talks/2015-09-30-guava/index.html @@ -360,10 +360,10 @@

In dem Vortrag wird ein Überblick über die zahlreichen Möglichkeiten von Guava gegeben. Auch unter dem Gesichtspunkt der neuen Möglichkeiten unter JDK 7/8. Die genannte Collection-Erweiterung ist dabei nur ein Bruchteil dessen was Guava bietet. (Object- und StringUtils, Orderings, Comparisons, Preconditions, ExceptionHandler, neue Collections und ihr -Handling, Funktionale Ansätze, Ranges, ReflectionUtils)



Datum: 30. September 2015, 19:00 Uhr

Ort:
DSER
Elisabethstraße 42/43
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+Handling, Funktionale Ansätze, Ranges, ReflectionUtils)



Datum: 30. September 2015, 19:00 Uhr

Ort:
DSER
Elisabethstraße 42/43
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2015-11-25-javafx-mobile/index.html b/talks/2015-11-25-javafx-mobile/index.html index 222bd9bef..916d914ff 100644 --- a/talks/2015-11-25-javafx-mobile/index.html +++ b/talks/2015-11-25-javafx-mobile/index.html @@ -359,10 +359,10 @@

Materialien:



Datum: 25. November 2015, 19:00 Uhr

Ort:
Saxonia Systems AG
Berliner Straße 63
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

+

Datum: 25. November 2015, 19:00 Uhr

Ort:
Saxonia Systems AG
Berliner Straße 63
02826 Görlitz

Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

- \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-01-27-functional_java/index.html b/talks/2016-01-27-functional_java/index.html index 6f5ede4d5..0cadf694f 100644 --- a/talks/2016-01-27-functional_java/index.html +++ b/talks/2016-01-27-functional_java/index.html @@ -367,10 +367,10 @@
  • Blog: How we used Category Theory to solve a problem in Java
  • Blog: Ausführliche Erklärung und Herleitung des Y-Combinators in Scheme
  • Blog: Y-Combinator in Java
  • -
    Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +

    Poster: Jürgen trägt einen Anzug und grinst. Er hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das griechische Zeichen Lambda zu sehen.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz -und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.

    Max Wielsch ist seit 2011 als Software-Entwickler bei der Saxonia Systems AG tätig. Derzeit beschäftigt er sich mit der Migration von monolithischen Architekturen hin zu entkoppelten Service-Architekturen im Kontext von Java-Enterprise-Applikationen. Dabei ist er von Backend bis Frontend involviert. Besondere Begeisterung empfindet er für React als Vertreter von aktuellen JavaScript-UI-Bibliotheken, die einen funktionalen Stil der Entwicklung unterstützen. @@ -381,4 +381,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-03-30-haskell_frege/index.html b/talks/2016-03-30-haskell_frege/index.html index 7b2d6ffb6..61e853b9b 100644 --- a/talks/2016-03-30-haskell_frege/index.html +++ b/talks/2016-03-30-haskell_frege/index.html @@ -352,7 +352,7 @@ ohne dafür besondere Sprachkonstrukte zu benötigen.

    Haskell selbst läuft nicht auf der Java-VM, allerdings existiert mit der Programmiersprache "Frege" eine Haskell-Variante, die zu Java-Sourcecode kompiliert. Damit steht nun auch auf der JVM eine rein funktionale Sprache -bereit.

    Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +bereit.

    Poster: Jürgen sitzt auf einem Sessel und liest ein Buch. Er trägt eine Lese-Brille und schaut konzentriert aus. Auf dem Buch ist das Haskell-Logo, ein Lambda-Symbol, zusehen

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -361,4 +361,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-05-25-performance-analyse-inspectit/index.html b/talks/2016-05-25-performance-analyse-inspectit/index.html index 0c5df438b..cdc9555b0 100644 --- a/talks/2016-05-25-performance-analyse-inspectit/index.html +++ b/talks/2016-05-25-performance-analyse-inspectit/index.html @@ -357,10 +357,10 @@

    Website: http://inspectit.rocks

    Git: https://github.com/inspectIT/inspectIT

    Dokumentation: -https://inspectit-performance.atlassian.net/wiki/display/HOME/inspectIT+Home

    Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.


    Datum: 25. Mai 2016, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    +https://inspectit-performance.atlassian.net/wiki/display/HOME/inspectIT+Home

    Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.


    Datum: 25. Mai 2016, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-07-27-testwerkzeuge_javafx/index.html b/talks/2016-07-27-testwerkzeuge_javafx/index.html index 054258314..bc7c3f9a0 100644 --- a/talks/2016-07-27-testwerkzeuge_javafx/index.html +++ b/talks/2016-07-27-testwerkzeuge_javafx/index.html @@ -353,7 +353,7 @@
  • Welche Kategorien von Testwerkzeugen für JavaFX gibt es?
  • Welche Unterschiede gibt es zwischen den Testwerkzeugen?
  • Wie werden die Testwerkzeuge in meine Toolkette eingebunden?
  • -

    Kay Grebenstein arbeitet als Tester und agiler QA-Coach für die Saxiona Systems AG, Dresden. Er hat in den letzten +


    Kay Grebenstein arbeitet als Tester und agiler QA-Coach für die Saxiona Systems AG, Dresden. Er hat in den letzten Jahren in Projekten unterschiedlicher fachlicher Domänen (Telekommunikation, Industrie, Versandhandel, Energie, …) Qualität gesichert und Software getestet.


    Datum: 27. Juli 2016, 19:00 Uhr

    Ort:
    Hochschule Zittau/Görlitz
    Obermarkt 17
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-09-21-kommunikationskultur/index.html b/talks/2016-09-21-kommunikationskultur/index.html index 17021b254..ea8d67279 100644 --- a/talks/2016-09-21-kommunikationskultur/index.html +++ b/talks/2016-09-21-kommunikationskultur/index.html @@ -347,7 +347,7 @@

    Kommunikationskultur im Softwareentwicklungsprozess

    von Daniel Sernow | 21. September 2016

    testen, softwareentwicklung

    Im Vortrag von Daniel Sernow wird die Kommunikation in Software-Projekten und mit den Projekt-Partnern thematisiert. Er wird uns an seinen Erfahrungen und Erkenntnissen aus langjähriger Praxis im Projektgeschäft teilhaben lassen. Für Entwickler dürfte dabei vor allem auch die Perspektive der Qualitätssicherung interessante neue Einblicke bereithalten.

    -

    Eine Besonderheit: Wir werden eine neuen Veranstaltungsort einweihen - siehe unten.

    Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand

      +

      Eine Besonderheit: Wir werden eine neuen Veranstaltungsort einweihen - siehe unten.

    Poster: Jürgen benutzt ein uraltes Telefon mit separatem Hörer und Mikrofon. Er hält sich den kabelgebundenen Hörer ans Ohr und hält das Mikrofon vor sich in der Hand

    • 2008 -2011 bei der SQS AG als Softwaretester, Projektkoordinator, Testmanager in den Branchen Telekommunikation, Banken, öffentlicher Dienst
    • Seit 2011 Trainer für ISTQB Foundation und Advanced Level
    • @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2016-11-30-inside_jvm/index.html b/talks/2016-11-30-inside_jvm/index.html index 88a32f564..8d38880ba 100644 --- a/talks/2016-11-30-inside_jvm/index.html +++ b/talks/2016-11-30-inside_jvm/index.html @@ -346,10 +346,10 @@ width: auto; } +Machine.

    Poster: Jürgen grinst und trägt eine Weihnachtsmütze zu seinem üblichen Anzug. Er hält einen Teller mit Keksen vor sich.


    Datum: 30. November 2016, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-01-25-junit5/index.html b/talks/2017-01-25-junit5/index.html index eae04e06b..03715612a 100644 --- a/talks/2017-01-25-junit5/index.html +++ b/talks/2017-01-25-junit5/index.html @@ -351,7 +351,7 @@

    Materialien:

    Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf

    Stefan Bley ist Senior Consultant und Coach bei der Saxonia Systems AG in Dresden. Sein Schwerpunkt in Kundenprojekten +

    Poster: Jürgen trägt einen roten Bauarbeiter-Helm zu seinem Anzug. In der Hand hält er ein Klemmbrett mit dem Logo von JUnit 5 darauf



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-02-22-css/index.html b/talks/2017-02-22-css/index.html index 6722cdf4e..c582aa455 100644 --- a/talks/2017-02-22-css/index.html +++ b/talks/2017-02-22-css/index.html @@ -348,7 +348,7 @@ eines Webentwicklers möglichst qualvoll zu gestalten. FALSCH Mit Live-Coding gehen wir CSS auf den Grund und werden einige Aha-Effekte erzielen. Dafür erklären wir Grundlagen, welche vielen Entwicklern unbekannt sind, und zeigen den Mehrwert von Präprozessoren. Um euch dann vollends von CSS zu überzeugen, haben wir als Special Guest CSS3 eingeladen. -Da wird selbst JavaScript blass vor Neid.

    Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel.

    Uwe Manteuffel ist Senior Consultant für Webentwicklung bei Saxonia Systems AG in Görlitz. Er ist seit 2008 im Umfeld +Da wird selbst JavaScript blass vor Neid.

    Poster: Jürgen trägt eine Künstler-Mütze zu seinem Anzug. In der Hand hält er eine Maler-Palette und einen Pinsel.

    Uwe Manteuffel ist Senior Consultant für Webentwicklung bei Saxonia Systems AG in Görlitz. Er ist seit 2008 im Umfeld von Webtechnologien und ASP.NET unterwegs. Sein Schwerpunkt liegt dabei auf dem Design und der Umsetzung von Oberflächen. Besonderer Fokus liegt dabei auf der Verwendung von CSS. Hierbei beschäftigt er sich mit verschiedenen Methoden wie OOCSS (Objektorientiertes CSS) und der Verwendung von Präprozessoren wie LESS oder SASS. Aktuell entwickelt @@ -358,4 +358,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-03-22-angular/index.html b/talks/2017-03-22-angular/index.html index a49ef395b..516f7a277 100644 --- a/talks/2017-03-22-angular/index.html +++ b/talks/2017-03-22-angular/index.html @@ -355,7 +355,7 @@

    Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht.

    Sven Hoffmann ist seit über 8 Jahren für die Saxonia Systems AG tätig. Er beschäftigte sich in dieser Zeit mit einer +

    Poster: Jürgen schaut ernst. Er trägt ein Schwert in der Hand und ein Schild mit dem einem großen A darauf. Das Schild ist eine Referenz auf das Angular-Logo, welches ebenfalls wie ein Schild aussieht.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-04-26-jdk9/index.html b/talks/2017-04-26-jdk9/index.html index 02e731b07..18545d443 100644 --- a/talks/2017-04-26-jdk9/index.html +++ b/talks/2017-04-26-jdk9/index.html @@ -360,7 +360,7 @@

    Materialien:

    Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java.

    Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei ORACLE Global Services Germany GmbH. Er gehört zum +

    Poster: Jürgen sitzt am Tisch vor einem Puzzle. Er überlegt, wo er das nächste Puzzle-Teil einsetzen soll. Man erkennt bereits, dass das Puzzle ein Java-Duke darstellt, das Maskottchen von Java.


    Datum: 25. April 2017, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-05-31-react/index.html b/talks/2017-05-31-react/index.html index 3d95d204c..cc6baac52 100644 --- a/talks/2017-05-31-react/index.html +++ b/talks/2017-05-31-react/index.html @@ -353,7 +353,7 @@ HTML im Spiel. Stattdessen werden tatsächlich native UI-Controls gerendert.

    In diesem Vortrag möchte ich React und auch React-Native vorstellen und mittels Live-Coding einen Eindruck von dem Framework vermitteln. Dabei möchte ich aber auch auf die Ansätze aus der funktionalen Programmierung eingehen, die React -meines Erachtens so besonders machen.

    Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +meines Erachtens so besonders machen.

    Poster: Jürgen hält einen Kasten in der Hand, welcher oben und unten Trichter-Öffnungen besitzt. In den oberen Trichter gibt er zwei Dokumente hinein, während beim unteren Trichter das Bild einer Webseite herausfällt. Auf der Box ist das Logo von React zu sehen.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -362,4 +362,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-08-30-alexa/index.html b/talks/2017-08-30-alexa/index.html index 235174747..819018a54 100644 --- a/talks/2017-08-30-alexa/index.html +++ b/talks/2017-08-30-alexa/index.html @@ -347,7 +347,7 @@

    Spracherkennung mit Amazon Alexa

    von Andre Tepper, Maik Wagner | 30. August 2017

    ki

    Amazon Alexa ist eine Smart-Home-Technologie, die vor allem als Lösung für Spracherkennung bekannt ist. Für Entwickler ist dabei vor allem die Möglichkeit interessant, eigene Anwendungen mit Spracherkennung erstellen zu können.

    Andre und Maik beleuchten in ihrem Vortrag die Theorie hinter Spracherkennung und zeigen am Beispiel von Amazon Alexa, -wie damit Anwendungen gebaut werden können.


    Maik arbeitet als Softwareentwickler bei der Tallence AG, derzeit mit den Schwerpunkten Java und OAuth/OpenID Connect. +wie damit Anwendungen gebaut werden können.



    Datum: 30. August 2017, 19:00 Uhr

    Ort:
    DSER
    Elisabethstraße 42/43
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-10-25-serverless/index.html b/talks/2017-10-25-serverless/index.html index 444236cc9..7249be332 100644 --- a/talks/2017-10-25-serverless/index.html +++ b/talks/2017-10-25-serverless/index.html @@ -356,7 +356,7 @@

    Bei bei diesem Treffen verlosen wir unter den Teilnehmern ein Tutorial von https://tutorials.entwickler.de/. Mit freundlicher Unterstützung durch Software & -Support Media GmbH.

    Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.

    Lars Röwekamp, Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen +Support Media GmbH.

    Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.

    Lars Röwekamp, Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen seiner Tätigkeit als "CIO New Technologies" mit der eingehenden Analyse und Bewertung neuer Software- und Technologietrends. Ein besonderer Schwerpunkt seiner Arbeit liegt derzeit in den Bereichen Enterprise und Mobile Computing, wobei neben Design- und Architekturfragen insbesondere die Real-Life-Aspekte im Fokus seiner Betrachtung @@ -368,4 +368,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2017-11-29-neo4j/index.html b/talks/2017-11-29-neo4j/index.html index 5bdd63d6c..992d5a8eb 100644 --- a/talks/2017-11-29-neo4j/index.html +++ b/talks/2017-11-29-neo4j/index.html @@ -348,7 +348,7 @@ untersuchten und publizierten die breite Nutzung von Briefkastenfirmen durch Politiker, Geschäftsleute, Banken usw. Für die Untersuchung des größten Leaks einer Geldwäschefirma wurde unter anderem auch Neo4j genutzt. Heute werde ich demonstrieren, wie solche Daten in einem Graph modelliert, importiert und abgefragt werden können. Da die Informationen -öffentlich verfügbar sind, kann jetzt jeder zum Journalisten werden.

    Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir.

    Seit Mitte 2010 arbeitet Michael Hunger eng mit Neo Technology zusammen, um deren Graphendatenbank +öffentlich verfügbar sind, kann jetzt jeder zum Journalisten werden.

    Poster: Jürgen sitzt im Sessel mit seiner Lesebrille und liest ein Buch. Auf dem Buch ist der Neo4J-Schriftzug zu lesen und darunter der Titel 'Graf Datenbankula' als Anspielung auf Graf Drakula. Entsprechend sieht man bei Jurgen spitze Schneidezähne, wie bei einem Vampir.

    Seit Mitte 2010 arbeitet Michael Hunger eng mit Neo Technology zusammen, um deren Graphendatenbank Neo4j noch leichter für Entwickler zugänglich zu machen. Hauptinteressensgebiete sind dort Integration mit anderen Technologien, wie z.B. Spring-Data, Datenimport und Performance. Er unterstützt alle Nutzer von Neo4j tagtäglich bei der erfolgreichen Realisierung ihrer Projekte und Lösung ihrer Fragen und Probleme.

    @@ -359,4 +359,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-01-31-system_of_systems/index.html b/talks/2018-01-31-system_of_systems/index.html index 9075528d7..d15d8e2fb 100644 --- a/talks/2018-01-31-system_of_systems/index.html +++ b/talks/2018-01-31-system_of_systems/index.html @@ -356,10 +356,10 @@

    Materialien:

    Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet.


    Datum: 31. Januar 2018, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    +
    Poster: Wir sehen Jürgen über die Schulter, wie er einen Bauplan in der Hand hält und mit einer Schere in kleinere Stücke zerschneidet.


    Datum: 31. Januar 2018, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-02-28-java_auf_sap_cloud/index.html b/talks/2018-02-28-java_auf_sap_cloud/index.html index e8a6fb73f..334b6c415 100644 --- a/talks/2018-02-28-java_auf_sap_cloud/index.html +++ b/talks/2018-02-28-java_auf_sap_cloud/index.html @@ -353,10 +353,10 @@

    Materialien:

    Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol.

    Jens Leuschner hat vor einem Jahr sein Informatik-Studium an der Hochschule Zittau/Görlitz abgeschlossen und +

    Poster: Jürgen hält einige kleine Programm-Fenster in der Hand. Er hebt die Programme in eine Wolke, die sich hinter ihm befindet. Die Wolke sieht aus wie das Cloud-Symbol.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -365,4 +365,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-03-20-mikro_vs_makroarchitektur/index.html b/talks/2018-03-20-mikro_vs_makroarchitektur/index.html index eefcefbb7..d79acedfd 100644 --- a/talks/2018-03-20-mikro_vs_makroarchitektur/index.html +++ b/talks/2018-03-20-mikro_vs_makroarchitektur/index.html @@ -350,7 +350,7 @@ Ihr in dieser Fragestellung einschlagen solltet. Wie sieht in Eurem Kontext die Balance aus -- was gebt Ihr für alle Elemente Eurer Anwendung(slandschaft) vor, wo lasst Ihr bewusst Spielraum? Und gibt es auch noch etwas dazwischen? Zu diesem Zweck passen wir organisatorische und technologische Trends wie 2-Speed/Bimodale Architekturen, Cloud und -Domänenorientierung in das Entwurfsdoppel Makro und Mikro ein.

    Poster: Jürgen freut sich und hält einen Bauplan in der Hand.

    Von der Bayer AG über IBM und oose zu embarc. Stefan Zörner blickt auf zwanzig Jahre IT-Erfahrung zurück und stets +Domänenorientierung in das Entwurfsdoppel Makro und Mikro ein.

    Poster: Jürgen freut sich und hält einen Bauplan in der Hand.

    Von der Bayer AG über IBM und oose zu embarc. Stefan Zörner blickt auf zwanzig Jahre IT-Erfahrung zurück und stets gespannt nach vorn. Er unterstützt in Architektur- und Umsetzungsfragen mit dem Ziel, gute Architekturansätze wirksam in der Implementierung zu verankern. Sein Wissen und seine Erfahrung teilt er regelmäßig in Vorträgen, Artikeln und Workshops. Stefan ist Apache Committer, aktives Board-Mitglied im iSAQB und Autor des Buchs „Softwarearchitekturen @@ -360,4 +360,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-04-25-kotlin/index.html b/talks/2018-04-25-kotlin/index.html index f3eb78fdb..fc38f23da 100644 --- a/talks/2018-04-25-kotlin/index.html +++ b/talks/2018-04-25-kotlin/index.html @@ -353,7 +353,7 @@

    Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze

    Tobias Blaschke hat sein Informatik-Studium an der Universität Magdeburg abgeschlossen. In den letzten Jahren ist er +

    Poster: Jürgen hält einen Globus in der Hand und platziert eine kleine Fahne an die Stelle der russischen Insel 'Kotlin'. Er trägt eine russische Fell-Mütze

    Tobias Blaschke hat sein Informatik-Studium an der Universität Magdeburg abgeschlossen. In den letzten Jahren ist er bei der Eudemonia Solutions AG als Software-Architekt tätig und unterstützt dort insbesondere die Entwicklung einer webbasierten Lösung zur Firmenkundenberatung in den Volks- und Raiffeisenbanken auf Basis von Java und GWT.


    Datum: 25. April 2018, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-05-30-graphql/index.html b/talks/2018-05-30-graphql/index.html index 83e6e9a9e..26da16d6b 100644 --- a/talks/2018-05-30-graphql/index.html +++ b/talks/2018-05-30-graphql/index.html @@ -354,7 +354,7 @@
    Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen.

    Stephan ist seit 2013 Informatikstudent an der Hochschule Zittau/Görlitz und schreibt derzeit seine Masterarbeit über +

    Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand. Auf der Tasse ist das GraphQL-Logo zu sehen.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-06-27-immutable-data/index.html b/talks/2018-06-27-immutable-data/index.html index c5b8600c7..ca52f10fb 100644 --- a/talks/2018-06-27-immutable-data/index.html +++ b/talks/2018-06-27-immutable-data/index.html @@ -358,7 +358,7 @@

    Materialien:

    Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +

    Poster: Jürgen steht vor einem großen Steinblock, der fast aussieht wie ein Grabstein. Auf dem Stein sind lauter Nullen und Einsen eingraviert. Er hält einen Hammer und Meißel in der Hand.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -367,4 +367,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2018-11-23-monadische_transaktionen/index.html b/talks/2018-11-23-monadische_transaktionen/index.html index d6fd0f1d2..593eeb4b8 100644 --- a/talks/2018-11-23-monadische_transaktionen/index.html +++ b/talks/2018-11-23-monadische_transaktionen/index.html @@ -353,11 +353,11 @@

    Materialien:

    Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben.

    Gregor ist einer der Organisatoren der Java User Group Mannheim und Gründer der Softwerkskammer Rhein-Neckar. Er +

    Poster: Jürgen grinst und hält ein Tablett in der Hand. Auf dem Tablett steht eine durchsichtige Flasche mit gelber Limo darin. Auf dem Etikett steht 'Li-Monade' geschrieben.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-01-31_java_apis_missing_manual/index.html b/talks/2019-01-31_java_apis_missing_manual/index.html index b08bdd3b2..c38b615f3 100644 --- a/talks/2019-01-31_java_apis_missing_manual/index.html +++ b/talks/2019-01-31_java_apis_missing_manual/index.html @@ -350,7 +350,7 @@ werden genauer unter die Lupe genommen und deren sinnvoller Einsatz anhand von Beispielen gezeigt. Hierdurch werden unter anderem folgende Fragen beantwortet: Wie funktionieren eigentlich Annotations? Wie entwickle ich Plug-In Funktionalität ohne auf OSGI zurückgreifen zu müssen? Wie gehe ich am besten mit NullPointerExceptions um? Wie schreibe -ich nebenläufigen Code der trotzdem wartbar ist?

    Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'

    Hendrik Ebbers (@hendrikEbbers) ist Co-Founder der Karakun AG +ich nebenläufigen Code der trotzdem wartbar ist?

    Poster: Jürgen sitzt mit seiner Lesebrille in seinem Sessel und liest ein Buch. Auf dem Buchrücken steht 'Javadoc'



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-02-27_reflection/index.html b/talks/2019-02-27_reflection/index.html index bdfc90d69..1c5db0de7 100644 --- a/talks/2019-02-27_reflection/index.html +++ b/talks/2019-02-27_reflection/index.html @@ -351,7 +351,7 @@ zuzugreifen. So ist es möglich, auf deren Methoden und Felder zuzugreifen, selbst wenn diese privat sind. Felder können überschreiben, Template-Parameter in Feldern und Methoden angezeigt, sowie auch Annotationen der Klasse, Methoden und Felder gelesen werden. Am Beispiel eines abstrakten Klassen-Editors werden diese Möglichkeiten in dem Vortrag näher -betrachtet.

    Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.

    Erik Jähne hat von 2010 bis 2015 an der HS Zittau/Görlitz Bachelor und Master Informatik studiert. Seit 2015 ist er bei +betrachtet.

    Poster: Jürgen grinst und hält eine Tasse Kaffee in der Hand.

    Erik Jähne hat von 2010 bis 2015 an der HS Zittau/Görlitz Bachelor und Master Informatik studiert. Seit 2015 ist er bei der Quanteo GmbH in Görlitz für Daimler tätig. Dort unter anderem im Lastest und PoC Bereich und als letztes an der Entwicklung der Testumgebung für die Sprachsteuerung der neuen Mercedes Fahrzeuge beteiligt.


    Datum: 27. Februar 2019, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-03-27-static-site-generators/index.html b/talks/2019-03-27-static-site-generators/index.html index 0f7d565ac..3af107acb 100644 --- a/talks/2019-03-27-static-site-generators/index.html +++ b/talks/2019-03-27-static-site-generators/index.html @@ -360,7 +360,7 @@

    Materialien:

    Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +

    Poster: Jürgen hält einen Kasten in der Hand mit jeweils einem Trichter oben und unten. Oben gibt er zwei Dokumente hinein und unten fällt das Bild einer Webseite heraus. Auf dem Kasten ist das Logo von Gatsbyjs zu sehen.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -369,4 +369,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-04-24_jdk_jungle/index.html b/talks/2019-04-24_jdk_jungle/index.html index 23aa02f0c..3c134eaf5 100644 --- a/talks/2019-04-24_jdk_jungle/index.html +++ b/talks/2019-04-24_jdk_jungle/index.html @@ -357,7 +357,7 @@ gekennzeichnet wird. Im Vortrag werden Beispiele zum Version-String besprochen, sowie Empfehlungen diskutiert, wie die künftige Java-Strategie mit dem OpenJDK, Oracle JDK (LTS) und der neuen Java SE Subscription (Support) für die Entwickler und für den Anwendungsbetrieb aussehen soll. Zudem wird die Weiterentwicklung der OpenJFX/JavaFX -UI-Technologie mit den Aktivitäten der Developer-Community dargestellt.

    Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle.

    Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei ORACLE Global Services Germany GmbH. Er gehört zum +UI-Technologie mit den Aktivitäten der Developer-Community dargestellt.

    Poster: Jürgen hält eine Schriftrolle mit offiziellen Siegel in der Hand und liest wie ein mittelalterlicher Herold daraus vor. Wir sehen leider nicht den Text auf der Schriftrolle.


    Datum: 24. April 2019, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-05-29-oauth/index.html b/talks/2019-05-29-oauth/index.html index 4d4ef4973..3d9f71218 100644 --- a/talks/2019-05-29-oauth/index.html +++ b/talks/2019-05-29-oauth/index.html @@ -346,7 +346,7 @@ width: auto; }

    OAuth 2.0/OpenIDConnect mit Keycloak

    von Denny Israel | 29. Mai 2019

    java, security

    Der Vortrag erläutert zunächst die Grundlagen der Standards OAuth 2.0 und OpenID-Connect und geht danach auf den Einsatz dieser Standards mittels Keycloak ein. Dabei wird anhand einer Beispielanwendung (React, Spring Boot) gezeigt, wie man -Keycloak in seine Anwendung einbinden kann.

    Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.

    Denny arbeitet als Softwareentwickler bei der Ottogroup Solution Provider (OSP) GmbH, derzeit mit den Schwerpunkten +Keycloak in seine Anwendung einbinden kann.

    Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-06-26-collection-framework/index.html b/talks/2019-06-26-collection-framework/index.html index 60d5f0ff6..fc965763b 100644 --- a/talks/2019-06-26-collection-framework/index.html +++ b/talks/2019-06-26-collection-framework/index.html @@ -353,7 +353,7 @@

    Materialien:

    Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'.

    Thilo Frotscher arbeitet als freiberuflicher Software-Architekt und Trainer. Als Experte für Enterprise Java und +

    Poster: Jürgen trägt eine Sonnenbrille und ein buntes Hemd mit Blumen darauf. Er hält sich die Hand ans Kinn und grinst, so als würde er gerade einen Plan schmieden. An seinem Hemd hängt ein Schild mit der Aufschrift 'Sommer Collection'.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -362,4 +362,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2019-11-28-advanced-bdd-tests/index.html b/talks/2019-11-28-advanced-bdd-tests/index.html index d6711b5a4..9bf4c55ba 100644 --- a/talks/2019-11-28-advanced-bdd-tests/index.html +++ b/talks/2019-11-28-advanced-bdd-tests/index.html @@ -345,7 +345,7 @@ position: static; width: auto; }

    Advanced BDD Tests

    von Maik Wagner | 28. November 2019

    java, test

    Hattest du auch schon mal das Problem, dass du deine eigenen komplizierten und unleserlichen Testfälle nicht mehr -verstanden hast? Wir kennen das Problem und zeigen euch mögliche Lösungen.

    Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben.

    Maik arbeitet als Softwareentwickler bei der Tallence AG, derzeit mit den Schwerpunkten Java und OAuth/OpenID Connect. +verstanden hast? Wir kennen das Problem und zeigen euch mögliche Lösungen.

    Poster: Jürgen hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier zusehen ist. Auf dem Blatt steht 'Testplan' oben und darunter sind drei Checkboxen mit angedeuteten Textzeilen daneben.


    Datum: 28. November 2019, 19:00 Uhr

    Ort:
    Tallence AG
    Neißstraße 27
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2020-01-27-cloud-foundry/index.html b/talks/2020-01-27-cloud-foundry/index.html index e2c0abc58..e4af3501d 100644 --- a/talks/2020-01-27-cloud-foundry/index.html +++ b/talks/2020-01-27-cloud-foundry/index.html @@ -346,7 +346,7 @@ width: auto; }

    Innovationsmotor Cloud Foundry!?

    von Simon Roloff | 29. Januar 2020

    cloud

    "Create Apps, Not the Platform" - Cloud Foundry verspricht, dass sich Entwicker voll und ganz auf die Anwendungsentwicklung fokussieren können, anstatt einen erheblichen Teil ihrer Zeit auf Infrastruktur, Deployment usw. -verwenden zu müssen. Was ist Cloud Foundry überhaupt? Und hält sie, was sie verspricht?

    Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken.

    Simon arbeitet als Softwareentwickler bei der Korasoft GmbH. Er findet es spannend, wie in der SAP Welt wenige Zeilen +verwenden zu müssen. Was ist Cloud Foundry überhaupt? Und hält sie, was sie verspricht?

    Wir sehen das typische Cloud-Symbol einer Wolke im Vordergrund. Jürgen stützt sich auf die Wolke, so als wäre es ein Kopfkissen. Er stützt seinen Kopf mit einem Arm ab und schaut ein bisschen verträumt. Er wirkt wie in Gedanken versunken.

    Simon arbeitet als Softwareentwickler bei der Korasoft GmbH. Er findet es spannend, wie in der SAP Welt wenige Zeilen Code riesige Unternehmen steuern. Manchmal hat er dabei das Gefühl, sich in einem Museum zu befinden, während er auf der anderen Seite mit innovativen Technologien am Puls der Zeit sein darf. Dementsprechend reicht sein Erfahrungsspektrum von traditionsreichen ABAP Reports bis hin zu modernen Cloud Foundry Apps.


    Datum: 29. Januar 2020, 19:00 Uhr

    Ort:
    Saxonia Systems AG
    Berliner Straße 63
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -355,4 +355,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2020-04-29-jdk14_graalvm/index.html b/talks/2020-04-29-jdk14_graalvm/index.html index 93ba9a89e..1e60ea52f 100644 --- a/talks/2020-04-29-jdk14_graalvm/index.html +++ b/talks/2020-04-29-jdk14_graalvm/index.html @@ -363,7 +363,7 @@

    Hinweis

    Dieser Vortrag findet Online statt. Dazu hat Wolfgang ein Zoom-Meeting aufgesetzt. Dieser Meeting-Raum ist Passwortgeschützt. Bitte meldet euch vorab per E-Mail an. Wir schicken euch dann vor dem Meeting das Passwort per Mail zu.

    -

    Dieses Mal geht es schon 18:00 Uhr los.

    Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen.

    Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei ORACLE Global Services Germany GmbH. Er gehört zum +

    Dieses Mal geht es schon 18:00 Uhr los.

    Poster: Jürgen sitzt in seinem Sessel. Er trägt sein übliches Jacket, eine Schlafanzug-Hose und Latschen. Neben dem Sessel sieht man seine üblichen schicken Schnürschuhe herumliegen. Er hat ein Headset aufgesetzt und seinen Laptop im Schoß. Jürgen verfolgt den Vortrag aus dem Home-Office. Auf dem Laptop-Deckel ist eine angebissene Banane zusehen.


    Datum: 29. April 2020, 18:00 Uhr

    Das Treffen findet Online statt. Siehe Beschreibung.

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2020-07-22-branching_modelle/index.html b/talks/2020-07-22-branching_modelle/index.html index ec3bc05be..661d09318 100644 --- a/talks/2020-07-22-branching_modelle/index.html +++ b/talks/2020-07-22-branching_modelle/index.html @@ -358,11 +358,11 @@

    Hinweis

    Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt: -https://meet.digitale-oberlausitz.eu/jug

    Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet.

    Hannes Kretschmer arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation AG in Görlitz. Dabei beschäftigt +https://meet.digitale-oberlausitz.eu/jug

    Poster: Jürgen hat einen Schaffner-Hut auf dem Kopf. Er hält ein Klemmbrett in der Hand, auf dem ein Blatt Papier mit der Überschrift 'Fahrplan' geheftet ist. Unter der Überschrift ist ein Streckenplan mit Verzweigungen angedeutet.


    Datum: 22. Juli 2020, 19:00 Uhr

    Das Treffen findet Online statt. Siehe Beschreibung.

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2020-11-25-secure_coding/index.html b/talks/2020-11-25-secure_coding/index.html index 4e16531d9..cbbf81fbd 100644 --- a/talks/2020-11-25-secure_coding/index.html +++ b/talks/2020-11-25-secure_coding/index.html @@ -353,7 +353,7 @@

    Hinweis

    Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt: -https://meet.digitale-oberlausitz.eu/jug

    Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben.

    Nico Förster arbeitet als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. Er ist im Bereich +https://meet.digitale-oberlausitz.eu/jug

    Poster: Jürgen trägt eine schwarze Woll-Mütze und eine schwarze Maske. Er trägt Handschuhe und sieht aus wie ein Einbrecher. Im Hintergrund sieht man eine Wohnungstür, vor der Jürgen kniet. Er hat einen Dietrich in der Hand und versucht gerade, dass Schloß zu knacken. Wir sehen Jürgens Rücken und er schaut zu uns über die Schulter. Seinem Blick zu urteilen, ist er überrascht weil wir ihn beim Einbrechen erwischt haben.


    Datum: 25. November 2020, 19:00 Uhr

    Das Treffen findet Online statt. Siehe Beschreibung.

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -362,4 +362,4 @@

    Hinweis

    > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2021-01-27-webcomponents/index.html b/talks/2021-01-27-webcomponents/index.html index 15501917c..bec853214 100644 --- a/talks/2021-01-27-webcomponents/index.html +++ b/talks/2021-01-27-webcomponents/index.html @@ -352,7 +352,7 @@

    Hinweis

    Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt: -https://meet.digitale-oberlausitz.eu/jug

    Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten +https://meet.digitale-oberlausitz.eu/jug

    Poster: Wir sehen ein großes Spinnennetz, in dem Jürgen gefangen ist. Er hängt verkehrt herum im Netz und sieht ziemlich erschrocken aus.

    Manuel arbeitet als Softwareentwickler bei ZEISS Digital Innovation in Görlitz. Er beschäftigt sich mit allen Aspekten der Anwendungsentwicklung, wobei der Fokus auf dem Frontend liegt. Daneben interessieren ihn Themen wie funktionale Programmierung und neue Programmiersprachen. Manuel ist Gründungsmitglied und Organisator der Java User Group Görlitz und steuert hierfür und auch für andere Usergroups und Konferenzen regelmäßig Vorträge bei.


    Datum: 27. Januar 2021, 19:00 Uhr

    Das Treffen findet Online statt. Siehe Beschreibung.

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    @@ -361,4 +361,4 @@

    Hinweis

    > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2021-06-30-microstream/index.html b/talks/2021-06-30-microstream/index.html index 90fa02e50..efa21b7b6 100644 --- a/talks/2021-06-30-microstream/index.html +++ b/talks/2021-06-30-microstream/index.html @@ -367,11 +367,11 @@

    Hinweis

    Dieser Vortrag findet Online statt. Dazu haben wir ein Jitsi-Meeting aufgesetzt: -https://meet.digitale-oberlausitz.eu/jug

    Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen.

    Christian beschäftigt sich seit über 10 Jahren mit Java und ist seit über 7 Jahren Java-Trainer. Als Projektleiter und +https://meet.digitale-oberlausitz.eu/jug

    Poster: Jürgen sitzt am Tisch und überlegt. Er spielt Memory und hat gerade eine aufgedeckte Memory-Karte mit dem Java-Duke darauf in der Hand. Auf dem Tisch sind die anderen Karten zugedeckt, bis auf eine offene Karte. Auf dieser ist ein Datenbank-Symbol zu sehen.

    Christian beschäftigt sich seit über 10 Jahren mit Java und ist seit über 7 Jahren Java-Trainer. Als Projektleiter und Software-Architekt konzipiert und implementiert er seit 10 Jahren komplexe Software-Systeme für Kunden aus unterschiedlichsten Branchen. Als Scrum Master ist er maßgeblich an der Entwicklung der freien Eclipse Distribution und visuellen Java Entwicklungsumgebung RapidClipse.com sowie der Open Source Abfragesprache JPA-SQL beteiligt. Zudem ist -Christian als Speaker bei zahlreichen Entwicklerkonferenzen bekannt.

    Markus entwickelt seit 20 Jahren mit seinem Team Developer-Tools für Java und alle wichtigen Datenbanksysteme sowie Individualsoftware für Endkunden. Er ist Product Owner der freien Eclipse Distribution und visuellen Java Entwicklungsumgebung RapidClipse sowie der Open Source Abfragesprache JPA-SQL. Markus ist Gründer und CEO von MicroStream, Chefredakteur des kostenlosen Java Magazins JAVAPRO, Co-Organisator der Java Konferenz JCON, freier Autor @@ -381,4 +381,4 @@

    Hinweis

    > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2022-06-22-iot-infrastruktur-serverless/index.html b/talks/2022-06-22-iot-infrastruktur-serverless/index.html index 29a32ec36..75d1e899e 100644 --- a/talks/2022-06-22-iot-infrastruktur-serverless/index.html +++ b/talks/2022-06-22-iot-infrastruktur-serverless/index.html @@ -352,7 +352,7 @@ Dazu wird ein Mikrocontroller vom Typ ESP als physisches IoT-Gerät verwendet.


    Hinweis: Bitte meldet euch zur Teilnahme über jug-gr(at)digitale-oberlausitz.eu an. Wir haben eine begrenzte Anzahl -von 25 Plätzen zur Verfügung, die nicht überschritten werden darf.

    Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln.

    Pawel Adaszewski ist als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz tätig. In seiner täglichen Arbeit +von 25 Plätzen zur Verfügung, die nicht überschritten werden darf.

    Poster: Jürgen spielt eine Flöte. Hinter ihm sieht man einen Weg auf dem Jürgen gelaufen kommt. Hinter ihm ist ein Smartphone und eine Waschmaschine, jeweils mit Armen, Beinen und Gesicht. Die Gesichter der Geräte sehen aus wie paralysiert und sie halten ihre Arme wie Zombies nach Vorn. Sie folgen Jürgen, so als wäre er der Rattenfänger von Hameln.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2022-10-12-indistrie_4.0/index.html b/talks/2022-10-12-indistrie_4.0/index.html index 80ce8e98d..16113fcce 100644 --- a/talks/2022-10-12-indistrie_4.0/index.html +++ b/talks/2022-10-12-indistrie_4.0/index.html @@ -381,7 +381,7 @@ uns die Services hinter einem Dashboard an und mit der Siemens S7 Steuerung tunen wir unsere Fabrik.


    Hinweis: Bitte meldet euch zur Teilnahme über jug-gr(at)digitale-oberlausitz.eu an. Wir haben eine begrenzte Anzahl -von 25 Plätzen zur Verfügung, die nicht überschritten werden darf.

    Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen.

    Marco Gotthans arbeitet als Tester bei der ZEISS Digital Innovation in Görlitz. Mit automatisierten Testscripten stellt er +von 25 Plätzen zur Verfügung, die nicht überschritten werden darf.

    Poster: Jürgen ist auf eine Wolke gestützt, die aussieht wie ein Kopfkissen. Er trägt einen roten Bauarbeiter-Helm und auf der Wolke ist ein Baukran zusehen.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2022-11-30-iam-keycloak/index.html b/talks/2022-11-30-iam-keycloak/index.html index 30fb73fb0..835cb5085 100644 --- a/talks/2022-11-30-iam-keycloak/index.html +++ b/talks/2022-11-30-iam-keycloak/index.html @@ -348,7 +348,7 @@ Es wird von vielen Unternehmen eingesetzt, um Authentifizierung und Authorisierung für verschiedenste Anwendungen umzusetzen. Eine große Stärke von Keycloak ist die Konfigurierbarkeit und Erweiterbarkeit.
    Im Vortrag wird ein Überblick über die Konfigurations- und Erweiterungsmöglichkeiten gegeben. In einer Live-Demo wird -gezeigt, wie man diese Möglichkeiten nutzen kann, um ein kundenspezifisches IAM bereitzustellen.

    Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.

    Daniel Fesenmeyer arbeitet als Software Entwickler bei Bosch IO (Berlin). Seine Schwerpunkte sind Backend-Entwicklung, Testing und +gezeigt, wie man diese Möglichkeiten nutzen kann, um ein kundenspezifisches IAM bereitzustellen.

    Poster: Jürgen trägt einen komplett schwarzen Anzug, eine Sonnenbrille und einen verkabelten Ohrstöpsel. Er sieht aus wie ein Geheimagent. Er schaut streng und hält die flache Hand vor sich um uns zurückzuhalten.


    Datum: 30. November 2022, 19:00 Uhr

    Ort:
    Innolabs Görlitz
    Bahnhofstraße 22
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-01-25-contentlab/index.html b/talks/2023-01-25-contentlab/index.html index f3a6ad301..e9e2ba69b 100644 --- a/talks/2023-01-25-contentlab/index.html +++ b/talks/2023-01-25-contentlab/index.html @@ -345,10 +345,10 @@ position: static; width: auto; }

    Content Management neu gedacht mit Contentlab

    von Markus Weiland | 25. Januar 2023

    platform, web

    Die Mehrheit aktueller Content Management Systeme (CMS) verwaltet Inhalte auf vergleichbare Art wie Dateien in einem Windows-Netzwerkordner. Wie könnte dagegen ein CMS aussehen, wenn wir nochmal von Null starten und auf heutige Technologien wie Git, GraphQL und der Cloud aufbauen? -Im Vortrag sehen wir uns die Architektur von Contentlab an, einem Git-basierten Open Source CMS, und erstellen live eine CMS Instanz zum Verwalten von Veranstaltungen.

    Poster: Jürgen trägt einen Laborkittel und eine Sicherheitsbrille. In der Hand trägt er zwei Reagenzgläser. Über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    +Im Vortrag sehen wir uns die Architektur von Contentlab an, einem Git-basierten Open Source CMS, und erstellen live eine CMS Instanz zum Verwalten von Veranstaltungen.

    Poster: Jürgen trägt einen Laborkittel und eine Sicherheitsbrille. In der Hand trägt er zwei Reagenzgläser. Über Jürgen und den Gläsern ziehen Rauchschwaden auf, Jürgen ist komplett grau vom Explosionsstaub.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-02-22-exception_first/index.html b/talks/2023-02-22-exception_first/index.html index a454f9863..efb182e0d 100644 --- a/talks/2023-02-22-exception_first/index.html +++ b/talks/2023-02-22-exception_first/index.html @@ -346,10 +346,10 @@ width: auto; }

    Exception First – Stabilisiere deinen Code mit mehr Exceptions

    von Sergej Tihonov | 22. Februar 2023

    architektur

    Fehler sind ein fester Bestandteil unserer Arbeit. Die Suche und das Verstehen dieser nimmt viel Zeit in Anspruch. Die Fehlerbehebung ist häufig nur eine Zeile Code. Wie kann der Prozess des Suchens und Verstehens optimiert werden? Dies ist durch eine strategische Vorbereitung der Codebasis möglich.

    Hierfür stelle ich zwei Transformationen vor. Ziel der ersten Transformation: Beim Auftreten eines Fehlers erfolgt der sofortige Ausstieg aus dem Code mit einer aussagekräftigen Exception. Das ist sehr ähnlich zur Validierung. Auf Ähnlichkeiten und Unterschiede gehe ich im Detail ein. Ziel der zweiten Transformation: Trennung der Standard-Logik von den Sonderfällen. Dies verbessert die Lesbarkeit. Zusätzlich ergänzt es die erste Transformation.

    -

    Anhand der vorgestellten Beispiele kannst du schon morgen deinen Code stabilisieren und deine eigenen Analysen effizienter durchführen. Außerdem gebe ich einen Ausblick darauf, wie du noch mehr aus diesem Konzept rausholen kannst.

    Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    +

    Anhand der vorgestellten Beispiele kannst du schon morgen deinen Code stabilisieren und deine eigenen Analysen effizienter durchführen. Außerdem gebe ich einen Ausblick darauf, wie du noch mehr aus diesem Konzept rausholen kannst.

    Poster: Jürgen hält sich eine Lupe vor das Gesicht. In der Lupe erscheint sein Auge vergrößert.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/index.html b/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/index.html index 24923c754..d91bdb404 100644 --- a/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/index.html +++ b/talks/2023-03-29-spring_fuer_architekturinteressierte_entwickler_innen/index.html @@ -358,10 +358,10 @@ IT-Sicherheit für Kritische Infrastrukturen für Energie und Wasser geforscht und wir haben die Möglichkeit, eine kurze Führung durch das Institut zu bekommen. Deshalb treffen wir uns dieses Mal bereits 18:30 Uhr. Der reguläre Vortrag startet wie gewohnt um 19:00 Uhr.

    -

    Einen kurzen Einblick darüber, was wir in diesen Ersten Teil gesehen und gehört haben, könnt ihr auf der Website der Digitalen Oberlausitz e. V. nachlesen.

    Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    +

    Einen kurzen Einblick darüber, was wir in diesen Ersten Teil gesehen und gehört haben, könnt ihr auf der Website der Digitalen Oberlausitz e. V. nachlesen.

    Poster: Jürgens Kopf ist auf einer Sprungfeder in einer Box, die wie ein Springteufel herausragt.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-04-26-archunit_unit_tests_java_architektur/index.html b/talks/2023-04-26-archunit_unit_tests_java_architektur/index.html index 271cfe11a..72ee2d925 100644 --- a/talks/2023-04-26-archunit_unit_tests_java_architektur/index.html +++ b/talks/2023-04-26-archunit_unit_tests_java_architektur/index.html @@ -345,10 +345,10 @@ position: static; width: auto; }

    ArchUnit: Unit-Tests für deine Java-Architektur

    von Roland Weisleder | 26. April 2023

    architektur, test

    Architektur und Code driften immer weiter auseinander? Die Umsetzung von nicht-funktionalen Anforderungen und Querschnittsaspekten wird häufig vergessen? Zu viel Spaghetti-Code durch zyklische Abhängigkeiten? Solche Dinge kommen leider viel zu häufig vor und führen schnell zu einer unwartbaren Codebasis. -Im Java-Umfeld ist die Bibliothek ArchUnit eine mögliche Lösung für diese Situation. Wir schauen, wie wir mit ArchUnit unsere Architektur innerhalb von Unit-Tests testen können und endlich wieder Struktur ins System bekommen. Außerdem schauen wir uns darauf aufbauend jMolecules an, womit wir Architekturkonzepte direkt im Code abbilden können.

    Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. In den Hängen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen.

    Roland Weisleder ist freiberuflicher Softwareentwickler und seit 2009 im Java-Ökosystem unterwegs. Sein Schwerpunkt ist die Stabilisierung und Weiterentwicklung von gewachsenen Enterprise-Anwendungen. Er hat eine Leidenschaft für Test- und Buildautomatisierung und verfolgt das Ziel, dass Prozesse in der Softwareentwicklung einfacher und robuster werden. Seine Erfahrungen teilt er in Vorträgen im In- und Ausland.


    Datum: 26. April 2023, 19:00 Uhr

    Ort:
    Expleo
    Konsulstraße 23
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    +Im Java-Umfeld ist die Bibliothek ArchUnit eine mögliche Lösung für diese Situation. Wir schauen, wie wir mit ArchUnit unsere Architektur innerhalb von Unit-Tests testen können und endlich wieder Struktur ins System bekommen. Außerdem schauen wir uns darauf aufbauend jMolecules an, womit wir Architekturkonzepte direkt im Code abbilden können.

    Poster: Jürgens trägt ein grünes Cape und einen Hut mit einer Feder. In den Hängen hat er Pfeil und Bogen parat, am Rücken trägt er einen Köcher mit weiteren Pfeilen.

    Roland Weisleder ist freiberuflicher Softwareentwickler und seit 2009 im Java-Ökosystem unterwegs. Sein Schwerpunkt ist die Stabilisierung und Weiterentwicklung von gewachsenen Enterprise-Anwendungen. Er hat eine Leidenschaft für Test- und Buildautomatisierung und verfolgt das Ziel, dass Prozesse in der Softwareentwicklung einfacher und robuster werden. Seine Erfahrungen teilt er in Vorträgen im In- und Ausland.


    Datum: 26. April 2023, 19:00 Uhr

    Ort:
    Expleo
    Konsulstraße 23
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-05-31-accessibility_in_the_wild/index.html b/talks/2023-05-31-accessibility_in_the_wild/index.html index e52b579a2..fd0e8163f 100644 --- a/talks/2023-05-31-accessibility_in_the_wild/index.html +++ b/talks/2023-05-31-accessibility_in_the_wild/index.html @@ -348,10 +348,10 @@

    Materialien:

    Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake.


    Datum: 31. Mai 2023, 19:00 Uhr

    Ort:
    Tallence AG
    Neißstraße 27
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    +
    Poster: Jürgen hat einen Baseballschläger in den Händen und zerstört damit eine Verkehrsbake.


    Datum: 31. Mai 2023, 19:00 Uhr

    Ort:
    Tallence AG
    Neißstraße 27
    02826 Görlitz

    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-06-28-graalvm_23/index.html b/talks/2023-06-28-graalvm_23/index.html index 2b10a1029..22054ce36 100644 --- a/talks/2023-06-28-graalvm_23/index.html +++ b/talks/2023-06-28-graalvm_23/index.html @@ -344,7 +344,7 @@ overflow: visible; position: static; width: auto; } -

    GraalVM 23 – Konzepte und Features

    von Wolfgang Weigend | 28. Juni 2023

    java

    Die GraalVM ist eine Virtuelle Maschine (VM) für Anwendungen, die in JavaScript, Python, Ruby, R oder mit den JVM-basierten Programmiersprachen Java, Scala, Kotlin, Clojure und LLVM-basierten Sprachen C/C++ geschrieben wurden. Am 13. Juni 2023 wurde die GraalVM 23 freigegeben, mit Performanceverbesserungen und Native-Image-Optimierungen, sowie polyglotter Unterstützung für verschiedene Programmiersprachen, zur Interoperabilität in einer gemeinsamen Laufzeitumgebung. GraalVM kann eigenständig oder im Kontext von OpenJDK, Node.js und Datenbanken betrieben werden. Mit GraalVM‘s Ahead-of-Time-Fähigkeit kompilierte Native Images verfügen über eine optimierte Startup-Time und sie verringern den Memory-Verbrauch von JVM-basierten Applikationen. Die GraalVM kann wahlweise als Open-Source-Community-Edition (CE) oder als optimierte Oracle GraalVM mit GFTC-Lizenz “GraalVM Free Terms and Conditions (GFTC) including License for Early Adopter Versions” verwendet werden. Im Vortrag wird die GraalVM-Architektur im Java-Ökosystem dargestellt und die Einsatzgebiete erläutert, beispielsweise der in Java entwickelte C2-JIT-Compiler und die Verwendung von GraalVM Native Images. GraalVM kann für Spring Boot und Microservices-Frameworks verwendet werden.

    Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt.

    Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei ORACLE Global Services Germany GmbH. Er gehört zum +

    GraalVM 23 – Konzepte und Features

    von Wolfgang Weigend | 28. Juni 2023

    java

    Die GraalVM ist eine Virtuelle Maschine (VM) für Anwendungen, die in JavaScript, Python, Ruby, R oder mit den JVM-basierten Programmiersprachen Java, Scala, Kotlin, Clojure und LLVM-basierten Sprachen C/C++ geschrieben wurden. Am 13. Juni 2023 wurde die GraalVM 23 freigegeben, mit Performanceverbesserungen und Native-Image-Optimierungen, sowie polyglotter Unterstützung für verschiedene Programmiersprachen, zur Interoperabilität in einer gemeinsamen Laufzeitumgebung. GraalVM kann eigenständig oder im Kontext von OpenJDK, Node.js und Datenbanken betrieben werden. Mit GraalVM‘s Ahead-of-Time-Fähigkeit kompilierte Native Images verfügen über eine optimierte Startup-Time und sie verringern den Memory-Verbrauch von JVM-basierten Applikationen. Die GraalVM kann wahlweise als Open-Source-Community-Edition (CE) oder als optimierte Oracle GraalVM mit GFTC-Lizenz “GraalVM Free Terms and Conditions (GFTC) including License for Early Adopter Versions” verwendet werden. Im Vortrag wird die GraalVM-Architektur im Java-Ökosystem dargestellt und die Einsatzgebiete erläutert, beispielsweise der in Java entwickelte C2-JIT-Compiler und die Verwendung von GraalVM Native Images. GraalVM kann für Spring Boot und Microservices-Frameworks verwendet werden.

    Poster: Jürgen hat ein Prisma in der Hand aus dem ein regenbogenfarbener Lichtstrahl ausdringt.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-09-27-virtual-threads/index.html b/talks/2023-09-27-virtual-threads/index.html new file mode 100644 index 000000000..447570767 --- /dev/null +++ b/talks/2023-09-27-virtual-threads/index.html @@ -0,0 +1,356 @@ +Java User Group Görlitz

    Java 21: Virtual Threads - Why should I care?

    von Patryk Lewandowski | 27. September 2023

    In September 2023 the latest version of JDK 21 will be officially released. During this lecture we will look into most +important changes in Java Development Kit and their impact on everyday use of the Java Language. In particular, we will +dive into performance impact of virtual threads and their comparison to existing solutions, the further improvements in +recently introduced record objects and also look into the future plans for Java.




    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    + + \ No newline at end of file diff --git a/talks/2023-10-25-_aws_cdk_in_action/index.html b/talks/2023-10-25-_aws_cdk_in_action/index.html index f958e7e33..0fdaa2271 100644 --- a/talks/2023-10-25-_aws_cdk_in_action/index.html +++ b/talks/2023-10-25-_aws_cdk_in_action/index.html @@ -348,7 +348,7 @@

    Einige Lösungen bieten einen einfachen Einstieg, dafür muss mangelnde Skalierbarkeit und Replizierbarkeit in Kauf genommen werden. Andere bieten zwar Skalierbarkeit, können aber nicht modularisiert werden, was den Aufbau und die Wartung großer Infrastrukturen erschwert.

    Das AWS CDK Framework löst diese Probleme und ermöglicht die Erstellung von Ressourcen mit bekannten Programmiersprachen wie Java. Mit dessen Hilfe wird vorgestellt, wie die Entwicklung von Cloud-Infrastrukturen auf ein höheres Level gebracht werden kann. Der Vortrag wird aus der Sicht eines Anfängers, der in der neuen Technologie die Lösung für alle Probleme der Welt sieht, und aus der Sicht eines erfahrenen Anwenders, der täglich mit dem Framework arbeitet und sich an seine Anfänge im Jahr 2019 erinnert, präsentiert.

    Durch die Kombination dieser beiden Perspektiven wird nicht nur veranschaulicht, wie einfach der Einstieg in diese Art von Technologie ist, sondern es werden auch praktische Erfahrungen weitergegeben. Auch mögliche Probleme und deren Lösungen werden angesprochen. -Im Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die Skalierung und Modularisierung von Serverless AWS Infrastrukturen verwendet werden kann.


    Damian ist Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. In den letzten Jahren war er für die Wartung und Weiterentwicklung einer großen Java-Enterprise-Anwendung im Bereich Logistik verantwortlich. Aktuell beschäftigt er sich mit Serverless, automatisierter Infrastrukturbereitstellung und ist ein begeisterter Wanderer durch die AWS-Landschaft geworden, der jeden Tag etwas Neues entdeckt.

    Pawel Adaszewski ist als Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz tätig. In seiner täglichen Arbeit +Im Live Coding wird vorgeführt, wie das AWS CDK Framework für den Aufbau, die Skalierung und Modularisierung von Serverless AWS Infrastrukturen verwendet werden kann.


    Damian ist Softwareentwickler bei der Carl Zeiss Digital Innovation GmbH in Görlitz. In den letzten Jahren war er für die Wartung und Weiterentwicklung einer großen Java-Enterprise-Anwendung im Bereich Logistik verantwortlich. Aktuell beschäftigt er sich mit Serverless, automatisierter Infrastrukturbereitstellung und ist ein begeisterter Wanderer durch die AWS-Landschaft geworden, der jeden Tag etwas Neues entdeckt.



    Die Veranstaltung wird durch die Java User Group Görlitz (im iJUG Verband) organisiert.

    - \ No newline at end of file + \ No newline at end of file diff --git a/talks/2023-11-29-crac/index.html b/talks/2023-11-29-crac/index.html index 48f769fd6..8996eb001 100644 --- a/talks/2023-11-29-crac/index.html +++ b/talks/2023-11-29-crac/index.html @@ -355,7 +355,7 @@ Schnappschuss der laufenden JVM zu machen, diesen in Dateien zu speichern und die JVM zu einem späteren Zeitpunkt (oder sogar auf einer anderen Maschine) wiederherzustellen.

    Dieser Vortrag gibt Ihnen einen kurzen Überblick über das CRaC-Projekt und zeigt einige Ergebnisse einer -Proof-of-Concept-Implementierung.


    Gerrit Grunwald ist ein Softwareentwickler, der schon seit 40 Jahren gerne programmiert. Er ist ein echter Anhänger von +Proof-of-Concept-Implementierung.


    Gerrit Grunwald ist ein Softwareentwickler, der schon seit 40 Jahren gerne programmiert. Er ist ein echter Anhänger von Open Source und hat sowohl an populären Projekten wie JFXtras.org als auch an seinen eigenen Projekten (TilesFX, Medusa, Enzo, SteelSeries Swing, SteelSeries Canvas, JDKMon) mitgewirkt.

    Gerrit bloggt regelmäßig auf http://harmonic-code.org, er ist ein aktives Mitglied der @@ -366,4 +366,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/talks/index.html b/talks/index.html index 84f92b6c9..43e9506d9 100644 --- a/talks/index.html +++ b/talks/index.html @@ -344,10 +344,10 @@ overflow: visible; position: static; width: auto; } -

    Alle Vortragsthemen

    +

    Alle Vortragsthemen

    - \ No newline at end of file + \ No newline at end of file diff --git a/unterstuetzer/index.html b/unterstuetzer/index.html index 9e51e36ec..b1382f60b 100644 --- a/unterstuetzer/index.html +++ b/unterstuetzer/index.html @@ -350,4 +350,4 @@ > window.___chunkMapping="{\"app\":[\"/app-d045bd32332213e7da53.js\"],\"component---src-pages-404-tsx\":[\"/component---src-pages-404-tsx-40df00c8cace58695efb.js\"],\"component---src-pages-debug-redirects-tsx\":[\"/component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js\"],\"component---src-pages-index-tsx\":[\"/component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js\"],\"component---src-pages-locations-tsx\":[\"/component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js\"],\"component---src-pages-posters-tsx\":[\"/component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js\"],\"component---src-pages-speakers-tsx\":[\"/component---src-pages-speakers-tsx-c309584ed597fba12705.js\"],\"component---src-pages-tags-tsx\":[\"/component---src-pages-tags-tsx-9e424102bccd3c7982cc.js\"],\"component---src-pages-talks-tsx\":[\"/component---src-pages-talks-tsx-0445826b9eabd8cb111c.js\"],\"component---src-pages-unterstuetzer-tsx\":[\"/component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js\"],\"component---src-templates-location-page-tsx\":[\"/component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js\"],\"component---src-templates-speaker-page-tsx\":[\"/component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js\"],\"component---src-templates-static-page-tsx\":[\"/component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js\"],\"component---src-templates-talk-page-tsx\":[\"/component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js\"]}"; - \ No newline at end of file + \ No newline at end of file diff --git a/webpack-runtime-8bc8b4ba759484411d0e.js b/webpack-runtime-ecea554c6e76a4ccbfce.js similarity index 97% rename from webpack-runtime-8bc8b4ba759484411d0e.js rename to webpack-runtime-ecea554c6e76a4ccbfce.js index 2b7814f0b..a57fb2bc6 100644 --- a/webpack-runtime-8bc8b4ba759484411d0e.js +++ b/webpack-runtime-ecea554c6e76a4ccbfce.js @@ -1,2 +1,2 @@ -!function(){"use strict";var e,t,n,r,o,c,a,i={},u={};function f(e){var t=u[e];if(void 0!==t)return t.exports;var n=u[e]={id:e,loaded:!1,exports:{}};return i[e].call(n.exports,n,n.exports,f),n.loaded=!0,n.exports}f.m=i,e=[],f.O=function(t,n,r,o){if(!n){var c=1/0;for(s=0;s=o)&&Object.keys(f.O).every((function(e){return f.O[e](n[i])}))?n.splice(i--,1):(a=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},f.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},f.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},f.d(o,c),o},f.d=function(e,t){for(var n in t)f.o(t,n)&&!f.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},f.f={},f.e=function(e){return Promise.all(Object.keys(f.f).reduce((function(t,n){return f.f[n](e,t),t}),[]))},f.u=function(e){return({176:"component---src-templates-location-page-tsx",190:"component---src-pages-tags-tsx",218:"component---src-pages-404-tsx",325:"b95451f0b310186e909e788b848f8c20c7036633",351:"commons",356:"component---src-pages-debug-redirects-tsx",386:"component---src-templates-static-page-tsx",505:"component---src-pages-talks-tsx",532:"styles",534:"083fcf652479e2899573de2cb0d9a486b1ed95d5",691:"component---src-pages-index-tsx",714:"component---src-templates-speaker-page-tsx",721:"component---src-templates-talk-page-tsx",743:"component---src-pages-posters-tsx",758:"component---src-pages-speakers-tsx",885:"75fc9c18",948:"2cca2479",969:"component---src-pages-locations-tsx",976:"c16184b3",988:"component---src-pages-unterstuetzer-tsx"}[e]||e)+"-"+{176:"2fd7c1d50c029b827063",190:"9e424102bccd3c7982cc",218:"40df00c8cace58695efb",223:"e282224b123422d2635e",325:"acef5c6dd28b08d05a4c",351:"f4bbe7ce1a5c1095684d",356:"f66aa17a7c817022099a",386:"7e013f4f0cc0eabd4a50",505:"0445826b9eabd8cb111c",532:"35de55e925de9d5d59cb",534:"47c0f2d790faa87edb72",691:"b710e7d2a51e2b6297fe",714:"debd7cdadc88ce2f770d",721:"ab69b6140103e09d919e",743:"e5ebfca8b1df096c1d82",758:"c309584ed597fba12705",843:"8ca00901839f57538186",885:"f71279181183774e258e",948:"b2d765cf72ccefa90080",969:"2b27ecd750548e08c6e6",976:"1b49df0b1e7d5219011e",988:"5fb791b73e140a637103"}[e]+".js"},f.miniCssF=function(e){return"styles.1850005b543de3ef97f5.css"},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="jug-goerlitz:",f.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,i;if(void 0!==n)for(var u=document.getElementsByTagName("script"),s=0;s=o)&&Object.keys(f.O).every((function(e){return f.O[e](n[i])}))?n.splice(i--,1):(a=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},f.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},f.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},f.d(o,c),o},f.d=function(e,t){for(var n in t)f.o(t,n)&&!f.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},f.f={},f.e=function(e){return Promise.all(Object.keys(f.f).reduce((function(t,n){return f.f[n](e,t),t}),[]))},f.u=function(e){return({176:"component---src-templates-location-page-tsx",190:"component---src-pages-tags-tsx",218:"component---src-pages-404-tsx",325:"b95451f0b310186e909e788b848f8c20c7036633",351:"commons",356:"component---src-pages-debug-redirects-tsx",386:"component---src-templates-static-page-tsx",505:"component---src-pages-talks-tsx",532:"styles",534:"083fcf652479e2899573de2cb0d9a486b1ed95d5",691:"component---src-pages-index-tsx",714:"component---src-templates-speaker-page-tsx",721:"component---src-templates-talk-page-tsx",743:"component---src-pages-posters-tsx",758:"component---src-pages-speakers-tsx",885:"75fc9c18",948:"2cca2479",969:"component---src-pages-locations-tsx",976:"c16184b3",988:"component---src-pages-unterstuetzer-tsx"}[e]||e)+"-"+{176:"2fd7c1d50c029b827063",190:"9e424102bccd3c7982cc",218:"40df00c8cace58695efb",223:"e282224b123422d2635e",325:"a2a7f8da3ff01b966ec5",351:"f4bbe7ce1a5c1095684d",356:"f66aa17a7c817022099a",386:"7e013f4f0cc0eabd4a50",505:"0445826b9eabd8cb111c",532:"35de55e925de9d5d59cb",534:"47c0f2d790faa87edb72",691:"b710e7d2a51e2b6297fe",714:"debd7cdadc88ce2f770d",721:"ab69b6140103e09d919e",743:"e5ebfca8b1df096c1d82",758:"c309584ed597fba12705",843:"8ca00901839f57538186",885:"f71279181183774e258e",948:"b2d765cf72ccefa90080",969:"2b27ecd750548e08c6e6",976:"1b49df0b1e7d5219011e",988:"5fb791b73e140a637103"}[e]+".js"},f.miniCssF=function(e){return"styles.1850005b543de3ef97f5.css"},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="jug-goerlitz:",f.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,i;if(void 0!==n)for(var u=document.getElementsByTagName("script"),s=0;s 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"jug-goerlitz:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"176\":\"component---src-templates-location-page-tsx\",\"190\":\"component---src-pages-tags-tsx\",\"218\":\"component---src-pages-404-tsx\",\"325\":\"b95451f0b310186e909e788b848f8c20c7036633\",\"351\":\"commons\",\"356\":\"component---src-pages-debug-redirects-tsx\",\"386\":\"component---src-templates-static-page-tsx\",\"505\":\"component---src-pages-talks-tsx\",\"532\":\"styles\",\"534\":\"083fcf652479e2899573de2cb0d9a486b1ed95d5\",\"691\":\"component---src-pages-index-tsx\",\"714\":\"component---src-templates-speaker-page-tsx\",\"721\":\"component---src-templates-talk-page-tsx\",\"743\":\"component---src-pages-posters-tsx\",\"758\":\"component---src-pages-speakers-tsx\",\"885\":\"75fc9c18\",\"948\":\"2cca2479\",\"969\":\"component---src-pages-locations-tsx\",\"976\":\"c16184b3\",\"988\":\"component---src-pages-unterstuetzer-tsx\"}[chunkId] || chunkId) + \"-\" + {\"176\":\"2fd7c1d50c029b827063\",\"190\":\"9e424102bccd3c7982cc\",\"218\":\"40df00c8cace58695efb\",\"223\":\"e282224b123422d2635e\",\"325\":\"acef5c6dd28b08d05a4c\",\"351\":\"f4bbe7ce1a5c1095684d\",\"356\":\"f66aa17a7c817022099a\",\"386\":\"7e013f4f0cc0eabd4a50\",\"505\":\"0445826b9eabd8cb111c\",\"532\":\"35de55e925de9d5d59cb\",\"534\":\"47c0f2d790faa87edb72\",\"691\":\"b710e7d2a51e2b6297fe\",\"714\":\"debd7cdadc88ce2f770d\",\"721\":\"ab69b6140103e09d919e\",\"743\":\"e5ebfca8b1df096c1d82\",\"758\":\"c309584ed597fba12705\",\"843\":\"8ca00901839f57538186\",\"885\":\"f71279181183774e258e\",\"948\":\"b2d765cf72ccefa90080\",\"969\":\"2b27ecd750548e08c6e6\",\"976\":\"1b49df0b1e7d5219011e\",\"988\":\"5fb791b73e140a637103\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"1850005b543de3ef97f5\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkjug_goerlitz\"] = self[\"webpackChunkjug_goerlitz\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"webpack-runtime-ecea554c6e76a4ccbfce.js","mappings":"6BAAIA,ECCAC,EADAC,ECAAC,EACAC,ECwCAC,EASAC,E,KCjDAC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CACjDK,GAAIL,EACJM,QAAQ,EACRH,QAAS,CAAC,GAUX,OANAI,EAAoBP,GAAUQ,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAG3EK,EAAOE,QAAS,EAGTF,EAAOD,OACf,CAGAJ,EAAoBU,EAAIF,EJ5BpBhB,EAAW,GACfQ,EAAoBW,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAI1B,EAAS2B,OAAQD,IAAK,CACrCL,EAAWrB,EAAS0B,GAAG,GACvBJ,EAAKtB,EAAS0B,GAAG,GACjBH,EAAWvB,EAAS0B,GAAG,GAE3B,IAJA,IAGIE,GAAY,EACPC,EAAI,EAAGA,EAAIR,EAASM,OAAQE,MACpB,EAAXN,GAAsBC,GAAgBD,IAAaO,OAAOC,KAAKvB,EAAoBW,GAAGa,OAAM,SAASC,GAAO,OAAOzB,EAAoBW,EAAEc,GAAKZ,EAASQ,GAAK,IAChKR,EAASa,OAAOL,IAAK,IAErBD,GAAY,EACTL,EAAWC,IAAcA,EAAeD,IAG7C,GAAGK,EAAW,CACb5B,EAASkC,OAAOR,IAAK,GACrB,IAAIS,EAAIb,SACEX,IAANwB,IAAiBf,EAASe,EAC/B,CACD,CACA,OAAOf,CArBP,CAJCG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI1B,EAAS2B,OAAQD,EAAI,GAAK1B,EAAS0B,EAAI,GAAG,GAAKH,EAAUG,IAAK1B,EAAS0B,GAAK1B,EAAS0B,EAAI,GACrG1B,EAAS0B,GAAK,CAACL,EAAUC,EAAIC,EAwB/B,EK5BAf,EAAoB4B,EAAI,SAASvB,GAChC,IAAIwB,EAASxB,GAAUA,EAAOyB,WAC7B,WAAa,OAAOzB,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAL,EAAoB+B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CACR,EJPInC,EAAW4B,OAAOW,eAAiB,SAASC,GAAO,OAAOZ,OAAOW,eAAeC,EAAM,EAAI,SAASA,GAAO,OAAOA,EAAIC,SAAW,EAQpInC,EAAoBoC,EAAI,SAASC,EAAOC,GAEvC,GADU,EAAPA,IAAUD,EAAQE,KAAKF,IAChB,EAAPC,EAAU,OAAOD,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPC,GAAaD,EAAMP,WAAY,OAAOO,EAC1C,GAAW,GAAPC,GAAoC,mBAAfD,EAAMG,KAAqB,OAAOH,CAC5D,CACA,IAAII,EAAKnB,OAAOoB,OAAO,MACvB1C,EAAoB2B,EAAEc,GACtB,IAAIE,EAAM,CAAC,EACXlD,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIkD,EAAiB,EAAPN,GAAYD,EAAyB,iBAAXO,KAAyBnD,EAAeoD,QAAQD,GAAUA,EAAUlD,EAASkD,GACxHtB,OAAOwB,oBAAoBF,GAASG,SAAQ,SAAStB,GAAOkB,EAAIlB,GAAO,WAAa,OAAOY,EAAMZ,EAAM,CAAG,IAI3G,OAFAkB,EAAa,QAAI,WAAa,OAAON,CAAO,EAC5CrC,EAAoB+B,EAAEU,EAAIE,GACnBF,CACR,EKxBAzC,EAAoB+B,EAAI,SAAS3B,EAAS4C,GACzC,IAAI,IAAIvB,KAAOuB,EACXhD,EAAoBiD,EAAED,EAAYvB,KAASzB,EAAoBiD,EAAE7C,EAASqB,IAC5EH,OAAO4B,eAAe9C,EAASqB,EAAK,CAAE0B,YAAY,EAAMC,IAAKJ,EAAWvB,IAG3E,ECPAzB,EAAoBqD,EAAI,CAAC,EAGzBrD,EAAoBsD,EAAI,SAASC,GAChC,OAAOC,QAAQC,IAAInC,OAAOC,KAAKvB,EAAoBqD,GAAGK,QAAO,SAASC,EAAUlC,GAE/E,OADAzB,EAAoBqD,EAAE5B,GAAK8B,EAASI,GAC7BA,CACR,GAAG,IACJ,ECPA3D,EAAoB4D,EAAI,SAASL,GAEhC,OAAa,CAAC,IAAM,8CAA8C,IAAM,iCAAiC,IAAM,gCAAgC,IAAM,2CAA2C,IAAM,UAAU,IAAM,4CAA4C,IAAM,4CAA4C,IAAM,kCAAkC,IAAM,SAAS,IAAM,2CAA2C,IAAM,kCAAkC,IAAM,6CAA6C,IAAM,0CAA0C,IAAM,oCAAoC,IAAM,qCAAqC,IAAM,WAAW,IAAM,WAAW,IAAM,sCAAsC,IAAM,WAAW,IAAM,2CAA2CA,IAAYA,GAAW,IAAM,CAAC,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,wBAAwBA,GAAW,KACr7C,ECHAvD,EAAoB6D,SAAW,SAASN,GAEvC,MAAO,iCACR,ECJAvD,EAAoB8D,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOxB,MAAQ,IAAIyB,SAAS,cAAb,EAGhB,CAFE,MAAOV,GACR,GAAsB,iBAAXW,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBjE,EAAoBiD,EAAI,SAASf,EAAKgC,GAAQ,OAAO5C,OAAO6C,UAAUC,eAAe3D,KAAKyB,EAAKgC,EAAO,ETAlGvE,EAAa,CAAC,EACdC,EAAoB,gBAExBI,EAAoBqE,EAAI,SAASC,EAAKC,EAAM9C,EAAK8B,GAChD,GAAG5D,EAAW2E,GAAQ3E,EAAW2E,GAAKE,KAAKD,OAA3C,CACA,IAAIE,EAAQC,EACZ,QAAWvE,IAARsB,EAEF,IADA,IAAIkD,EAAUC,SAASC,qBAAqB,UACpC3D,EAAI,EAAGA,EAAIyD,EAAQxD,OAAQD,IAAK,CACvC,IAAI4D,EAAIH,EAAQzD,GAChB,GAAG4D,EAAEC,aAAa,QAAUT,GAAOQ,EAAEC,aAAa,iBAAmBnF,EAAoB6B,EAAK,CAAEgD,EAASK,EAAG,KAAO,CACpH,CAEGL,IACHC,GAAa,GACbD,EAASG,SAASI,cAAc,WAEzBC,QAAU,QACjBR,EAAOS,QAAU,IACblF,EAAoBmF,IACvBV,EAAOW,aAAa,QAASpF,EAAoBmF,IAElDV,EAAOW,aAAa,eAAgBxF,EAAoB6B,GACxDgD,EAAOY,IAAMf,GAEd3E,EAAW2E,GAAO,CAACC,GACnB,IAAIe,EAAmB,SAASC,EAAMC,GAErCf,EAAOgB,QAAUhB,EAAOiB,OAAS,KACjCC,aAAaT,GACb,IAAIU,EAAUjG,EAAW2E,GAIzB,UAHO3E,EAAW2E,GAClBG,EAAOoB,YAAcpB,EAAOoB,WAAWC,YAAYrB,GACnDmB,GAAWA,EAAQ7C,SAAQ,SAASjC,GAAM,OAAOA,EAAG0E,EAAQ,IACzDD,EAAM,OAAOA,EAAKC,EACtB,EAEIN,EAAUa,WAAWT,EAAiBU,KAAK,UAAM7F,EAAW,CAAE8F,KAAM,UAAWC,OAAQzB,IAAW,MACtGA,EAAOgB,QAAUH,EAAiBU,KAAK,KAAMvB,EAAOgB,SACpDhB,EAAOiB,OAASJ,EAAiBU,KAAK,KAAMvB,EAAOiB,QACnDhB,GAAcE,SAASuB,KAAKC,YAAY3B,EApCkB,CAqC3D,EUxCAzE,EAAoB2B,EAAI,SAASvB,GACX,oBAAXiG,QAA0BA,OAAOC,aAC1ChF,OAAO4B,eAAe9C,EAASiG,OAAOC,YAAa,CAAEjE,MAAO,WAE7Df,OAAO4B,eAAe9C,EAAS,aAAc,CAAEiC,OAAO,GACvD,ECNArC,EAAoBuG,IAAM,SAASlG,GAGlC,OAFAA,EAAOmG,MAAQ,GACVnG,EAAOoG,WAAUpG,EAAOoG,SAAW,IACjCpG,CACR,ECJAL,EAAoB0G,EAAI,IXyCpB7G,EAAiB,SAAS0D,GAC7B,OAAO,IAAIC,SAAQ,SAASmD,EAASC,GACpC,IAAIC,EAAO7G,EAAoB6D,SAASN,GACpCuD,EAAW9G,EAAoB0G,EAAIG,EACvC,GAlBmB,SAASA,EAAMC,GAEnC,IADA,IAAIC,EAAmBnC,SAASC,qBAAqB,QAC7C3D,EAAI,EAAGA,EAAI6F,EAAiB5F,OAAQD,IAAK,CAChD,IACI8F,GADAC,EAAMF,EAAiB7F,IACR6D,aAAa,cAAgBkC,EAAIlC,aAAa,QACjE,GAAe,eAAZkC,EAAIC,MAAyBF,IAAaH,GAAQG,IAAaF,GAAW,OAAOG,CACrF,CACA,IAAIE,EAAoBvC,SAASC,qBAAqB,SACtD,IAAQ3D,EAAI,EAAGA,EAAIiG,EAAkBhG,OAAQD,IAAK,CACjD,IAAI+F,EAEJ,IADID,GADAC,EAAME,EAAkBjG,IACT6D,aAAa,gBAChB8B,GAAQG,IAAaF,EAAU,OAAOG,CACvD,CACD,CAKKG,CAAeP,EAAMC,GAAW,OAAOH,KA7CrB,SAASpD,EAASuD,EAAUH,EAASC,GAC3D,IAAIS,EAAUzC,SAASI,cAAc,QAErCqC,EAAQH,IAAM,aACdG,EAAQpB,KAAO,WAiBfoB,EAAQ5B,QAAU4B,EAAQ3B,OAhBL,SAASF,GAG7B,GADA6B,EAAQ5B,QAAU4B,EAAQ3B,OAAS,KAChB,SAAfF,EAAMS,KACTU,QACM,CACN,IAAIW,EAAY9B,IAAyB,SAAfA,EAAMS,KAAkB,UAAYT,EAAMS,MAChEsB,EAAW/B,GAASA,EAAMU,QAAUV,EAAMU,OAAOW,MAAQC,EACzDU,EAAM,IAAIC,MAAM,qBAAuBlE,EAAU,cAAgBgE,EAAW,KAChFC,EAAIE,KAAO,wBACXF,EAAIvB,KAAOqB,EACXE,EAAIG,QAAUJ,EACdF,EAAQxB,WAAWC,YAAYuB,GAC/BT,EAAOY,EACR,CACD,EAEAH,EAAQR,KAAOC,EAEflC,SAASuB,KAAKC,YAAYiB,EAE3B,CAoBEO,CAAiBrE,EAASuD,EAAUH,EAASC,EAC9C,GACD,EAEI9G,EAAqB,CACxB,IAAK,GAGNE,EAAoBqD,EAAEwE,QAAU,SAAStE,EAASI,GAE9C7D,EAAmByD,GAAUI,EAASa,KAAK1E,EAAmByD,IACzB,IAAhCzD,EAAmByD,IAFX,CAAC,IAAM,GAEgCA,IACtDI,EAASa,KAAK1E,EAAmByD,GAAW1D,EAAe0D,GAASf,MAAK,WACxE1C,EAAmByD,GAAW,CAC/B,IAAG,SAASD,GAEX,aADOxD,EAAmByD,GACpBD,CACP,IAEF,E,WY5DA,IAAIwE,EAAkB,CACrB,IAAK,GAGN9H,EAAoBqD,EAAEhC,EAAI,SAASkC,EAASI,GAE1C,IAAIoE,EAAqB/H,EAAoBiD,EAAE6E,EAAiBvE,GAAWuE,EAAgBvE,QAAWpD,EACtG,GAA0B,IAAvB4H,EAGF,GAAGA,EACFpE,EAASa,KAAKuD,EAAmB,SAEjC,GAAI,cAAcC,KAAKzE,GAyBhBuE,EAAgBvE,GAAW,MAzBD,CAEhC,IAAI0E,EAAU,IAAIzE,SAAQ,SAASmD,EAASC,GAAUmB,EAAqBD,EAAgBvE,GAAW,CAACoD,EAASC,EAAS,IACzHjD,EAASa,KAAKuD,EAAmB,GAAKE,GAGtC,IAAI3D,EAAMtE,EAAoB0G,EAAI1G,EAAoB4D,EAAEL,GAEpD2E,EAAQ,IAAIT,MAgBhBzH,EAAoBqE,EAAEC,GAfH,SAASkB,GAC3B,GAAGxF,EAAoBiD,EAAE6E,EAAiBvE,KAEf,KAD1BwE,EAAqBD,EAAgBvE,MACRuE,EAAgBvE,QAAWpD,GACrD4H,GAAoB,CACtB,IAAIT,EAAY9B,IAAyB,SAAfA,EAAMS,KAAkB,UAAYT,EAAMS,MAChEkC,EAAU3C,GAASA,EAAMU,QAAUV,EAAMU,OAAOb,IACpD6C,EAAME,QAAU,iBAAmB7E,EAAU,cAAgB+D,EAAY,KAAOa,EAAU,IAC1FD,EAAMG,KAAO,iBACbH,EAAMjC,KAAOqB,EACbY,EAAMP,QAAUQ,EAChBJ,EAAmB,GAAGG,EACvB,CAEF,GACyC,SAAW3E,EAASA,EAC9D,CAGJ,EAUAvD,EAAoBW,EAAEU,EAAI,SAASkC,GAAW,OAAoC,IAA7BuE,EAAgBvE,EAAgB,EAGrF,IAAI+E,EAAuB,SAASC,EAA4BC,GAC/D,IAKIvI,EAAUsD,EALV1C,EAAW2H,EAAK,GAChBC,EAAcD,EAAK,GACnBE,EAAUF,EAAK,GAGItH,EAAI,EAC3B,GAAGL,EAAS8H,MAAK,SAASrI,GAAM,OAA+B,IAAxBwH,EAAgBxH,EAAW,IAAI,CACrE,IAAIL,KAAYwI,EACZzI,EAAoBiD,EAAEwF,EAAaxI,KACrCD,EAAoBU,EAAET,GAAYwI,EAAYxI,IAGhD,GAAGyI,EAAS,IAAI9H,EAAS8H,EAAQ1I,EAClC,CAEA,IADGuI,GAA4BA,EAA2BC,GACrDtH,EAAIL,EAASM,OAAQD,IACzBqC,EAAU1C,EAASK,GAChBlB,EAAoBiD,EAAE6E,EAAiBvE,IAAYuE,EAAgBvE,IACrEuE,EAAgBvE,GAAS,KAE1BuE,EAAgBvE,GAAW,EAE5B,OAAOvD,EAAoBW,EAAEC,EAC9B,EAEIgI,EAAqBC,KAA+B,yBAAIA,KAA+B,0BAAK,GAChGD,EAAmB7F,QAAQuF,EAAqBtC,KAAK,KAAM,IAC3D4C,EAAmBpE,KAAO8D,EAAqBtC,KAAK,KAAM4C,EAAmBpE,KAAKwB,KAAK4C,G","sources":["webpack://jug-goerlitz/webpack/runtime/chunk loaded","webpack://jug-goerlitz/webpack/runtime/create fake namespace object","webpack://jug-goerlitz/webpack/runtime/load script","webpack://jug-goerlitz/webpack/runtime/css loading","webpack://jug-goerlitz/webpack/bootstrap","webpack://jug-goerlitz/webpack/runtime/compat get default export","webpack://jug-goerlitz/webpack/runtime/define property getters","webpack://jug-goerlitz/webpack/runtime/ensure chunk","webpack://jug-goerlitz/webpack/runtime/get javascript chunk filename","webpack://jug-goerlitz/webpack/runtime/get mini-css chunk filename","webpack://jug-goerlitz/webpack/runtime/global","webpack://jug-goerlitz/webpack/runtime/hasOwnProperty shorthand","webpack://jug-goerlitz/webpack/runtime/make namespace object","webpack://jug-goerlitz/webpack/runtime/node module decorator","webpack://jug-goerlitz/webpack/runtime/publicPath","webpack://jug-goerlitz/webpack/runtime/jsonp chunk loading"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"jug-goerlitz:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"176\":\"component---src-templates-location-page-tsx\",\"190\":\"component---src-pages-tags-tsx\",\"218\":\"component---src-pages-404-tsx\",\"325\":\"b95451f0b310186e909e788b848f8c20c7036633\",\"351\":\"commons\",\"356\":\"component---src-pages-debug-redirects-tsx\",\"386\":\"component---src-templates-static-page-tsx\",\"505\":\"component---src-pages-talks-tsx\",\"532\":\"styles\",\"534\":\"083fcf652479e2899573de2cb0d9a486b1ed95d5\",\"691\":\"component---src-pages-index-tsx\",\"714\":\"component---src-templates-speaker-page-tsx\",\"721\":\"component---src-templates-talk-page-tsx\",\"743\":\"component---src-pages-posters-tsx\",\"758\":\"component---src-pages-speakers-tsx\",\"885\":\"75fc9c18\",\"948\":\"2cca2479\",\"969\":\"component---src-pages-locations-tsx\",\"976\":\"c16184b3\",\"988\":\"component---src-pages-unterstuetzer-tsx\"}[chunkId] || chunkId) + \"-\" + {\"176\":\"2fd7c1d50c029b827063\",\"190\":\"9e424102bccd3c7982cc\",\"218\":\"40df00c8cace58695efb\",\"223\":\"e282224b123422d2635e\",\"325\":\"a2a7f8da3ff01b966ec5\",\"351\":\"f4bbe7ce1a5c1095684d\",\"356\":\"f66aa17a7c817022099a\",\"386\":\"7e013f4f0cc0eabd4a50\",\"505\":\"0445826b9eabd8cb111c\",\"532\":\"35de55e925de9d5d59cb\",\"534\":\"47c0f2d790faa87edb72\",\"691\":\"b710e7d2a51e2b6297fe\",\"714\":\"debd7cdadc88ce2f770d\",\"721\":\"ab69b6140103e09d919e\",\"743\":\"e5ebfca8b1df096c1d82\",\"758\":\"c309584ed597fba12705\",\"843\":\"8ca00901839f57538186\",\"885\":\"f71279181183774e258e\",\"948\":\"b2d765cf72ccefa90080\",\"969\":\"2b27ecd750548e08c6e6\",\"976\":\"1b49df0b1e7d5219011e\",\"988\":\"5fb791b73e140a637103\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"1850005b543de3ef97f5\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkjug_goerlitz\"] = self[\"webpackChunkjug_goerlitz\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.stats.json b/webpack.stats.json index ed61f62f7..b117cebfe 100644 --- a/webpack.stats.json +++ b/webpack.stats.json @@ -1 +1 @@ -{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-8bc8b4ba759484411d0e.js","size":6102},{"name":"framework-1ac93cd8000c4311fb77.js","size":210235},{"name":"app-d045bd32332213e7da53.js","size":90686}],"filteredAssets":0,"assetsSize":307023,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":776604},"component---src-pages-404-tsx":{"name":"component---src-pages-404-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-pages-404-tsx-40df00c8cace58695efb.js","size":911}],"filteredAssets":0,"assetsSize":312917,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64827166},"component---src-pages-debug-redirects-tsx":{"name":"component---src-pages-debug-redirects-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js","size":1149}],"filteredAssets":0,"assetsSize":313155,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64828648},"component---src-pages-index-tsx":{"name":"component---src-pages-index-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js","size":13868},{"name":"component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js","size":1832}],"filteredAssets":0,"assetsSize":404133,"filteredAuxiliaryAssets":113,"auxiliaryAssetsSize":65281243},"component---src-pages-locations-tsx":{"name":"component---src-pages-locations-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js","size":876}],"filteredAssets":0,"assetsSize":328826,"filteredAuxiliaryAssets":111,"auxiliaryAssetsSize":64923599},"component---src-pages-posters-tsx":{"name":"component---src-pages-posters-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js","size":10568}],"filteredAssets":0,"assetsSize":322574,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64894552},"component---src-pages-speakers-tsx":{"name":"component---src-pages-speakers-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-speakers-tsx-c309584ed597fba12705.js","size":834}],"filteredAssets":0,"assetsSize":328784,"filteredAuxiliaryAssets":111,"auxiliaryAssetsSize":64923293},"component---src-pages-tags-tsx":{"name":"component---src-pages-tags-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-tags-tsx-9e424102bccd3c7982cc.js","size":3840}],"filteredAssets":0,"assetsSize":392273,"filteredAuxiliaryAssets":112,"auxiliaryAssetsSize":65207380},"component---src-pages-talks-tsx":{"name":"component---src-pages-talks-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-talks-tsx-0445826b9eabd8cb111c.js","size":3232}],"filteredAssets":0,"assetsSize":391665,"filteredAuxiliaryAssets":112,"auxiliaryAssetsSize":65206044},"component---src-pages-unterstuetzer-tsx":{"name":"component---src-pages-unterstuetzer-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js","size":15231}],"filteredAssets":0,"assetsSize":327237,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64898110},"component---src-templates-location-page-tsx":{"name":"component---src-templates-location-page-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js","size":1583}],"filteredAssets":0,"assetsSize":313589,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64829880},"component---src-templates-speaker-page-tsx":{"name":"component---src-templates-speaker-page-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js","size":10373}],"filteredAssets":0,"assetsSize":322379,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64894402},"component---src-templates-static-page-tsx":{"name":"component---src-templates-static-page-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js","size":933}],"filteredAssets":0,"assetsSize":312939,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64827569},"component---src-templates-talk-page-tsx":{"name":"component---src-templates-talk-page-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js","size":13868},{"name":"component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js","size":496}],"filteredAssets":0,"assetsSize":402797,"filteredAuxiliaryAssets":113,"auxiliaryAssetsSize":65274706}},"assetsByChunkName":{"app":["webpack-runtime-8bc8b4ba759484411d0e.js","framework-1ac93cd8000c4311fb77.js","app-d045bd32332213e7da53.js"],"component---src-pages-404-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-pages-404-tsx-40df00c8cace58695efb.js"],"component---src-pages-debug-redirects-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js"],"component---src-pages-index-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","75fc9c18-f71279181183774e258e.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js","component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js"],"component---src-pages-locations-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js"],"component---src-pages-posters-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js"],"component---src-pages-speakers-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-speakers-tsx-c309584ed597fba12705.js"],"component---src-pages-tags-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","75fc9c18-f71279181183774e258e.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-tags-tsx-9e424102bccd3c7982cc.js"],"component---src-pages-talks-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","75fc9c18-f71279181183774e258e.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-talks-tsx-0445826b9eabd8cb111c.js"],"component---src-pages-unterstuetzer-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js"],"component---src-templates-location-page-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js"],"component---src-templates-speaker-page-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js"],"component---src-templates-static-page-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js"],"component---src-templates-talk-page-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","75fc9c18-f71279181183774e258e.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","b95451f0b310186e909e788b848f8c20c7036633-acef5c6dd28b08d05a4c.js","component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js"]},"childAssetsByChunkName":{}} \ No newline at end of file +{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-ecea554c6e76a4ccbfce.js","size":6102},{"name":"framework-1ac93cd8000c4311fb77.js","size":210235},{"name":"app-d045bd32332213e7da53.js","size":90686}],"filteredAssets":0,"assetsSize":307023,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":776604},"component---src-pages-404-tsx":{"name":"component---src-pages-404-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-pages-404-tsx-40df00c8cace58695efb.js","size":911}],"filteredAssets":0,"assetsSize":312917,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64827166},"component---src-pages-debug-redirects-tsx":{"name":"component---src-pages-debug-redirects-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js","size":1149}],"filteredAssets":0,"assetsSize":313155,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64828648},"component---src-pages-index-tsx":{"name":"component---src-pages-index-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js","size":13894},{"name":"component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js","size":1832}],"filteredAssets":0,"assetsSize":404159,"filteredAuxiliaryAssets":113,"auxiliaryAssetsSize":65281320},"component---src-pages-locations-tsx":{"name":"component---src-pages-locations-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js","size":876}],"filteredAssets":0,"assetsSize":328826,"filteredAuxiliaryAssets":111,"auxiliaryAssetsSize":64923599},"component---src-pages-posters-tsx":{"name":"component---src-pages-posters-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js","size":10568}],"filteredAssets":0,"assetsSize":322574,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64894552},"component---src-pages-speakers-tsx":{"name":"component---src-pages-speakers-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-speakers-tsx-c309584ed597fba12705.js","size":834}],"filteredAssets":0,"assetsSize":328784,"filteredAuxiliaryAssets":111,"auxiliaryAssetsSize":64923293},"component---src-pages-tags-tsx":{"name":"component---src-pages-tags-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-tags-tsx-9e424102bccd3c7982cc.js","size":3840}],"filteredAssets":0,"assetsSize":392273,"filteredAuxiliaryAssets":112,"auxiliaryAssetsSize":65207380},"component---src-pages-talks-tsx":{"name":"component---src-pages-talks-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"component---src-pages-talks-tsx-0445826b9eabd8cb111c.js","size":3232}],"filteredAssets":0,"assetsSize":391665,"filteredAuxiliaryAssets":112,"auxiliaryAssetsSize":65206044},"component---src-pages-unterstuetzer-tsx":{"name":"component---src-pages-unterstuetzer-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js","size":15231}],"filteredAssets":0,"assetsSize":327237,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64898110},"component---src-templates-location-page-tsx":{"name":"component---src-templates-location-page-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js","size":1583}],"filteredAssets":0,"assetsSize":313589,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64829880},"component---src-templates-speaker-page-tsx":{"name":"component---src-templates-speaker-page-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js","size":10373}],"filteredAssets":0,"assetsSize":322379,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64894402},"component---src-templates-static-page-tsx":{"name":"component---src-templates-static-page-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js","size":933}],"filteredAssets":0,"assetsSize":312939,"filteredAuxiliaryAssets":110,"auxiliaryAssetsSize":64827569},"component---src-templates-talk-page-tsx":{"name":"component---src-templates-talk-page-tsx","assets":[{"name":"styles.1850005b543de3ef97f5.css","size":147815},{"name":"c16184b3-1b49df0b1e7d5219011e.js","size":2230},{"name":"2cca2479-b2d765cf72ccefa90080.js","size":2818},{"name":"75fc9c18-f71279181183774e258e.js","size":60483},{"name":"commons-f4bbe7ce1a5c1095684d.js","size":159143},{"name":"083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","size":15944},{"name":"b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js","size":13894},{"name":"component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js","size":496}],"filteredAssets":0,"assetsSize":402823,"filteredAuxiliaryAssets":113,"auxiliaryAssetsSize":65274783}},"assetsByChunkName":{"app":["webpack-runtime-ecea554c6e76a4ccbfce.js","framework-1ac93cd8000c4311fb77.js","app-d045bd32332213e7da53.js"],"component---src-pages-404-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-pages-404-tsx-40df00c8cace58695efb.js"],"component---src-pages-debug-redirects-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-pages-debug-redirects-tsx-f66aa17a7c817022099a.js"],"component---src-pages-index-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","75fc9c18-f71279181183774e258e.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js","component---src-pages-index-tsx-b710e7d2a51e2b6297fe.js"],"component---src-pages-locations-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-locations-tsx-2b27ecd750548e08c6e6.js"],"component---src-pages-posters-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-pages-posters-tsx-e5ebfca8b1df096c1d82.js"],"component---src-pages-speakers-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-speakers-tsx-c309584ed597fba12705.js"],"component---src-pages-tags-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","75fc9c18-f71279181183774e258e.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-tags-tsx-9e424102bccd3c7982cc.js"],"component---src-pages-talks-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","75fc9c18-f71279181183774e258e.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","component---src-pages-talks-tsx-0445826b9eabd8cb111c.js"],"component---src-pages-unterstuetzer-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-pages-unterstuetzer-tsx-5fb791b73e140a637103.js"],"component---src-templates-location-page-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-templates-location-page-tsx-2fd7c1d50c029b827063.js"],"component---src-templates-speaker-page-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-templates-speaker-page-tsx-debd7cdadc88ce2f770d.js"],"component---src-templates-static-page-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","commons-f4bbe7ce1a5c1095684d.js","component---src-templates-static-page-tsx-7e013f4f0cc0eabd4a50.js"],"component---src-templates-talk-page-tsx":["styles.1850005b543de3ef97f5.css","c16184b3-1b49df0b1e7d5219011e.js","2cca2479-b2d765cf72ccefa90080.js","75fc9c18-f71279181183774e258e.js","commons-f4bbe7ce1a5c1095684d.js","083fcf652479e2899573de2cb0d9a486b1ed95d5-47c0f2d790faa87edb72.js","b95451f0b310186e909e788b848f8c20c7036633-a2a7f8da3ff01b966ec5.js","component---src-templates-talk-page-tsx-ab69b6140103e09d919e.js"]},"childAssetsByChunkName":{}} \ No newline at end of file