diff --git a/docs/2007/WalterAndrei.pdf/WalterAndrei.pdf b/docs/2007/WalterAndrei.pdf/WalterAndrei.pdf new file mode 100644 index 00000000..09e0944d Binary files /dev/null and b/docs/2007/WalterAndrei.pdf/WalterAndrei.pdf differ diff --git a/docs/2013/contact.html b/docs/2013/contact.html new file mode 100644 index 00000000..a739587d --- /dev/null +++ b/docs/2013/contact.html @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + +The D Programming Language Conference 2013 + + +
+ +
+ + + +


+

+

Contact Us

+

+

dconf2013@digitalmars.com

+

+

On Twitter: @D_programming, #dconf

+
+ + +
+
 
+ +
+
+ +
+
© 2013 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2013/images/AliCehreli.jpg b/docs/2013/images/AliCehreli.jpg new file mode 100644 index 00000000..964fe63e Binary files /dev/null and b/docs/2013/images/AliCehreli.jpg differ diff --git a/docs/2013/images/DmitryOlshansky.jpg b/docs/2013/images/DmitryOlshansky.jpg new file mode 100644 index 00000000..c2d7fdfa Binary files /dev/null and b/docs/2013/images/DmitryOlshansky.jpg differ diff --git a/docs/2013/images/ManuEvans.jpg b/docs/2013/images/ManuEvans.jpg new file mode 100644 index 00000000..9fae525b Binary files /dev/null and b/docs/2013/images/ManuEvans.jpg differ diff --git a/docs/2013/images/Martin.jpg b/docs/2013/images/Martin.jpg new file mode 100644 index 00000000..e54a8c11 Binary files /dev/null and b/docs/2013/images/Martin.jpg differ diff --git a/docs/2013/images/StefanRohe.jpg b/docs/2013/images/StefanRohe.jpg new file mode 100644 index 00000000..f5a4cbc2 Binary files /dev/null and b/docs/2013/images/StefanRohe.jpg differ diff --git a/docs/2013/images/background.png b/docs/2013/images/background.png new file mode 100644 index 00000000..c8e33b52 Binary files /dev/null and b/docs/2013/images/background.png differ diff --git a/docs/2013/images/countdown.swf b/docs/2013/images/countdown.swf new file mode 100644 index 00000000..aa1b24d8 Binary files /dev/null and b/docs/2013/images/countdown.swf differ diff --git a/docs/2013/images/dotted_h.png b/docs/2013/images/dotted_h.png new file mode 100644 index 00000000..48eb18d4 Binary files /dev/null and b/docs/2013/images/dotted_h.png differ diff --git a/docs/2013/images/dotted_v.png b/docs/2013/images/dotted_v.png new file mode 100644 index 00000000..a98a758a Binary files /dev/null and b/docs/2013/images/dotted_v.png differ diff --git a/docs/2013/images/favicon.ico b/docs/2013/images/favicon.ico new file mode 100644 index 00000000..906a008c Binary files /dev/null and b/docs/2013/images/favicon.ico differ diff --git a/docs/2013/images/gertzfield.jpg b/docs/2013/images/gertzfield.jpg new file mode 100644 index 00000000..8bbff536 Binary files /dev/null and b/docs/2013/images/gertzfield.jpg differ diff --git a/docs/2013/images/logo.png b/docs/2013/images/logo.png new file mode 100644 index 00000000..bd778efd Binary files /dev/null and b/docs/2013/images/logo.png differ diff --git a/docs/2013/images/menu.png b/docs/2013/images/menu.png new file mode 100644 index 00000000..1c16cbe8 Binary files /dev/null and b/docs/2013/images/menu.png differ diff --git a/docs/2013/images/rainer.jpg b/docs/2013/images/rainer.jpg new file mode 100644 index 00000000..0fbc4f0d Binary files /dev/null and b/docs/2013/images/rainer.jpg differ diff --git a/docs/2013/images/s_remedy.png b/docs/2013/images/s_remedy.png new file mode 100644 index 00000000..63e0de74 Binary files /dev/null and b/docs/2013/images/s_remedy.png differ diff --git a/docs/2013/images/s_sociomantic.png b/docs/2013/images/s_sociomantic.png new file mode 100644 index 00000000..ca824c93 Binary files /dev/null and b/docs/2013/images/s_sociomantic.png differ diff --git a/docs/2013/images/star.png b/docs/2013/images/star.png new file mode 100644 index 00000000..cf9534ea Binary files /dev/null and b/docs/2013/images/star.png differ diff --git a/docs/2013/images/stock.png b/docs/2013/images/stock.png new file mode 100644 index 00000000..9c5e69d0 Binary files /dev/null and b/docs/2013/images/stock.png differ diff --git a/docs/2013/images/twitter_bubble.png b/docs/2013/images/twitter_bubble.png new file mode 100644 index 00000000..7bb2deff Binary files /dev/null and b/docs/2013/images/twitter_bubble.png differ diff --git a/docs/2013/images/twitter_d.png b/docs/2013/images/twitter_d.png new file mode 100644 index 00000000..d07203a0 Binary files /dev/null and b/docs/2013/images/twitter_d.png differ diff --git a/docs/2013/images/twitter_hash.png b/docs/2013/images/twitter_hash.png new file mode 100644 index 00000000..807a163a Binary files /dev/null and b/docs/2013/images/twitter_hash.png differ diff --git a/docs/2013/images/twitter_hr.png b/docs/2013/images/twitter_hr.png new file mode 100644 index 00000000..1390b9a0 Binary files /dev/null and b/docs/2013/images/twitter_hr.png differ diff --git a/docs/2013/images/vpanteleev.jpg b/docs/2013/images/vpanteleev.jpg new file mode 100644 index 00000000..b02e8831 Binary files /dev/null and b/docs/2013/images/vpanteleev.jpg differ diff --git a/docs/2013/includes/facebook.js b/docs/2013/includes/facebook.js new file mode 100644 index 00000000..d05498a0 --- /dev/null +++ b/docs/2013/includes/facebook.js @@ -0,0 +1,7 @@ +(function(d, s, id) { + var js, fjs = d.getElementsByTagName(s)[0]; + if (d.getElementById(id)) return; + js = d.createElement(s); js.id = id; + js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; + fjs.parentNode.insertBefore(js, fjs); +}(document, 'script', 'facebook-jssdk')); \ No newline at end of file diff --git a/docs/2013/includes/google.js b/docs/2013/includes/google.js new file mode 100644 index 00000000..b6e4b39b --- /dev/null +++ b/docs/2013/includes/google.js @@ -0,0 +1,5 @@ +(function() { + var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; + po.src = 'https://apis.google.com/js/plusone.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); +})(); \ No newline at end of file diff --git a/docs/2013/includes/ie8.css b/docs/2013/includes/ie8.css new file mode 100644 index 00000000..06a6c47e --- /dev/null +++ b/docs/2013/includes/ie8.css @@ -0,0 +1,16 @@ +#menu ul, #menu li { + margin: 0px; + padding: 0px; + letter-spacing: 2px; + font-family: "Andale Mono", "Lucida Sans Typewriter", "Lucida Console", monospace; + font-size: 14px; + line-height: 16px; +} + +#menu a { + padding: 7px 13px; +} + +.logo { + height: 100px; +} diff --git a/docs/2013/includes/iefix.css b/docs/2013/includes/iefix.css new file mode 100644 index 00000000..093de76b --- /dev/null +++ b/docs/2013/includes/iefix.css @@ -0,0 +1,16 @@ +#menu ul, #menu li { + margin: 0px; + padding: 0px; + letter-spacing: 2px; + font-family: "Andale Mono", "Lucida Sans Typewriter", "Lucida Console", monospace; + font-size: 14px; + line-height: 16px; +} + +#menu a { + padding: 7px 13px; +} + +.clock { + height: 84px; +} diff --git a/docs/2013/includes/jquery.min.js b/docs/2013/includes/jquery.min.js new file mode 100644 index 00000000..006e9531 --- /dev/null +++ b/docs/2013/includes/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery.min.map +*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="
t
",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; +return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="
",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) +}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("
View Larger Map +

+

NEW! Share a car rental or hotel room

+

+

Interested in saving some of your travel costs by sharing a rental +car or a hotel room? There are other like-minded folks! Please post to +this thread.

+

+

Nearby hotels

+

+

Nearby hotels with access to public transportation include (prices +and availability and may vary):

+

+ +

+ +

+

Transportation

+

+

For flying to Menlo Park you may use any of the SFO (18 miles), SJC +(17 miles), or OAK (26 miles) airports.

+

+

Taxi fare is relatively expensive in California, so car rental or +public transportation are more affordable. Public transportation options include Caltrain and BART.

+ + + + +
Sponsors
+ + Sociomantic
+ Remedy Games
+ Kickstarter Contributors ▸ +
+
 
+
+
+
+
+ + +
+
© 2013 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/contact.html b/docs/2014/contact.html new file mode 100644 index 00000000..b3fb2b13 --- /dev/null +++ b/docs/2014/contact.html @@ -0,0 +1,73 @@ + + + + + + + + + + + + + +The D Programming Language Conference 2014 + + +
+ +
+ + + +


+

+

Contact Us

+

+

dconf2014@digitalmars.com

+

+

On Twitter: @D_programming, #dconf

+
+ + +
Keynote Speakers
+
+ + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+ +
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+
+Tweets about "#dconf #dlang" + +
+ + + +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/images/DrDobbs.png b/docs/2014/images/DrDobbs.png new file mode 100644 index 00000000..f22e3d8c Binary files /dev/null and b/docs/2014/images/DrDobbs.png differ diff --git a/docs/2014/images/alexandrescu_134.jpg b/docs/2014/images/alexandrescu_134.jpg new file mode 100644 index 00000000..43662cfb Binary files /dev/null and b/docs/2014/images/alexandrescu_134.jpg differ diff --git a/docs/2014/images/background.png b/docs/2014/images/background.png new file mode 100644 index 00000000..c8e33b52 Binary files /dev/null and b/docs/2014/images/background.png differ diff --git a/docs/2014/images/bright_134.jpg b/docs/2014/images/bright_134.jpg new file mode 100644 index 00000000..7d5f2601 Binary files /dev/null and b/docs/2014/images/bright_134.jpg differ diff --git a/docs/2014/images/clugston.jpg b/docs/2014/images/clugston.jpg new file mode 100644 index 00000000..289a0cbf Binary files /dev/null and b/docs/2014/images/clugston.jpg differ diff --git a/docs/2014/images/countdown.swf b/docs/2014/images/countdown.swf new file mode 100644 index 00000000..aa1b24d8 Binary files /dev/null and b/docs/2014/images/countdown.swf differ diff --git a/docs/2014/images/dilly.jpg b/docs/2014/images/dilly.jpg new file mode 100644 index 00000000..57c91cbc Binary files /dev/null and b/docs/2014/images/dilly.jpg differ diff --git a/docs/2014/images/dlogo.png b/docs/2014/images/dlogo.png new file mode 100644 index 00000000..63265db5 Binary files /dev/null and b/docs/2014/images/dlogo.png differ diff --git a/docs/2014/images/dotted_h.png b/docs/2014/images/dotted_h.png new file mode 100644 index 00000000..48eb18d4 Binary files /dev/null and b/docs/2014/images/dotted_h.png differ diff --git a/docs/2014/images/dotted_v.png b/docs/2014/images/dotted_v.png new file mode 100644 index 00000000..a98a758a Binary files /dev/null and b/docs/2014/images/dotted_v.png differ diff --git a/docs/2014/images/favicon.ico b/docs/2014/images/favicon.ico new file mode 100644 index 00000000..3ead32d9 Binary files /dev/null and b/docs/2014/images/favicon.ico differ diff --git a/docs/2014/images/franklin.png b/docs/2014/images/franklin.png new file mode 100644 index 00000000..99ee771a Binary files /dev/null and b/docs/2014/images/franklin.png differ diff --git a/docs/2014/images/menu.png b/docs/2014/images/menu.png new file mode 100644 index 00000000..1c16cbe8 Binary files /dev/null and b/docs/2014/images/menu.png differ diff --git a/docs/2014/images/s_remedy.png b/docs/2014/images/s_remedy.png new file mode 100644 index 00000000..63e0de74 Binary files /dev/null and b/docs/2014/images/s_remedy.png differ diff --git a/docs/2014/images/s_sociomantic.png b/docs/2014/images/s_sociomantic.png new file mode 100644 index 00000000..ca824c93 Binary files /dev/null and b/docs/2014/images/s_sociomantic.png differ diff --git a/docs/2014/images/simpkins.jpg b/docs/2014/images/simpkins.jpg new file mode 100644 index 00000000..5c243bbd Binary files /dev/null and b/docs/2014/images/simpkins.jpg differ diff --git a/docs/2014/images/star.png b/docs/2014/images/star.png new file mode 100644 index 00000000..cf9534ea Binary files /dev/null and b/docs/2014/images/star.png differ diff --git a/docs/2014/images/stock.png b/docs/2014/images/stock.png new file mode 100644 index 00000000..9c5e69d0 Binary files /dev/null and b/docs/2014/images/stock.png differ diff --git a/docs/2014/images/strasuns.jpg b/docs/2014/images/strasuns.jpg new file mode 100644 index 00000000..d6cd9a5a Binary files /dev/null and b/docs/2014/images/strasuns.jpg differ diff --git a/docs/2014/images/twitter_bubble.png b/docs/2014/images/twitter_bubble.png new file mode 100644 index 00000000..7bb2deff Binary files /dev/null and b/docs/2014/images/twitter_bubble.png differ diff --git a/docs/2014/images/twitter_d.png b/docs/2014/images/twitter_d.png new file mode 100644 index 00000000..d07203a0 Binary files /dev/null and b/docs/2014/images/twitter_d.png differ diff --git a/docs/2014/images/twitter_hash.png b/docs/2014/images/twitter_hash.png new file mode 100644 index 00000000..807a163a Binary files /dev/null and b/docs/2014/images/twitter_hash.png differ diff --git a/docs/2014/images/twitter_hr.png b/docs/2014/images/twitter_hr.png new file mode 100644 index 00000000..1390b9a0 Binary files /dev/null and b/docs/2014/images/twitter_hr.png differ diff --git a/docs/2014/includes/facebook.js b/docs/2014/includes/facebook.js new file mode 120000 index 00000000..569401e5 --- /dev/null +++ b/docs/2014/includes/facebook.js @@ -0,0 +1 @@ +../../2013/includes/facebook.js \ No newline at end of file diff --git a/docs/2014/includes/google.js b/docs/2014/includes/google.js new file mode 120000 index 00000000..7ab08bc8 --- /dev/null +++ b/docs/2014/includes/google.js @@ -0,0 +1 @@ +../../2013/includes/google.js \ No newline at end of file diff --git a/docs/2014/includes/ie8.css b/docs/2014/includes/ie8.css new file mode 120000 index 00000000..ee2765c0 --- /dev/null +++ b/docs/2014/includes/ie8.css @@ -0,0 +1 @@ +../../2013/includes/ie8.css \ No newline at end of file diff --git a/docs/2014/includes/iefix.css b/docs/2014/includes/iefix.css new file mode 120000 index 00000000..99aaeb48 --- /dev/null +++ b/docs/2014/includes/iefix.css @@ -0,0 +1 @@ +../../2013/includes/iefix.css \ No newline at end of file diff --git a/docs/2014/includes/jquery.min.js b/docs/2014/includes/jquery.min.js new file mode 120000 index 00000000..8e96d735 --- /dev/null +++ b/docs/2014/includes/jquery.min.js @@ -0,0 +1 @@ +../../2013/includes/jquery.min.js \ No newline at end of file diff --git a/docs/2014/includes/style.css b/docs/2014/includes/style.css new file mode 100644 index 00000000..fe57b957 --- /dev/null +++ b/docs/2014/includes/style.css @@ -0,0 +1,559 @@ +html { + overflow-y: scroll; +} + +body { + background-color: #e8e8e8; + background-image: url('../images/background.png'); + background-repeat: repeat-x; + margin: 0px; + padding: 0px; + text-align: justify; +} + +hr { + clear: both; +} + +#container { + width: 1010px; + margin: 0px auto; + padding: 10px; + border: none; + overflow: hidden; +} + +.logo { + margin: 0px; + overflow: hidden; + width: 500px; + height: 110px; + float: left; +} + +.menu { + float: right; + margin: 0px 0px 20px; + height: 25px; +} + +nav ul, nav li { + margin: 0px; + padding: 0px; +} + +#menu { + list-style: none; + margin-bottom: 10px; + float: left; + width: 100%; +} + +#menu li { + float: left; + position: relative; +} + +#menu a { + display: block; + padding: 7px 15px; + color: #dadada; + background: #484848; + text-decoration: none; + font-family: "Andale Mono", "Lucida Sans Typewriter", "Lucida Console", monospace; + font-size: 14px; + line-height: 16px; + letter-spacing: 1px; + opacity: 0.9; + border-bottom: 2px solid #000000; +} + +#menu a:hover { + color: #dadada; + background: #292929; + text-decoration: none; + border-bottom: 2px solid #000000; +} + +#menu ul { + background: #484848; + background: rgba(255,255,255,0); + list-style: none; + position: absolute; + left: -9999px; +} + +#menu ul li { + float: none; +} + +#menu ul a { + white-space: nowrap; + opacity: 1.0; + border-bottom: 1px dotted #000000; + font-size: 12px; + letter-spacing: 0px; +} + +#menu li:hover ul { + left: 0; +} + +#menu li:hover ul a { + text-decoration: none; + border-bottom: 1px dotted #000000; + font-size: 12px; + letter-spacing: 1px; +} + +#menu li:hover ul li a:hover { + background: #292929; +} + +.clock { + margin: 15px 0px 0px; + overflow: hidden; + width: 260px; + height: 85px; + float: right; +} + +.twitter { + margin: 0px 0px 10px 0px; + overflow: hidden; +/* background-image: url('../images/twitter_bubble.png'); +*/ background-repeat: no-repeat; + height: 420px; +} + +.twitter .hash { + margin: 5px 0px 10px 90px; + overflow: hidden; +/* background-image: url('../images/twitter_hash.png'); +*/ background-repeat: no-repeat; + height: 0px; +} + +.twitter .inside { + margin: 25px 20px; + overflow: hidden; +} + +.twtr-hd, .twtr-ft { + display: none; +} + +div#twit .twtr-widget p { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px !important; + line-height: 16px; + color: #333333 !important; +} + +div#twit hr { + display: block; + height: 1px; + border: 0px; + border-top: 1px solid #ac9394; + margin: 5px; + padding: 0px; +} + +div#twit .twtr-widget a:link, div#twit .twtr-widget a:visited, div#twit .twtr-widget a:active { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px; + color: #af3d7b !important; + text-decoration: none !important; +} + +div#twit a.t_user:link, div#twit a.t_user:visited, div#twit a.t_user:active { + color: #87170a !important; + font-weight: bold; +} + +div#twit a.twtr-timestamp:link, div#twit a.twtr-timestamp:active, div#twit a.twtr-timestamp:visited { + color: #666666 !important; +} + +div#twit .twtr-widget a:hover { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px; + text-decoration: none; + color: #ff4fae !important; +} + +.row_after { + clear: both; +} + +.page { + width: 940px; +} + +.page_left { + width: 610px; +} + +.page_right { + width: 270px; + background-image: url('../images/dotted_v.png'); + background-repeat: repeat-y; +} + +.small_left { + width: 710px; +} + +.small_right { + width: 170px; + padding-left: 20px !important; +} + +.page_right, .page_left, .page { + padding: 10px 30px 30px; +} + +.equal, .page { + overflow: hidden; + float: left; +} + +/* .divider_v { */ +/* background-image: url('../images/dotted_v.png'); */ +/* background-repeat: repeat-y; */ +/* margin: 30px 0px 0px; */ +/* } */ + +.divider_h { + background-image: url('../images/dotted_h.png'); + background-repeat: repeat-x; + margin: 30px -10px 10px; +} + +.divider_h_sm { + margin-top: 20px; +} + +.page_bottom { + margin: 30px; + width: 960px; + overflow: hidden; + float: left; +} + +.sponsors, .sponsors_sm { + margin: 20px 0px 0px; +} + +.sp { + font-family: "Arial Black", sans-serif; + font-size: 14px; + font-weight: normal; + color: #737e7c; + text-transform: uppercase; + line-height: 20px; + padding-left: 11px; +} + +a.smaller { + font-size: 12px !important; + padding-left: 5px !important; +} + +a.smallest { + font-size: 9px !important; + padding-left: 5px !important; +} + +a.ks:link, a.ks:visited, a.ks:active { + font-size: 12px; + color: #666666; + line-height: 25px; +} + +a.linkb { + font-size: 16px !important; + font-weight: bold; +} + +a.ks:hover { + font-size: 12px; + color: #8b9896; +} + +.sponsors img { + margin: 5px 0px 15px 10px; /* 5 0 5 10*/ + /*vertical-align: middle;*/ +} + +.sponsors_sm img { + margin: 5px 0px 5px 5px; /* 5 0 5 10*/ +} + +.stroke { + border: 1px solid #d0c9c9; +} + +.inline > * { + display: inline-block; + margin: 5px 25px 5px 0px; +} + +.vmid > * { + vertical-align: middle; +} + +.vtop > * { + vertical-align: top; +} + +.dotted_left { + border-left: 1px dotted #d0c9c9; + padding-left: 20px; +} + +.dotted_left > div { + margin: 5px 10px !important; +} + +.rate { + font-size: 12px; +} + +h1 { + font-family: "Lucida Sans Unicode", sans-serif; + font-size: 26px; + font-weight: bold; + line-height: 30px; + color: #000000; + margin: 20px 0px 0px; + text-align: left; +} + +h2 { + font-family: Georgia, serif; + font-size: 16px; + font-weight: bold; + line-height: 20px; + color: #000000; + margin: 15px 0px 10px 0px; +} + +h3 { + font-family: Georgia, serif; + font-size: 14px; + font-weight: bold; + color: #000000; + line-height: 20px; + margin-top: 25px; +} + +h1 + p, h1 + div { + margin-top: 15px; +} + +p, td { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + line-height: 16px; + margin-bottom: 14px; +} + +ul { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + list-style-position: outside; + list-style-type: square; + margin: 5px 10px; + padding: 5px 10px; +} + +ol { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + line-height: 16px; + color: #000000; + list-style-position: inside; + margin: 0px 5px; + padding: 5px 0px; +} + +li { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + line-height: 16px; + color: #000000; + padding: 0px; + margin: 0px 10px; +} + +a:link, a:visited, a:active { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #234faa; + text-decoration: none; +} + +a:hover { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + text-decoration: none; + color: #135bf1; +} + +table, th, td { + border: none; +} + +td { + padding: 0px 20px 0px 0px; + vertical-align: top; +} + +.ks > .divider_v { + margin: 0px 25px; + padding: 10px 0px 0px; +} + +.button { + border: 1px solid #999999; + background: #dbdbdb; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dbdbdb', endColorstr='#cccccc'); + background: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#cccccc)); + background: -moz-linear-gradient(top, #dbdbdb, #cccccc); + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + padding: 4px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + margin-top: 15px; +} + +.button:active { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#dbdbdb'); + background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#dbdbdb)); + background: -moz-linear-gradient(top, #cccccc, #dbdbdb); +} + +#schedule, #schedule td, #schedule th { + border: 1px solid #000000; + border-collapse: collapse; + padding: 10px; + vertical-align: middle; +} + +#schedule { + width: 600px; + margin: 20px 0px; + background-color: #ffffff; +} + +#schedule th { + font-size: 20px; + line-height: 30px; + color: #ffffff; + font-weight: bold; + text-shadow: 0px 1px 0px #000000; +} + +#schedule td p { + padding: 0px 10px; +} + +#schedule td:first-child { + width: 130px; + color: ec8618; +} + +.green th { + background-color: #62b224; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62b224', endColorstr='#579b21'); + background: -webkit-gradient(linear, left top, left bottom, from(#62b224), to(#579b21)); + background: -moz-linear-gradient(top, #62b224, #579b21); +} + +.aqua th { + background-color: #49c4ef; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#49c4ef', endColorstr='#3eb1da'); + background: -webkit-gradient(linear, left top, left bottom, from(#49c4ef), to(#3eb1da)); + background: -moz-linear-gradient(top, #49c4ef, #3eb1da); +} + +.orange th { + background-color: #f39835; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f39835', endColorstr='#ec8618'); + background: -webkit-gradient(linear, left top, left bottom, from(#f39835), to(#ec8618)); + background: -moz-linear-gradient(top, #f39835, #ec8618); +} + +.purple th { + background-color: #855bda; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#855bda', endColorstr='#6132bf'); + background: -webkit-gradient(linear, left top, left bottom, from(#855bda), to(#6132bf)); + background: -moz-linear-gradient(top, #855bda, #6132bf); +} + +.green tr:hover { + background-color: #afe8bb; +} + +.orange tr:hover { + background-color: #f0c799; +} + +.aqua tr:hover { + background-color: #abdef0; +} + +.purple tr:hover { + background-color: #b7a7d6; +} + +.break tr:hover { + opacity: 0.5 !important; +} + +.showAbstract { + background-color: black; + color: white; + padding:5px; + margin-top: 1.3em; + position: absolute; + max-width: 200px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +.tooltip span { + margin-left: -999em; + position: absolute; +} + +/* +.tooltip:hover span { + position: absolute; + left: 700px; + top: 400px; + z-index: 99; + margin-left: 0; + width: 400px; + border-radius: 5px 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 5px 5px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 5px 5px rgba(0, 0, 0, 0.1); +} +*/ + +.abstract { + background: #FFFFAA ; + border: 1px solid #FFAD33; + padding: 0.8em 1em; +} + +/* red f2262b */ \ No newline at end of file diff --git a/docs/2014/includes/tweet.js b/docs/2014/includes/tweet.js new file mode 120000 index 00000000..07ec3e99 --- /dev/null +++ b/docs/2014/includes/tweet.js @@ -0,0 +1 @@ +../../2013/includes/tweet.js \ No newline at end of file diff --git a/docs/2014/includes/twitter.js b/docs/2014/includes/twitter.js new file mode 120000 index 00000000..5c5f07a4 --- /dev/null +++ b/docs/2014/includes/twitter.js @@ -0,0 +1 @@ +../../2013/includes/twitter.js \ No newline at end of file diff --git a/docs/2014/includes/widget.js b/docs/2014/includes/widget.js new file mode 120000 index 00000000..8678944e --- /dev/null +++ b/docs/2014/includes/widget.js @@ -0,0 +1 @@ +../../2013/includes/widget.js \ No newline at end of file diff --git a/docs/2014/index.html b/docs/2014/index.html new file mode 100644 index 00000000..041bd2ad --- /dev/null +++ b/docs/2014/index.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + + +The D Programming Language Conference 2014 + + +
+ +
+ + + +


+

+

DConf 2014 schedule published, early bird registration open!

+

+

We have a great schedule and a roster of excellent speakers picked from a large body of excellent submissions. Turning some of them down has been the worst thing about organizing DConf 2014! Register now for only $400 to get access to DConf. Full conference registration cost will be $425 after March 31st.

+

+

Three Reasons to be at DConf

+

+
  1. See it. Hear it. Be part of it! DConf is the premier event where D luminaries exchange knowledge, insight, and inspiration on everything related to the D language and its ecosystem. The talks are of high quality but the hallway mingling during breaks and the informal evening gatherings are even better! DConf is the time and place to be to get a glimpse into the present of D and to help shape its future.

  2. +

    +
  3. Learn from the best. We carefully selected our talks from a strong set of submissions. They include a combination of evergreen and up-and-coming topics such as high-performance computing, teaching, compile-time reflection, graphics, embedded systems, big data, declarative programming, and a lot more. Keynotes by Walter Bright, Andrei Alexandrescu, and Scott Meyers complete a compelling summit.

  4. +

    +
  5. Stay connected, get connected. Hear it first at DConf—whether it's language development, innovative framework, or new research. Share your own ideas at the lightning talks session or over beers at the Aloft Hotel, the unofficial evening gathering place of DConf. Connect to the best peers in the industry. Last but not least DConf 2014 is hosted by Facebook, so this is a perfect opportunity to visit and explore employment opportunities with one of the best companies to work for consistently since 2011—not to mention a growing user and supporter of the D language.
  6. +
+

+

Important Dates

+

+ + + + + + + + + + + + +
Submission DeadlineFriday January 31, 2014, 23:59:59.99 PST
Early bird registration deadlineMarch 31, 2014
Registration deadlineMay 15, 2014
ConferenceWednesday May 21–Friday May 23, 2014
+
+ + +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/registration.html b/docs/2014/registration.html new file mode 100644 index 00000000..3e9eed44 --- /dev/null +++ b/docs/2014/registration.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + + +The D Programming Language Conference 2014 + + +
+ +
+ + + +


+

+

Registration

+

+

Early bird registration is closed.

+

+

Are you cost-conscious? Register now for only $400 to get the full conference package!

+

+

Registration must be completed on or before March 31, 2014. Prices go up to +$425 (sticker price) after that. Capacity is also limited. Register as soon as possible to reserve your seat for less!

+

+ +

+
+

All registrations are final. Registrations are transferrable.

+

+

Please let us know what you'd like your badge to say if it is +different from your name on your credit card.

+

+

Privacy Policy: Your name and email address will be shared with Facebook +since Facebook is hosting the event. Otherwise, Digital Mars will not +share your data with anyone unless compelled by lawful orders.

+
+ + +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/schedule/index.html b/docs/2014/schedule/index.html new file mode 100644 index 00000000..36398e64 --- /dev/null +++ b/docs/2014/schedule/index.html @@ -0,0 +1,332 @@ + + + + + + + + + + + + + +The D Programming Language Conference 2014 + + +
+ +
+ + + +


+

+

Schedule

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 1: Wednesday May 21, 2014
8:30 AM - 9:00 AMBreakfast
9:00 AMOpening Keynote: State of the struct address
+ Andrei Alexandrescu +Allocators. The state of D adoption at Facebook. Priorities. Vision. All of these and more will be discussed in this highly interactive presentation. +
10:00 AMTemplates in the Wild: A Postmortem
+ Jonathan CrapuchettesAn industry success story: EMSI needed to improve its data +processes with n-­dimensional dataset processing, in-­memory data manipulation, +data type checking, internal testing, and code correctness. D was the language +of choice because it couples low-­level performance with high-­level design. + +

EMSI began manipulating economic labor market data using Excel. The company next used SQL for computations, while Excel spreadsheets handled the flow of the operations. As more data sets were incorporated and increasingly complex methodology was added, we moved the flow control to PHP because of its “ease” of development and widespread use. One of the goals when moving to PHP was to allow for quarterly runs of the data processing with just the push of a button. Sadly this goal never came to fruition, but during this time some fundamental concepts regarding data storage structure took shape.

+ +

Within a few years the PHP code base had become unwieldy and lacked the kind of internal error­checking that we desperately needed. It was also missing the capacity to manipulate datasets of arbitrary dimensions: up to that point datasets had been two­dimensional (e.g., Area by Industry or Area by Occupation), but demographic measures­­which were becoming increasingly in demand­­added at least two additional dimensions to each dataset. We decided that a new library of dataset structures and manipulation functions needed to be created.

+ +

After much debate, D was selected as the language for the new framework. We have been using D since 2007 for some performance-­oriented utilities and appreciated its productive inclusiveness of features from inline assembly to associative arrays in the same clean language. We determined that +D’s fast compile times, strong static typing, and powerful templating capabilities were ideal for building strongly­-checked and performant data processes. Equally important, D’s high­level features made it accessible to data developers with a wide­range of programming skill and experience. +

+ +

Most importantly, choosing D allowed for the development of five major constructs which today form the basis for our data processing framework: cubes, data storage engines, dimensions, hierarchies, and measures. Cubes encompass data storage engines and offer abstraction layers for particular sets of functionality. Data storage engines hold the dimensions and data nodes for each cube. Dimensions are compile­time concepts that have templated names and hierarchy node types. Hierarchies handle the run­time concepts of classification codes and their levels (e.g., counties to states and states to the nation). Finally, measures are the data contained within each node in the cubes. +

+ +

In applying these constructs, we make heavy use of templated structs, classes, and functions to build custom algorithms at compile­time that are optimized for specific use cases and allow for quicker realization of errors. All in all, D provided a faster, cleaner development of data processes and enabled us to build a framework that met our specific needs while giving us a platform from which we can further develop and improve our processes into the future. +

+ +

I will also be showing examples from our code base of techniques that we have used as well as discussing some of the problems we encountered with D during development. +

+
11:00 AMA Real D In Programming: Lessons Learned From Eight Years of Teaching D at the University
+ Chuck AllisonTales from eight years of downloading D mastery into the brains +of computer science undergraduates. + +

The presenter teaches a senior-level course at Utah Valley University on the +Analysis of Programming Languages that includes a D-programming component. Come see the +result of eight years of honing pedagogical material and projects that covers D +from soup to nuts, including the following topics and more: CFTE, UFCS, D’s +generics, pass-by-name with alias, coroutines via fibers, alias this, the scope +statement, contract programming, mixins, Variant and Algebraic, Nullable, +functional programming, and concurrency and infinite streams via message +passing.

+
12:00 PM - 1:30 PMLunch & Mingling
1:30 PMInside the Regular Expressions in D
+ Dmitry Olshansky +Take a sneak peek at a regular expression engine internals. +Learn how simple and effective a metaprogramming could be, by observing D's std.regex library unique features described in great detail. +
2:30 PMExperience Report: Using D at Facebook and Beyond
+ Adam Simpkins +Explore Facebook's experiences integrating D into existing +C++-based infrastructure. +
3:30 PMCase Studies In Simplifying Code With Compile-Time Reflection
+ Atila Neves +This talk will show how the power of compile-time reflection and user +defined attributes in D can be leveraged to reduce the number of lines of code +that need to be written. Two real-life case studies will be presented showing +how their D incarnations are better than the C++11 ones that inspired them. +
4:30 PMIt's Payback Time!
+ Walter Bright, Andrei Alexandrescu, and more +Dislike this or that feature or decision made by the language leaders? Ever pounded your keyboard in frustration watching an exchange on the forum? Really, what were they thinking? Well, it's payback time. They'll be out there for the roasting. Ask them anything, and hold no punches! +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 2: Thursday May 22, 2014
8:30 AM - 9:00 AMBreakfast
9:00 AMKeynote: The Last Thing D Needs
+ Scott Meyers +Based on his 25 years of experience with C++, Scott Meyers will offer a recommendation—almost a plea—regarding the D programming language and its community. +
10:00 AMRefactoring JIT Compilation
+ Maxime Chevalier-Boisvert +Higgs, a JIT compiler for JavaScript written in D, was presented at DConf 2013. +Basic block versioning, a novel optimization technique in early stages of +testing at the time, was also introduced. Experimental results demonstratring +how basic block versioning fares on multiple metrics across a variety of +benchmarks can now be shown. We discuss how we have interpreted these results +to inform further development of Higgs and introduce a JIT compiler +architecture based on the idea of lazy/incremental compilation and inlining. +We also explore how D has influenced the development of Higgs and take a more +in-depth look at how various D features such as templates and CTFE are used in +the Higgs implementation. +
11:00 AMDesigning an Aurora: A Glimpse at the Graphical Future of D
+ Adam Wilson +Aurora is a brand new Graphics Toolkit written specifically for D and designed for developers with limited to no experience writing graphics code. This presentation is intended to introduce the community to Aurora, demonstrate progress to date, and solicit discussion about the future direction of Aurora and the obstacles that it faces. +
12:00 PM - 1:30 PMLunch & Mingling
1:30 PMReducing D bugs
+ Vladimir Panteleev +This talk confronts some of the challenges encountered by D users and +developers, such as narrowing down implementation bugs and other problems +difficult to diagnose conventionally. Topics covered include DustMite, the +source code minimization tool, Git and its use in D development, as well as a +miscellanea of other tools of related purpose. +
2:30 PMTooling: Bringing Developers and Development Together
+ Brad Roberts +Once any project grows beyond one or two developers automation and communication becomes increasingly important. This talk will cover the past, present, and a little bit of the future of what exists in the D community today. +
3:30 PMDebugging in D
+ Iain Buclaw +Talk about steps and processes used to get (near) complete +D support in GDB and Binutils. From recognising primitive types to +writing a D-style expression parser to run D code interactively with +the program in debug. And if using a black and white TUI is not your +idea of debugging, there's D syntax highlighting support in CGDB on +show too. +
4:30 PMTiny, Ubiquitous Machines Powered by D
+ Michael V. Franklin +Microcontrollers (MCUs) offer a unique and challenging set of constraints for any programming language. They are not fast (10's to low 100's of MHz), they have very little storage (100's of KB) and have even less RAM. Due to these extremely limited resources, languages used to program these tiny, ubiquitous machines must generate the most efficient code in terms of both size and speed. This talk will show that D can program microcontrollers just as well, if not better than the current de facto languages, and will detail progress on the recently launched effort bring D to the ARM Cortex-M family of MCUs. +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 3: Friday May 23, 2014
8:30 AM - 9:00 AMBreakfast
9:00 AMKeynote: High Performance Code Using D
+ Walter Bright +Memory safety, powerful abstractions, and fast compilation are great features +to have. But what about high performance code? This talk shows how D can deliver +on generating highly competitive, no-compromise performance applications. +Conventional wisdom says that high performance and powerful abstractions are +in conflict with each other, that one must write close-to-the-metal code to get +high performance. Bright will show that this is no longer true with a modern +high level language like D. +
10:00 AMReal-Time Big Data in D
+ Don Clugston +"Big Data" applications, which process petabytes of data per year, are +computationally demanding, yet they have different requirements from +traditional performance-critical applications. A programming language which +is well suited for CPU-bound code, isn't necessarily ideal for real-time Big +Data. + +

At Sociomantic Labs, we consume a deluge of real time data every day using +an all-D technology stack. This talk will explain how our use of D has been +successful in our intensely competitive industry. +Unfortunately, most existing D libraries were not designed for Big Data +applications. I'll discuss the performance killers they contain, +and propose some changes to make D the natural choice for Big Data tasks.

+
11:00 AMx86 Bare Metal and Custom Runtime Programming
+ Adam Ruppe +"kernel in D" is a fairly common topic on forums. I've +written a minimal runtime and then rebuilt it back up to the point +where we can produce a ~30 KB stand-alone executable which can be used +on Linux or on bare metal with the support of a decently large subset +of the language (classes, exceptions, even closures with some manual +care). By creatively hacking the RTInfo facility in object.d, we can +also perform some static checks on defined types to help confirm to +performance or correctness checks. + +

For example, storing a slice without the GC is prone to losing track +of who owns the memory. Using RTInfo and compile time reflection, we +can scan all user types and issue a compile error any time this is +done, directing the user to use an owned array struct instead.

+ +

It is also worth noting that such techniques may be usable in the full +druntime as well, without stepping on other uses, e.g. precise GC.

+
12:00 PM - 1:30 PMLunch & Mingling
1:30 PMMobile Gameserver Backend in D
+ Stephan Dilly +A gameserver backend that I have developed for a mobile game app project. The server is completely written in D using the vibe.d framework. +
2:30 PMLightning Talks!
+ Many +Have something to say? Has your proposal been rejected? Worse yet, didn't you have the time to put one together? No problem! This is the time when you get the opportunity to get up on the stage and have it for up to five minutes. Send your lightning talk ideas to Walter and Andrei! +
3:30 PMDeclarative programming in D
+ Mihails Strasuns aka "Dicebot" +When term "declarative programming" is used in context of imperative languages, +it is most often associated with Domain-Specific Languages. However, it is a +more general approach with essential value of separating meaningful description +from boilerplate behavior. It is already widely used in D programs and won't be +a revelation for any experienced D users. + +

This talk tries to somewhat generalize this approach and popularize it as common D paradigm, as well as speculate upon possible improvements to D +reflection capabilities that can make it even more powerful.

+
4:30 PMSDC, a D Compiler as a Library
+ Amaury Sechet +One of the forces of D is the great compile time capabilities. These come with a +drawback - any tooling around D must be able to semantically analyze the whole +language. SDC intend to solve that problem by providing a compiler as a library, +usable by 3rd party tools. +
+ +
+ + +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/speakers/index.html b/docs/2014/speakers/index.html new file mode 100644 index 00000000..fb7beffa --- /dev/null +++ b/docs/2014/speakers/index.html @@ -0,0 +1,278 @@ + + + + + + + + + + + + + +The D Programming Language Conference 2014 + + +
+ +
+ + + +


+

+

Walter Bright

+
+ + +
Walter Bright +Walter Bright is the creator and first implementer of the D programming language +and has implemented compilers for several other languages. He's an expert in all +areas of compiler technology, including front ends, optimizers, code generation, +interpreter engines and runtime libraries. Walter regularly writes articles +about compilers and programming, is known for engaging and informative +presentations, and provides training in compiler development techniques. Many +are surprised to discover that Walter is also the creator of the wargame Empire, +which is still popular today over 30 years after its debut.
+
+

Andrei Alexandrescu

+
+ + +
Andrei Alexandrescu +Andrei Alexandrescu coined the colloquial term "modern C++" (adapted +from his award-winning book Modern C++ Design), used today to describe +a collection of important C++ styles and idioms. He is also the +coauthor (with Herb Sutter) of C++ Coding Standards and the author of +The D Programming Language book. With Walter Bright, Andrei +co-designed many important features of D and authored a large part of +D's standard library. His research on Machine Learning and Natural +Language Processing completes a broad spectrum of expertise. Andrei +holds a Ph.D. in Computer Science from the University of Washington and +a B.Sc. in Electrical Engineering from University "Politehnica" +Bucharest. He works as a Research Scientist for Facebook.
+
+

Scott Meyers

+
+ + +
Scott Meyers +Scott Meyers is one of the world's foremost +authorities on C++. Author of the best-selling Effective C++ series (Effective +C++, More Effective C++, and Effective STL), he’s also a founder of +C++ and Beyond and the consulting editor for Addison +Wesley's Effective Software +Development Series. He provides training and consulting services to clients +worldwide.
+
+

Maxime Chevalier-Boisvert

+
+ + +
Maxime Chevalier-Boisvert +Maxime Chevalier-Boisvert is the creator of Higgs, an experimental JIT compiler +for JavaScript written in D. She holds a master's degree from McGill University +and is currently pursuing a PhD at Université de Montréal as part of the +Dynamic Language Team. Her area of study is compiler design and optimization, +with a focus on dynamic programming languages, JIT compilers and type analysis.
+
+

+

Chuck Allison

+
+ + +
Chuck Allison +Chuck Allison was an early member of the ISO C++ Standards committee (1991–2001) and designed and provided the reference implementation for std::bitset. He was a columnist and editor for the C/C++ Users Journal (1992–2003), and wrote two books on C++: C & C++ Code Capsules (1998) and Thinking in C++, Volume 2, with Bruce Eckel (2004), both published by Prentice-Hall. After twenty years of developing software he returned in 2001 to his first professional love, teaching. He is a professor and chair of computer science at Utah Valley University in Orem, Utah. He has published over 100 articles and in his spare time gives training on C++, Python, D and software development principles. Except when he is playing his classical guitar or bicycling the backroads of central Utah, that is. He was an early adopter of D and has never missed a DConf.
+
+

Iain Buclaw

+
+ + +
Iain Buclaw +Lead developer, project coordinator and the principal force behind the +development of the GNU D Compiler from as far back as 2009, where have +been responsible for the migration over from D1 to D2, as well as from +GCC 3.x to GCC 4.x. Others might be interested to know that outside +hobby life I work on for a Cloud Services/Hosting company as a +Technical Engineer, and unofficially use D on a frequent basis to +develop interpreters, and various plug-ins to work within our +infrastructure.
+
+

Don Clugston

+
+ + +
Don Clugston +Don is a Senior Software Developer at Sociomantic Labs, Berlin. +He has contributed to the D language since 2005, mainly in the areas +of mathematics and metaprogramming. Before joining Sociomantic as +a full-time D programmer, he worked in the solar photovoltaic industry +on numerical modelling, measurement, and industrial inkjet. His +'FastDelegate' library is well known in the C++ community. +He has two sons, and a daughter with superpowers.
+
+

Jonathan Crapuchettes

+
+ + +
Jonathan CrapuchettesJonathan Crapuchettes is a senior programmer at EMSI, a CareerBuilder +company. He has been developing applications for economic models and data +manipulation for the last eight years and has been using D since version 1.0 was +released. He holds a BS in computer science from Eastern Washington University.
+
+

Stephan Dilly

+
+ + +
Stephan Dilly +I am Stephan Dilly, a 27 years old Senior Software Engineer at Funatics Software GmbH. Being a professional in the gaming industry for 6 years I worked for titles like "The Settlers - Rise of Cultures" for PC and "Endwar" for PSP/NDS. During the last 3 years and due to the shifting in this sector from boxed to online games I mainly focused on developing server backends for massive online titles including "Cultures Online" and most recently "Panzer General Online". D is on my radar at least since 2007 (I submitted the first dmd bug back then), in 2009 I wrote my B.Sc Thesis about "D in game development" and now I finally convinced my boss to switch from Node.js to D in production. The D sphere knows me best as +"Extrawurst", my contributions to TDPL, for my article series about this talk’s topic, the various libraries I open sourced for developing a mobile game server backend in D and my engagement to bring German speaking D developers together in the #d.de channel as an operator.
+
+

Adam Simpkins

+
+ + +
Adam Simpkins +Adam Simpkins is a software engineer at Facebook. He +works primarily on networking infrastructure projects, building +network switches, HTTP load balancers, and contributing to thrift +development. Prior to Facebook he worked at Cisco and some smaller +start-ups working on CIFS and NFS network file system protocols.
+
+

Michael V. Franklin

+
+ + +
Michael V. Franklin +Bachelor of Science in Computer Engineering – Trained in C/C++ +
  • 8 years programming business applications in C#
  • +
  • 2 years programming HMI's for Industrial Automation in C#
  • +
  • 2 years programming ARM Cortex-M microcontrollers for Industrial Automation in C/C++
  • +
+
+

Atila Neves

+
+ + +
Atila Neves +I have a PhD in Particle Physics for research done at CERN. Most of the research itself required programming in C++, and I also had a major participation in the coding of the experiment’s data acquisition and decoding software in C and C++. I later joined the Computer Security Team at CERN in the IT department and spent two years there writing Perl. + +

I currently work at Cisco writing networking software, my job having re- quired me to write in C, C++, Perl, Python, Java and Ruby. I even wrote a small D wrapper for our C API for fun.

+ +

The software I wrote and will cover in the talk stems from the work done at my job at Cisco. Both software libraries were written as a better alternative inspired by the code used at work for writing unit tests and serialising network protocol packets. I first wrote them in C++ and after learning D soon realised that both of them would work better in D due to D’s unique capabilities.

+ +

The result of this work was a comparison of MQTT broker implementations in different languages, D being one of them, that ended up generating a lot of discussion on Hacker News and programming subreddit.

+
+

Dmitry Olshansky

+
+ + +
Dmitry Olshansky +Dmitry Olshansky, a young all-around researcher and D enthusiast. + +Interests changed wildly over time and today include: text processing, compilers, robotics, embedded systems, parallel and concurrent programming, scalable network systems. + +Currently enrolled as Ph.D student, with the thesis being focused on a specific class of AI systems. + +The most recognized work is the standard regular expression library for D +(a.k.a. std.regex).
+
+

Vladimir Panteleev

+
+ + +
Vladimir Panteleev +I am Vladimir Panteleev, a D enthusiast from Moldova (Eastern Europe). I am +known in the D community for authoring DFeed (http://forum.dlang.org), +DustMite, and several other tools, some of which will be covered in this talk.
+
+

Brad Roberts

+
+ + +
Brad Roberts +I first became aware of D in 2005 when Steve Yeggie included it in a survey of programing languages blog post he wrote while the two of us were at Amazon. A year or so later I wanted to learn more and was appalled at the lack of infrastructure I expected to find in a project of it's scale. Newsgroups only, no bug tracking, no source control system (no, occasional tarballs doesn't count, Walter), incomplete source, no public tests, etc. So, I set out to make all of these things exist/happen. + +

Outside the realm of D, I've been writing software professionally for the last 25 years, primarily in data processing and back-end systems. Lots of networking, telecom, database, and distributed systems work for IBM, Informix, Netscape, and Amazon to list the ones anyone would recognize. Additional, at each of those companies, I've tended to also invest considerable time in supporting the software management systems.

+
+

Adam Ruppe

+
+ + +
Adam Ruppe +I've been a freelance programmer since 2009, using primarily +D as a server-side web language. For the last several months, +I have also been working on writing a D "cookbook" for people +to learn the language through practical examples. I joined the +D community in 2007 and started programming (with assembly +language and Digital Mars C) in 1999. My open source and hobbyist +experience covers a wide spectrum of programming related fields +from bare metal code to compilers to homemade games.
+
+

Amaury Sechet

+
+ + +
Amaury Sechet +Amaury Sechet is a software engineer at Facebook and the main developer of SDC.
+
+

Mihails Strasuns aka "Dicebot"

+
+ + +
Mihails Strasuns aka +Programming & open-source enthusiast. Contributor to several D projects, most notably vibe.d. D developer at Sociomantic Labs. One of Arch Linux Trusted Users.
+
+

Adam Wilson

+
+ + +
Adam Wilson +Adam Wilson is the Director of Software Development at Prospective Software which specializes in CRM software for the automotive industry. He has over 15 years of experience writing code in a plethora of languages, but has focused on C++, C#, and of course D. Adam also holds a Computer Game Development Certificate from Edmonds Community College which he earned in 2007. In his free time he enjoys spending time with his wife, reading science-fiction, flying light aircraft, and hacking on D code.
+
+ +
+ + +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/alexandrescu.html b/docs/2014/talks/alexandrescu.html new file mode 100644 index 00000000..157bf285 --- /dev/null +++ b/docs/2014/talks/alexandrescu.html @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Andrei Alexandrescu + + + + +
+ + + +
+

Opening Keynote: State of the struct address

+
+

Andrei Alexandrescu
+ May 21st @ 9:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Allocators. The state of D adoption at Facebook. Priorities. Vision. All of these and more will be discussed in this highly interactive presentation.

+

Benefits: +Get (and influence) the pulse of the innermost circle in the D community.

+ +

Speaker Bio: +Andrei Alexandrescu coined the colloquial term "modern C++" (adapted +from his award-winning book Modern C++ Design), used today to describe +a collection of important C++ styles and idioms. He is also the +coauthor (with Herb Sutter) of C++ Coding Standards and the author of +The D Programming Language book. With Walter Bright, Andrei +co-designed many important features of D and authored a large part of +D's standard library. His research on Machine Learning and Natural +Language Processing completes a broad spectrum of expertise. Andrei +holds a Ph.D. in Computer Science from the University of Washington and +a B.Sc. in Electrical Engineering from University "Politehnica" +Bucharest. He works as a Research Scientist for Facebook.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/allison.html b/docs/2014/talks/allison.html new file mode 100644 index 00000000..895f6cd5 --- /dev/null +++ b/docs/2014/talks/allison.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Chuck Allison + + + + +
+ + + +
+

A Real D In Programming: Lessons Learned From Eight Years of Teaching D at the University

+
+

Chuck Allison
+ May 21st @ 11:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Developers and students with familiarity with a C-family language and an interest in Programming to D Max
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract: Tales from eight years of downloading D mastery into the brains +of computer science undergraduates. + +

The presenter teaches a senior-level course at Utah Valley University on the +Analysis of Programming Languages that includes a D-programming component. Come see the +result of eight years of honing pedagogical material and projects that covers D +from soup to nuts, including the following topics and more: CFTE, UFCS, D’s +generics, pass-by-name with alias, coroutines via fibers, alias this, the scope +statement, contract programming, mixins, Variant and Algebraic, Nullable, +functional programming, and concurrency and infinite streams via message +passing.

+

Benefits: +Unbelievable

+ +

Speaker Bio: +Chuck Allison was an early member of the ISO C++ Standards committee (1991–2001) and designed and provided the reference implementation for std::bitset. He was a columnist and editor for the C/C++ Users Journal (1992–2003), and wrote two books on C++: C & C++ Code Capsules (1998) and Thinking in C++, Volume 2, with Bruce Eckel (2004), both published by Prentice-Hall. After twenty years of developing software he returned in 2001 to his first professional love, teaching. He is a professor and chair of computer science at Utah Valley University in Orem, Utah. He has published over 100 articles and in his spare time gives training on C++, Python, D and software development principles. Except when he is playing his classical guitar or bicycling the backroads of central Utah, that is. He was an early adopter of D and has never missed a DConf.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/bright.html b/docs/2014/talks/bright.html new file mode 100644 index 00000000..10802ad6 --- /dev/null +++ b/docs/2014/talks/bright.html @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Walter Bright + + + + +
+ + + +
+

Keynote: High Performance Code Using D

+
+

Walter Bright
+ May 23rd @ 9:00 AM


Duration: 50 minutes
+ Talk type: Keynote
+ Level: All
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Memory safety, powerful abstractions, and fast compilation are great features +to have. But what about high performance code? This talk shows how D can deliver +on generating highly competitive, no-compromise performance applications. +Conventional wisdom says that high performance and powerful abstractions are +in conflict with each other, that one must write close-to-the-metal code to get +high performance. Bright will show that this is no longer true with a modern +high level language like D.

+

Benefits: +This talk will provide insight into how to combine D's capabilities to generate +high performance code, and why it works. It'll be practical and transferrable +to solving everyday performance problems. Amaze your colleagues by smoking their +solutions written in other languages.

+ +

Speaker Bio: +Walter Bright is the creator and first implementer of the D programming language +and has implemented compilers for several other languages. He's an expert in all +areas of compiler technology, including front ends, optimizers, code generation, +interpreter engines and runtime libraries. Walter regularly writes articles +about compilers and programming, is known for engaging and informative +presentations, and provides training in compiler development techniques. Many +are surprised to discover that Walter is also the creator of the wargame Empire, +which is still popular today over 30 years after its debut.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/buclaw.html b/docs/2014/talks/buclaw.html new file mode 100644 index 00000000..1f8d1715 --- /dev/null +++ b/docs/2014/talks/buclaw.html @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Iain Buclaw + + + + +
+ + + +
+

Debugging in D

+
+

Iain Buclaw
+ May 22nd @ 3:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Talk about steps and processes used to get (near) complete +D support in GDB and Binutils. From recognising primitive types to +writing a D-style expression parser to run D code interactively with +the program in debug. And if using a black and white TUI is not your +idea of debugging, there's D syntax highlighting support in CGDB on +show too.

+

Benefits: +Raise general awareness of what is happening around the GDB and +Binutils projects, and give users a tutorial on how they can expect to +use these applications in the future to maximise their own ability to +track down issues in D programs from link-time to runtime debugging.

+ +

Speaker Bio: +Lead developer, project coordinator and the principal force behind the +development of the GNU D Compiler from as far back as 2009, where have +been responsible for the migration over from D1 to D2, as well as from +GCC 3.x to GCC 4.x. Others might be interested to know that outside +hobby life I work on for a Cloud Services/Hosting company as a +Technical Engineer, and unofficially use D on a frequent basis to +develop interpreters, and various plug-ins to work within our +infrastructure.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/chevalier_boisvert.html b/docs/2014/talks/chevalier_boisvert.html new file mode 100644 index 00000000..f61399f7 --- /dev/null +++ b/docs/2014/talks/chevalier_boisvert.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Maxime Chevalier-Boisvert + + + + +
+ + + +
+

Refactoring JIT Compilation

+
+

Maxime Chevalier-Boisvert
+ May 22nd @ 10:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Higgs, a JIT compiler for JavaScript written in D, was presented at DConf 2013. +Basic block versioning, a novel optimization technique in early stages of +testing at the time, was also introduced. Experimental results demonstratring +how basic block versioning fares on multiple metrics across a variety of +benchmarks can now be shown. We discuss how we have interpreted these results +to inform further development of Higgs and introduce a JIT compiler +architecture based on the idea of lazy/incremental compilation and inlining. +We also explore how D has influenced the development of Higgs and take a more +in-depth look at how various D features such as templates and CTFE are used in +the Higgs implementation.

+

Benefits: +Exposure to the world of JIT compilers and dynamic language optimization. +Discussion of a novel compiler architecture which is at the intersection of +method-based compilation and tracing, aiming to combine the advantages of both. +A demonstration of how various features of D can help simplify and clean up the +implementation of complex systems software in practice.

+ +

Speaker Bio: +Maxime Chevalier-Boisvert is the creator of Higgs, an experimental JIT compiler +for JavaScript written in D. She holds a master's degree from McGill University +and is currently pursuing a PhD at Université de Montréal as part of the +Dynamic Language Team. Her area of study is compiler design and optimization, +with a focus on dynamic programming languages, JIT compilers and type analysis.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/clugston.html b/docs/2014/talks/clugston.html new file mode 100644 index 00000000..b407cf2e --- /dev/null +++ b/docs/2014/talks/clugston.html @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Don Clugston + + + + +
+ + + +
+

Real-Time Big Data in D

+
+

Don Clugston
+ May 23rd @ 10:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +"Big Data" applications, which process petabytes of data per year, are +computationally demanding, yet they have different requirements from +traditional performance-critical applications. A programming language which +is well suited for CPU-bound code, isn't necessarily ideal for real-time Big +Data. + +

At Sociomantic Labs, we consume a deluge of real time data every day using +an all-D technology stack. This talk will explain how our use of D has been +successful in our intensely competitive industry. +Unfortunately, most existing D libraries were not designed for Big Data +applications. I'll discuss the performance killers they contain, +and propose some changes to make D the natural choice for Big Data tasks.

+

Benefits: +In one sentence: D should consider Big Data as one of its key markets, so we +should be ruthless about memory inefficiency. + +

  1. An introduction to Big Data, why it is important, and how it differs from traditional high-performance code.
  2. +
  3. An update on Sociomantic's continued explosive growth, and the pivotal role D plays for us.
  4. +
  5. The impact of memory inefficiency on performance.
  6. +
  7. The performance killers in the language, and why Sociomantic can't use Phobos at present.
  8. +
  9. Techniques and idioms we use to minimize our memory footprint.
  10. +
  11. The consequences of using fibers.
  12. +
  13. What we can change to make Big Data an even bigger win for D.
  14. +

+ +

Speaker Bio: +Don is a Senior Software Developer at Sociomantic Labs, Berlin. +He has contributed to the D language since 2005, mainly in the areas +of mathematics and metaprogramming. Before joining Sociomantic as +a full-time D programmer, he worked in the solar photovoltaic industry +on numerical modelling, measurement, and industrial inkjet. His +'FastDelegate' library is well known in the C++ community. +He has two sons, and a daughter with superpowers.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/crapuchettes.html b/docs/2014/talks/crapuchettes.html new file mode 100644 index 00000000..de0c27d7 --- /dev/null +++ b/docs/2014/talks/crapuchettes.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Jonathan Crapuchettes + + + + +
+ + + +
+

Templates in the Wild: A Postmortem

+
+

Jonathan Crapuchettes
+ May 21st @ 10:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract: An industry success story: EMSI needed to improve its data +processes with n-­dimensional dataset processing, in-­memory data manipulation, +data type checking, internal testing, and code correctness. D was the language +of choice because it couples low-­level performance with high-­level design. + +

EMSI began manipulating economic labor market data using Excel. The company next used SQL for computations, while Excel spreadsheets handled the flow of the operations. As more data sets were incorporated and increasingly complex methodology was added, we moved the flow control to PHP because of its “ease” of development and widespread use. One of the goals when moving to PHP was to allow for quarterly runs of the data processing with just the push of a button. Sadly this goal never came to fruition, but during this time some fundamental concepts regarding data storage structure took shape.

+ +

Within a few years the PHP code base had become unwieldy and lacked the kind of internal error­checking that we desperately needed. It was also missing the capacity to manipulate datasets of arbitrary dimensions: up to that point datasets had been two­dimensional (e.g., Area by Industry or Area by Occupation), but demographic measures­­which were becoming increasingly in demand­­added at least two additional dimensions to each dataset. We decided that a new library of dataset structures and manipulation functions needed to be created.

+ +

After much debate, D was selected as the language for the new framework. We have been using D since 2007 for some performance-­oriented utilities and appreciated its productive inclusiveness of features from inline assembly to associative arrays in the same clean language. We determined that +D’s fast compile times, strong static typing, and powerful templating capabilities were ideal for building strongly­-checked and performant data processes. Equally important, D’s high­level features made it accessible to data developers with a wide­range of programming skill and experience. +

+ +

Most importantly, choosing D allowed for the development of five major constructs which today form the basis for our data processing framework: cubes, data storage engines, dimensions, hierarchies, and measures. Cubes encompass data storage engines and offer abstraction layers for particular sets of functionality. Data storage engines hold the dimensions and data nodes for each cube. Dimensions are compile­time concepts that have templated names and hierarchy node types. Hierarchies handle the run­time concepts of classification codes and their levels (e.g., counties to states and states to the nation). Finally, measures are the data contained within each node in the cubes. +

+ +

In applying these constructs, we make heavy use of templated structs, classes, and functions to build custom algorithms at compile­time that are optimized for specific use cases and allow for quicker realization of errors. All in all, D provided a faster, cleaner development of data processes and enabled us to build a framework that met our specific needs while giving us a platform from which we can further develop and improve our processes into the future. +

+ +

I will also be showing examples from our code base of techniques that we have used as well as discussing some of the problems we encountered with D during development. +

+

Benefits: An inspiring success story that any aspiring D evangelist can learn +from.

+ +

Speaker Bio: Jonathan Crapuchettes is a senior programmer at EMSI, a CareerBuilder +company. He has been developing applications for economic models and data +manipulation for the last eight years and has been using D since version 1.0 was +released. He holds a BS in computer science from Eastern Washington University.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/dilly.html b/docs/2014/talks/dilly.html new file mode 100644 index 00000000..9d737203 --- /dev/null +++ b/docs/2014/talks/dilly.html @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Stephan Dilly + + + + +
+ + + +
+

Mobile Gameserver Backend in D

+
+

Stephan Dilly
+ May 23rd @ 1:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Beginner, Intermediate
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +A gameserver backend that I have developed for a mobile game app project. The server is completely written in D using the vibe.d framework.

+

Benefits: +When I decided to add an online multiplayer feature to the mobile game STACK4, I evaluated a couple of solutions to implement it in: C/Libuv, PHP, Java+Vertx, Node.js and D+vibe.d. The talk discusses the evaluation process, the experiences with D after going with it and how D compares to the others performance and productive wise. D, with its elegance, simplicity and performance, turned out to be the perfect replacement for Node.js, and in my talk I want to elaborate this fact. More details can be found in the article series on this topic on my website.

+ +

Speaker Bio: +I am Stephan Dilly, a 27 years old Senior Software Engineer at Funatics Software GmbH. Being a professional in the gaming industry for 6 years I worked for titles like "The Settlers - Rise of Cultures" for PC and "Endwar" for PSP/NDS. During the last 3 years and due to the shifting in this sector from boxed to online games I mainly focused on developing server backends for massive online titles including "Cultures Online" and most recently "Panzer General Online". D is on my radar at least since 2007 (I submitted the first dmd bug back then), in 2009 I wrote my B.Sc Thesis about "D in game development" and now I finally convinced my boss to switch from Node.js to D in production. The D sphere knows me best as +"Extrawurst", my contributions to TDPL, for my article series about this talk’s topic, the various libraries I open sourced for developing a mobile game server backend in D and my engagement to bring German speaking D developers together in the #d.de channel as an operator.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/franklin.html b/docs/2014/talks/franklin.html new file mode 100644 index 00000000..ea1e13dd --- /dev/null +++ b/docs/2014/talks/franklin.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Michael V. Franklin + + + + +
+ + + +
+

Tiny, Ubiquitous Machines Powered by D

+
+

Michael V. Franklin
+ May 22nd @ 4:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Beginner, Intermediate
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Microcontrollers (MCUs) offer a unique and challenging set of constraints for any programming language. They are not fast (10's to low 100's of MHz), they have very little storage (100's of KB) and have even less RAM. Due to these extremely limited resources, languages used to program these tiny, ubiquitous machines must generate the most efficient code in terms of both size and speed. This talk will show that D can program microcontrollers just as well, if not better than the current de facto languages, and will detail progress on the recently launched effort bring D to the ARM Cortex-M family of MCUs.

+

Benefits: +Attendees will be given a brief overview of the ARM Cortex-M microcontroller, the tools used for their software development, and their unique constraints and possibilities. They will be presented with a detailed tour of the recent effort to make programming these machines in D a reality including the project's objectives, approach, progress made as of May 2014, and its future plans and expectations. This pioneering effort has the potential to not only expand D's platform base, but also D's user base as embedded systems engineers are in desperate need of a programming language with more modern convenience. It does, however, also carry the danger of converting great software engineers into inventors and entrepreneurs as they begin to realize the infinite possibilities of building tiny, ubiquitous machines powered by D.

+ +

Speaker Bio: +Bachelor of Science in Computer Engineering – Trained in C/C++ +

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/lightning.html b/docs/2014/talks/lightning.html new file mode 100644 index 00000000..afd32f75 --- /dev/null +++ b/docs/2014/talks/lightning.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Many + + + + +
+ + + +
+

Lightning Talks!

+
+

Many
+ May 23rd @ 2:30 PM


Duration: 50 minutes
+ Talk type: 5 minute talks
+ Level: All
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Have something to say? Has your proposal been rejected? Worse yet, didn't you have the time to put one together? No problem! This is the time when you get the opportunity to get up on the stage and have it for up to five minutes. Send your lightning talk ideas to Walter and Andrei!

+

Benefits: +Fun all around.

+ +

Speaker Bio: +Varied.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/meyers.html b/docs/2014/talks/meyers.html new file mode 100644 index 00000000..026473bc --- /dev/null +++ b/docs/2014/talks/meyers.html @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Scott Meyers + + + + +
+ + + +
+

Keynote: The Last Thing D Needs

+
+

Scott Meyers
+ May 22nd @ 9:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Based on his 25 years of experience with C++, Scott Meyers will offer a recommendation—almost a plea—regarding the D programming language and its community.

+

Benefits: +Surprising.

+ +

Speaker Bio: +Scott Meyers is one of the world's foremost +authorities on C++. Author of the best-selling Effective C++ series (Effective +C++, More Effective C++, and Effective STL), he’s also a founder of +C++ and Beyond and the consulting editor for Addison +Wesley's Effective Software +Development Series. He provides training and consulting services to clients +worldwide.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/neves.html b/docs/2014/talks/neves.html new file mode 100644 index 00000000..64305929 --- /dev/null +++ b/docs/2014/talks/neves.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Atila Neves + + + + +
+ + + +
+

Case Studies In Simplifying Code With Compile-Time Reflection

+
+

Atila Neves
+ May 21st @ 3:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate, Advanced
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +This talk will show how the power of compile-time reflection and user +defined attributes in D can be leveraged to reduce the number of lines of code +that need to be written. Two real-life case studies will be presented showing +how their D incarnations are better than the C++11 ones that inspired them.

+

Benefits: +

The talk will show how the D versions of two C++11 libraries written by the +author require less boilerplate code to be written with the use of compile-time +reflection whislt offering equivalent or better functionality. One is a unit +testing framework designed from the start to run tests in parallel for maximum +speed and decoupling, the other a serialisation library that requires user code +to be written only once for both marshalling and unmarshalling.

+ +

For unit-testing, C++ requires macros for assertions, for registering tests, and +that each test be a child of a TestCase class. The D version not only dispenses +with registration but also with the requirement of participating in the TestCase +hierarchy by allowing the registration of functions. User defined attributes can +be used to tweak the default behaviour.

+ +

In the case of serialisation, C++ requires that code be written for every non- +primitive type. D allows the compiler to write the code for the library user and +makes it easier, also via user defined attributes, to customise the behaviour +for certain use cases. In most cases no code need be written at all. The talk +will show examples taken from an MQTT broker written in D, and how it is smaller +than the C++ version.

+ +

The proposed talk aims to showcase how to write code to make use of D’s compile- +time reflection, why one would want to write such code, and how it was used in a +real project to reduce boilerplate. D’s metaprogramming capabilities are an +advanced topic with few practical examples and it would be helpful to make them +known to D novices or programmers currently considering learning the language.

+ +

Speaker Bio: +I have a PhD in Particle Physics for research done at CERN. Most of the research itself required programming in C++, and I also had a major participation in the coding of the experiment’s data acquisition and decoding software in C and C++. I later joined the Computer Security Team at CERN in the IT department and spent two years there writing Perl. + +

I currently work at Cisco writing networking software, my job having re- quired me to write in C, C++, Perl, Python, Java and Ruby. I even wrote a small D wrapper for our C API for fun.

+ +

The software I wrote and will cover in the talk stems from the work done at my job at Cisco. Both software libraries were written as a better alternative inspired by the code used at work for writing unit tests and serialising network protocol packets. I first wrote them in C++ and after learning D soon realised that both of them would work better in D due to D’s unique capabilities.

+ +

The result of this work was a comparison of MQTT broker implementations in different languages, D being one of them, that ended up generating a lot of discussion on Hacker News and programming subreddit.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/olshansky.html b/docs/2014/talks/olshansky.html new file mode 100644 index 00000000..2f4b2351 --- /dev/null +++ b/docs/2014/talks/olshansky.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Dmitry Olshansky + + + + +
+ + + +
+

Inside the Regular Expressions in D

+
+

Dmitry Olshansky
+ May 21st @ 1:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate. Having a basic understanding of regular expressions is highly recommended, but not required.
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Take a sneak peek at a regular expression engine internals. +Learn how simple and effective a metaprogramming could be, by observing D's std.regex library unique features described in great detail.

+

Benefits: +The talk gives an up-close view of how a regular expression libraries work behind the scenes, dispelling a few common myths in the process. The talk consists of two parts, with first focusing on generic concepts and second devoted to D specific features. + +

The first part of talk intentionally language agnostic and +focuses on the core principles behind the regular expressions. +The key point of this part is the fundamental ways of +matching regular expression, their respective strengths and weaknesses.

+ +

The second part dives into how all of this fits into std.regex, a modern regular expression library written in D. Important practical considerations are discussed, some D features that aid such an undertaking are highlighted.

+ +

The last but not least - a feature unique to D is discussed, a generation of optimal native code for a regular expression at compile-time via metaprogramming. The major steps to achieve that along with tricks for seamless integration are detailed, the simplicity of it being the key part of the talk.

+ +

Bottom line, attendees will acquire the knowledge of how regular expressions work from the inside out. It will greatly aid in furthering the understanding of how to use them and when not to use them. More then that it's a good chance to learn practical metaprogramming in D by following an exciting real world example.

+ +

Speaker Bio: +Dmitry Olshansky, a young all-around researcher and D enthusiast. + +Interests changed wildly over time and today include: text processing, compilers, robotics, embedded systems, parallel and concurrent programming, scalable network systems. + +Currently enrolled as Ph.D student, with the thesis being focused on a specific class of AI systems. + +The most recognized work is the standard regular expression library for D +(a.k.a. std.regex).

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/panel.html b/docs/2014/talks/panel.html new file mode 100644 index 00000000..1c772195 --- /dev/null +++ b/docs/2014/talks/panel.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Walter Bright, Andrei Alexandrescu, and more + + + + +
+ + + +
+

It's Payback Time!

+
+

Walter Bright, Andrei Alexandrescu, and more
+ May 21st @ 4:30 PM


Duration: 30 minutes
+ Talk type: Panel
+ Level: All
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Dislike this or that feature or decision made by the language leaders? Ever pounded your keyboard in frustration watching an exchange on the forum? Really, what were they thinking? Well, it's payback time. They'll be out there for the roasting. Ask them anything, and hold no punches!

+

Benefits: +A cathartic moment.

+ +

Speaker Bio: +Walter, Andrei, and most other major players in the D ecosystem who will be in the room have a solid reputation in making good decisions all the time, and bitterly defending the bad ones.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/panteleev.html b/docs/2014/talks/panteleev.html new file mode 100644 index 00000000..61095224 --- /dev/null +++ b/docs/2014/talks/panteleev.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Vladimir Panteleev + + + + +
+ + + +
+

Reducing D bugs

+
+

Vladimir Panteleev
+ May 22nd @ 1:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +This talk confronts some of the challenges encountered by D users and +developers, such as narrowing down implementation bugs and other problems +difficult to diagnose conventionally. Topics covered include DustMite, the +source code minimization tool, Git and its use in D development, as well as a +miscellanea of other tools of related purpose.

+

Benefits: +The first part and main focus of this talk will be DustMite, the D source code +minimization tool. Although the tool has already found popularity amongst many D +users and developers, it remains difficult and initially unintuitive to get +started with. The talk will cover an extensive tutorial of its usage, starting +with basic use, following into more advanced use cases, such as effective +reduction of compiler regressions, stalls, crashes, and dealing with false +reductions, and later covering some unusual applications of DustMite. + +

Following DustMite will be a description of Digger, a tool +which interfaces with Git and its "bisect" functionality, and +allows to quickly determine the change which introduced a +regression.

+ +

Finalizing the talk will be descriptions of several tools to solve problems +such as large binary size, slow compilation time, and possibly large memory +consumption.

+ +

Speaker Bio: +I am Vladimir Panteleev, a D enthusiast from Moldova (Eastern Europe). I am +known in the D community for authoring DFeed (http://forum.dlang.org), +DustMite, and several other tools, some of which will be covered in this talk.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/roberts.html b/docs/2014/talks/roberts.html new file mode 100644 index 00000000..5c35ae75 --- /dev/null +++ b/docs/2014/talks/roberts.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Brad Roberts + + + + +
+ + + +
+

Tooling: Bringing Developers and Development Together

+
+

Brad Roberts
+ May 22nd @ 2:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Developers, primarily 'of' D rather than 'with' D
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Once any project grows beyond one or two developers automation and communication becomes increasingly important. This talk will cover the past, present, and a little bit of the future of what exists in the D community today.

+

Benefits: +The talk will cover, briefly, the timeline of D and the tools that have existed since the 0.00 release in Dec 2001. The bulk of the talk will cover the existing tooling: communication, source management, bug tracking, testing, and releasing. The talk will end with a glimpse at some of what the future could/might bring.

+ +

Speaker Bio: +I first became aware of D in 2005 when Steve Yeggie included it in a survey of programing languages blog post he wrote while the two of us were at Amazon. A year or so later I wanted to learn more and was appalled at the lack of infrastructure I expected to find in a project of it's scale. Newsgroups only, no bug tracking, no source control system (no, occasional tarballs doesn't count, Walter), incomplete source, no public tests, etc. So, I set out to make all of these things exist/happen. + +

Outside the realm of D, I've been writing software professionally for the last 25 years, primarily in data processing and back-end systems. Lots of networking, telecom, database, and distributed systems work for IBM, Informix, Netscape, and Amazon to list the ones anyone would recognize. Additional, at each of those companies, I've tended to also invest considerable time in supporting the software management systems.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/ruppe.html b/docs/2014/talks/ruppe.html new file mode 100644 index 00000000..51202f6e --- /dev/null +++ b/docs/2014/talks/ruppe.html @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Adam Ruppe + + + + +
+ + + +
+

x86 Bare Metal and Custom Runtime Programming

+
+

Adam Ruppe
+ May 23rd @ 11:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate, Advanced
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +"kernel in D" is a fairly common topic on forums. I've +written a minimal runtime and then rebuilt it back up to the point +where we can produce a ~30 KB stand-alone executable which can be used +on Linux or on bare metal with the support of a decently large subset +of the language (classes, exceptions, even closures with some manual +care). By creatively hacking the RTInfo facility in object.d, we can +also perform some static checks on defined types to help confirm to +performance or correctness checks. + +

For example, storing a slice without the GC is prone to losing track +of who owns the memory. Using RTInfo and compile time reflection, we +can scan all user types and issue a compile error any time this is +done, directing the user to use an owned array struct instead.

+ +

It is also worth noting that such techniques may be usable in the full +druntime as well, without stepping on other uses, e.g. precise GC.

+

Benefits: +Get acquianted with what really makes D tick - its core runtime library.

+ +

Speaker Bio: +I've been a freelance programmer since 2009, using primarily +D as a server-side web language. For the last several months, +I have also been working on writing a D "cookbook" for people +to learn the language through practical examples. I joined the +D community in 2007 and started programming (with assembly +language and Digital Mars C) in 1999. My open source and hobbyist +experience covers a wide spectrum of programming related fields +from bare metal code to compilers to homemade games.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/sechet.html b/docs/2014/talks/sechet.html new file mode 100644 index 00000000..86bec29f --- /dev/null +++ b/docs/2014/talks/sechet.html @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Amaury Sechet + + + + +
+ + + +
+

SDC, a D Compiler as a Library

+
+

Amaury Sechet
+ May 23rd @ 4:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate to Advanced
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +One of the forces of D is the great compile time capabilities. These come with a +drawback - any tooling around D must be able to semantically analyze the whole +language. SDC intend to solve that problem by providing a compiler as a library, +usable by 3rd party tools.

+

Benefits: +The talk intends to present SDC and how it works, including: +

+ +

Speaker Bio: +Amaury Sechet is a software engineer at Facebook and the main developer of SDC.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/simpkins.html b/docs/2014/talks/simpkins.html new file mode 100644 index 00000000..9978960e --- /dev/null +++ b/docs/2014/talks/simpkins.html @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Adam Simpkins + + + + +
+ + + +
+

Experience Report: Using D at Facebook and Beyond

+
+

Adam Simpkins
+ May 21st @ 2:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All-access.
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Explore Facebook's experiences integrating D into existing +C++-based infrastructure.

+

Benefits: +Learn some of the techniques Facebook is using to make it +easier for teams to adopt D, and to use it with our existing C++ +libraries and tools. We'll discuss some of the primary challenges we +face, some of the solutions we are using, and areas for future work.

+ +

Speaker Bio: +Adam Simpkins is a software engineer at Facebook. He +works primarily on networking infrastructure projects, building +network switches, HTTP load balancers, and contributing to thrift +development. Prior to Facebook he worked at Cisco and some smaller +start-ups working on CIFS and NFS network file system protocols.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/strasuns.html b/docs/2014/talks/strasuns.html new file mode 100644 index 00000000..b7607036 --- /dev/null +++ b/docs/2014/talks/strasuns.html @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Mihails Strasuns aka "Dicebot" + + + + +
+ + + +
+

Declarative programming in D

+
+

Mihails Strasuns aka "Dicebot"
+ May 23rd @ 3:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Basic, Intermediate
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +When term "declarative programming" is used in context of imperative languages, +it is most often associated with Domain-Specific Languages. However, it is a +more general approach with essential value of separating meaningful description +from boilerplate behavior. It is already widely used in D programs and won't be +a revelation for any experienced D users. + +

This talk tries to somewhat generalize this approach and popularize it as common D paradigm, as well as speculate upon possible improvements to D +reflection capabilities that can make it even more powerful.

+

Benefits: +

+ +

Speaker Bio: +Programming & open-source enthusiast. Contributor to several D projects, most notably vibe.d. D developer at Sociomantic Labs. One of Arch Linux Trusted Users.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/talks/wilson.html b/docs/2014/talks/wilson.html new file mode 100644 index 00000000..eece4cbc --- /dev/null +++ b/docs/2014/talks/wilson.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + +DConf 2014 speaker: Adam Wilson + + + + +
+ + + +
+

Designing an Aurora: A Glimpse at the Graphical Future of D

+
+

Adam Wilson
+ May 22nd @ 11:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Basic
+ + Video: [youtube] [alternative]
+

+
+
+

Abstract:  +Aurora is a brand new Graphics Toolkit written specifically for D and designed for developers with limited to no experience writing graphics code. This presentation is intended to introduce the community to Aurora, demonstrate progress to date, and solicit discussion about the future direction of Aurora and the obstacles that it faces.

+

Benefits: +Do you love D? Are you frustrated by the lack of graphics support? Then allow me to introduce you to Aurora, a graphics toolkit written specifically for D. Aurora is a Graphics Rendering Toolkit that is designed with ease-of-use in mind and is intended for use by developers who have little to no experience writing graphics code. Whether you are writing a game, a user interface, or a creative graphics project, Aurora is flexible enough to meet your needs. + +

This talk will cover the overall design of Aurora, current implementation progress with demonstrations, the obstacles that are currently faced by the Aurora team, and will solicit the audience for feedback about the current and future design of Aurora.

+ +

This interactive presentation will provide the audience with in-depth information about the current state and future direction of the Aurora Graphics Toolkit as well as providing the opportunity to directly influence the direction and scope of Aurora.

+ +

Speaker Bio: +Adam Wilson is the Director of Software Development at Prospective Software which specializes in CRM software for the automotive industry. He has over 15 years of experience writing code in a plethora of languages, but has focused on C++, C#, and of course D. Adam also holds a Computer Game Development Certificate from Edmonds Community College which he earned in 2007. In his free time he enjoys spending time with his wife, reading science-fiction, flying light aircraft, and hacking on D code.

+ +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/thankyou.html b/docs/2014/thankyou.html new file mode 100644 index 00000000..dbbb6477 --- /dev/null +++ b/docs/2014/thankyou.html @@ -0,0 +1,73 @@ + + + + + + + + + + + + + +The D Programming Language Conference 2014 + + +
+ +
+ + + +


+

+

Registration

+

+

Thanks! Your request was processed successfully.

+

+

Return to the DConf homepage.

+
+ + +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2014/venue.html b/docs/2014/venue.html new file mode 100644 index 00000000..2d513c7e --- /dev/null +++ b/docs/2014/venue.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + + +The D Programming Language Conference 2014 + + +
+ +
+ + + +


+

+

Venue

+

+

Facebook has graciously +agreed again to host DConf 2014 at its headquarters at 1 Hacker Way, +Menlo Park, CA 94025, USA.

+

+
View Larger Map +

+

Nearby hotels

+

+

Nearby hotels with access to public transportation include (prices +and availability and may vary):

+

+ +

+ +

+

Transportation

+

+

For flying to Menlo Park you may use any of the SFO (18 miles), SJC +(17 miles), or OAK (26 miles) airports.

+

+

Taxi fare is relatively expensive in California, so car rental or +public transportation are more affordable. Public transportation options include Caltrain and BART.

+ +
+ + +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Scott Meyers Walter Bright
Alexandrescu Meyers Bright
+
+
 
+
Sponsors
+ + Dr. Dobbs
+
+
 
+ +
+
+ +
+
© 2014 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2015/contact.html b/docs/2015/contact.html new file mode 100644 index 00000000..9ee9fa1f --- /dev/null +++ b/docs/2015/contact.html @@ -0,0 +1,74 @@ + + + + + + + + + + + + +The D Programming Language Conference 2015 + + +
+ +
+ + + +


+

+

Contact Us

+

+

dconf2015@digitalmars.com

+

+

On Twitter: @D_programming, #dconf

+
+ + +
Keynote Speakers
+ + + + +
Andrei Alexandrescu Chuck Allison Walter Bright
Alexandrescu Allison Bright
+
+
 
+
Sponsors
+ + UVU
+
+
 
+ +
+
+ +
+
© 2015 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2015/images/allison.jpg b/docs/2015/images/allison.jpg new file mode 100644 index 00000000..e5815a83 Binary files /dev/null and b/docs/2015/images/allison.jpg differ diff --git a/docs/2015/images/background.png b/docs/2015/images/background.png new file mode 100644 index 00000000..c8e33b52 Binary files /dev/null and b/docs/2015/images/background.png differ diff --git a/docs/2015/images/dconf_logo_2015.svg b/docs/2015/images/dconf_logo_2015.svg new file mode 100644 index 00000000..8f3e28d8 --- /dev/null +++ b/docs/2015/images/dconf_logo_2015.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DConf 2015 + + + + May 27-29 · Orem, UT + + + diff --git a/docs/2015/images/dconf_logo_help.txt b/docs/2015/images/dconf_logo_help.txt new file mode 100644 index 00000000..be1af661 --- /dev/null +++ b/docs/2015/images/dconf_logo_help.txt @@ -0,0 +1,2 @@ +This SVG logo uses the Cabin font. +http://www.dafont.com/fr/cabin.font \ No newline at end of file diff --git a/docs/2015/images/dlogo.png b/docs/2015/images/dlogo.png new file mode 100644 index 00000000..8b3539e1 Binary files /dev/null and b/docs/2015/images/dlogo.png differ diff --git a/docs/2015/images/schott.png b/docs/2015/images/schott.png new file mode 100644 index 00000000..89d49704 Binary files /dev/null and b/docs/2015/images/schott.png differ diff --git a/docs/2015/images/smith.jpg b/docs/2015/images/smith.jpg new file mode 100644 index 00000000..1e86cd4e Binary files /dev/null and b/docs/2015/images/smith.jpg differ diff --git a/docs/2015/images/wakeling.jpg b/docs/2015/images/wakeling.jpg new file mode 100644 index 00000000..41f93198 Binary files /dev/null and b/docs/2015/images/wakeling.jpg differ diff --git a/docs/2015/includes/facebook.js b/docs/2015/includes/facebook.js new file mode 100644 index 00000000..d05498a0 --- /dev/null +++ b/docs/2015/includes/facebook.js @@ -0,0 +1,7 @@ +(function(d, s, id) { + var js, fjs = d.getElementsByTagName(s)[0]; + if (d.getElementById(id)) return; + js = d.createElement(s); js.id = id; + js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; + fjs.parentNode.insertBefore(js, fjs); +}(document, 'script', 'facebook-jssdk')); \ No newline at end of file diff --git a/docs/2015/includes/google.js b/docs/2015/includes/google.js new file mode 100644 index 00000000..b6e4b39b --- /dev/null +++ b/docs/2015/includes/google.js @@ -0,0 +1,5 @@ +(function() { + var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; + po.src = 'https://apis.google.com/js/plusone.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); +})(); \ No newline at end of file diff --git a/docs/2015/includes/ie8.css b/docs/2015/includes/ie8.css new file mode 100644 index 00000000..06a6c47e --- /dev/null +++ b/docs/2015/includes/ie8.css @@ -0,0 +1,16 @@ +#menu ul, #menu li { + margin: 0px; + padding: 0px; + letter-spacing: 2px; + font-family: "Andale Mono", "Lucida Sans Typewriter", "Lucida Console", monospace; + font-size: 14px; + line-height: 16px; +} + +#menu a { + padding: 7px 13px; +} + +.logo { + height: 100px; +} diff --git a/docs/2015/includes/iefix.css b/docs/2015/includes/iefix.css new file mode 100644 index 00000000..093de76b --- /dev/null +++ b/docs/2015/includes/iefix.css @@ -0,0 +1,16 @@ +#menu ul, #menu li { + margin: 0px; + padding: 0px; + letter-spacing: 2px; + font-family: "Andale Mono", "Lucida Sans Typewriter", "Lucida Console", monospace; + font-size: 14px; + line-height: 16px; +} + +#menu a { + padding: 7px 13px; +} + +.clock { + height: 84px; +} diff --git a/docs/2015/includes/jquery.min.js b/docs/2015/includes/jquery.min.js new file mode 100644 index 00000000..006e9531 --- /dev/null +++ b/docs/2015/includes/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery.min.map +*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="
t
",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; +return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="
",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) +}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b(" +

+

Nearby hotels

+

+

Nearby hotels (prices +and availability and may vary):

+

+ +

+

Transportation

+

+

Utah Valley University is a 45-minutes ride from Salt Lake City International Airport (SLC). The Provo Municipal Airport (PVU) is even closer (15 minutes).

+ + + + +
Keynote Speakers
+
+ + + +
Andrei Alexandrescu Chuck Allison Walter Bright
Alexandrescu Allison Bright
+ +
 
+
Sponsors
+ + UVU
+
+
 
+
+Tweets about "#dconf #dlang" + +
+ + + +
+
© 2015 http://digitalmars.com | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/contact.html b/docs/2016/contact.html new file mode 100644 index 00000000..e63a32bc --- /dev/null +++ b/docs/2016/contact.html @@ -0,0 +1,71 @@ + + + + + + + + + + + + +The D Programming Language Conference 2016 + + +
+ +
+ + + +


+

+

Contact Us

+

+

dconf2016@digitalmars.com

+

+

On Twitter: @D_programming, #dconf

+
+ + +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/images/background.png b/docs/2016/images/background.png new file mode 100644 index 00000000..c8e33b52 Binary files /dev/null and b/docs/2016/images/background.png differ diff --git a/docs/2016/images/cehreli.jpg b/docs/2016/images/cehreli.jpg new file mode 100644 index 00000000..b6e82d87 Binary files /dev/null and b/docs/2016/images/cehreli.jpg differ diff --git a/docs/2016/images/dconf_logo_2016.svg b/docs/2016/images/dconf_logo_2016.svg new file mode 100644 index 00000000..e47acf08 --- /dev/null +++ b/docs/2016/images/dconf_logo_2016.svg @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/2016/images/hunsur.jpg b/docs/2016/images/hunsur.jpg new file mode 100644 index 00000000..35369fc6 Binary files /dev/null and b/docs/2016/images/hunsur.jpg differ diff --git a/docs/2016/images/schveighoffer.jpg b/docs/2016/images/schveighoffer.jpg new file mode 100644 index 00000000..25c52473 Binary files /dev/null and b/docs/2016/images/schveighoffer.jpg differ diff --git a/docs/2016/images/smith.png b/docs/2016/images/smith.png new file mode 100644 index 00000000..7ed54a17 Binary files /dev/null and b/docs/2016/images/smith.png differ diff --git a/docs/2016/images/starkes.svg b/docs/2016/images/starkes.svg new file mode 100644 index 00000000..6313c662 --- /dev/null +++ b/docs/2016/images/starkes.svg @@ -0,0 +1,296 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/2016/images/watson.jpg b/docs/2016/images/watson.jpg new file mode 100644 index 00000000..d742c300 Binary files /dev/null and b/docs/2016/images/watson.jpg differ diff --git a/docs/2016/includes/style.css b/docs/2016/includes/style.css new file mode 100644 index 00000000..3710d5d9 --- /dev/null +++ b/docs/2016/includes/style.css @@ -0,0 +1,568 @@ +html { + overflow-y: scroll; +} + +body { + background-color: #e8e8e8; + background-image: url('../images/background.png'); + background-repeat: repeat-x; + margin: 0px; + padding: 0px; + text-align: justify; +} + +hr { + clear: both; +} + +#container { + width: 1010px; + margin: 0px auto; + padding: 10px; + padding-top: 120px; + border: none; + overflow: hidden; +} + +.logo { + position: absolute; + top: 2px; + left: 0; + width: 100%; + background: #52255F; + border-bottom: 1px solid white; +} +.logo a +{ + display: block; + width: 950px; + padding-left: 60px; + margin: auto; +} + +.menu { + float: right; + margin: 0px 0px 20px; + height: 25px; +} + +nav ul, nav li { + margin: 0px; + padding: 0px; +} + +#menu { + list-style: none; + margin-bottom: 10px; + float: left; + width: 100%; +} + +#menu li { + float: left; + position: relative; +} + +#menu a { + display: block; + padding: 7px 15px; + color: #dadada; + background: #484848; + text-decoration: none; + font-family: "Andale Mono", "Lucida Sans Typewriter", "Lucida Console", monospace; + font-size: 14px; + line-height: 16px; + letter-spacing: 1px; + opacity: 0.9; + border-bottom: 2px solid #000000; +} + +#menu a:hover { + color: #dadada; + background: #292929; + text-decoration: none; + border-bottom: 2px solid #000000; +} + +#menu ul { + background: #484848; + background: rgba(255,255,255,0); + list-style: none; + position: absolute; + left: -9999px; +} + +#menu ul li { + float: none; +} + +#menu ul a { + white-space: nowrap; + opacity: 1.0; + border-bottom: 1px dotted #000000; + font-size: 12px; + letter-spacing: 0px; +} + +#menu li:hover ul { + left: 0; +} + +#menu li:hover ul a { + text-decoration: none; + border-bottom: 1px dotted #000000; + font-size: 12px; + letter-spacing: 1px; +} + +#menu li:hover ul li a:hover { + background: #292929; +} + +.clock { + margin: 15px 0px 0px; + overflow: hidden; + width: 260px; + height: 85px; + float: right; +} + +.twitter { + margin: 0px 0px 10px 0px; + overflow: hidden; +/* background-image: url('../images/twitter_bubble.png'); +*/ background-repeat: no-repeat; + height: 420px; +} + +.twitter .hash { + margin: 5px 0px 10px 90px; + overflow: hidden; +/* background-image: url('../images/twitter_hash.png'); +*/ background-repeat: no-repeat; + height: 0px; +} + +.twitter .inside { + margin: 25px 20px; + overflow: hidden; +} + +.twtr-hd, .twtr-ft { + display: none; +} + +div#twit .twtr-widget p { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px !important; + line-height: 16px; + color: #333333 !important; +} + +div#twit hr { + display: block; + height: 1px; + border: 0px; + border-top: 1px solid #ac9394; + margin: 5px; + padding: 0px; +} + +div#twit .twtr-widget a:link, div#twit .twtr-widget a:visited, div#twit .twtr-widget a:active { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px; + color: #af3d7b !important; + text-decoration: none !important; +} + +div#twit a.t_user:link, div#twit a.t_user:visited, div#twit a.t_user:active { + color: #87170a !important; + font-weight: bold; +} + +div#twit a.twtr-timestamp:link, div#twit a.twtr-timestamp:active, div#twit a.twtr-timestamp:visited { + color: #666666 !important; +} + +div#twit .twtr-widget a:hover { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px; + text-decoration: none; + color: #ff4fae !important; +} + +.row_after { + clear: both; +} + +.page { + width: 940px; +} + +.page_left { + width: 610px; +} + +.page_right { + width: 270px; + background-image: url('../images/dotted_v.png'); + background-repeat: repeat-y; +} + +.small_left { + width: 710px; +} + +.small_right { + width: 170px; + padding-left: 20px !important; +} + +.page_right, .page_left, .page { + padding: 10px 30px 30px; +} + +.equal, .page { + overflow: hidden; + float: left; +} + +/* .divider_v { */ +/* background-image: url('../images/dotted_v.png'); */ +/* background-repeat: repeat-y; */ +/* margin: 30px 0px 0px; */ +/* } */ + +.divider_h { + background-image: url('../images/dotted_h.png'); + background-repeat: repeat-x; + margin: 30px -10px 10px; +} + +.divider_h_sm { + margin-top: 20px; +} + +.page_bottom { + margin: 30px; + width: 960px; + overflow: hidden; + float: left; +} + +.sponsors, .sponsors_sm { + margin: 20px 0px 0px; +} + +.sp { + font-family: "Arial Black", sans-serif; + font-size: 14px; + font-weight: normal; + color: #737e7c; + text-transform: uppercase; + line-height: 20px; + padding-left: 11px; +} + +a.smaller { + font-size: 12px !important; + padding-left: 5px !important; +} + +a.smallest { + font-size: 9px !important; + padding-left: 5px !important; +} + +a.ks:link, a.ks:visited, a.ks:active { + font-size: 12px; + color: #666666; + line-height: 25px; +} + +a.linkb { + font-size: 16px !important; + font-weight: bold; +} + +a.ks:hover { + font-size: 12px; + color: #8b9896; +} + +.sponsors img { + margin: 5px 0px 15px 10px; /* 5 0 5 10*/ + /*vertical-align: middle;*/ +} + +.sponsors_sm img { + margin: 5px 0px 5px 5px; /* 5 0 5 10*/ +} + +.stroke { + border: 1px solid #d0c9c9; +} + +.inline > * { + display: inline-block; + margin: 5px 25px 5px 0px; +} + +.vmid > * { + vertical-align: middle; +} + +.vtop > * { + vertical-align: top; +} + +.dotted_left { + border-left: 1px dotted #d0c9c9; + padding-left: 20px; +} + +.dotted_left > div { + margin: 5px 10px !important; +} + +.rate { + font-size: 12px; +} + +h1 { + font-family: "Lucida Sans Unicode", sans-serif; + font-size: 26px; + font-weight: bold; + line-height: 30px; + color: #000000; + margin: 20px 0px 0px; + text-align: left; +} + +h2 { + font-family: Georgia, serif; + font-size: 16px; + font-weight: bold; + line-height: 20px; + color: #000000; + margin: 15px 0px 10px 0px; +} + +h3 { + font-family: Georgia, serif; + font-size: 14px; + font-weight: bold; + color: #000000; + line-height: 20px; + margin-top: 25px; +} + +h1 + p, h1 + div { + margin-top: 15px; +} + +p, td { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + line-height: 16px; + margin-bottom: 14px; +} + +ul { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + list-style-position: outside; + list-style-type: square; + margin: 5px 10px; + padding: 5px 10px; +} + +ol { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + line-height: 16px; + color: #000000; + list-style-position: inside; + margin: 0px 5px; + padding: 5px 0px; +} + +li { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + line-height: 16px; + color: #000000; + padding: 0px; + margin: 0px 10px; +} + +a:link, a:visited, a:active { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #234faa; + text-decoration: none; +} + +a:hover { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + text-decoration: none; + color: #135bf1; +} + +table, th, td { + border: none; +} + +td { + padding: 0px 20px 0px 0px; + vertical-align: top; +} + +.ks > .divider_v { + margin: 0px 25px; + padding: 10px 0px 0px; +} + +.button { + border: 1px solid #999999; + background: #dbdbdb; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dbdbdb', endColorstr='#cccccc'); + background: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#cccccc)); + background: -moz-linear-gradient(top, #dbdbdb, #cccccc); + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + padding: 4px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + margin-top: 15px; +} + +.button:active { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#dbdbdb'); + background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#dbdbdb)); + background: -moz-linear-gradient(top, #cccccc, #dbdbdb); +} + +#schedule, #schedule td, #schedule th { + border: 1px solid #000000; + border-collapse: collapse; + padding: 10px; + vertical-align: middle; +} + +#schedule { + width: 600px; + margin: 20px 0px; + background-color: #ffffff; +} + +#schedule th { + font-size: 20px; + line-height: 30px; + color: #ffffff; + font-weight: bold; + text-shadow: 0px 1px 0px #000000; +} + +#schedule td p { + padding: 0px 10px; +} + +#schedule td:first-child { + width: 130px; + color: ec8618; +} + +.green th { + background-color: #62b224; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62b224', endColorstr='#579b21'); + background: -webkit-gradient(linear, left top, left bottom, from(#62b224), to(#579b21)); + background: -moz-linear-gradient(top, #62b224, #579b21); +} + +.aqua th { + background-color: #49c4ef; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#49c4ef', endColorstr='#3eb1da'); + background: -webkit-gradient(linear, left top, left bottom, from(#49c4ef), to(#3eb1da)); + background: -moz-linear-gradient(top, #49c4ef, #3eb1da); +} + +.orange th { + background-color: #f39835; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f39835', endColorstr='#ec8618'); + background: -webkit-gradient(linear, left top, left bottom, from(#f39835), to(#ec8618)); + background: -moz-linear-gradient(top, #f39835, #ec8618); +} + +.purple th { + background-color: #855bda; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#855bda', endColorstr='#6132bf'); + background: -webkit-gradient(linear, left top, left bottom, from(#855bda), to(#6132bf)); + background: -moz-linear-gradient(top, #855bda, #6132bf); +} + +.green tr:hover { + background-color: #afe8bb; +} + +.orange tr:hover { + background-color: #f0c799; +} + +.aqua tr:hover { + background-color: #abdef0; +} + +.purple tr:hover { + background-color: #b7a7d6; +} + +.break tr:hover { + opacity: 0.5 !important; +} + +.showAbstract { + background-color: black; + color: white; + padding:5px; + margin-top: 1.3em; + position: absolute; + max-width: 200px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +.tooltip span { + margin-left: -999em; + position: absolute; +} + +/* +.tooltip:hover span { + position: absolute; + left: 700px; + top: 400px; + z-index: 99; + margin-left: 0; + width: 400px; + border-radius: 5px 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 5px 5px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 5px 5px rgba(0, 0, 0, 0.1); +} +*/ + +.abstract { + background: #FFFFAA ; + border: 1px solid #FFAD33; + padding: 0.8em 1em; +} + +/* red f2262b */ diff --git a/docs/2016/index.html b/docs/2016/index.html new file mode 100644 index 00000000..1d9f337d --- /dev/null +++ b/docs/2016/index.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + +The D Programming Language Conference 2016 + + +
+ +
+ + + +


+

+

DConf 2016 Has Successfully Concluded!

+

+

We were very very excited to hold DConf under Sociomantic's sponsorship in their neck of the woods—Berlin, one of Europe's premier technology hotbeds. Sociomantic has been a long-time supporter and user of D and we were grateful to benefit from their hosting.

+

+

The D programming language has continued to grow strongly through 2015 in both use and development participation. The fledgling D Language Foundation is poised to lead and organize the community better than ever before. DConf is the main face-to-face event for everyone and everything related to the D language and environment. The 2016 edition was held in premiere in Europe, on the heels of strong D adoption throughout the Old Continent. It was our largest event yet!

+

+

Conference Programme

+

+

Check the schedule or see our speakers page.

+

+

Important Dates

+

+ + + +
ConferenceWednesday May 4–Friday May 6, 2016
+
+ + +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/registration.html b/docs/2016/registration.html new file mode 100644 index 00000000..b45b57df --- /dev/null +++ b/docs/2016/registration.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + +The D Programming Language Conference 2016 + + +
+ +
+ + + +


+

+

Registration

+

+

We're gearing up for the largest DConf to date in one of Europe's hottest +tech hubs. Are you considering attending DConf 2016 in Berlin? Here's the +skinny.

+

+

The general registration fee is $400. That's top-notch content for +a fraction of what similar conferences are charging. Curious about the quality? +Just check the talk videos of the +2015, +2014, and +2013 editions. You're getting +fantastic value not only in terms of strong content, but also access to +industry luminaries, a welcoming and enthusiastic community, and a lasting +boost of inspiration for your work.

+

+

Registration proceeds left after covering conference-related expenses will +go to D Language Foundation. Your payment will be transparently used to foster +understanding and adoption of the D programming language.

+

+ +

+

All registrations are final. Registrations are transferrable.

+

+

Please let us know what you'd like your badge to say if it is +different from your name on your credit card.

+

+

Privacy Policy: Your name and email address will be shared with Sociomantic +since it is hosting the event. Otherwise, The D Language Foundation will not +share your data with anyone unless compelled by lawful orders.

+

+

Sponsorship

+

+

Cannot attend DConf 2016 but want to help out? Be an individual sponsor! +We'll list your name on an individual sponsors page.

+

+ +

+ +
+ + +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/schedule/index.html b/docs/2016/schedule/index.html new file mode 100644 index 00000000..aaa3438e --- /dev/null +++ b/docs/2016/schedule/index.html @@ -0,0 +1,262 @@ + + + + + + + + + + + + +The D Programming Language Conference 2016 + + +
+ +
+ + + +


+

+

Schedule

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 1: Wednesday May 4, 2016
9:00 AM - 10:00 AMBreakfast and Registration
10:00 AM
+
+ Keynote
+ Andrei Alexandrescu +
11:00 AM
+
+ Multitasking with D
+ Ali Çehreli +
12:00 PM
+
+ What Parnas72 Means for D
+ Luís Marques +
1:00 PM - 2:30 PMLunch & Mingling
2:30 PM
+
+ Quantum Break: AAA Gaming With Some D Code
+ Ethan Watson +
3:30 PM
+
+ D Everywhere!
+ Kai Nacke +
4:30 PM
+
+ Mutability Wildcards in D
+ Steve Schveighoffer +
5:30 PM
+
+ Lightning Talks!
+ Various +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 2: Thursday May 5, 2016
9:00 AM - 10:00 AMBreakfast
10:00 AM
+
+ Spelunking D Compiler Internals
+ Walter Bright +
11:00 AM
+
+ Using Floating Point Without Losing Your Sanity
+ Don Clugston +
12:00 PM
+
+ Using D for Implementing a Large Scale Primary Storage System
+ Liran Zvibel +
1:00 PM - 2:30 PMLunch & Mingling
2:30 PM
+
+ D's Import and Export Business
+ Benjamin Thaut +
3:30 PM
+
+ Asynchronous single page applications without a line of HTML or Javascript, or why D is just awesome
+ Robert Schadek +
4:30 PM
+
+ Bit Packing like a Madman
+ Amaury Sechet +
5:30 PM
+
+ D Process
+ Martin Nowak, Vladimir Panteleev, Walter Bright, and Andrei Alexandrescu +
6:30 PM
+
+ Birds of a Feather session: Building and Packaging Systems
+ E-V-E-R-Y-O-N-E! +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 3: Friday May 6, 2016
9:00 AM - 10:00 AMBreakfast
10:00 AM
+
+ Keynote
+ Leandro Lucarella +
11:00 AM
+
+ D Secrets
+ Vladimir Panteleev +
12:00 PM
+
+ Object-Relational Mapper
+  Martin Nowak +
1:00 PM - 2:30 PMLunch & Mingling
2:30 PM
+
+ A D standard database interface and implementation
+ Erik Smith +
3:30 PM
+
+ CLWrap: Nuisance-free control of your GPU
+ John Colvin +
4:30 PM
+
+ Skiron: Experiments in CPU Design in D
+ Mithun Hunsur +
5:30 PM
+
+ "Sociomantic + D" group interview/panel
+ Sociomantic +
+ +
+ + +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/speakers/index.html b/docs/2016/speakers/index.html new file mode 100644 index 00000000..f1730b50 --- /dev/null +++ b/docs/2016/speakers/index.html @@ -0,0 +1,220 @@ + + + + + + + + + + + + +The D Programming Language Conference 2016 + + +
+ +
+ + + +


+

+

Walter Bright

+
+ + +
Walter Bright +Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.
+
+

Andrei Alexandrescu

+
+ + +
Andrei Alexandrescu +Andrei Alexandrescu coined the colloquial term "modern C++" (adapted +from his award-winning book Modern C++ Design), used today to describe +a collection of important C++ styles and idioms. He is also the +coauthor (with Herb Sutter) of C++ Coding Standards and the author of +The D Programming Language book. With Walter Bright, Andrei +co-designed many important features of D and authored a large part of +D's standard library. His research on Machine Learning and Natural +Language Processing completes a broad spectrum of expertise. Andrei +holds a Ph.D. in Computer Science from the University of Washington and +a B.Sc. in Electrical Engineering from University "Politehnica" +Bucharest. He works with the D Language Foundation.
+
+

Leandro Lucarella

+
+ + +
Leandro Lucarella +Leandro Lucarella has been following D since about 2004 and started +participating in D forums in late 2006. In 2008 he started working on +the CDGC as his Software Engineering thesis, which he finished by the +end of 2010. Since he got involved with D he has been an on-and-off +small contributor. With more than 15 years of experience in the +industry, in the last years he's been focusing on low-latency and +distributed systems in C/C++ and moved to Berlin in late 2011 to work +in D at Sociomantic.
+
+

+

Ali Çehreli

+
+ + +
Ali Çehreli +Ali Çehreli has been working with C, C++, and D in Silicon Valley since 1996. He is the author of the book "Programming in D", a board member of The D Language Foundation, and an organizer of DLang and ACCU meetup groups in Silicon Valley.
+
+

Luís Marques

+
+ + +
Luís Marques +

I am a generalist programmer, with a good grasp of computer architecture and distributed systems. I started using D around 2003, and became even more enamored with the language when ranges and range-based algorithms were introduced. I am currently pursuing my PhD, which aims to provide probabilistic timeliness guarantees in wireless networks operating in uncertain environments, such as wireless sensor networks. In my free time you might find me doing embedded systems development, creating my own CPU, or trying to come up with a generic algorithm to neatly solve a problem. Whenever possible I choose D for the task -- even for hardware design.

+
+

Ethan Watson

+
+ + +
Ethan Watson​Ethan Watson is a senior generalist programmer at Remedy Entertainment, a world­renowned game development studio with games such as Max Payne, Alan Wake, and Quantum Break to their name. He hails from the fictional land of Australia, where everything ­ including the sun ­ tries to kill you. Having survived his upbringing, he found himself needing to pay his bills and what better way is there to do so than working on cutting­edge real time technology?
+
+

Kai Nacke

+
+ + +
Kai Nacke +Kai Nacke is a professional IT architect. In his spare time he likes to +develop open source applications. He is the current maintainer of LDC, +the LLVM-based D compiler, and a committer of the LLVM project. His +contributions to LDC include ports to different CPU architectures and +operating systems. + +

Besides programming he is also the auther of "D Web Development" and a +speaker at the Free and Open Source Software Developers' European +Meeting (FOSDEM).

+
+

Steve Schveighoffer

+
+ + +
Steve Schveighoffer +I have been an active D coder and contributor to druntime, phobos, and tango, since 2007. I have worked on embedded systems, large distributed systems, and pretty much everything in between since graduating from WPI in 1998. I rewrote the D array runtime to prevent stomping of data from multiple references, and wrote a collection library (dcollections), whose red black tree implementation was copied into phobos. I’m also the author of the iopipe library - a buffer-based D pipeline library that streamlines parsing i/o from any source. Finally, I was the original proposer of the inout concept.
+
+

+

Don Clugston

+
+ + +
Don Clugston +Don is a Senior Software Developer at Sociomantic Labs, Berlin. He has contributed to the D language since 2005, mainly in the areas of mathematics and metaprogramming. Before joining Sociomantic as a full-time D programmer, he worked in the solar photovoltaic industry on numerical modelling, measurement, and industrial inkjet. His 'FastDelegate' library is well known in the C++ community. He has two sons, and a daughter who is a retired superhero.
+
+

Liran Zvibel

+
+ + +
Liran Zvibel +Liran Zvibel is the Co-founder and CTO of Weka.IO, a stealth-mode storage startup. Prior to that he was the Co-Founder and VP R&D of Fusic, a video processing mobile/web based startup. Prior to that Liran was at XIV Storage (acquired by IBM in 2007) doing several architectural and leadership roles. Prior to that Liran served 6 years at the IDF, technologically leading a project that was awarded the most prestigious Israeli Defense Award, reaching a rank of Captain. Liran received his B.Sc. in Mathematics and Computer Sciences from the Tel Aviv University at the age of 18.
+
+

Benjamin Thaut

+
+ + +
Benjamin Thaut +Benjamin Thaut is 27 years old and has a masters degree in Computer Science and Media from the Media University in Stuttgart Germany. He has been working for his former employer Havok, one of the biggest middle ware companies in the games industry, for four years now. Now he's employed at Microsoft in the Windows and devices group. In his spare time Benjamin contributes to various Open Source projects. He contributed to "Mechwarrior Living Legends", a total conversion for Crysis, for 3 years and ended up as Lead Programmer of the team. Currently he is contributing to the ezEngine, an open source game engine and to the D programming reference compiler and runtime. His first contact with the D programming Language was 5 years ago. Ever since he is using D for personal projects and tries to advertise the language to others.
+
+

Robert Schadek

+
+ + +
Robert Schadek +Robert Schadek received a Bachelor's degree in computer science in 2011 at the University of Oldenburg, Germany. In his bachelor thesis he developed a multi-threaded octree. In 2012 he earned a Master's degree in computer science at the University of Oldenburg. His master thesis was titled "DMCD A Distributed Multithreading Caching D Compiler" and introduced multi-threading among other optimizations to the compiler control flow. Since 2012, he is a PhD candidate in the department of Prof. Dr.-Ing. Oliver Theel at the University of Oldenburg. His PhD research focuses on quorum systems in combination with graphs.
+
+

Amaury Sechet

+
+ + +
Amaury Sechet +Amaury Sechet is a software engineer at Facebook, LLVM comitter and the main developer of SDC.
+
+

Vladimir Panteleev

+
+ + +
Vladimir Panteleev +Vladimir Panteleev is a D hacker from Moldova. He has been using D since 2006 and contributing to its development since almost as long, and maintains several open-source projects written in D.
+
+

+

 Martin Nowak

+
+ + +
 Martin Nowak +After working 2 years as C++ application and DSP developer at Ableton and almost 2 years of full-time open source work, Martin is currently working as backend engineer at Mobisol. He is one of the main contributors to the D runtime and reference compiler, and also D's release manager. You can find his GitHub profile here.
+
+

Erik Smith

+
+ + +
Erik Smith +Erik Smith is a member of the clinical analytics team at Transcend Insights in San Diego. Erik is a specialist in building high performance full stack applications. He is a co-founder of AppFluent, a maker of database caching technology and analytic monitoring software. He has a diverse background in the development of C++ applications involving database interfaces and in the implementation of database engines.
+
+

John Colvin

+
+ + +
John Colvin +I am a part time PhD student (Physics, University of Warwick, UK) developing data analysis techniques and software for fusion power research and a programming consultant working in finance. I am the founder of the DlangScience project which develops, curates and maintains scientific libraries for D.
+
+

Mithun Hunsur

+
+ + +
Mithun Hunsur +During the day, Mithun Hunsur is an undergraduate student at Monash University – but during the nights and the weekends, he’s a prolific systems programmer and reverse engineer working on exploring the far reaches of the technologies he works with on a daily basis. Since 2013, he has been utilising D in a variety of projects, both internal and external, in order to maximise development speed while keeping performance characteristics from other systems languages. As part of his efforts to support the wider D ecosystem, he has submitted pull requests to druntime and Phobos, and has assisted in improving the performance of exception handling in LDC. He is currently situated in Melbourne, Australia.
+
+ +
+ + +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/alexandrescu.html b/docs/2016/talks/alexandrescu.html new file mode 100644 index 00000000..fc20bb36 --- /dev/null +++ b/docs/2016/talks/alexandrescu.html @@ -0,0 +1,90 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Andrei Alexandrescu + + + + +
+ + + +
+

Keynote

+
+

Andrei Alexandrescu
+ May 4 @ 10:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ Slides: SlideShare · PDF
+ Video
+

+
+
+

Abstract:  +Whew! Another year has gone by—a year of growth and progress, but also one of increased competition and growing pains. This discusses where we are and where we're going, with an emphasis of a hot topic: using D with different memory management strategies.

+ +

Speaker Bio: +Andrei Alexandrescu coined the colloquial term "modern C++" (adapted +from his award-winning book Modern C++ Design), used today to describe +a collection of important C++ styles and idioms. He is also the +coauthor (with Herb Sutter) of C++ Coding Standards and the author of +The D Programming Language book. With Walter Bright, Andrei +co-designed many important features of D and authored a large part of +D's standard library. His research on Machine Learning and Natural +Language Processing completes a broad spectrum of expertise. Andrei +holds a Ph.D. in Computer Science from the University of Washington and +a B.Sc. in Electrical Engineering from University "Politehnica" +Bucharest. He works with the D Language Foundation.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/alexandrescu.pdf b/docs/2016/talks/alexandrescu.pdf new file mode 100644 index 00000000..9b16a623 Binary files /dev/null and b/docs/2016/talks/alexandrescu.pdf differ diff --git a/docs/2016/talks/bof.html b/docs/2016/talks/bof.html new file mode 100644 index 00000000..eb601d3f --- /dev/null +++ b/docs/2016/talks/bof.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + +DConf 2016 speaker: E-V-E-R-Y-O-N-E! + + + + +
+ + + +
+

Birds of a Feather session: Building and Packaging Systems

+
+

E-V-E-R-Y-O-N-E!
+ @ 6:30 PM


Duration: As long as we stand
+ Talk type: Birds of a Feather
+ Level: All
+ + +

+
+
+

Abstract:  +Per popular demand, we're holding an unstructured after hours birds-of-a-feather meeting among all interested in build systems, packaging, deployment, and such. We don't know the exact location yet—conference room, hotel foyer, tea house, beer hall?—but hang loose and listen to announcements at the end of the second day.

+ +

Speaker Bio: +N/A

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/bright.html b/docs/2016/talks/bright.html new file mode 100644 index 00000000..df7a6ee0 --- /dev/null +++ b/docs/2016/talks/bright.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Walter Bright + + + + +
+ + + +
+

Spelunking D Compiler Internals

+
+

Walter Bright
+ @ 10:00 AM


Duration: 50 minutes
+ Talk type: Keynote
+ Level: All
+ Slides: PDF
+ Video
+

+
+
+

Abstract:  +The D compiler front end is used for the DMD, GDC and LDC compilers. Explore the organization of it, how it works is reflected in how the D language works, what makes it so fast, and the ongoing challenges for improving it. This aims to be invaluable for those who wish to get into contributing to the compiler, crafting other tools that need to examine D code, and illuminating for simply using the compiler more effectively.

+ +

Speaker Bio: +Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/bright.pdf b/docs/2016/talks/bright.pdf new file mode 100644 index 00000000..b47b0494 Binary files /dev/null and b/docs/2016/talks/bright.pdf differ diff --git a/docs/2016/talks/cehreli.html b/docs/2016/talks/cehreli.html new file mode 100644 index 00000000..4fdd5aff --- /dev/null +++ b/docs/2016/talks/cehreli.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Ali Çehreli + + + + +
+ + + +
+

Multitasking with D

+
+

Ali Çehreli
+ May 4 @ 11:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ Slides: PDF
+ Video
+

+
+
+

Abstract:  +D provides support for multitasking in the form of language features and standard library modules. D makes it easy for your programs to perform multiple tasks at the same time. This kind of support is especially important in order to take advantage of the multiple CPU cores that are available on modern computing systems. + +

Multitasking is one of the most difficult computing concepts to implement correctly. This talk will introduce different kinds of multitasking, as well as parallelism, a concept which is in fact unrelated to, but is often confused with, multitasking. The talk will conclude with fibers (aka co-routines), a powerful tool that is often overlooked despite its convenience.

+ +

Speaker Bio: +Ali Çehreli has been working with C, C++, and D in Silicon Valley since 1996. He is the author of the book "Programming in D", a board member of The D Language Foundation, and an organizer of DLang and ACCU meetup groups in Silicon Valley.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/cehreli.pdf b/docs/2016/talks/cehreli.pdf new file mode 100644 index 00000000..80b73593 Binary files /dev/null and b/docs/2016/talks/cehreli.pdf differ diff --git a/docs/2016/talks/clugston.html b/docs/2016/talks/clugston.html new file mode 100644 index 00000000..37e884fc --- /dev/null +++ b/docs/2016/talks/clugston.html @@ -0,0 +1,94 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Don Clugston + + + + +
+ + + +
+

Using Floating Point Without Losing Your Sanity

+
+

Don Clugston
+ May 5 @ 11:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ Slides: PDF
+ Video
+

+
+
+

Abstract:  +Every programmer uses floating point numbers occasionally. And almost +every programmer has encountered floating point weirdness -- a loop that +didn't terminate, a simple calculation that gave a result that made no +sense. We have frustrating debugging experiences, leading some of us to +develop a lifelong pathological fear of floating point numbers. + +

Most programmers use rules of thumb to reduce the risk of encountering +weirdness, such as "Never use ==" and "Use as much precision as you +can". Yet we are left with a lingering feeling that our code is probably +not correct. To make things worse, D introduces new features that aren't +addressed by these simplistic guidelines.

+ +

This talk will describe a mental model to help us avoid nasty surprises, +present real-world examples of how things can go wrong in D, and explain +how to fix them. The talk is aimed at programmers, not mathematicians.

+ +

Speaker Bio: +Don is a Senior Software Developer at Sociomantic Labs, Berlin. He has contributed to the D language since 2005, mainly in the areas of mathematics and metaprogramming. Before joining Sociomantic as a full-time D programmer, he worked in the solar photovoltaic industry on numerical modelling, measurement, and industrial inkjet. His 'FastDelegate' library is well known in the C++ community. He has two sons, and a daughter who is a retired superhero.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/clugston.pdf b/docs/2016/talks/clugston.pdf new file mode 100644 index 00000000..f2e4edb7 Binary files /dev/null and b/docs/2016/talks/clugston.pdf differ diff --git a/docs/2016/talks/colvin.html b/docs/2016/talks/colvin.html new file mode 100644 index 00000000..cb79c915 --- /dev/null +++ b/docs/2016/talks/colvin.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + +DConf 2016 speaker: John Colvin + + + + +
+ + + +
+

CLWrap: Nuisance-free control of your GPU

+
+

John Colvin
+ May 6 @ 3:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ Slides: SlideShare · PDF
+ Video
+

+
+
+

Abstract:  +For most programmers used to developing for a modern CPU, working with GPUs for general purpose computation can appear daunting and laborious. Even seasoned users will admit that the performance improvements are often not worth the extra effort. With the power of D’s type system and static introspection, the library CLWrap provides no-compromise tools for working with GPUs via OpenCL in D, while being much safer and easier to use than the traditional APIs. + +

In this talk I will give a bottom-up, by-example tour of CLWrap. The library builds abstractions without sacrificing the level of control necessary to make efficient use of powerful co-processors such as modern GPUs. As such it should be valuable across the full spectrum of heterogeneous computing users. By the end of the talk, everyone listening should be able to write and understand the handful of lines of D necessary to offload work to the GPU. Additionally, I will demonstrate how CLWrap can be used seamlessly with other tools in the DlangScience ecosystem.

+ +

Speaker Bio: +I am a part time PhD student (Physics, University of Warwick, UK) developing data analysis techniques and software for fusion power research and a programming consultant working in finance. I am the founder of the DlangScience project which develops, curates and maintains scientific libraries for D.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/colvin.pdf b/docs/2016/talks/colvin.pdf new file mode 100644 index 00000000..7bc86cc9 Binary files /dev/null and b/docs/2016/talks/colvin.pdf differ diff --git a/docs/2016/talks/hunsur.html b/docs/2016/talks/hunsur.html new file mode 100644 index 00000000..b78e30b2 --- /dev/null +++ b/docs/2016/talks/hunsur.html @@ -0,0 +1,97 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Mithun Hunsur + + + + +
+ + + +
+

Skiron: Experiments in CPU Design in D

+
+

Mithun Hunsur
+ May 6 @ 4:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate to Advanced
+ Slides: SlideShare · PDF
+ +

+
+
+

Abstract:  +When designing a CPU, many considerations need to be taken into account: from hardware constraints to instruction set flexibility, building an architecture worthy of use requires compromise. This talk details the effective use of D and its features, such as metaprogramming, to enable rapid development with equally rapid performance for Skiron: a CPU design and implementation focused on examining the impact of particular design decisions on flexibility and performance. + +

Skiron is a flexible 32-bit RISC and MIPS-inspired architecture designed for the sole purpose of evaluating potential compromises in CPU design with a minimal time investment in making changes. To this end, the tools involved in the ecosystem – the reference simulator, assembler, disassembler, and documentation – needed to be built around the principle of rapid iteration.

+ +

As a result, D was selected as the implementation language: its unique blend of features places it in an ideal place for Skiron, especially with regards to ensuring that changes in design will be reflected across the entire ecosystem. This is accomplished through extensive use of metaprogramming, D-exclusive features, the excellent standard library, and much more.

+ +Areas investigated in this talk will include, but not be limited to: + +

+ +

Speaker Bio: +During the day, Mithun Hunsur is an undergraduate student at Monash University – but during the nights and the weekends, he’s a prolific systems programmer and reverse engineer working on exploring the far reaches of the technologies he works with on a daily basis. Since 2013, he has been utilising D in a variety of projects, both internal and external, in order to maximise development speed while keeping performance characteristics from other systems languages. As part of his efforts to support the wider D ecosystem, he has submitted pull requests to druntime and Phobos, and has assisted in improving the performance of exception handling in LDC. He is currently situated in Melbourne, Australia.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/hunsur.pdf b/docs/2016/talks/hunsur.pdf new file mode 100644 index 00000000..ee22c1fe Binary files /dev/null and b/docs/2016/talks/hunsur.pdf differ diff --git a/docs/2016/talks/lucarella.extended.pdf b/docs/2016/talks/lucarella.extended.pdf new file mode 100644 index 00000000..1b76d855 Binary files /dev/null and b/docs/2016/talks/lucarella.extended.pdf differ diff --git a/docs/2016/talks/lucarella.html b/docs/2016/talks/lucarella.html new file mode 100644 index 00000000..0197adcb --- /dev/null +++ b/docs/2016/talks/lucarella.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Leandro Lucarella + + + + +
+ + + +
+

Keynote

+
+

Leandro Lucarella
+ May 6 @ 10:00 AM


Duration: 50 minutes
+ Talk type: Keynote
+ Level: All
+ Slides: SlideShare · PDF
+Extended slides: SlideShare · PDF

+ Video
+

+
+
+

Abstract:  +Being probably one of the earliest D adopters in the industry, Sociomantic had a lot of fun rides with the language and its community. This talk will go through this history, from where we started to where are we heading at. We started very early but we lagged behind very early too, being stuck with D1 for way too long made our participation in Dland very limited. But we hope this will change very soon. We are more excited than ever about getting closer to the community and being a more active player in the language ecosystem.

+ +

Speaker Bio: +Leandro Lucarella has been following D since about 2004 and started +participating in D forums in late 2006. In 2008 he started working on +the CDGC as his Software Engineering thesis, which he finished by the +end of 2010. Since he got involved with D he has been an on-and-off +small contributor. With more than 15 years of experience in the +industry, in the last years he's been focusing on low-latency and +distributed systems in C/C++ and moved to Berlin in late 2011 to work +in D at Sociomantic.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/lucarella.pdf b/docs/2016/talks/lucarella.pdf new file mode 100644 index 00000000..44da1c57 Binary files /dev/null and b/docs/2016/talks/lucarella.pdf differ diff --git a/docs/2016/talks/marques.html b/docs/2016/talks/marques.html new file mode 100644 index 00000000..e6afab19 --- /dev/null +++ b/docs/2016/talks/marques.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Luís Marques + + + + +
+ + + +
+

What Parnas72 Means for D

+
+

Luís Marques
+ May 4 @ 12:00 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ Slides: PDF
+ +

+
+
+

Abstract:  +David Parnas' 1972 seminal paper, "On the criteria to be used in decomposing systems into modules", set a milestone in our collective understanding of how complex programs should be divided into more manageable parts. Over forty years later, I have reimplemented in D the example programs presented in the paper and came away with insights that are not obvious from a more casual reading of that text. + +

In this talk I will 1) present the original insight of the paper, using more modern language; 2) relate it to current design best practices and 3) argue, with the help of my implementation, that D best fulfilled the paper's original vision, even surpassing it.

+ +

Speaker Bio: +

I am a generalist programmer, with a good grasp of computer architecture and distributed systems. I started using D around 2003, and became even more enamored with the language when ranges and range-based algorithms were introduced. I am currently pursuing my PhD, which aims to provide probabilistic timeliness guarantees in wireless networks operating in uncertain environments, such as wireless sensor networks. In my free time you might find me doing embedded systems development, creating my own CPU, or trying to come up with a generic algorithm to neatly solve a problem. Whenever possible I choose D for the task -- even for hardware design.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/marques.pdf b/docs/2016/talks/marques.pdf new file mode 100644 index 00000000..41f23fcc Binary files /dev/null and b/docs/2016/talks/marques.pdf differ diff --git a/docs/2016/talks/nacke.html b/docs/2016/talks/nacke.html new file mode 100644 index 00000000..8765ee8a --- /dev/null +++ b/docs/2016/talks/nacke.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Kai Nacke + + + + +
+ + + +
+

D Everywhere!

+
+

Kai Nacke
+ May 4 @ 3:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ Slides: PDF
+ Video
+

+
+
+

Abstract:  +Using LLVM as backend enables LDC to target many CPU architectures, +ranging from ARM and MIPS based embedded systems and smartphones over +server systems based on POWER and Sparc up to the "big iron" z System. D +everywhere seems possible! + +

Having code generation for a target, the real work is getting druntime +and Phobos support right. This talk highlights the areas which always +needs tweaking, which are difficult to get right and which surprises you +may encounter along the way.

+ +

As the frontend of the compiler is now written in D and thus requiring a +D compiler, this talk also discusses the strategies the LDC team employs +to bootstrap the compiler code itself to a new platform.

+ +

Given the many available LLVM targets this talk inspires the audience to +bring D to their favorite platform!

+ +

Speaker Bio: +Kai Nacke is a professional IT architect. In his spare time he likes to +develop open source applications. He is the current maintainer of LDC, +the LLVM-based D compiler, and a committer of the LLVM project. His +contributions to LDC include ports to different CPU architectures and +operating systems. + +

Besides programming he is also the auther of "D Web Development" and a +speaker at the Free and Open Source Software Developers' European +Meeting (FOSDEM).

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/nacke.pdf b/docs/2016/talks/nacke.pdf new file mode 100644 index 00000000..16744694 Binary files /dev/null and b/docs/2016/talks/nacke.pdf differ diff --git a/docs/2016/talks/nowak.html b/docs/2016/talks/nowak.html new file mode 100644 index 00000000..cb7ffa46 --- /dev/null +++ b/docs/2016/talks/nowak.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + +DConf 2016 speaker:  Martin Nowak + + + + +
+ + + +
+

Object-Relational Mapper

+
+

 Martin Nowak
+ May 6 @ 12:00 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ Slides: View online
+ Video
+

+
+
+

Abstract:  +This talk presents a high-level approach to working with relational and NoSQL databases, and provides idiomatic solutions to common tasks such as deriving schemas from annotated type definitions, migrating data, or efficiently processing queries. These solutions will be introduced as part of a library that wants to become the go-to library for anything from small web applications to demanding backends. + +

There already exist many libraries for certain aspects of database work and D even has some higher-level object mappers. But it still lacks a holistic approach that deals with every task in day-to-day database work in a way that leverages D's powerful features to improve efficiency and reduce boilerplate.

+ +

This library provides a common high-level interface to various existing database drivers, making it possible to work with any SQL and a wide range of NoSQL databases.

+ +

It will hopefully lay the groundwork for very productive web application development by using D to provide a unique efficiency, (type-)safety, and conciseness advantage over existing solutions in other programming languages.

+ +

Speaker Bio: +After working 2 years as C++ application and DSP developer at Ableton and almost 2 years of full-time open source work, Martin is currently working as backend engineer at Mobisol. He is one of the main contributors to the D runtime and reference compiler, and also D's release manager. You can find his GitHub profile here.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/panel1.html b/docs/2016/talks/panel1.html new file mode 100644 index 00000000..9a85decd --- /dev/null +++ b/docs/2016/talks/panel1.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Various + + + + +
+ + + +
+

Lightning Talks!

+
+

Various
+ @ 5:30 PM


Duration: As long as we stand
+ Talk type: Lightning Talks
+ Level: All
+ + Video
+

+
+
+

Abstract:  +We've had many, many good submissions of great quality for DConf 2016, so it's been very difficult to have to turn down some of them. Therefore, we're giving away the time slot traditionally reserved for Q&A with the D language leadership for a blizzard of quick talks. Please contact dconf2016@digitalmars.com if you want to give a short talk. Authors of declined submissions have priority. See you there!

+ +

Speaker Bio: +N/A

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/panel2.html b/docs/2016/talks/panel2.html new file mode 100644 index 00000000..747c68f3 --- /dev/null +++ b/docs/2016/talks/panel2.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Sociomantic + + + + +
+ + + +
+

"Sociomantic + D" group interview/panel

+
+

Sociomantic
+ @ 5:30 PM


Duration: 1h
+ Talk type: Interview
+ Level: All
+ + +

+
+
+

Abstract:  +This is a group interview with a few prominent folks at Sociomantic, the largest and most successful D outfit. Stay tuned for more information!

+ +

Speaker Bio: +N/A

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/panel3.html b/docs/2016/talks/panel3.html new file mode 100644 index 00000000..6a4f9cc7 --- /dev/null +++ b/docs/2016/talks/panel3.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Martin Nowak, Vladimir Panteleev, Walter Bright, and Andrei Alexandrescu + + + + +
+ + + +
+

D Process

+
+

Martin Nowak, Vladimir Panteleev, Walter Bright, and Andrei Alexandrescu
+ @ 5:30 PM


Duration: As long as we stand
+ Talk type: Panel
+ Level: All
+ + Video
+

+
+
+

Abstract:  +There has been increasing interest recently in contributing to D, and many discussions on what to do to make the first steps of potential collaborators easier. This panel puts in the hot seat the major players in the process and build arena, in an unprecedented panel. Bring your toughest questions!

+ +

Speaker Bio: +N/A

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/panteleev.html b/docs/2016/talks/panteleev.html new file mode 100644 index 00000000..e0613eaf --- /dev/null +++ b/docs/2016/talks/panteleev.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Vladimir Panteleev + + + + +
+ + + +
+

D Secrets

+
+

Vladimir Panteleev
+ May 6 @ 11:00 AM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ Slides: View online · Source code
+ Video
+

+
+
+

Abstract:  +It is no secret that D is a large and comprehensive language. This talk explores some lesser-known tricks and techniques for using the language effectively. + +

This talk will be a loosely-connected description of a number of tips collected by the author throughout his usage of D. These will mainly relate to metaprogramming, Druntime, and curious language syntax features.

+ +

Speaker Bio: +Vladimir Panteleev is a D hacker from Moldova. He has been using D since 2006 and contributing to its development since almost as long, and maintains several open-source projects written in D.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/schadek.html b/docs/2016/talks/schadek.html new file mode 100644 index 00000000..0c51b278 --- /dev/null +++ b/docs/2016/talks/schadek.html @@ -0,0 +1,83 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Robert Schadek + + + + +
+ + + +
+

Asynchronous single page applications without a line of HTML or Javascript, or why D is just awesome

+
+

Robert Schadek
+ May 5 @ 3:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ Slides: SlideShare · PDF
+ Video
+

+
+
+

Abstract:  +Building awesome UI’s fast with AngularJS, Bootstrap, vibe.d and +a lot of D. + +

AngularJS, together with Node.js, is an extremely powerful combination for building single page applications. Unfortunately, its development requires writing HTML and Javascript, which is tedious and error prone. By using vibe.d, HTML is no longer necessary, and the developers can use the full power of a static-typed language for the development of the backend. Substituting Javascript with Typescript in addition to a little bit of CTFE D magic then removes the need for redundant data type declarations, and makes everything statically typed. At the end of the talk, the attendee will have witnessed the creation of a statically typed, asynchronous single page application that required little extra typing than its dynamically typed equivalent. Additionally, the attendees will be motivated to explore the presented combination of frameworks as a viable desktop application UI framework.

+ +

Speaker Bio: +Robert Schadek received a Bachelor's degree in computer science in 2011 at the University of Oldenburg, Germany. In his bachelor thesis he developed a multi-threaded octree. In 2012 he earned a Master's degree in computer science at the University of Oldenburg. His master thesis was titled "DMCD A Distributed Multithreading Caching D Compiler" and introduced multi-threading among other optimizations to the compiler control flow. Since 2012, he is a PhD candidate in the department of Prof. Dr.-Ing. Oliver Theel at the University of Oldenburg. His PhD research focuses on quorum systems in combination with graphs.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/schadek.pdf b/docs/2016/talks/schadek.pdf new file mode 100644 index 00000000..f96ab57f Binary files /dev/null and b/docs/2016/talks/schadek.pdf differ diff --git a/docs/2016/talks/schveighoffer.html b/docs/2016/talks/schveighoffer.html new file mode 100644 index 00000000..8b804443 --- /dev/null +++ b/docs/2016/talks/schveighoffer.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Steve Schveighoffer + + + + +
+ + + +
+

Mutability Wildcards in D

+
+

Steve Schveighoffer
+ May 4 @ 4:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate to Advanced
+ Slides: PDF
+ Video
+

+
+
+

Abstract:  +D provides multiple mechanisms for adjusting how a piece of data can be modified. I will discuss mainly how the two “wildcard” modifiers (const and inout) work and how inout can be improved. + +

Both const and inout in D provide a mechanism to consolidate code into handling multiple type modifiers, while providing a guarantee to the caller that the code cannot modify its parameters. Each works in different ways, but especially inout is difficult to grasp. Through this presentation, I hope to shine some light on the underlying concept of inout, and show how it can be used in different situations, including situations where inout is not intuitively the choice you would think of. I also intend to show how inout can be further improved to remove some of the sticky situations that it creates.

+ +

Speaker Bio: +I have been an active D coder and contributor to druntime, phobos, and tango, since 2007. I have worked on embedded systems, large distributed systems, and pretty much everything in between since graduating from WPI in 1998. I rewrote the D array runtime to prevent stomping of data from multiple references, and wrote a collection library (dcollections), whose red black tree implementation was copied into phobos. I’m also the author of the iopipe library - a buffer-based D pipeline library that streamlines parsing i/o from any source. Finally, I was the original proposer of the inout concept.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/schveighoffer.pdf b/docs/2016/talks/schveighoffer.pdf new file mode 100644 index 00000000..ff27e110 Binary files /dev/null and b/docs/2016/talks/schveighoffer.pdf differ diff --git a/docs/2016/talks/sechet.html b/docs/2016/talks/sechet.html new file mode 100644 index 00000000..04ceb3a2 --- /dev/null +++ b/docs/2016/talks/sechet.html @@ -0,0 +1,88 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Amaury Sechet + + + + +
+ + + +
+

Bit Packing like a Madman

+
+

Amaury Sechet
+ May 5 @ 4:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Beginner to Intermediate
+ Slides: SlideShare · PPTX
+ Video
+

+
+
+

Abstract:  +This talk will go over various bit packing techniques, and will use actual examples from open source projects such as clang, LLVM, jemalloc, SDC explaining how they are used. This will go over some fundamental that are often glossed over if talked about at all, such as how to layout a bitfield. + +

ABI friendly value type (that end up being passed in registers) are going to be discussed. Tips will be given to transform a non friendly struct into a friendly one using bitpacking. std.bigint makes a good subject study.

+ +

Computation requirements for various packing technique will be discussed. Bit packing techniques will be categorized into fast ones, that can be used to reduce memory consumption and reduce cache misses, and slower ones, that are more suitable for compression but should be avoided on the working set.

+ +

Tagging pointers in a @safe or @system manner.

+ +

Finally, a technique allowing to create the equivalent of a class hierarchy without classes, inheritance, granted all subclasses are known/can be listed using bit packing techniques and D reflection capabilities. The technique is similar to the way HHVM implement PHP arrays, or LLVM implement its bytecode, but can be made better in D. The technique discriminate "classes" using a tag field and using as an index in constant tables to implement a virtual dispatch equivalent. Other class like features like polymorphism and downcasting can be implemented cheaply as well.

+ +

Speaker Bio: +Amaury Sechet is a software engineer at Facebook, LLVM comitter and the main developer of SDC.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/sechet.pptx b/docs/2016/talks/sechet.pptx new file mode 100644 index 00000000..20a4ce9c Binary files /dev/null and b/docs/2016/talks/sechet.pptx differ diff --git a/docs/2016/talks/smith.html b/docs/2016/talks/smith.html new file mode 100644 index 00000000..c065b059 --- /dev/null +++ b/docs/2016/talks/smith.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Erik Smith + + + + +
+ + + +
+

A D standard database interface and implementation

+
+

Erik Smith
+ May 6 @ 2:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Video
+

+
+
+

Abstract:  +Most modern language platforms, including D, provide some ability to interact with databases through community provided libraries specific to each database. Some languages, however, (notably Java, python, and perl), have had a big advantage in the application and utility domain by offering a standard common interface layer. D, with it's unique mix of speed, modeling power, and ease-of-scripting, could also achieve a similar level or success. A standard interface would provide multiple benefits: a simpler interface for client code to be built more quickly, a level of portability across databases, and a foundational layer on which higher level capabilities can be built. + +

A fundamental design aspect of the D standard database interface (std.database) is to provide an interface that meets many design goals. It must be both familiar and as easy to use as any comparable interface in any language. The implementations must be designed for high performance that many use cases will require. It must also be flexible enough to take advantage of specific driver capabilities when they are available. The interface must also be carefully designed with a sufficient number of implementations to be stable as more databases are supported over time. The interface must dovetail seamlessly with D language features. The interface must provide both synchronous and asynchronous I/O capabilities to address the growing need for applications with high numbers of connections. Finally, both SQL and NoSQL databases should be addressed.

+ +

An exploration of the interface, as well as the growing list supported databases, will include coverage of essential features: including I/O binding for scalars and arrays, range based row sets, detachable row sets, direct vs polymorphic interfaces, type conversion, compile time policy configuration, connection pooling, fluent style interface, and the use of higher level functions that simplify common use cases, including basic serialization and object relational mapping.

+ +

Speaker Bio: +Erik Smith is a member of the clinical analytics team at Transcend Insights in San Diego. Erik is a specialist in building high performance full stack applications. He is a co-founder of AppFluent, a maker of database caching technology and analytic monitoring software. He has a diverse background in the development of C++ applications involving database interfaces and in the implementation of database engines.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/smith.pdf b/docs/2016/talks/smith.pdf new file mode 100644 index 00000000..e558a6b3 Binary files /dev/null and b/docs/2016/talks/smith.pdf differ diff --git a/docs/2016/talks/thaut.html b/docs/2016/talks/thaut.html new file mode 100644 index 00000000..f8fd52c9 --- /dev/null +++ b/docs/2016/talks/thaut.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Benjamin Thaut + + + + +
+ + + +
+

D's Import and Export Business

+
+

Benjamin Thaut
+ May 5 @ 2:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Advanced
+ Slides: PDF
+ Video
+

+
+
+

Abstract:  +This talk gives an overview over implementing full DLL support on Windows within in the DMD reference compiler. A short description over the inner workings of Windows DLLs is given. Furthermore, the problems and possible solutions with implementing the 'export' protection level, as described in the D language specification, are explained. + +

The talk draws from the experience of implementing a fully working version of DLLs using DMD targeting the Microsoft x64 c-runtime and linker. There are a few issues that need to be solved before a pull request can be done. These points include testing, stripping of unused symbols, better support for templates across DLL boundaries and more. All these points will be discussed during the talk.

+ +

Speaker Bio: +Benjamin Thaut is 27 years old and has a masters degree in Computer Science and Media from the Media University in Stuttgart Germany. He has been working for his former employer Havok, one of the biggest middle ware companies in the games industry, for four years now. Now he's employed at Microsoft in the Windows and devices group. In his spare time Benjamin contributes to various Open Source projects. He contributed to "Mechwarrior Living Legends", a total conversion for Crysis, for 3 years and ended up as Lead Programmer of the team. Currently he is contributing to the ezEngine, an open source game engine and to the D programming reference compiler and runtime. His first contact with the D programming Language was 5 years ago. Ever since he is using D for personal projects and tries to advertise the language to others.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/thaut.pdf b/docs/2016/talks/thaut.pdf new file mode 100644 index 00000000..b26be357 Binary files /dev/null and b/docs/2016/talks/thaut.pdf differ diff --git a/docs/2016/talks/watson.html b/docs/2016/talks/watson.html new file mode 100644 index 00000000..d7ca1619 --- /dev/null +++ b/docs/2016/talks/watson.html @@ -0,0 +1,81 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Ethan Watson + + + + +
+ + + +
+

Quantum Break: AAA Gaming With Some D Code

+
+

Ethan Watson
+ May 4 @ 2:30 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ Slides: PPTX
+ Video
+

+
+
+

Abstract:  +​Can D be used to make games? Yes. Has it been used in a major game release? It has now. Remedy Entertainment have successfully shipped the first AAA game to use D code. And it’s in a fairly critical subsystem too. This talk will cover the usage of D in Quantum Break, problems encountered and solved, and where we want to take our usage of D in the future. + +

​This talk will cover Remedy’s use of D in Quantum Break, providing a combination of Tools and Techniques, ​Experience Reports, ​and briefly touching on Under the Hood ​and Language Proper​topics.

+ +

Speaker Bio: ​Ethan Watson is a senior generalist programmer at Remedy Entertainment, a world­renowned game development studio with games such as Max Payne, Alan Wake, and Quantum Break to their name. He hails from the fictional land of Australia, where everything ­ including the sun ­ tries to kill you. Having survived his upbringing, he found himself needing to pay his bills and what better way is there to do so than working on cutting­edge real time technology?

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/watson.pptx b/docs/2016/talks/watson.pptx new file mode 100644 index 00000000..c6652da2 Binary files /dev/null and b/docs/2016/talks/watson.pptx differ diff --git a/docs/2016/talks/zvibel.html b/docs/2016/talks/zvibel.html new file mode 100644 index 00000000..f80cfdd0 --- /dev/null +++ b/docs/2016/talks/zvibel.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + + +DConf 2016 speaker: Liran Zvibel + + + + +
+ + + +
+

Using D for Implementing a Large Scale Primary Storage System

+
+

Liran Zvibel
+ May 5 @ 12:00 PM


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ Slides: SlideShare · PDF
+ Video
+

+
+
+

Abstract:  +At Weka.IO we are leveraging D for building a software based, distributed, primary storage solution. We face strict resource constraints and the systems' performance has to beat competing appliance-based solutions written in C/C++ for latency and throughput. + +

This is the third year we’re using D, the codebase has grown to ~200k LOC, and the team to about 30 engineers - Any project of this scale starts to have issues regardless of the programming language. This talk will cover the challenges we face and lessons we’ve learned while using D. This last year we have learned to leverage the D community better, and spent quite an effort shaping our D toolchain to our needs, solving many problems that will matter to similae-scale or real-time projects when they choose to leverage D.

+ +

Speaker Bio: +Liran Zvibel is the Co-founder and CTO of Weka.IO, a stealth-mode storage startup. Prior to that he was the Co-Founder and VP R&D of Fusic, a video processing mobile/web based startup. Prior to that Liran was at XIV Storage (acquired by IBM in 2007) doing several architectural and leadership roles. Prior to that Liran served 6 years at the IDF, technologically leading a project that was awarded the most prestigious Israeli Defense Award, reaching a rank of Captain. Liran received his B.Sc. in Mathematics and Computer Sciences from the Tel Aviv University at the age of 18.

+ +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/talks/zvibel.pdf b/docs/2016/talks/zvibel.pdf new file mode 100644 index 00000000..dd726a39 Binary files /dev/null and b/docs/2016/talks/zvibel.pdf differ diff --git a/docs/2016/thankyou.html b/docs/2016/thankyou.html new file mode 100644 index 00000000..41c39e6a --- /dev/null +++ b/docs/2016/thankyou.html @@ -0,0 +1,71 @@ + + + + + + + + + + + + +The D Programming Language Conference 2016 + + +
+ +
+ + + +


+

+

Registration

+

+

Thanks! Your request was processed successfully.

+

+

Return to the DConf homepage.

+
+ + +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2016/venue.html b/docs/2016/venue.html new file mode 100644 index 00000000..0feee324 --- /dev/null +++ b/docs/2016/venue.html @@ -0,0 +1,83 @@ + + + + + + + + + + + + +The D Programming Language Conference 2016 + + +
+ +
+ + + +


+

+

Venue

+

+

Europe! We're very excited to be right in the middle of the action in Berlin with Sociomantic's generous hosting.

+

+

DConf 2016 will take place at Heimathafen in Neukölln.

+

+ +

+

Nearby hotels

+

+

Nearby hotels (prices and availability and may vary):

+

+ + +
+ + +
 
+
Sponsor
+ +
Sociomantic
+
+ +
Catering Partner
+ +
Starkes Catering
+
+
+
+ +
+
© 2016 The D Language Foundation | + Generated with Ddoc + +
+ + \ No newline at end of file diff --git a/docs/2017/contact.html b/docs/2017/contact.html new file mode 100644 index 00000000..1de9684b --- /dev/null +++ b/docs/2017/contact.html @@ -0,0 +1,70 @@ + + + + + + + + + + + + +The D Programming Language Conference 2017 + + +
+ + + + + +


+

+

Contact Us

+

+

foundation@dlang.org

+

+

On Twitter: @D_programming, #dconf

+

+

Learn more about the D Language foundation

. +
+ + +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/images/caciulescu.png b/docs/2017/images/caciulescu.png new file mode 100644 index 00000000..397a24a9 Binary files /dev/null and b/docs/2017/images/caciulescu.png differ diff --git a/docs/2017/images/cojocaru.jpg b/docs/2017/images/cojocaru.jpg new file mode 100644 index 00000000..deb1c0e8 Binary files /dev/null and b/docs/2017/images/cojocaru.jpg differ diff --git a/docs/2017/images/dconf_logo_2017.svg b/docs/2017/images/dconf_logo_2017.svg new file mode 100644 index 00000000..33060ff6 --- /dev/null +++ b/docs/2017/images/dconf_logo_2017.svg @@ -0,0 +1,213 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/docs/2017/images/default.jpg b/docs/2017/images/default.jpg new file mode 100644 index 00000000..75fb3432 Binary files /dev/null and b/docs/2017/images/default.jpg differ diff --git a/docs/2017/images/engelen.jpg b/docs/2017/images/engelen.jpg new file mode 100644 index 00000000..ee5a4317 Binary files /dev/null and b/docs/2017/images/engelen.jpg differ diff --git a/docs/2017/images/hackathon.png b/docs/2017/images/hackathon.png new file mode 100644 index 00000000..70eb8fde Binary files /dev/null and b/docs/2017/images/hackathon.png differ diff --git a/docs/2017/images/heimathafen.png b/docs/2017/images/heimathafen.png new file mode 100644 index 00000000..8ecb8e20 Binary files /dev/null and b/docs/2017/images/heimathafen.png differ diff --git a/docs/2017/images/nunn.jpg b/docs/2017/images/nunn.jpg new file mode 100644 index 00000000..b0ba8f5e Binary files /dev/null and b/docs/2017/images/nunn.jpg differ diff --git a/docs/2017/images/staniloiu.jpg b/docs/2017/images/staniloiu.jpg new file mode 100644 index 00000000..d0ecd361 Binary files /dev/null and b/docs/2017/images/staniloiu.jpg differ diff --git a/docs/2017/images/veelo.jpg b/docs/2017/images/veelo.jpg new file mode 100644 index 00000000..c291b930 Binary files /dev/null and b/docs/2017/images/veelo.jpg differ diff --git a/docs/2017/images/wilson.jpg b/docs/2017/images/wilson.jpg new file mode 100644 index 00000000..b59605f2 Binary files /dev/null and b/docs/2017/images/wilson.jpg differ diff --git a/docs/2017/includes/style.css b/docs/2017/includes/style.css new file mode 100644 index 00000000..e6c29798 --- /dev/null +++ b/docs/2017/includes/style.css @@ -0,0 +1,586 @@ +html { + overflow-y: scroll; +} + +body { + background-color: #e8e8e8; + background-image: url('../images/background.png'); + background-repeat: repeat-x; + margin: 0px; + padding: 0px; + text-align: justify; +} + +hr { + clear: both; +} + +#container { + width: 1010px; + margin: 0px auto; + padding: 10px; + padding-top: 0px; + border: none; + overflow: hidden; +} + +.logo { + top: 0px; + left: 0; + width: 100%; + background: #52255F; + border-top: 3px solid #b72a00; +} +.logo a +{ + display: block; + width: 950px; + padding-left: 60px; + margin: auto; +} + +.menu_container { + background: #484848; + opacity: 0.9; + border-bottom: 2px solid #000000; + width: 100%; + height: 28px; +} + +.menu { + height: 25px; + padding-left: 30px; + width: 1010px; + margin: 0 auto; +} + +nav ul, nav li { + margin: 0px; + padding: 0px; +} + +#menu { + list-style: none; + margin-bottom: 10px; + float: left; + width: 100%; +} + +#menu li { + float: left; + position: relative; +} + +#menu a { + display: block; + padding: 7px 15px; + color: #dadada; + text-decoration: none; + font-family: "Andale Mono", "Lucida Sans Typewriter", "Lucida Console", monospace; + font-size: 14px; + line-height: 16px; + letter-spacing: 1px; +} + +#menu a:hover { + color: #dadada; + background: #292929; + text-decoration: none; +} + +#menu ul { + background: #484848; + background: rgba(255,255,255,0); + list-style: none; + position: absolute; + left: -9999px; +} + +#menu ul li { + float: none; +} + +#menu ul a { + white-space: nowrap; + opacity: 1.0; + border-bottom: 1px dotted #000000; + font-size: 12px; + letter-spacing: 0px; +} + +#menu li:hover ul { + left: 0; +} + +#menu li:hover ul a { + text-decoration: none; + border-bottom: 1px dotted #000000; + font-size: 12px; + letter-spacing: 1px; +} + +#menu li:hover ul li a:hover { + background: #292929; +} + +.clock { + margin: 15px 0px 0px; + overflow: hidden; + width: 260px; + height: 85px; + float: right; +} + +.twitter { + margin: 0px 0px 10px 0px; + overflow: hidden; +/* background-image: url('../images/twitter_bubble.png'); +*/ background-repeat: no-repeat; + height: 420px; +} + +.twitter .hash { + margin: 5px 0px 10px 90px; + overflow: hidden; +/* background-image: url('../images/twitter_hash.png'); +*/ background-repeat: no-repeat; + height: 0px; +} + +.twitter .inside { + margin: 25px 20px; + overflow: hidden; +} + +.twtr-hd, .twtr-ft { + display: none; +} + +div#twit .twtr-widget p { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px !important; + line-height: 16px; + color: #333333 !important; +} + +div#twit hr { + display: block; + height: 1px; + border: 0px; + border-top: 1px solid #ac9394; + margin: 5px; + padding: 0px; +} + +div#twit .twtr-widget a:link, div#twit .twtr-widget a:visited, div#twit .twtr-widget a:active { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px; + color: #af3d7b !important; + text-decoration: none !important; +} + +div#twit a.t_user:link, div#twit a.t_user:visited, div#twit a.t_user:active { + color: #87170a !important; + font-weight: bold; +} + +div#twit a.twtr-timestamp:link, div#twit a.twtr-timestamp:active, div#twit a.twtr-timestamp:visited { + color: #666666 !important; +} + +div#twit .twtr-widget a:hover { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px; + text-decoration: none; + color: #ff4fae !important; +} + +.row_after { + clear: both; +} + +.page { + width: 940px; +} + +.page_left { + width: 610px; +} + +.page_right { + width: 270px; + background-image: url('../images/dotted_v.png'); + background-repeat: repeat-y; +} + +.small_left { + width: 710px; +} + +.small_right { + width: 170px; + padding-left: 20px !important; +} + +.page_right, .page_left, .page { + padding: 10px 30px 10px; +} + +.equal, .page { + overflow: hidden; + float: left; +} + +/* .divider_v { */ +/* background-image: url('../images/dotted_v.png'); */ +/* background-repeat: repeat-y; */ +/* margin: 30px 0px 0px; */ +/* } */ + +.divider_h { + background-image: url('../images/dotted_h.png'); + background-repeat: repeat-x; + margin: 30px -10px 10px; +} + +.divider_h_sm { + margin-top: 20px; +} + +.page_bottom { + margin: 30px; + width: 960px; + overflow: hidden; + float: left; +} + +.sponsors, .sponsors_sm { + margin: 20px 0px 0px; +} + +.sp { + font-family: "Arial Black", sans-serif; + font-size: 14px; + font-weight: normal; + color: #737e7c; + text-transform: uppercase; + line-height: 20px; + padding-left: 11px; +} + +a.smaller { + font-size: 12px !important; + padding-left: 5px !important; +} + +a.smallest { + font-size: 9px !important; + padding-left: 5px !important; +} + +a.ks:link, a.ks:visited, a.ks:active { + font-size: 12px; + color: #666666; + line-height: 25px; +} + +a.linkb { + font-size: 16px !important; + font-weight: bold; +} + +a.ks:hover { + font-size: 12px; + color: #8b9896; +} + +.sponsors img { + margin: 5px 0px 15px 10px; /* 5 0 5 10*/ + /*vertical-align: middle;*/ +} + +.sponsors_sm img { + margin: 5px 0px 5px 5px; /* 5 0 5 10*/ +} + +.stroke { + border: 1px solid #d0c9c9; +} + +.inline > * { + display: inline-block; + margin: 5px 25px 5px 0px; +} + +.vmid > * { + vertical-align: middle; +} + +.vtop > * { + vertical-align: top; +} + +.dotted_left { + border-left: 1px dotted #d0c9c9; + padding-left: 20px; +} + +.dotted_left > div { + margin: 5px 10px !important; +} + +.rate { + font-size: 12px; +} + +h1 { + font-family: "Lucida Sans Unicode", sans-serif; + font-size: 26px; + font-weight: bold; + line-height: 30px; + color: #000000; + margin: 20px 0px 0px; + text-align: left; +} + +h2 { + font-family: Georgia, serif; + font-size: 16px; + font-weight: bold; + line-height: 20px; + color: #000000; + margin: 15px 0px 10px 0px; +} + +h3 { + font-family: Georgia, serif; + font-size: 14px; + font-weight: bold; + color: #000000; + line-height: 20px; + margin-top: 25px; +} + +h1 + p, h1 + div { + margin-top: 15px; +} + +p, td { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + line-height: 16px; + margin-bottom: 14px; +} + +ul { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + list-style-position: outside; + list-style-type: square; + margin: 5px 10px; + padding: 5px 10px; +} + +ol { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + line-height: 16px; + color: #000000; + list-style-position: inside; + margin: 0px 5px; + padding: 5px 0px; +} + +li { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + line-height: 16px; + color: #000000; + padding: 0px; + margin: 0px 10px; +} + +a:link, a:visited, a:active { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #234faa; + text-decoration: none; +} + +a:hover { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + text-decoration: none; + color: #135bf1; +} + +table, th, td { + border: none; +} + +td { + padding: 0px 20px 0px 0px; + vertical-align: top; +} + +.ks > .divider_v { + margin: 0px 25px; + padding: 10px 0px 0px; +} + +.button { + border: 1px solid #999999; + background: #dbdbdb; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dbdbdb', endColorstr='#cccccc'); + background: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#cccccc)); + background: -moz-linear-gradient(top, #dbdbdb, #cccccc); + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + padding: 4px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + margin-top: 15px; +} + +.button:active { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#dbdbdb'); + background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#dbdbdb)); + background: -moz-linear-gradient(top, #cccccc, #dbdbdb); +} + +#schedule, #schedule td, #schedule th { + border: 1px solid #000000; + border-collapse: collapse; + padding: 10px; + vertical-align: middle; +} + +#schedule { + width: 600px; + margin: 20px 0px; + background-color: #ffffff; +} + +#schedule th { + font-size: 20px; + line-height: 30px; + color: #ffffff; + font-weight: bold; + text-shadow: 0px 1px 0px #000000; +} + +#schedule td p { + padding: 0px 10px; +} + +#schedule td:first-child { + width: 130px; + color: ec8618; +} + +.green th { + background-color: #62b224; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62b224', endColorstr='#579b21'); + background: -webkit-gradient(linear, left top, left bottom, from(#62b224), to(#579b21)); + background: -moz-linear-gradient(top, #62b224, #579b21); +} + +.aqua th { + background-color: #49c4ef; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#49c4ef', endColorstr='#3eb1da'); + background: -webkit-gradient(linear, left top, left bottom, from(#49c4ef), to(#3eb1da)); + background: -moz-linear-gradient(top, #49c4ef, #3eb1da); +} + +.orange th { + background-color: #f39835; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f39835', endColorstr='#ec8618'); + background: -webkit-gradient(linear, left top, left bottom, from(#f39835), to(#ec8618)); + background: -moz-linear-gradient(top, #f39835, #ec8618); +} + +.purple th { + background-color: #855bda; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#855bda', endColorstr='#6132bf'); + background: -webkit-gradient(linear, left top, left bottom, from(#855bda), to(#6132bf)); + background: -moz-linear-gradient(top, #855bda, #6132bf); +} + +.green tr:hover { + background-color: #afe8bb; +} + +.orange tr:hover { + background-color: #f0c799; +} + +.aqua tr:hover { + background-color: #abdef0; +} + +.purple tr:hover { + background-color: #b7a7d6; +} + +.break td { + color: #606060; + background-color: #e8e8e8; +} + +.break tr:hover { + opacity: 0.5 !important; +} + +.showAbstract { + background-color: black; + color: white; + padding:5px; + margin-top: 1.3em; + position: absolute; + max-width: 200px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +.tooltip span { + margin-left: -999em; + position: absolute; +} + +/* +.tooltip:hover span { + position: absolute; + left: 700px; + top: 400px; + z-index: 99; + margin-left: 0; + width: 400px; + border-radius: 5px 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 5px 5px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 5px 5px rgba(0, 0, 0, 0.1); +} +*/ + +.abstract { + background: #FFFFAA ; + border: 1px solid #FFAD33; + padding: 0.8em 1em; +} + +/* red f2262b */ + +.footer { + text-align: center; + font-size: small; +} +.footer a { + font-size: small; + font-family: inherit; +} diff --git a/docs/2017/index.html b/docs/2017/index.html new file mode 100644 index 00000000..67abb6ce --- /dev/null +++ b/docs/2017/index.html @@ -0,0 +1,117 @@ + + + + + + + + + + + + +The D Programming Language Conference 2017 + + +
+ + + + + +


+

+

DConf 2017
Bigger, Badder, and Berliner!

+

+

DConf 2017 Has Successfully Concluded!

+

+

Whether you were with us in Berlin or watching from home, we thank everyone for participating. You can review the conference through this YouTube playlist.

+

+

The D Language Foundation has cooperated again with Sociomantic to organize DConf 2017 in Berlin for the second time. Same location, same dates, but of course a whole new experience!

+

+

The D programming language has improved dramatically this year thanks to more focus brought up by the D Language Foundation, better participation from corporate users and worldwide volunteers, and the advent of world-class open-source libraries such as Sociomantic's Tsunami and Ilya Yaroshenko's GLAS. The D Language Foundation has accumulated a war chest and announced a scholarship that already enrolls four MSc students.

+

+

DConf is the main face-to-face event for everyone and everything related to the D language and environment. The 2017 edition has been held in Europe for the second time, following the previous year's smashing success.

+

+

Keynote Speakers

+

+
+ + + + +
Andrei Alexandrescu
Andrei Alexandrescu
+ + + + +
Walter Bright
Walter Bright
+ + + + +
Scott Meyers
Scott Meyers
+
+

+

DConf Hackathon on Sunday, May 7 (new for DConf 2017!)

+

+

The D conference has not ended after the three days of talks but continued on into Sunday for a hackathon during which people have collaboratively focused on long-lasting problems and pain points in the D ecosystem. Of course, any D hackers who wish to simply progress their own personal projects were welcome too! The hackathon has taken place at the same venue (Heimathafen).

+

+

The motivation for adding a D ecosystem hackathon (besides having fun) is that a lot of time is wasted due to communication latency because most people can only hack during the night or weekends. At last year’s DConf, the “birds of feather” groups were intended to reduce this communication problem, but sadly the scheduling didn’t quite provide enough time. Thus, the DConf 2017 hackathon isn't a hackathon in the traditional sense as most of the time and focus will hopefully be spent discussing, planning and developing future D projects.

+

+

Important Dates

+

+ + + + + + + + + + + + +
Early bird registration deadlineMonday February 27, 2017, 23:59:59.99 PST
Registration deadlineSunday April 23, 2017, 23:59:59.99 PST
ConferenceThursday May 4–Saturday May 6, 2017
HackathonSunday May 7, 2017
+ +
+ + +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/registration.html b/docs/2017/registration.html new file mode 100644 index 00000000..2f96fec0 --- /dev/null +++ b/docs/2017/registration.html @@ -0,0 +1,102 @@ + + + + + + + + + + + + +The D Programming Language Conference 2017 + + +
+ + + + + +


+

+

Registration

+

+

We're gearing up for the largest DConf to date in one of Europe's hottest +tech hubs. Are you considering attending DConf 2017 in Berlin? Here's the +skinny.

+

+

The general registration fee is $400. That's top-notch content for +a fraction of what similar conferences are charging. Curious about the quality? +Just check the talk videos of the +2016, +2015, +2014, and +2013 editions. You're getting +fantastic value not only in terms of strong content, but also access to +industry luminaries, a welcoming and enthusiastic community, and a lasting +boost of inspiration for your work.

+

+

Registration proceeds left after covering conference-related expenses will +go to D Language Foundation. Your payment will be transparently used to foster +understanding and adoption of the D programming language.

+

+ +

+

All registrations are final. Registrations are transferrable.

+

+

Please let us know what you'd like your badge to say if it is +different from your name on your credit card.

+

+

Privacy Policy: Your name and email address will be shared with Sociomantic +since it is hosting the event. Otherwise, The D Language Foundation will not +share your data with anyone unless compelled by lawful orders.

+

+

Sponsorship

+

+

Cannot attend DConf 2017 but want to help out? Be an individual sponsor! +We'll list your name on an individual sponsors page.

+ +

+ +
+ + +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/schedule/index.html b/docs/2017/schedule/index.html new file mode 100644 index 00000000..5a80a13d --- /dev/null +++ b/docs/2017/schedule/index.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + +The D Programming Language Conference 2017 + + +
+ + + + + +


+

+

Schedule

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 1: Thursday May 4, 2017
9:00Breakfast and Registration
10:00
+
+ Pointers Gone Wild: Memory Safety and D
+ Walter Bright +
11:00
+
+ D as a Better C
+ Simon Arneaud +
12:00
+
+ DHDL: The D Hardware Description Language
+ Luís Marques +
13:00Lunch & Mingling
14:30
+
+ Cryptography in D
+ Amaury Séchet +
15:30
+
+ A Look Into the New CTFE Engine
+ Stefan Koch +
16:30
+
+ DCompute: Native & Convenient Heterogeneous Computing for D
+ Nicholas Wilson +
17:30
+
+ Where Art Thou, LDC?
+ Kai Nacke +
18:00
+
+ What's GNU With You?
+ Iain Buclaw +
18:30End of Day 1
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 2: Friday May 5, 2017
9:00Breakfast
10:00
+
+ Things that Matter
+ Scott Meyers +
11:00
+
+ Practical Meta-Programming
+ Vladimir Panteleev +
12:00
+
+ Pry - Pragmatic Parser Combinators in D
+ Dmitry Olshansky +
13:00Lunch & Mingling
14:30
+
+ Abstraction Cost and Optimization (LDC)
+ Johan Engelen +
15:30
+
+ Binderoo - A Rapid Iteration Framework That Even Scripters Can Use
+ Ethan Watson +
16:30
+
+ D Language Compiler as a Library
+ Razvan Nitu +
17:00
+
+ Generic Lightweight DRuntime
+ Lucia Cojocaru +
17:30
+
+ Trends in Systems Programming Languages
+ Andrei Alexandrescu, Walter Bright, Scott Meyers +
18:30End of Day 2
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 3: Saturday May 6, 2017
9:00Breakfast
10:00
+
+ Design by Introspection
+ Andrei Alexandrescu +
11:00
+
+ Why D is the Perfect Fit for Building GTK Applications
+ Gerald Nunn +
12:00
+
+ Extending Pegged to Parse Another Programming Language
+ Bastiaan Veelo +
13:00Lunch & Mingling
14:30
+
+ IOPipe: a High Performance I/O Library
+ Steven Schveighoffer +
15:30
+
+ Amazon Alexa Skills written in D
+ Stephan Dilly +
16:30
+
+ Zero Overhead Interface Between the D Language and the C++ +Standard Library
+ Alexandru Razvan Caciulescu +
17:00
+
+ A New Collections Framework for the Standard Library
+ Eduard Staniloiu +
17:30
+
+ Lightning Talks
+ Multiple Speakers +
18:30End of Day 3
+

+ + + + + + + + + + + + + +
Day 4: Sunday May 7, 2017
9:00Breakfast
10:00
+
+ Hackathon Morning Session
+ Everybody +
13:00Lunch & Mingling
14:30
+
+ Hackathon Afternoon Session
+ Everybody +
18:30End of the Conference
+ +
+ + +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/speakers/index.html b/docs/2017/speakers/index.html new file mode 100644 index 00000000..ccc80d92 --- /dev/null +++ b/docs/2017/speakers/index.html @@ -0,0 +1,316 @@ + + + + + + + + + + + + +The D Programming Language Conference 2017 + + +
+ + + + + +


+

+

Walter Bright

+
+ + +
Walter Bright +

Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

+
+

Andrei Alexandrescu

+
+ + +
Andrei Alexandrescu +

Andrei Alexandrescu coined the colloquial term "modern C++" (adapted +from his award-winning book Modern C++ Design), used today to describe +a collection of important C++ styles and idioms. He is also the +coauthor (with Herb Sutter) of C++ Coding Standards and the author of +The D Programming Language book. With Walter Bright, Andrei +co-designed many important features of D and authored a large part of +D's standard library. His research on Machine Learning and Natural +Language Processing completes a broad spectrum of expertise. Andrei +holds a Ph.D. in Computer Science from the University of Washington and +a B.Sc. in Electrical Engineering from University "Politehnica" +Bucharest. He works with the D Language Foundation. +

+
+

Scott Meyers

+
+ + +
Scott Meyers +

Scott Meyers started programming in 1971, and he started teaching +programming in 1972. He’s best known for his Effective C++ books, but +he’s also worked on constraint expression for programming languages, +program representations in development environments, software +simulations of bacteriophage lambda, general principles for improving +software quality, and the effective presentation of technical +information. In 2009, he received the Dr. Dobb’s Excellence in +Programming Award, and in 2014, an online poll likened his hair style +to that of the cartoon character, He-Man.

+
+

Simon Arneaud

+
+ + +
Simon Arneaud +

Simon Arneaud is a consultant living in Sydney, +Australia. He's worked professionally on low-power microcontrollers, +globally distributed web services, and various things in between.

+
+

Iain Buclaw

+
+ + +
Iain Buclaw +

Iain is an Infrastructure Administrator at Sociomantic Labs. He has been +contributing to GNU projects since 2009, and is the prinicipal force behind +the development of the GNU D Compiler (GDC), D language maintainer for the +GNU Debugger (GDB), and listed maintainer of the GNU Compiler Collection (GCC). +He passes the time by cycling 200 kilometres on a weekly basis. +

+
+

Alexandru Razvan Caciulescu

+
+ + +
Alexandru Razvan Caciulescu +

Alex is a Linux and security enthusiast who spends most of his time +in Sublime and vim when he isn’t slaying ‘features’ in GDB. Currently +a Masters student at University Politehnica of Bucharest, Romania, +Faculty of Automatic Control and Computer Science, studying computer +and network security. He holds a B.Sc. in Computer Science & +Engineering. Previous experience includes low-level programming, +compilers, basic kernel and operating systems development. He first +started contributing to the Open Source community back in 2012 and has +been an active member ever since. Alex is currently working on the D +compiler and runtime environment, tackling the challenge of +interfacing D with C++.

+
+

Lucia Cojocaru

+
+ + +
Lucia Cojocaru +

Lucia Cojocaru is a Masters student at University Politehnica of Bucharest, Romania, Faculty of Automatic Control and Computer Science. Her Bachelor’s degree is on Computer Science Engineering. She is currently studying computer and network security focusing on low-level executable vulnerabilities and operating system security mechanisms. +Her previous experience includes operating system essentials, basic kernel development, x86 and embedded, microcontroller and FPGA programming, ELF linking and loading exploration and compiler design. She is most proficient with x86 assembly and C, C++, and Java programming languages. +Lucia is currently working on the D compiler and runtime environment. +

+
+

Stephan Dilly

+
+ + +
Stephan Dilly +

Stephan Dilly is the head of engineering at InnoGames. +With 10 years of professional software development +experience, he has worked as a consultant and engi- +neer for top gaming companies including Funatics and +Ubisoft Bluebyte. Before joining InnoGames, Stephan +developed games in the front-end and back-end domain +on titles like ”The Settlers”, ”Tom Clancy’s Endwar” +and ”Assassin’s Creed Identity”. Now, he focuses on +front-end technology at InnoGames and shapes the +strategy for mobile-only games using modern game +engines. Stephan aka ’Extrawurst’ is an active mem- +ber in the D community since 2007, he contributed to +books like ”The D Programming Language” by Andrei +Alexandrescu and ”Web Development in D” by Kai +Nacke. Over the last months he gathered interest in +Amazon’s Alexa Voice recognition system and IoT in +general and created an ecosystem that facilitates simple +development of high-performance Alexa Skills in D.

+
+

Johan Engelen

+
+ + +
Johan Engelen +

Johan Engelen is one of the core LDC developers. He is also a D compiler consultant for Weka.io (probably the largest industrial single-executable D codebase) and maintains and adds features to their fork of LDC. While working on LDC, he often studies the compiler output IR and assembly. To aid this, he helped setting up LDC at d.godbolt.org. Examples of his recent contributions to LDC related to optimization are @fastmath, link-time optimization (LTO) and profile-guided optimization (PGO).

+ +

Johan (PhD Electrical Engineering) is assistant professor in the Robotics and Mechatronics (RAM) group at the University of Twente, the Netherlands. In his spare time he has contributed large amounts of work to the open source projects LDC and Inkscape.

+
+

Stefan Koch

+
+ + +
Stefan Koch +
  • 25 Years old.
  • +
  • Programing since the age of 7.
  • +
  • Begun using D in 2013 while working on the SDC-Compiler.
  • +
  • Wrote a CTFE reader for Sqlite3-Databases in 2015.
  • +
  • Working on the new CTFE-Engine and other DMD +improvements since July 2016.
  • +
+
+

Luís Marques

+
+ + +
Luís Marques +

I am a generalist programmer, with a good grasp of computer architecture and distributed systems. I started using D early in its life, but I became especially interested in the language when ranges and range-based algorithms were introduced. These STL-inspired facilities made significant progress on a promise that object-oriented programming failed to deliver, and which the STL only delivered to a limited extent: the design and employment of reusable components.

+ +

By training I am a software engineer. By night I wear a cape and dabble in hardware design. A few years ago I bought an FPGA and taught myself hardware design. While FPGAs are super exciting, I found that VHDL and Verilog can sap all the joy out of hardware design. As part of my search for alternatives I found Chisel. While Chisel aimed to do for hardware what D tries to achieve with its design by introspection (create generic yet efficient building blocks), I found the usability of Chisel to suffer due to its life as Scala DSL.

+ +

I have stated before that "whenever possible I choose D for the task -- even for hardware design". This is my attempt to make good on that promise; to bring the Chisel model of hardware design to D, and all the modeling power it has to offer.

+
+

Kai Nacke

+
+ + +
Kai Nacke +

Kai Nacke is a professional IT architect. In his spare time he likes to +develop open source applications. He is the current maintainer of LDC, +the LLVM-based D compiler, and a committer of the LLVM project. His +contributions to LDC include ports to different CPU architectures and +operating systems.

+ +

Besides programming he is also the author of "D Web Development" and a +speaker at the Free and Open Source Software Developers' European +Meeting (FOSDEM).

+
+

Razvan Nitu

+
+ + +
Razvan Nitu
+
+

Gerald Nunn

+
+ + +
Gerald Nunn +

Gerald Nunn is a Senior Middleware Solutions Architect with Red Hat. While his day job has nothing to do with the desktop, GTK or GNOME, he maintains a passion for building GUI applications. His current hobby project is Tilix, a popular tiling terminal emulator for GNOME.

+
+

Dmitry Olshansky

+
+ + +
Dmitry Olshansky +

Dmitry Olshansky is a young all-around researcher and software engineer. He's been a long-time D language contributor with the most notable contribution being std.regex and std.uni modules of the standard library. Aside from everything D related his main interests are compilers, text processing, robotics, parallel and concurrent programming, scalable network systems and AI.

+
+

Vladimir Panteleev

+
+ + +
Vladimir Panteleev +

Vladimir Panteleev is a D hacker from Moldova. He has been using D since 2006 and contributing to its development since almost as long, and maintains several open-source projects written in D.

+
+

Steven Schveighoffer

+
+ + +
Steven Schveighoffer +

Steven Schveighoffer has been using D since 2007, is part of the core druntime and Phobos teams, and has written several D libraries. His contributions, aside from the iopipe library, include a container library (dcollections), rewriting the array runtime, and is the original proposer of the inout type modifier. He has been working on systems ranging from embedded controllers to high-end distributed systems since graduating from WPI. He currently works for National Resource Management in Massachusetts writing internal systems (some using D), and is the organizer for the Boston D language group.

+
+

Amaury Séchet

+
+ + +
Amaury Séchet +

Amaury SECHET is a LLVM committer and the main developer of SDC. After being a software developer at Facebook for four years, he recently started working in the cryptocurrency space.

+
+

Eduard Staniloiu

+
+ + +
Eduard Staniloiu +

Eduard is a MSc student and Teaching Assistant at University "Politehnica" +of Bucharest. + +He is a hard working student who enjoys to get his hands dirty. He likes +learning new technologies and strengthening his current knowledge. + +He is passionate about computer science because we get to think about and +tackle problems that we encounter on a daily basis and we are able to find +solutions that help other people. + +His previous experience includes distributed systems and parallel +programming, operating systems, basic kernel development, open-source +software and basic Android programming. He is a Linux fan, a command line +addict and a vim enthusiast. + +He hopes that through his work he will be able to help and improve the D +language, which he is becoming so fond of. +

+
+

Bastiaan Veelo

+
+ + +
Bastiaan Veelo +

Bastiaan Veelo came to know about D shortly after it was released some sixteen years ago, while trying to write a flex/bison parser for C++ to pretty-print his code in a literate programming report. He found out the hard way that C++ is a pain to parse, and as D advertised with being developed with fast and easy parsing in mind, it quickly got his attention. Since then, he has been following D’s evolution continuously, without the opportunity to use the language professionally. Recently, he has been investing time to change that and help create that opportunity, which has led him to work on parsers once again — this time in D.

+ +

Bastiaan is the lead developer of a specialised program for the computer aided geometric design of ship hulls called Fairway, for the company SARC in the Netherlands. He holds a B.Eng. in naval architecture from the Haarlem Polytechnic, an M.Sc. in marine technology and a Ph.D. in mechanical engineering from NTNU, the Norwegian University of Science and Technology.

+
+

Ethan Watson

+
+ + +
Ethan Watson +

Hailing from the fictional land of Australia, Ethan Watson is no stranger to DConf. As a +senior engine programmer at Remedy Enterainment, he was part of the team responsible for +shipping Quantum Break. As a speaker, he has presented at DConf, GDC Europe, and +Reboot Develop. As a person, some might say he likes squirrels just a bit too much but +they’re objectively wrong. We don’t have squirrels in Australia.

+
+

Nicholas Wilson

+
+ + +
Nicholas Wilson +

I am a student at Murdoch University, Western Australia, studying for my BEng (Hons)/BSc in Industrial Computer Systems & Instrumentation and Control / Molecular Biology & Biomed. I am currently doing my honours thesis on low cost Electroluminescence imaging of solar cells. I have been using D for 5 years for odd jobs and number bashing.

+
+ +
+ + +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/alexandrescu.html b/docs/2017/talks/alexandrescu.html new file mode 100644 index 00000000..01a1c323 --- /dev/null +++ b/docs/2017/talks/alexandrescu.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Andrei Alexandrescu + + + + +
+ +
+

Design by Introspection

+
+

Andrei Alexandrescu
+ May 6 @ 10:00


Duration: 50 minutes
+ Talk type: Keynote
+ Level: All
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

Over the years, a few programming paradigms have been successful enough to enter the casual vocabulary of software engineers: procedural, imperative, object-oriented, functional, generic, declarative. There's a B-list, too, that includes paradigms such as logic, constraint-oriented, and symbolic. +

+ +

The point is, there aren't very many of them altogether. Easy to imagine, then, the immensely humbling pressure one must feel when stumbling upon a way to think about writing code that is at the same time explosively productive and firmly removed from any of the paradigms considered canon. +

+ +

This talk shares early experience with Design by Introspection, a proposed programming paradigm that has enough demonstrable results to be worth sharing. The tenets of Design by Introspection are: +

+ + + +

These rules, and how to use them to build powerful software, are the topic of this talk. +

+ +

Speaker Bio: +

Andrei Alexandrescu coined the colloquial term "modern C++" (adapted +from his award-winning book Modern C++ Design), used today to describe +a collection of important C++ styles and idioms. He is also the +coauthor (with Herb Sutter) of C++ Coding Standards and the author of +The D Programming Language book. With Walter Bright, Andrei +co-designed many important features of D and authored a large part of +D's standard library. His research on Machine Learning and Natural +Language Processing completes a broad spectrum of expertise. Andrei +holds a Ph.D. in Computer Science from the University of Washington and +a B.Sc. in Electrical Engineering from University "Politehnica" +Bucharest. He works with the D Language Foundation. +

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/alexandrescu.pdf b/docs/2017/talks/alexandrescu.pdf new file mode 100644 index 00000000..c8d1b6a3 Binary files /dev/null and b/docs/2017/talks/alexandrescu.pdf differ diff --git a/docs/2017/talks/arneaud.html b/docs/2017/talks/arneaud.html new file mode 100644 index 00000000..252ed326 --- /dev/null +++ b/docs/2017/talks/arneaud.html @@ -0,0 +1,83 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Simon Arneaud + + + + +
+ +
+

D as a Better C

+
+

Simon Arneaud
+ May 4 @ 11:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Advanced
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

"-betterC"? "D runtime"? There's been a lot of talk about the +potential of D to replace C for systems programming. I'll explain what it +all means, in practical, concrete terms. I'll show what works today, what +might be possible in the future, and what needs to be done to get there. +Extended Description: This talk will contain some background theory, +discussion of different approaches for systems programming in D, and +highlights of some real projects.

+ +

Speaker Bio: +

Simon Arneaud is a consultant living in Sydney, +Australia. He's worked professionally on low-power microcontrollers, +globally distributed web services, and various things in between.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/arneaud.pdf b/docs/2017/talks/arneaud.pdf new file mode 100644 index 00000000..ff4237f0 Binary files /dev/null and b/docs/2017/talks/arneaud.pdf differ diff --git a/docs/2017/talks/bright.html b/docs/2017/talks/bright.html new file mode 100644 index 00000000..60b00649 --- /dev/null +++ b/docs/2017/talks/bright.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Walter Bright + + + + +
+ +
+

Pointers Gone Wild: Memory Safety and D

+
+

Walter Bright
+ May 4 @ 10:00


Duration: 50 minutes
+ Talk type: Keynote
+ Level: All
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

While memory safe code can be written in any language, it +has become increasingly obvious that languages need to be +able to mechanically check memory safety. Errors in memory +safety are regularly exploited to breach security, and +is all too commonplace in code that was thought to be secure. +Relying on best practices and code reviews simply isn't good enough +anymore. + +This presentation is about D's approach to mechanically checking +for memory safety in a language with pointers.

+ +

Speaker Bio: +

Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/bright.pdf b/docs/2017/talks/bright.pdf new file mode 100644 index 00000000..436f0ea4 Binary files /dev/null and b/docs/2017/talks/bright.pdf differ diff --git a/docs/2017/talks/buclaw.html b/docs/2017/talks/buclaw.html new file mode 100644 index 00000000..d1a13bfe --- /dev/null +++ b/docs/2017/talks/buclaw.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Iain Buclaw + + + + +
+ +
+

What's GNU With You?

+
+

Iain Buclaw
+ May 4 @ 18:00


Duration: 25 minutes
+ Talk type: Presentation
+ Level: All
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

Back in 2013, I gave a number of talks in various conferences and meetings +about GCC, GDB, and the D language support that I had been working on at the +time. Four years have passed, so what has happened since then? +I can explain... +

+ +

Speaker Bio: +

Iain is an Infrastructure Administrator at Sociomantic Labs. He has been +contributing to GNU projects since 2009, and is the prinicipal force behind +the development of the GNU D Compiler (GDC), D language maintainer for the +GNU Debugger (GDB), and listed maintainer of the GNU Compiler Collection (GCC). +He passes the time by cycling 200 kilometres on a weekly basis. +

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/buclaw.pdf b/docs/2017/talks/buclaw.pdf new file mode 100644 index 00000000..235dce24 Binary files /dev/null and b/docs/2017/talks/buclaw.pdf differ diff --git a/docs/2017/talks/caciulescu.html b/docs/2017/talks/caciulescu.html new file mode 100644 index 00000000..f7e7f6bc --- /dev/null +++ b/docs/2017/talks/caciulescu.html @@ -0,0 +1,99 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Alexandru Razvan Caciulescu + + + + +
+ +
+

Zero Overhead Interface Between the D Language and the C++ +Standard Library

+
+

Alexandru Razvan Caciulescu
+ May 6 @ 16:30


Duration: 25 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: ODP
+ Video
+

+
+
+

Abstract:  +

As with all new programming languages, one of the main +obstacles the D language faces lies with its adoption by programmers +coming from other languages. Despite it being arguably advantageous in +several aspects over classic programming languages such as C or C++, +many programmers prefer to stick with what they already know. To +narrow this gap and bring together the best of both worlds, old +and new, the D language has already the capability of calling any +functions from the C standard library. The main contribution of this +project is to extend that and provide full compatibility with the C++ +standard library as well.

+ +

This talk will present the obstacles and challenges faced when +interfacing the D language with the C++ STL and provide a glimpse into +a future where D has the full support of the STL behind it.

+ +

Speaker Bio: +

Alex is a Linux and security enthusiast who spends most of his time +in Sublime and vim when he isn’t slaying ‘features’ in GDB. Currently +a Masters student at University Politehnica of Bucharest, Romania, +Faculty of Automatic Control and Computer Science, studying computer +and network security. He holds a B.Sc. in Computer Science & +Engineering. Previous experience includes low-level programming, +compilers, basic kernel and operating systems development. He first +started contributing to the Open Source community back in 2012 and has +been an active member ever since. Alex is currently working on the D +compiler and runtime environment, tackling the challenge of +interfacing D with C++.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/caciulescu.odp b/docs/2017/talks/caciulescu.odp new file mode 100644 index 00000000..d3a6648e Binary files /dev/null and b/docs/2017/talks/caciulescu.odp differ diff --git a/docs/2017/talks/cojocaru.html b/docs/2017/talks/cojocaru.html new file mode 100644 index 00000000..9c027a37 --- /dev/null +++ b/docs/2017/talks/cojocaru.html @@ -0,0 +1,86 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Lucia Cojocaru + + + + +
+ +
+

Generic Lightweight DRuntime

+
+

Lucia Cojocaru
+ May 5 @ 17:00


Duration: 25 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PPTX
+ Video
+

+
+
+

Abstract:  +

Array operations in D have their implementation split between bits of +compiler optimized code and an archaic inheritance hierarchy in DRuntime +which relies for the most part on the TypeInfo structure. +Rather than generating from the compiler TypeInfo information and a +calls to DRuntime functions, this talk explores "lowering" array +operations to template calls in object.d. We strive to achieve a +performance improvement by removing the TypeInfo layer of indirection +and we are making a first step towards a templatized, easy to maintain +DRuntime.

+ +

Speaker Bio: +

Lucia Cojocaru is a Masters student at University Politehnica of Bucharest, Romania, Faculty of Automatic Control and Computer Science. Her Bachelor’s degree is on Computer Science Engineering. She is currently studying computer and network security focusing on low-level executable vulnerabilities and operating system security mechanisms. +Her previous experience includes operating system essentials, basic kernel development, x86 and embedded, microcontroller and FPGA programming, ELF linking and loading exploration and compiler design. She is most proficient with x86 assembly and C, C++, and Java programming languages. +Lucia is currently working on the D compiler and runtime environment. +

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/cojocaru.pptx b/docs/2017/talks/cojocaru.pptx new file mode 100644 index 00000000..c31205b0 Binary files /dev/null and b/docs/2017/talks/cojocaru.pptx differ diff --git a/docs/2017/talks/dilly.html b/docs/2017/talks/dilly.html new file mode 100644 index 00000000..4988e1ce --- /dev/null +++ b/docs/2017/talks/dilly.html @@ -0,0 +1,111 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Stephan Dilly + + + + +
+ +
+

Amazon Alexa Skills written in D

+
+

Stephan Dilly
+ May 6 @ 15:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Beginner and Intermediate
+ + + Video
+

+
+
+

Abstract:  +

When I first laid hands on an Amazon Echo Device +I expected it to be just another nerd toy. Turns out +”Alexa” quickly seduced me. It allows me to control +my digital life using my voice. All computing for this +happens in the cloud. Much like Apple landed a genius +coup with opening up the iPhone for third party apps +Amazon allows devs to write their own skills for Alexa. +It quickly turned out that D is a great fit for skill +development out of several reasons like performance +and productivity. Productivity is important because +inherently this system has longer iteration times due +to testing in the cloud. Every bug that can be found at +compile time saves money and optimizes TTM 1 . Per- +formance equals money in the cloud since each CPU +cycle has a cost. D proves to be strong in both areas +and positions itself as a language with large potential +in the IoT 2 domain. This talk will present experiences, +advantages of using D over the alternatives and also +offers an honest overview of the pain points that need +to be improved.

+ +

Speaker Bio: +

Stephan Dilly is the head of engineering at InnoGames. +With 10 years of professional software development +experience, he has worked as a consultant and engi- +neer for top gaming companies including Funatics and +Ubisoft Bluebyte. Before joining InnoGames, Stephan +developed games in the front-end and back-end domain +on titles like ”The Settlers”, ”Tom Clancy’s Endwar” +and ”Assassin’s Creed Identity”. Now, he focuses on +front-end technology at InnoGames and shapes the +strategy for mobile-only games using modern game +engines. Stephan aka ’Extrawurst’ is an active mem- +ber in the D community since 2007, he contributed to +books like ”The D Programming Language” by Andrei +Alexandrescu and ”Web Development in D” by Kai +Nacke. Over the last months he gathered interest in +Amazon’s Alexa Voice recognition system and IoT in +general and created an ecosystem that facilitates simple +development of high-performance Alexa Skills in D.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/engelen.html b/docs/2017/talks/engelen.html new file mode 100644 index 00000000..2645c0b6 --- /dev/null +++ b/docs/2017/talks/engelen.html @@ -0,0 +1,81 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Johan Engelen + + + + +
+ +
+

Abstraction Cost and Optimization (LDC)

+
+

Johan Engelen
+ May 5 @ 14:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate and Advanced
+ Code samples
+ Slides: PDF
+ Video
+

+
+
+

Abstract:  +

Discussions about the performance of code fragments pop up regularly on the dlang forums. Why is this much faster than that? Does `immutable` make my code faster? Is a range-based loop faster than a normal loop? Without understanding the LDC optimization process and capabilities, it's not so easy to do good performance measurements and comparisons; the discussions often lack good data.

+ +

Using Matt Godbolt's D compiler explorer, I will live demonstrate and explain the optimized LDC assembly output for basic D code patterns. Common pitfalls and how to avoid them will be discussed. A small selection of topics: virtual functions, Voldemort types, aggregate comparisons, when does immutable/const matter?, inline assembly, ranges or for-based iteration. The results are often surprising, so for extra fun, I'll poll the audience before showing the assembly output. After this talk, you'll be better prepared for the next forum.dlang.org performance thread.

+ +

Takeaway points: have a better understanding of the zero/non-zero runtime costs of certain D constructs, awareness of common pitfalls and useful tools for analyzing why a certain piece of code is/isn't performant.

+ +

Speaker Bio: +

Johan Engelen is one of the core LDC developers. He is also a D compiler consultant for Weka.io (probably the largest industrial single-executable D codebase) and maintains and adds features to their fork of LDC. While working on LDC, he often studies the compiler output IR and assembly. To aid this, he helped setting up LDC at d.godbolt.org. Examples of his recent contributions to LDC related to optimization are @fastmath, link-time optimization (LTO) and profile-guided optimization (PGO).

+ +

Johan (PhD Electrical Engineering) is assistant professor in the Robotics and Mechatronics (RAM) group at the University of Twente, the Netherlands. In his spare time he has contributed large amounts of work to the open source projects LDC and Inkscape.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/engelen.pdf b/docs/2017/talks/engelen.pdf new file mode 100644 index 00000000..dbacc345 Binary files /dev/null and b/docs/2017/talks/engelen.pdf differ diff --git a/docs/2017/talks/engelen_code.d b/docs/2017/talks/engelen_code.d new file mode 100644 index 00000000..608a3437 --- /dev/null +++ b/docs/2017/talks/engelen_code.d @@ -0,0 +1,475 @@ +//############################################################## +//############################################################## + +// Measuring performance + +int foo(int a, int b, int c) { + return a + b + c; +} + +void measureFunctionCall() +{ + int a = 5555, b = 123, c = 9090; + startTimer(); + foreach (i; 0 .. 1_000_000) + foo(a, b, c); + stopTimer(); + printTimer(); +} + +void startTimer(); +void stopTimer(); +void printTimer(); + + +//############################################################## +//############################################################## + +// Inline assembly + +extern(C): + +int incr(int i) { + return i + 1; +} + +int incrASM(int i) { + asm { + add i, 1; + } + return i; +} + +int incrASMnaked(int i) { + asm { + naked; + mov EAX, EDI; + add EAX, 1; + ret; + } +} + + + + + +/* +import ldc.llvmasm; +pragma(LDC_inline_ir) R __ir(string s, R, P...)(P); + +int incrASMldc(int i) { + return __asm!(int)( + "mov $1, $0 \n" ~ + "add $$1, $0", + "={eax}, r", i); +} + +int incrIR(int i) { + return __ir!("%temp = add i32 %0, 1 \n" ~ + "ret i32 %temp", + int, int)(i); +} +*/ + + +//############################################################## +//############################################################## + + +// Loops + +int foo(int i); // unknown function + +void f1() { + for (int a; a < 17; a++) { + foo(a); + } +} + +void f2() { + foreach (a; 0..17) { + foo(a); + } +} + +void f3() { + foreach (a; [0,1,2,3,4,5,6,7, + 8,9,10,11,12,13, + 14,15,16]) + { + foo(a); + } +} + +void f4() { + import std.range : iota; + foreach (a; iota(0, 17)) + { + foo(a); + } +} + +// n + +// | +// V + + + + +void f5() { + auto list = [0,1,2,3,4,5,6,7, + 8,9,10,11,12,13, + 14,15,16]; + foreach (a; list) + { + foo(a); + } +} + + + + +//############################################################## +//############################################################## + + +void foo() { + // GC allocation, not optimized out, YET! + const auto a = [1, 1]; + + // Initializer is immutable link-time + // constant, runtime code is optimized out. + immutable auto b = [1, 1]; +} + +//############################################################## +//############################################################## + +// Const ? + +int foo(/* const */ int *a, + ref int arr) +{ + auto b = *a; + arr = 1; + return *a + b; +} + + +//############################################################## +//############################################################## + +// For Ali: pass by pointer, pass by ref? + +extern(C): + +alias T = int; +T byPtr(int n, T *c) { + T sum; + for (int i=0; i < n; ++i) + if (i > 0) + sum += *c; + return sum; +} + +T byRef(int n, ref T c) { + T sum; + for (int i=0; i < n; ++i) + if (i > 0) + sum += c; + return sum; +} + +int f(int); + + + +//############################################################## +//############################################################## + +// Interface or class? + +interface I +//class I +{ + int foo(); +} + +class A : I { + override int foo() { return 1;} +} + +class B : A { + override int foo() { return 2;} +} + +A getB() { return new B; } + +int getBcallfoo() { + auto a = getB(); + return a.foo(); +} + +int callfoo(I a) { + return a.foo(); +} + +int indirect(A a) { + return callfoo(getB()); +} + + + + +import ldc.attributes; + + +//############################################################## +//############################################################## + + +// Devirtualization + +class A { + int foo() { return 1;} +} + +int callfoo() +{ + auto a = new A(); + /* cl nw */ + int total = 0; + for (int i = 0; i < 2 /**/; i++) + { + total += a.foo(); + } + return total; +} + +void clobber(const A a); + + +// Class methods are not allowed to change the virtual pointer. Right? Check the spec!!! Recent work on Clang shows the path: after a class method call, tell the optimizer that the vptr field in the object is unchanged. + + +//############################################################## +//############################################################## + +// Stat/Dyn array comparison + +extern(C): + +alias T = byte; +enum N = 40; +bool cmp(T[N] a, T[N] b) +{ + return a == b; +} + + +//############################################################## +//############################################################## + +// Delegates are slow + +extern(C): + +alias V = int; +struct KV { + align(1): + byte k; + V* v; +} + +void fooTrusted(ref KV kv, V* v) @trusted { + kv.v = v; +} + +void fooSafe(ref KV kv, V* v) @safe { + () @trusted { kv.v = v; }(); +} + + +//############################################################## +//############################################################## + + +// Delegates + +import ldc.attributes; +@weak +int add(int a, int b) { return a + b; } + +int fooloop(int a, int b) +{ + int sum; + for (int i=0; i < a; ++i) { + sum += add(i, b); + } + return sum; +} + +int fooloopLambda(int a, int b) +{ + int sum; + auto f = (int n) => add(n, b); + for (int i=0; i < a; ++i) { + sum += f(i); + } + return sum; +} + + + + +int bar(int a, int delegate(int) f) +{ + int sum; + for (int i=0; i < a; ++i) { + sum += f(i); + } + return sum; +} + +int callbar(int a, int b) +{ + auto f = delegate(int n) { + return add(n, b); + }; + return bar(a, f); +} + + + +final class Adder { + int b; + this(int b_) { + b = b_; + } + int opCall(int n) { + return add(n, b); + } +} + +int barClass(int a, Adder f) +{ + int sum; + for (int i=0; i < a; ++i) { + sum += f(i); + } + return sum; +} + +int callbarClass(int a, int b) +{ + auto f = new Adder(b); + return barClass(a, f); +} + + + + + + +//############################################################## +//############################################################## + + +import ldc.attributes; +@weak +void bar(int a, void delegate(int) f) +{ + for (int i=0; i < a; ++i) { + f(i); + } +} + +int callbar(int a, int b) +{ + int sum; + auto f = delegate(int n) { + sum += n; + }; + bar(a, f); + return sum; +} + + + + +//############################################################## +//############################################################## + + +// Example from "D as a Better C" presentation. + +import io = std.stdio; + +class A { + void output() { + io.writeln("hoi"); + } +} + +void main() { + //auto i = new int; + auto a = new A(); + a.output(); +} + + + + + + +//############################################################## +//############################################################## + +import std.algorithm; +import std.range; + +int total(int n) +{ + return iota(1,100) + .map!((int a) => 3*a) + .reduce!((int a, int b) => a+b); +} + +//############################################################## +//############################################################## + + + + +// double struct initialization: + + +struct S { + int[100] a; + float b; + + this(float f) { b = f; } +} + +void unknown(ref S); + +void foo() { + auto s = S(1.0); + unknown(s); +} + +void bar() { + S s = void; + s.b = 1.0; + unknown(s); +} + +void great() { + S s = void; + s.__ctor(1.0); + unknown(s); +} + + + diff --git a/docs/2017/talks/hackathon1.html b/docs/2017/talks/hackathon1.html new file mode 100644 index 00000000..f41f6f8a --- /dev/null +++ b/docs/2017/talks/hackathon1.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Everybody + + + + +
+ +
+

Hackathon Morning Session

+
+

Everybody
+ May 7 @ 10:00


Duration: 3 hours
+ Talk type: Hackathon
+ Level: All
+ + + +

+
+
+

Abstract:  + +

The D conference will not end after the three days of talks but continue on into Sunday for a hackathon during which people can collaboratively focus on long-lasting problems and pain points in the D ecosystem. Of course, any D hackers who wish to simply progress their own personal projects are welcome too! The hackathon will take place at the same venue (Heimathafen).

+ +

The motivation for adding a D ecosystem hackathon (besides having fun) is that a lot of time is wasted due to communication latency because most people can only hack during the night or weekends. At last year’s DConf, the “birds of feather” groups were intended to reduce this communication problem, but sadly the scheduling didn’t quite provide enough time. Thus, the DConf 2017 hackathon isn't a hackathon in the traditional sense as most of the time and focus will hopefully be spent discussing, planning and developing future D projects.

+ +

You can find a list of themes with a short abstract and ideas at this document. + More detailed information about the hackathon can be found on this document as well.

+ +
+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/hackathon2.html b/docs/2017/talks/hackathon2.html new file mode 100644 index 00000000..27c906c5 --- /dev/null +++ b/docs/2017/talks/hackathon2.html @@ -0,0 +1,80 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Everybody + + + + +
+ +
+

Hackathon Afternoon Session

+
+

Everybody
+ May 7 @ 14:30


Duration: 4 hours
+ Talk type: Hackathon
+ Level: All
+ + + +

+
+
+

Abstract:  + +

The D conference will not end after the three days of talks but continue on into Sunday for a hackathon during which people can collaboratively focus on long-lasting problems and pain points in the D ecosystem. Of course, any D hackers who wish to simply progress their own personal projects are welcome too! The hackathon will take place at the same venue (Heimathafen).

+ +

The motivation for adding a D ecosystem hackathon (besides having fun) is that a lot of time is wasted due to communication latency because most people can only hack during the night or weekends. At last year’s DConf, the “birds of feather” groups were intended to reduce this communication problem, but sadly the scheduling didn’t quite provide enough time. Thus, the DConf 2017 hackathon isn't a hackathon in the traditional sense as most of the time and focus will hopefully be spent discussing, planning and developing future D projects.

+ +

You can find a list of themes with a short abstract and ideas at this document. + More detailed information about the hackathon can be found on this document as well.

+ +
+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/koch.html b/docs/2017/talks/koch.html new file mode 100644 index 00000000..7d4b7f7a --- /dev/null +++ b/docs/2017/talks/koch.html @@ -0,0 +1,112 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Stefan Koch + + + + +
+ +
+

A Look Into the New CTFE Engine

+
+

Stefan Koch
+ May 4 @ 15:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: ODP
+ Video
+

+
+
+

Abstract:  +

Two parts: The first is me talking about my experience, +writing the engine. The second goes into deeper technical +detail explaining the trade-offs, and design decisions.

+ +

+ +

Speaker Bio: +

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/koch.odp b/docs/2017/talks/koch.odp new file mode 100644 index 00000000..165f2ff9 Binary files /dev/null and b/docs/2017/talks/koch.odp differ diff --git a/docs/2017/talks/lightning.html b/docs/2017/talks/lightning.html new file mode 100644 index 00000000..e2f69c83 --- /dev/null +++ b/docs/2017/talks/lightning.html @@ -0,0 +1,83 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Multiple Speakers + + + + +
+ +
+

Lightning Talks

+
+

Multiple Speakers
+ May 6 @ 17:30


Duration: 60 minutes
+ Talk type: Presentation
+ Level: All
+ + + +

+
+
+

Abstract:  +

+ +

Speaker Bio: +

Multiple Speakers

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/marques.html b/docs/2017/talks/marques.html new file mode 100644 index 00000000..2a64003b --- /dev/null +++ b/docs/2017/talks/marques.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Luís Marques + + + + +
+ +
+

DHDL: The D Hardware Description Language

+
+

Luís Marques
+ May 4 @ 12:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Beginner
+ + Slides: PDF
+ Presentation Video
Demo Video
+

+
+
+

Abstract:  +

With the slowdown of Moore's law, there has been an increased interest in augmenting the computing power of the CPUs found in data centers with more parallel and energy-efficient alternatives, such as GPUs, FPGAs and ASICs. While replacing general-purpose CPUs with specialized hardware accelerators can provide order-of-magnitude improvements in computing power and energy efficiency, designing custom hardware is still a daunting task, impaired by archaic tools and a culture that has failed to appreciably raise the level of abstraction.

+ +

This talk presents DHDL, a D language extension and library for constructing digital hardware. By leveraging the strong modeling power of D, DHDL facilitates the design of parameterized hardware blocks. This flexibility promotes reuse, thereby increasing the hardware designer's productivity; it also decreases the rigidity of the designs, allowing for an easier exploration of the design-space or the accommodation to new requirements.

+ +

The talk will go over several topics that will help the audience members start to design their own hardware accelerators or FPGA-based embedded systems:

+ + + +

These topics will be presented in the context of a complete system, including:

+ +
  1. IO: How to use common IO interfaces (e.g. UARTs), such that you can: +
    • Get the data in and out of your hardware accelerators
    • +
    • Communicate with the outside world in your embedded systems
    • +
  2. +
  3. Memory: How to use different types of memory, including: +
    • FPGA block memory
    • +
    • FPGA distributed memory
    • +
    • Synchronous DRAM
    • +
  4. +
  5. Computation: +
    • Brief overview of architecture and ISA design
    • +
    • Microarchitecture and achieving timing closure
    • +
  6. +

+ +

Speaker Bio: +

I am a generalist programmer, with a good grasp of computer architecture and distributed systems. I started using D early in its life, but I became especially interested in the language when ranges and range-based algorithms were introduced. These STL-inspired facilities made significant progress on a promise that object-oriented programming failed to deliver, and which the STL only delivered to a limited extent: the design and employment of reusable components.

+ +

By training I am a software engineer. By night I wear a cape and dabble in hardware design. A few years ago I bought an FPGA and taught myself hardware design. While FPGAs are super exciting, I found that VHDL and Verilog can sap all the joy out of hardware design. As part of my search for alternatives I found Chisel. While Chisel aimed to do for hardware what D tries to achieve with its design by introspection (create generic yet efficient building blocks), I found the usability of Chisel to suffer due to its life as Scala DSL.

+ +

I have stated before that "whenever possible I choose D for the task -- even for hardware design". This is my attempt to make good on that promise; to bring the Chisel model of hardware design to D, and all the modeling power it has to offer.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/marques.pdf b/docs/2017/talks/marques.pdf new file mode 100644 index 00000000..3202b8ac Binary files /dev/null and b/docs/2017/talks/marques.pdf differ diff --git a/docs/2017/talks/meyers.html b/docs/2017/talks/meyers.html new file mode 100644 index 00000000..7cea1f20 --- /dev/null +++ b/docs/2017/talks/meyers.html @@ -0,0 +1,90 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Scott Meyers + + + + +
+ +
+

Things that Matter

+
+

Scott Meyers
+ May 5 @ 10:00


Duration: 50 minutes
+ Talk type: Keynote
+ Level: All
+ + Slides: PPTX
+ Video
+

+
+
+

Abstract:  +

In the 45+ years since Scott Meyers wrote his first program, he’s played +many roles: programmer, user, educator, researcher, consultant. +Different roles beget different perspectives on software development, +and so many perspectives over so much time have led Scott to strong +views about the things that really matter. In this presentation, +he’ll share what he believes is especially important in software and +software development, and he’ll try to convince you to embrace the same +ideas he does.

+ +

Speaker Bio: +

Scott Meyers started programming in 1971, and he started teaching +programming in 1972. He’s best known for his Effective C++ books, but +he’s also worked on constraint expression for programming languages, +program representations in development environments, software +simulations of bacteriophage lambda, general principles for improving +software quality, and the effective presentation of technical +information. In 2009, he received the Dr. Dobb’s Excellence in +Programming Award, and in 2014, an online poll likened his hair style +to that of the cartoon character, He-Man.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/meyers.pptx b/docs/2017/talks/meyers.pptx new file mode 100644 index 00000000..15752e57 Binary files /dev/null and b/docs/2017/talks/meyers.pptx differ diff --git a/docs/2017/talks/nacke.html b/docs/2017/talks/nacke.html new file mode 100644 index 00000000..d7e98447 --- /dev/null +++ b/docs/2017/talks/nacke.html @@ -0,0 +1,89 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Kai Nacke + + + + +
+ +
+

Where Art Thou, LDC?

+
+

Kai Nacke
+ May 4 @ 17:30


Duration: 25 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

In the last year, LDC, the LLVM-based D compiler, got some exciting +additions like profile guided optimization and link time optimization. +In this talk I present what the LDC team has achieved since last DConf. +A lot of development around LDC is ongoing. I show on which topics +people are currently working and give a status update on two of my pet projects: +moving more compiler source from C++ to D and addition of the +ucent data type.

+ +

Speaker Bio: +

Kai Nacke is a professional IT architect. In his spare time he likes to +develop open source applications. He is the current maintainer of LDC, +the LLVM-based D compiler, and a committer of the LLVM project. His +contributions to LDC include ports to different CPU architectures and +operating systems.

+ +

Besides programming he is also the author of "D Web Development" and a +speaker at the Free and Open Source Software Developers' European +Meeting (FOSDEM).

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/nacke.pdf b/docs/2017/talks/nacke.pdf new file mode 100644 index 00000000..8f2ef8fa Binary files /dev/null and b/docs/2017/talks/nacke.pdf differ diff --git a/docs/2017/talks/nitu.html b/docs/2017/talks/nitu.html new file mode 100644 index 00000000..fbccc819 --- /dev/null +++ b/docs/2017/talks/nitu.html @@ -0,0 +1,87 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Razvan Nitu + + + + +
+ +
+

D Language Compiler as a Library

+
+

Razvan Nitu
+ May 5 @ 16:30


Duration: 25 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: ODP
+ Video
+

+
+
+

Abstract:  +

Since the D language has started gaining the attention of companies +and programming communities, a critical factor for the success of the +language is the existence of tools which minimize the effort of developing +programs. Such tools are: style checkers, code formatters, syntax highlighters, +auto-completion, automated refactoring etc. All these tools share the fact that +they need to access certain parts of the compiler in order to do their job. +Although the code of the compiler is open source and anyobody that wants to +build such a tool can simply extract the part of the compiler that he/she +needs, this solution is time consuming since the compiler is poorly documented +and the code complexity is rather high.

+ +

The alternative solution is to provide a D language compiler as a library. This +approach encourages tool developers by taking some work off their plate and imposes +a structure on the currently chaotic organization of the code base.

+ +

Speaker Bio:

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/nitu.odp b/docs/2017/talks/nitu.odp new file mode 100644 index 00000000..ff000da4 Binary files /dev/null and b/docs/2017/talks/nitu.odp differ diff --git a/docs/2017/talks/nunn.html b/docs/2017/talks/nunn.html new file mode 100644 index 00000000..0a3e5091 --- /dev/null +++ b/docs/2017/talks/nunn.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Gerald Nunn + + + + +
+ +
+

Why D is the Perfect Fit for Building GTK Applications

+
+

Gerald Nunn
+ May 6 @ 11:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Beginner to Intermediate
+ + Slides: PDF · PPTX
+ Video
+

+
+
+

Abstract:  +

D is an ideal language to use for building GTK applications. This talk will explore why it is a good fit in comparison to other languages based on the experience of the speaker writing Tilix, a popular terminal emulator for Gnome.

+ +

When writing GTK applications there is currently a gap between compiled languages, which are often low productivity and difficult to learn, and scripting languages which are easier to learn but lack performance, static typing and other features that developers often prefer.

+ +

Vala was intended by GNOME to fill this gap but it is not well maintained and it's future looks bleak. In my opinion D is a perfect replacement for Vala as it occupies a unique sweet spot for building GUI applications and, in particular, GTK Linux applications.

+ +

This talk will focus on the following topics:

+

+ +

Speaker Bio: +

Gerald Nunn is a Senior Middleware Solutions Architect with Red Hat. While his day job has nothing to do with the desktop, GTK or GNOME, he maintains a passion for building GUI applications. His current hobby project is Tilix, a popular tiling terminal emulator for GNOME.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/nunn.pdf b/docs/2017/talks/nunn.pdf new file mode 100644 index 00000000..f3e9592a Binary files /dev/null and b/docs/2017/talks/nunn.pdf differ diff --git a/docs/2017/talks/nunn.pptx b/docs/2017/talks/nunn.pptx new file mode 100644 index 00000000..67ed060b Binary files /dev/null and b/docs/2017/talks/nunn.pptx differ diff --git a/docs/2017/talks/olshansky.html b/docs/2017/talks/olshansky.html new file mode 100644 index 00000000..9230e072 --- /dev/null +++ b/docs/2017/talks/olshansky.html @@ -0,0 +1,83 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Dmitry Olshansky + + + + +
+ +
+

Pry - Pragmatic Parser Combinators in D

+
+

Dmitry Olshansky
+ May 5 @ 12:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

Showing off how easy it is to create high performance parser generator library in the D programming language. The focus is on key enabling language features such as powerful compile-time features, UFCS for fluent DSL-style interface, CTFE for enabling true DSL - grammars. The motto of the talk is the beauty and power in the small, most code snippets are going to be short 1:1 expositions of the original library. Of course, expect some benchmarks and comparisons.

+ +

Ever since std.regex work has landed in Phobos the author sought out to continue on to the next level - parser generators. The journey to the parsers was long postponed by real life and continuous work on std.regex. One of great displeasures with regex is that they are both under-powered (regular!) and needlessly complicated with all of backreferences, lookaround, greedy operators vs lazy operators and whatnot. Speaking of compile-time regex - it was a brilliant hack on top of existing (complex) infrastructure that while largely successful left a sour taste in the mouth. This brings us to the point where the burning desire for something simpler, more powerful and elegantly constructed comes to fruition.

+ +

The talk showcases the internals of Pry - a new pragmatic parser combinator library written in D. The pragmatism here implies high performance and pay as you go principle. If there is anything that std.regex taught me is that performance is everything, there should be no reason to go and write parser by hand. But performance need not to be complex or ugly, in fact it's one point of the talk that simple and elegant could be fast.

+ +

The library is organized in two layers - parser combinator (lower) layer and PEG grammar (higher) layer, each is designed to be usable by the end user. Each layer relies on unique abilities of D - parser combinators heavily rely on compile-time type manipulations and UFCS, PEG grammar layer runs full-blown parser at compile-time using CTFE.

+ +

Lastly the talk will follow through some practical examples with benchmarks and closing thoughts of future directions.

+ +

Speaker Bio: +

Dmitry Olshansky is a young all-around researcher and software engineer. He's been a long-time D language contributor with the most notable contribution being std.regex and std.uni modules of the standard library. Aside from everything D related his main interests are compilers, text processing, robotics, parallel and concurrent programming, scalable network systems and AI.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/olshansky.pdf b/docs/2017/talks/olshansky.pdf new file mode 100644 index 00000000..a9fe3a87 Binary files /dev/null and b/docs/2017/talks/olshansky.pdf differ diff --git a/docs/2017/talks/panel.html b/docs/2017/talks/panel.html new file mode 100644 index 00000000..328b13f1 --- /dev/null +++ b/docs/2017/talks/panel.html @@ -0,0 +1,113 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Andrei Alexandrescu, Walter Bright, Scott Meyers + + + + +
+ +
+

Trends in Systems Programming Languages

+
+ + + + +
Andrei Alexandrescu
Andrei Alexandrescu
+ + + + +
Walter Bright
Walter Bright
+ + + + +
Scott Meyers
Scott Meyers
+

Andrei Alexandrescu, Walter Bright, Scott Meyers
+ May 5 @ 17:30


Duration: 50 minutes
+ Talk type: Panel
+ Level: All
+ + + Video
+

+
+
+

Abstract:  +

Various topics...

+ +

Speaker Bio: +

Andrei Alexandrescu coined the colloquial term "modern C++" (adapted +from his award-winning book Modern C++ Design), used today to describe +a collection of important C++ styles and idioms. He is also the +coauthor (with Herb Sutter) of C++ Coding Standards and the author of +The D Programming Language book. With Walter Bright, Andrei +co-designed many important features of D and authored a large part of +D's standard library. His research on Machine Learning and Natural +Language Processing completes a broad spectrum of expertise. Andrei +holds a Ph.D. in Computer Science from the University of Washington and +a B.Sc. in Electrical Engineering from University "Politehnica" +Bucharest. He works with the D Language Foundation. +

+ +

Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

+ +

Scott Meyers started programming in 1971, and he started teaching +programming in 1972. He’s best known for his Effective C++ books, but +he’s also worked on constraint expression for programming languages, +program representations in development environments, software +simulations of bacteriophage lambda, general principles for improving +software quality, and the effective presentation of technical +information. In 2009, he received the Dr. Doob’s Excellence in +Programming Award, and in 2014, and online poll likened his hair style +to that of the cartoon character, He-Man.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/panteleev.html b/docs/2017/talks/panteleev.html new file mode 100644 index 00000000..c2fbc47e --- /dev/null +++ b/docs/2017/talks/panteleev.html @@ -0,0 +1,75 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Vladimir Panteleev + + + + +
+ +
+

Practical Meta-Programming

+
+

Vladimir Panteleev
+ May 5 @ 11:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate and Advanced
+ + Slides: View online · Source code
+ Presentation Video
Demo Video
+

+
+
+

Abstract:  +

This talk covers some of the author's experience with one of D's most prominent features, meta-programming. Discussed are ways to leverage D's metaprogramming capabilities for tasks such as parsing file formats, serialization, image and video editing, game modding, and general data processing. Covered techniques include compile-time introspection, code generation, COM instrumentation, alias binding, DSLs, and general template metaprogramming. The talk also includes a few modest language improvement proposals.

+ +

Speaker Bio: +

Vladimir Panteleev is a D hacker from Moldova. He has been using D since 2006 and contributing to its development since almost as long, and maintains several open-source projects written in D.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/schveighoffer.html b/docs/2017/talks/schveighoffer.html new file mode 100644 index 00000000..4c441863 --- /dev/null +++ b/docs/2017/talks/schveighoffer.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Steven Schveighoffer + + + + +
+ +
+

IOPipe: a High Performance I/O Library

+
+

Steven Schveighoffer
+ May 6 @ 14:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

Buffered I/O has been used effectively in software and hardware for many decades, allowing I/O systems to hide the latency that typically happens when one is reading or writing data. However, buffers provide another feature: allowing mass processing of data in-place. The iopipe library is a high-performance buffering subsystem, written entirely in D, which alleviates much of the need to copy or manage data for processing. It’s API also allows for easy chaining of processors to create customized pipelines for data processing.

+ +

D’s standard I/O subsystem from Phobos is built upon C’s standard I/O subsystem. While this is a perfectly reasonable choice with good benefits, it means we are restricted to only what C provides us. In terms of performance and flexibility, this isn’t much. The API provides no mechanism for context-specific processing of data, and poor management of the underlying buffer. About the only thing it does do well (and does very well) is fetching data one line at a time. However, even this we can beat with some well written optimized D code. I’ll go over the features and benefits of using buffers directly, and provide some performance metrics and code examples that show why doing this the “D” way is faster, easier to write, and easier to customize. I will show how the iopipe system allows for parsers that need very little user-level memory management, and can provide unlimited range-like flexibility for input sources. Finally, I’ll showcase the interesting approach iopipe takes with buffered output.

+ +

Speaker Bio: +

Steven Schveighoffer has been using D since 2007, is part of the core druntime and Phobos teams, and has written several D libraries. His contributions, aside from the iopipe library, include a container library (dcollections), rewriting the array runtime, and is the original proposer of the inout type modifier. He has been working on systems ranging from embedded controllers to high-end distributed systems since graduating from WPI. He currently works for National Resource Management in Massachusetts writing internal systems (some using D), and is the organizer for the Boston D language group.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/schveighoffer.pdf b/docs/2017/talks/schveighoffer.pdf new file mode 100644 index 00000000..0a011ce0 Binary files /dev/null and b/docs/2017/talks/schveighoffer.pdf differ diff --git a/docs/2017/talks/sechet.html b/docs/2017/talks/sechet.html new file mode 100644 index 00000000..99a1ae19 --- /dev/null +++ b/docs/2017/talks/sechet.html @@ -0,0 +1,85 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Amaury Séchet + + + + +
+ +
+

Cryptography in D

+
+

Amaury Séchet
+ May 4 @ 14:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

"Don't roll your own crypto" may be one of the most common advice a programmer will get when asking about crypto. No matter how many time this is repeated, this advice proved as effective as telling teenagers to practice abstinence. This talk intends instead to provide developers with an understanding of major concepts in cryptography and a set of advice on how to implement and use these safely.

+ +

The talk will be a tour of major symmetric cryptographic tools such as finite fields, hash functions, block and stream cyphers, and describe how to use them to create confidentiality, integrity and authenticity.

+ +

Implementing these techniques safely is a much harder task than it may seems at first. This talk will discuss how to create fast, yet secure implementations by using techniques protecting against side channel attacks and why a system level programming language such as D is necessary to do so.

+ +

The talk will then move on to public key cryptography using elliptic curve. Diffie-Hellman, digital signatures, ring signatures, hierarchical key derivation and homomorphic commitment will be explained. If these words sounds like gibberish to you, you are at the right place.

+ +

Once again, safe and fast implementation techniques will be discussed.

+ +

If time allows, we'll discuss how these techniques are used to secure cryptocurrencies.

+ +

Speaker Bio: +

Amaury SECHET is a LLVM committer and the main developer of SDC. After being a software developer at Facebook for four years, he recently started working in the cryptocurrency space.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/sechet.pdf b/docs/2017/talks/sechet.pdf new file mode 100644 index 00000000..28fb4459 Binary files /dev/null and b/docs/2017/talks/sechet.pdf differ diff --git a/docs/2017/talks/staniloiu.html b/docs/2017/talks/staniloiu.html new file mode 100644 index 00000000..d3d57353 --- /dev/null +++ b/docs/2017/talks/staniloiu.html @@ -0,0 +1,94 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Eduard Staniloiu + + + + +
+ +
+

A New Collections Framework for the Standard Library

+
+

Eduard Staniloiu
+ May 6 @ 17:00


Duration: 25 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PPT
+ Video
+

+
+
+

Abstract:  +

This project aims to offer a new framework of generic collections that provide an API similar to Ranges, thus making them compatible with algorithms provided by the D Standard Library.

+ +

Each collection has support for custom memory allocation and is capable of managing its own memory through reference counting. The collections also offer good support for immutability and ensure safety wherever possible, safety only being conditioned by the contained type.

+ +

Speaker Bio: +

Eduard is a MSc student and Teaching Assistant at University "Politehnica" +of Bucharest. + +He is a hard working student who enjoys to get his hands dirty. He likes +learning new technologies and strengthening his current knowledge. + +He is passionate about computer science because we get to think about and +tackle problems that we encounter on a daily basis and we are able to find +solutions that help other people. + +His previous experience includes distributed systems and parallel +programming, operating systems, basic kernel development, open-source +software and basic Android programming. He is a Linux fan, a command line +addict and a vim enthusiast. + +He hopes that through his work he will be able to help and improve the D +language, which he is becoming so fond of. +

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/staniloiu.ppt b/docs/2017/talks/staniloiu.ppt new file mode 100644 index 00000000..7435bd19 Binary files /dev/null and b/docs/2017/talks/staniloiu.ppt differ diff --git a/docs/2017/talks/veelo.html b/docs/2017/talks/veelo.html new file mode 100644 index 00000000..bc336117 --- /dev/null +++ b/docs/2017/talks/veelo.html @@ -0,0 +1,81 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Bastiaan Veelo + + + + +
+ +
+

Extending Pegged to Parse Another Programming Language

+
+

Bastiaan Veelo
+ May 6 @ 12:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ Code samples
+ Slides: PDF
+ Video
+

+
+
+

Abstract:  +

Pegged is an elegant library for generating packrat parsers in D. Packrat parsers are parsers for parsing expression grammars (PEGs) that operate in guaranteed linear time through the use of memoization. PEGs are an alternative to context free grammars for formally specifying syntax, and have been gaining in popularity during the last decade. PEG parsers are top-down recursive descent parsers.

+ +

The Pegged implementation showcases many features of D, and has come out as a far more elegant product than similar implementations in other languages. Its use is beautifully simple, and its implementation comprehensible to outsiders. Due to D’s powerful template system and compile time function evaluation, it is even possible — within the same source file — to define a simple grammar and some input string, have the compiler generate a parser at compile time, parse the input at compile time and use the result right there at compile time, if you need to. The Pegged project was started by Philippe Sigaud in 2012.

+ +

The traditional PEG formalism is very effective for small grammars and new grammar designs, but has some limitations that make it unsuitable for generating parsers for certain existing more complex languages. This talk presents how these limitations were successfully eliminated from Pegged, most notably by implementing discoveries from recent research on left-recursive PEGs. At the same time, this talk is a demonstration that the D programming language and its community are attractive to non-computer scientists. Because the motivation for this effort is not scientific curiosity, but the pragmatic need of a bunch of programming naval architects to translate their extensive design software from an archaic and dying programming language to a language with future; and that language might as well be D.

+ +

Speaker Bio: +

Bastiaan Veelo came to know about D shortly after it was released some sixteen years ago, while trying to write a flex/bison parser for C++ to pretty-print his code in a literate programming report. He found out the hard way that C++ is a pain to parse, and as D advertised with being developed with fast and easy parsing in mind, it quickly got his attention. Since then, he has been following D’s evolution continuously, without the opportunity to use the language professionally. Recently, he has been investing time to change that and help create that opportunity, which has led him to work on parsers once again — this time in D.

+ +

Bastiaan is the lead developer of a specialised program for the computer aided geometric design of ship hulls called Fairway, for the company SARC in the Netherlands. He holds a B.Eng. in naval architecture from the Haarlem Polytechnic, an M.Sc. in marine technology and a Ph.D. in mechanical engineering from NTNU, the Norwegian University of Science and Technology.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/veelo.pdf b/docs/2017/talks/veelo.pdf new file mode 100644 index 00000000..7cc0574d Binary files /dev/null and b/docs/2017/talks/veelo.pdf differ diff --git a/docs/2017/talks/watson.html b/docs/2017/talks/watson.html new file mode 100644 index 00000000..501779ff --- /dev/null +++ b/docs/2017/talks/watson.html @@ -0,0 +1,84 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Ethan Watson + + + + +
+ +
+

Binderoo - A Rapid Iteration Framework That Even Scripters Can Use

+
+

Ethan Watson
+ May 5 @ 15:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

Remedy’s rapid-iteration framework has gone open-source, and on top of that it’s being +pushed into a production environment with an unconventional userbase for compiled code - +scripters. This talk will cover the challenges involved in creating a middleware for immediate +use in a production environment; how it provides the backbone to replace scripting in a +traditional sense; and design considerations required when your userbase can’t be shrugged +off by saying, “They’re programmers, they can deal with a restrictive or unintuitive API.”

+ +

Speaker Bio: +

Hailing from the fictional land of Australia, Ethan Watson is no stranger to DConf. As a +senior engine programmer at Remedy Enterainment, he was part of the team responsible for +shipping Quantum Break. As a speaker, he has presented at DConf, GDC Europe, and +Reboot Develop. As a person, some might say he likes squirrels just a bit too much but +they’re objectively wrong. We don’t have squirrels in Australia.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/watson.pdf b/docs/2017/talks/watson.pdf new file mode 100644 index 00000000..e22c04f6 Binary files /dev/null and b/docs/2017/talks/watson.pdf differ diff --git a/docs/2017/talks/wilson.html b/docs/2017/talks/wilson.html new file mode 100644 index 00000000..5bb2ec50 --- /dev/null +++ b/docs/2017/talks/wilson.html @@ -0,0 +1,81 @@ + + + + + + + + + + + + + +DConf 2017 speaker: Nicholas Wilson + + + + +
+ +
+

DCompute: Native & Convenient Heterogeneous Computing for D

+
+

Nicholas Wilson
+ May 4 @ 16:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PPTX
+ Video
+

+
+
+

Abstract:  +

Following John Colvin’s 2016 DConf talk about easing the pain of using OpenCL, I thought: we have a compiler that targets LLVM (LDC) and LLVM targets SPIR-V & (while I’m at it) NVPTX, how hard can it be?

+ +

The results are modifications to LDC to allow code generation for use with the OpenCL and CUDA compute APIs, and a set of libraries (under development) to provide a D wrapping for more convenient writing and invocation of kernels written in D, opening up exciting new frontiers for D.

+ +

This talk will cover: the modifications made to LDC to support SPIR-V and NVPTX code generation; a guide for using these modifications and libraries, and; why D is uniquely positioned to bring its pillars of “Convenience, Modelling power and Efficiency” to the world of heterogeneous computing and their unwieldy APIs, through it’s powerful template system and introspective capabilities.

+ +

From watching this talk I expect attendees to know how to go about writing and invoking kernels for offloading computationally intensive workloads, all in D!

+ +

Speaker Bio: +

I am a student at Murdoch University, Western Australia, studying for my BEng (Hons)/BSc in Industrial Computer Systems & Instrumentation and Control / Molecular Biology & Biomed. I am currently doing my honours thesis on low cost Electroluminescence imaging of solar cells. I have been using D for 5 years for odd jobs and number bashing.

+ +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/talks/wilson.pptx b/docs/2017/talks/wilson.pptx new file mode 100644 index 00000000..b9b70b05 Binary files /dev/null and b/docs/2017/talks/wilson.pptx differ diff --git a/docs/2017/thankyou.html b/docs/2017/thankyou.html new file mode 100644 index 00000000..0b744204 --- /dev/null +++ b/docs/2017/thankyou.html @@ -0,0 +1,68 @@ + + + + + + + + + + + + +The D Programming Language Conference 2017 + + +
+ + + + + +


+

+

Registration

+

+

Thanks! Your request was processed successfully.

+

+

Return to the DConf homepage.

+
+ + +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2017/venue.html b/docs/2017/venue.html new file mode 100644 index 00000000..2fdaf59b --- /dev/null +++ b/docs/2017/venue.html @@ -0,0 +1,82 @@ + + + + + + + + + + + + +The D Programming Language Conference 2017 + + +
+ + + + + +


+

+

Venue

+

+

Europe! We're very excited to be right in the middle of the action in Berlin with Sociomantic's generous hosting.

+

+

DConf 2017 will take place at Heimathafen in Neukölln.

+

+

+

+ +

+

Nearby hotels

+

+

Nearby hotels (prices and availability may vary):

+

+ + +
+ + +
 
+
Partner
+ +
Sociomantic
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/contact.html b/docs/2018/contact.html new file mode 100644 index 00000000..04f87310 --- /dev/null +++ b/docs/2018/contact.html @@ -0,0 +1,77 @@ + + + + + + +The D Programming Language Conference 2018 + + + + + + + + + + +


+

+

Contact Us

+

+

foundation@dlang.org

+

+

On Twitter: @D_programming, #dconf

+

+

Learn more about the D Language Foundation.

+
+ + +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/images/DmitryOlshansky.jpg b/docs/2018/images/DmitryOlshansky.jpg new file mode 100644 index 00000000..85547b01 Binary files /dev/null and b/docs/2018/images/DmitryOlshansky.jpg differ diff --git a/docs/2018/images/Martin.jpg b/docs/2018/images/Martin.jpg new file mode 100644 index 00000000..bc994aee Binary files /dev/null and b/docs/2018/images/Martin.jpg differ diff --git a/docs/2018/images/NH_hotel.jpg b/docs/2018/images/NH_hotel.jpg new file mode 100644 index 00000000..aa040336 Binary files /dev/null and b/docs/2018/images/NH_hotel.jpg differ diff --git a/docs/2018/images/QAS_Logo_UZG_RGB_web.jpg b/docs/2018/images/QAS_Logo_UZG_RGB_web.jpg new file mode 100644 index 00000000..332b06d9 Binary files /dev/null and b/docs/2018/images/QAS_Logo_UZG_RGB_web.jpg differ diff --git a/docs/2018/images/RazvanN.png b/docs/2018/images/RazvanN.png new file mode 100644 index 00000000..29ee92a4 Binary files /dev/null and b/docs/2018/images/RazvanN.png differ diff --git a/docs/2018/images/bright.jpg b/docs/2018/images/bright.jpg new file mode 100644 index 00000000..8e83633d Binary files /dev/null and b/docs/2018/images/bright.jpg differ diff --git a/docs/2018/images/cesi.jpg b/docs/2018/images/cesi.jpg new file mode 100644 index 00000000..ca7c8bfc Binary files /dev/null and b/docs/2018/images/cesi.jpg differ diff --git a/docs/2018/images/davis.jpg b/docs/2018/images/davis.jpg new file mode 100644 index 00000000..95d8c800 Binary files /dev/null and b/docs/2018/images/davis.jpg differ diff --git a/docs/2018/images/dconf_logo_2018.jpg b/docs/2018/images/dconf_logo_2018.jpg new file mode 100644 index 00000000..a3f21c81 Binary files /dev/null and b/docs/2018/images/dconf_logo_2018.jpg differ diff --git a/docs/2018/images/default.jpg b/docs/2018/images/default.jpg new file mode 100644 index 00000000..75fb3432 Binary files /dev/null and b/docs/2018/images/default.jpg differ diff --git a/docs/2018/images/dilly.jpg b/docs/2018/images/dilly.jpg new file mode 100644 index 00000000..57c91cbc Binary files /dev/null and b/docs/2018/images/dilly.jpg differ diff --git a/docs/2018/images/engelen.jpg b/docs/2018/images/engelen.jpg new file mode 100644 index 00000000..ee5a4317 Binary files /dev/null and b/docs/2018/images/engelen.jpg differ diff --git a/docs/2018/images/erdani.jpg b/docs/2018/images/erdani.jpg new file mode 100644 index 00000000..bb14970c Binary files /dev/null and b/docs/2018/images/erdani.jpg differ diff --git a/docs/2018/images/hackathon.png b/docs/2018/images/hackathon.png new file mode 100644 index 00000000..70eb8fde Binary files /dev/null and b/docs/2018/images/hackathon.png differ diff --git a/docs/2018/images/hlmc-logo-web.png b/docs/2018/images/hlmc-logo-web.png new file mode 100644 index 00000000..5e4e06e7 Binary files /dev/null and b/docs/2018/images/hlmc-logo-web.png differ diff --git a/docs/2018/images/jercaianu.jpg b/docs/2018/images/jercaianu.jpg new file mode 100644 index 00000000..969b186a Binary files /dev/null and b/docs/2018/images/jercaianu.jpg differ diff --git a/docs/2018/images/jon_degenhardt.jpg b/docs/2018/images/jon_degenhardt.jpg new file mode 100644 index 00000000..fc5c6628 Binary files /dev/null and b/docs/2018/images/jon_degenhardt.jpg differ diff --git a/docs/2018/images/le.jpg b/docs/2018/images/le.jpg new file mode 100644 index 00000000..58c4a476 Binary files /dev/null and b/docs/2018/images/le.jpg differ diff --git a/docs/2018/images/leroy.jpg b/docs/2018/images/leroy.jpg new file mode 100644 index 00000000..7acfeeb4 Binary files /dev/null and b/docs/2018/images/leroy.jpg differ diff --git a/docs/2018/images/mario.jpg b/docs/2018/images/mario.jpg new file mode 100644 index 00000000..6e87e3d0 Binary files /dev/null and b/docs/2018/images/mario.jpg differ diff --git a/docs/2018/images/marques.jpg b/docs/2018/images/marques.jpg new file mode 100644 index 00000000..f72ddcc7 Binary files /dev/null and b/docs/2018/images/marques.jpg differ diff --git a/docs/2018/images/nacke.jpg b/docs/2018/images/nacke.jpg new file mode 100644 index 00000000..053b8307 Binary files /dev/null and b/docs/2018/images/nacke.jpg differ diff --git a/docs/2018/images/rohe.jpg b/docs/2018/images/rohe.jpg new file mode 100644 index 00000000..f5a4cbc2 Binary files /dev/null and b/docs/2018/images/rohe.jpg differ diff --git a/docs/2018/images/schveighoffer.jpg b/docs/2018/images/schveighoffer.jpg new file mode 100644 index 00000000..25c52473 Binary files /dev/null and b/docs/2018/images/schveighoffer.jpg differ diff --git a/docs/2018/images/staniloiu.jpg b/docs/2018/images/staniloiu.jpg new file mode 100644 index 00000000..d0ecd361 Binary files /dev/null and b/docs/2018/images/staniloiu.jpg differ diff --git a/docs/2018/images/stock.png b/docs/2018/images/stock.png new file mode 100644 index 00000000..9c5e69d0 Binary files /dev/null and b/docs/2018/images/stock.png differ diff --git a/docs/2018/images/watson.jpg b/docs/2018/images/watson.jpg new file mode 100644 index 00000000..d742c300 Binary files /dev/null and b/docs/2018/images/watson.jpg differ diff --git a/docs/2018/images/zvibel.jpg b/docs/2018/images/zvibel.jpg new file mode 100644 index 00000000..49b96685 Binary files /dev/null and b/docs/2018/images/zvibel.jpg differ diff --git a/docs/2018/includes/style.css b/docs/2018/includes/style.css new file mode 100644 index 00000000..eb251a7c --- /dev/null +++ b/docs/2018/includes/style.css @@ -0,0 +1,584 @@ +html { + overflow-y: scroll; +} + +body { + background-color: #e8e8e8; + background-repeat: repeat-x; + margin: 0px; + padding: 0px; + text-align: justify; +} + +hr { + clear: both; +} + +#container { + width: 1010px; + margin: 0px auto; + padding: 10px; + padding-top: 0px; + border: none; + overflow: hidden; +} + +.logo { + top: 0px; + left: 0; + width: 100%; + background: #52255F; + border-top: 3px solid #b72a00; +} +.logo a +{ + display: block; + width: 950px; + padding-left: 60px; + margin: auto; +} + +.menu_container { + background: #484848; + opacity: 0.9; + border-bottom: 2px solid #000000; + width: 100%; + height: 28px; +} + +.menu { + height: 25px; + padding-left: 30px; + width: 1010px; + margin: 0 auto; +} + +nav ul, nav li { + margin: 0px; + padding: 0px; +} + +#menu { + list-style: none; + margin-bottom: 10px; + float: left; + width: 100%; +} + +#menu li { + float: left; + position: relative; +} + +#menu a, .nolinkyet { + display: block; + padding: 7px 15px; + color: #dadada; + text-decoration: none; + font-family: "Andale Mono", "Lucida Sans Typewriter", "Lucida Console", monospace; + font-size: 14px; + line-height: 16px; + letter-spacing: 1px; +} + +#menu .nolinkyet { + color: #808080; +} + +#menu a:hover { + color: #dadada; + background: #292929; + text-decoration: none; +} + +#menu ul { + background: #484848; + background: rgba(255,255,255,0); + list-style: none; + position: absolute; + left: -9999px; +} + +#menu ul li { + float: none; +} + +#menu ul a { + white-space: nowrap; + opacity: 1.0; + border-bottom: 1px dotted #000000; + font-size: 12px; + letter-spacing: 0px; +} + +#menu li:hover ul { + left: 0; +} + +#menu li:hover ul a { + text-decoration: none; + border-bottom: 1px dotted #000000; + font-size: 12px; + letter-spacing: 1px; +} + +#menu li:hover ul li a:hover { + background: #292929; +} + +.clock { + margin: 15px 0px 0px; + overflow: hidden; + width: 260px; + height: 85px; + float: right; +} + +.twitter { + margin: 0px 0px 10px 0px; + overflow: hidden; +/* background-image: url('../images/twitter_bubble.png'); +*/ background-repeat: no-repeat; + height: 420px; +} + +.twitter .hash { + margin: 5px 0px 10px 90px; + overflow: hidden; +/* background-image: url('../images/twitter_hash.png'); +*/ background-repeat: no-repeat; + height: 0px; +} + +.twitter .inside { + margin: 25px 20px; + overflow: hidden; +} + +.twtr-hd, .twtr-ft { + display: none; +} + +div#twit .twtr-widget p { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px !important; + line-height: 16px; + color: #333333 !important; +} + +div#twit hr { + display: block; + height: 1px; + border: 0px; + border-top: 1px solid #ac9394; + margin: 5px; + padding: 0px; +} + +div#twit .twtr-widget a:link, div#twit .twtr-widget a:visited, div#twit .twtr-widget a:active { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px; + color: #af3d7b !important; + text-decoration: none !important; +} + +div#twit a.t_user:link, div#twit a.t_user:visited, div#twit a.t_user:active { + color: #87170a !important; + font-weight: bold; +} + +div#twit a.twtr-timestamp:link, div#twit a.twtr-timestamp:active, div#twit a.twtr-timestamp:visited { + color: #666666 !important; +} + +div#twit .twtr-widget a:hover { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 12px; + text-decoration: none; + color: #ff4fae !important; +} + +.row_after { + clear: both; +} + +.page { + width: 940px; +} + +.page_left { + width: 610px; +} + +.page_right { + width: 270px; + background-repeat: repeat-y; +} + +.small_left { + width: 710px; +} + +.small_right { + width: 170px; + padding-left: 20px !important; +} + +.page_right, .page_left, .page { + padding: 10px 30px 10px; +} + +.equal, .page { + overflow: hidden; + float: left; +} + +/* .divider_v { */ +/* background-image: url('../images/dotted_v.png'); */ +/* background-repeat: repeat-y; */ +/* margin: 30px 0px 0px; */ +/* } */ + +.divider_h { + background-repeat: repeat-x; + margin: 30px -10px 10px; +} + +.divider_h_sm { + margin-top: 20px; +} + +.page_bottom { + margin: 30px; + width: 960px; + overflow: hidden; + float: left; +} + +.sponsors, .sponsors_sm { + margin: 20px 0px 0px; +} + +.sp { + font-family: "Arial Black", sans-serif; + font-size: 14px; + font-weight: normal; + color: #737e7c; + text-transform: uppercase; + line-height: 20px; + padding-left: 11px; +} + +a.smaller { + font-size: 12px !important; + padding-left: 5px !important; +} + +a.smallest { + font-size: 9px !important; + padding-left: 5px !important; +} + +a.ks:link, a.ks:visited, a.ks:active { + font-size: 12px; + color: #666666; + line-height: 25px; +} + +a.linkb { + font-size: 16px !important; + font-weight: bold; +} + +a.ks:hover { + font-size: 12px; + color: #8b9896; +} + +.sponsors img { + margin: 5px 0px 15px 10px; /* 5 0 5 10*/ + /*vertical-align: middle;*/ +} + +.sponsors_sm img { + margin: 5px 0px 5px 5px; /* 5 0 5 10*/ +} + +.stroke { + border: 1px solid #d0c9c9; +} + +.inline > * { + display: inline-block; + margin: 5px 25px 5px 0px; +} + +.vmid > * { + vertical-align: middle; +} + +.vtop > * { + vertical-align: top; +} + +.dotted_left { + border-left: 1px dotted #d0c9c9; + padding-left: 20px; +} + +.dotted_left > div { + margin: 5px 10px !important; +} + +.rate { + font-size: 12px; +} + +h1 { + font-family: "Lucida Sans Unicode", sans-serif; + font-size: 26px; + font-weight: bold; + line-height: 30px; + color: #000000; + margin: 20px 0px 0px; + text-align: left; +} + +h2 { + font-family: Georgia, serif; + font-size: 16px; + font-weight: bold; + line-height: 20px; + color: #000000; + margin: 15px 0px 10px 0px; +} + +h3 { + font-family: Georgia, serif; + font-size: 18px; + font-weight: bold; + color: #000000; + line-height: 20px; + margin-top: 25px; +} + +h1 + p, h1 + div { + margin-top: 15px; +} + +p, td { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 16px; + color: #000000; + line-height: 18px; + margin-bottom: 14px; +} + +ul { + font-family: Georgia, "Palatino Linotype", serif; + color: #000000; + list-style-position: outside; + list-style-type: square; + margin: 5px 10px; + padding: 5px 10px; +} + +ol { + font-family: Georgia, "Palatino Linotype", serif; + color: #000000; + list-style-position: inside; + margin: 0px 5px; + padding: 5px 0px; +} + +li { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 15px; + line-height: 18px; + color: #000000; + padding: 0px; + margin: 0px 10px; +} + +a:link, a:visited, a:active { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 16px; + color: #234faa; + text-decoration: none; +} + +a:hover { + font-family: Georgia, "Palatino Linotype", serif; + font-size: 16px; + text-decoration: none; + color: #135bf1; +} + +table, th, td { + border: none; +} + +td { + padding: 0px 20px 0px 0px; + vertical-align: top; +} + +.ks > .divider_v { + margin: 0px 25px; + padding: 10px 0px 0px; +} + +.button { + border: 1px solid #999999; + background: #dbdbdb; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dbdbdb', endColorstr='#cccccc'); + background: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#cccccc)); + background: -moz-linear-gradient(top, #dbdbdb, #cccccc); + font-family: Georgia, "Palatino Linotype", serif; + font-size: 14px; + color: #000000; + padding: 4px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + margin-top: 15px; +} + +.button:active { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#dbdbdb'); + background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#dbdbdb)); + background: -moz-linear-gradient(top, #cccccc, #dbdbdb); +} + +#schedule, #schedule td, #schedule th { + border: 1px solid #000000; + border-collapse: collapse; + padding: 10px; + vertical-align: middle; +} + +#schedule { + width: 600px; + margin: 20px 0px; + background-color: #ffffff; +} + +#schedule th { + font-size: 20px; + line-height: 30px; + color: #ffffff; + font-weight: bold; + text-shadow: 0px 1px 0px #000000; +} + +#schedule td p { + padding: 0px 10px; +} + +#schedule td:first-child { + width: 130px; + color: ec8618; +} + +.green th { + background-color: #62b224; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62b224', endColorstr='#579b21'); + background: -webkit-gradient(linear, left top, left bottom, from(#62b224), to(#579b21)); + background: -moz-linear-gradient(top, #62b224, #579b21); +} + +.aqua th { + background-color: #49c4ef; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#49c4ef', endColorstr='#3eb1da'); + background: -webkit-gradient(linear, left top, left bottom, from(#49c4ef), to(#3eb1da)); + background: -moz-linear-gradient(top, #49c4ef, #3eb1da); +} + +.orange th { + background-color: #f39835; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f39835', endColorstr='#ec8618'); + background: -webkit-gradient(linear, left top, left bottom, from(#f39835), to(#ec8618)); + background: -moz-linear-gradient(top, #f39835, #ec8618); +} + +.purple th { + background-color: #855bda; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#855bda', endColorstr='#6132bf'); + background: -webkit-gradient(linear, left top, left bottom, from(#855bda), to(#6132bf)); + background: -moz-linear-gradient(top, #855bda, #6132bf); +} + +.green tr:hover { + background-color: #afe8bb; +} + +.orange tr:hover { + background-color: #f0c799; +} + +.aqua tr:hover { + background-color: #abdef0; +} + +.purple tr:hover { + background-color: #b7a7d6; +} + +.break td { + color: #606060; + background-color: #e8e8e8; +} + +.break tr:hover { + opacity: 0.5 !important; +} + +.showAbstract { + background-color: black; + color: white; + padding:5px; + margin-top: 1.3em; + position: absolute; + max-width: 200px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +.tooltip span { + margin-left: -999em; + position: absolute; +} + +/* +.tooltip:hover span { + position: absolute; + left: 700px; + top: 400px; + z-index: 99; + margin-left: 0; + width: 400px; + border-radius: 5px 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 5px 5px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 5px 5px rgba(0, 0, 0, 0.1); +} +*/ + +.abstract { + background: #FFFFAA ; + border: 1px solid #FFAD33; + padding: 0.8em 1em; +} + +/* red f2262b */ + +.footer { + text-align: center; + font-size: small; +} +.footer a { + font-size: small; + font-family: inherit; +} diff --git a/docs/2018/index.html b/docs/2018/index.html new file mode 100644 index 00000000..aaa1443d --- /dev/null +++ b/docs/2018/index.html @@ -0,0 +1,135 @@ + + + + + + +The D Programming Language Conference 2018 + + + + + + + + + + +


+

DConf 2018 in Munich!

+
+

DConf 2018 has successfully concluded. The D Language Foundation extends their gratitude to our partners, our supporters, and all of the attendees, for helping us pull off another successful event. We look forward to doing it again next year! +

+
+

The D Language Foundation is pleased to announce the international conference and hackathon DConf 2018 in Munich, Germany, May 2-5 2018. +

+

DConf is the main face-to-face event for everyone in the D programming language community and anyone who wants to know what all the fuss is about. We are proud to be hosted by our partner QA Systems through the organizational expertise of HLMC. +

+

Munich is a hotbed of systems and embedded software with a strong and vibrant programmer community. If you use the public transportation system, beware! The passenger information software is written in D by local company Funkwerk AG. +

+

We are featuring growth and outreach as a special theme this year - if you have any friends who could benefit from learning more about the D programming language, let them know! +

+

Keynote Speakers

+

We are happy to be hosting the creator of the Scala programming language, Martin Odersky, as our invited keynote speaker. He'll be joining our regular keynote speakers, Walter Bright and Andrei Alexandrescu. They each will kick off a day of the conference, followed by a strong line up of presentations from members of the D community. +

+

+ + + + +
Walter Bright
Walter Bright
+ + + + +
Andrei Alexandrescu
Andrei Alexandrescu
+ + + + +
Martin Odersky
Martin Odersky
+
+

+

Hackathon

+

Building on the success of the past year's hackathon, we are happy to announce a day-long Hackathon on Saturday, May 5th. The day is largely unstructured, but we expect birds-of-a-feather groups to materialize naturally. This year, we've got an extra talk to start us off and it's open to the public free of charge. So if you're in the area and can't get to the full conference, we warmly invite you to join us. Bring your laptop and your enthusiasm! +

+

Sponsorship

+

Sponsorship packages are available. For details, please direct queries to Franziska Mai (f.mai@hlmc.de) or Gerhard Versteegen (g.versteegen@hlmc.de). +

+

Important Dates

+ + + + + + + + + + + + + + + + + + +
Submission deadlineFebruary 25, 2018, 24:00 AOE
Author notificationMarch 17, 2018, 24:00 AOE
Early bird registration deadlineMarch 17, 2018, 24:00 AOE
Registration deadlineTBD
ConferenceWednesday May 2–Friday May 4, 2018
HackathonSaturday May 5, 2018
+

Summary trailer from DConf 2016

+

For a taste of what DConf is all about, check out this video from the Sociomantic, the hosts of the 2016 & 2017 editions in Berlin. +

+ +

+ +
+ + +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/registration.html b/docs/2018/registration.html new file mode 100644 index 00000000..e036d223 --- /dev/null +++ b/docs/2018/registration.html @@ -0,0 +1,88 @@ + + + + + + +The D Programming Language Conference 2018 + + + + + + + + + + +


+

Registration

+

Munich is a hotbed of systems and embedded software with a strong and vibrant programmer community, including lots of D programmers. It's the perfect place for DConf 2018. We'd love for you to join us! +

+

The general registration fee is $400. Please follow one of the following links to register. If you attended DConf 2017, we want to welcome you back with open arms. For you, the price is $340! To obtain the discount, please send an email to social@dlang.org requesting the 2017 Attendee Discount. Be sure to include the email address you used when you registered last year. +

+

If you've never attended any of the past editions of DConf and want to know what you're buying into, you can take a gander at the talk videos from DConfs past: 2017, +2016, +2015, +2014, and +2013. You're getting +fantastic value not only in terms of strong content, but also access to industry luminaries, a welcoming and enthusiastic community, and a lasting boost of inspiration for your work. +

+

Live in the vicinity but can't attend the full conference? We've got you covered. Join us for the Hackathon on May 5th completely free of charge for a day of hacking on D code, kicked off by an extra presentation! +

+

Registration proceeds remaining after conference-related expenses are covered will go to the D Language Foundation. Your payment will be used transparently to foster understanding and adoption of the D programming language. +

+

For corporate sponsorship packages, please direct queries to Franziska Mai (f.mai@hlmc.de) or Gerhard Versteegen (g.versteegen@hlmc.de). +

+

+
+ + +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/schedule/index.html b/docs/2018/schedule/index.html new file mode 100644 index 00000000..ba05848a --- /dev/null +++ b/docs/2018/schedule/index.html @@ -0,0 +1,300 @@ + + + + + + +The D Programming Language Conference 2018 + + + + + + + + + + +


+

+

Schedule

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 1: Wednesday May 2, 2018
9:00Breakfast and Registration
10:00
+
+ Taking Advantage of D Within Existing C Code Bases
+ Walter Bright +
11:00
+
+ A Decade of D @ Funkwerk
+ Mario Kröplin, Stefan Rohe +
12:00
+
+ Exploring D via Benchmarking of eBay's TSV Utilities
+ Jon Degenhardt +
13:00Lunch & Mingling
14:30
+
+ Building a Scalable Webapp with Angular and D
+ Stephan Dilly +
15:30
+
+ How to convert your rusty old LAMP into a shiny new Vibe app.
+ Steven Schveighoffer +
16:30
+
+ D for the Blockchain
+ Kai Nacke +
17:30
+
+ Ask us Anything!
+ Andrei Alexandrescu, Walter Bright +
18:30End of Day 1
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 2: Thursday May 3, 2018
9:00Breakfast
10:00
+
+ Systematic Introspection in the D Language
+ Andrei Alexandrescu +
11:00
+
+ Unified Concurrent Runtime for D
+ Dmitry Olshansky +
12:00
+
+ Porting D to a non-Windows non-Posix platform
+ Igor Česi +
13:00Lunch & Mingling
14:30
+
+ Beyond OOP: A Case Study
+ Luís Marques +
15:30
+
+ Open Methods for D (The Expression Problem - solved)
+ Jean-Louis Leroy +
16:30
+
+ ExposeD - the war stories of an aspiring D compiler developer
+ Razvan Nitu +
17:00
+
+ Showcasing Collections
+ Eduard Staniloiu +
17:30
+
+ Lightning Talks
+ Multiple Speakers +
18:30End of Day 2
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Day 3: Friday May 4, 2018
9:00Breakfast
10:00
+
+ How To Abstract Over Context
+ Martin Odersky +
11:00
+
+ LLVM-backed goodies in LDC
+ Johan Engelen +
12:00
+
+ Overview of dxml and Lessons Learned
+ Jonathan M. Davis +
13:00Lunch & Mingling
14:30
+
+ Binderoo - Wait, What Do You Mean You Quit Your Job?
+ Ethan Watson +
15:30
+
+ Adoption of D for genomic bioinformatics
+ Vang Le +
16:30
+
+ Project Blizzard: safe memory allocation and deallocation
+ Alexandru Jercaianu +
17:30
+
+ Using D as the programming language of choice for large scale primary storage system
+ Liran Zvibel +
18:30End of Day 3
+

+ + + + + + + + + + + + + + + + + +
Day 4: Saturday May 5, 2018
9:00Breakfast
10:00
+
+ Announcing Mecca
+ Shachar Shemesh +
11:00
+
+ Hackathon Morning Session
+ Everybody +
13:00Lunch & Mingling
14:30
+
+ Hackathon Afternoon Session
+ Everybody +
18:30End of the Conference
+ +
+ + +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/speakers/index.html b/docs/2018/speakers/index.html new file mode 100644 index 00000000..5e5f1d60 --- /dev/null +++ b/docs/2018/speakers/index.html @@ -0,0 +1,254 @@ + + + + + + +The D Programming Language Conference 2018 + + + + + + + + + + +


+

+

Walter Bright

+
+ + +
Walter Bright +

Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

+
+

Andrei Alexandrescu

+
+ + +
Andrei Alexandrescu +

Andrei Alexandrescu coined the colloquial term "modern C++" (adapted from his award-winning book Modern C++ Design), used today to describe a collection of important C++ styles and idioms. He is also the coauthor (with Herb Sutter) of C++ Coding Standards and the author of The D Programming Language book. With Walter Bright, Andrei co-designed many important features of D and authored a large part of D's standard library. His research on Machine Learning and Natural Language Processing completes a broad spectrum of expertise. Andrei holds a Ph.D. in Computer Science from the University of Washington and a B.Sc. in Electrical Engineering from University "Politehnica" Bucharest. He works with the D Language Foundation. +

+
+

Martin Odersky

+
+ + +
Martin Odersky +

Martin Odersky is the inventor of the Scala language, a professor at EPFL in Lausanne, Switzerland, and a founder of Lightbend. His work concentrates on the fusion of functional and object-oriented programming. He believes the two paradigms are two sides of the same coin, to be unified as much as possible. To prove this, he has worked on a number of language designs, from Pizza to GJ to Functional Nets. He was named an ACM fellow for his achievements in this area. He has also influenced the development of Java as a co-designer of Java generics and as the original author of the current javac reference compiler. +

+
+

Igor Česi

+
+ + +
Igor Česi +

Igor Česi is a senior programmer at Ubisoft Paris studio where he helped making 10+ games including multiple titles in Ghost Recon and Just Dance franchises. The latest game he participated in making is Mario+Rabbids Kingdom Battle. He's been programming in C++ for the last 20 years. After following D from a 'distance' for many years and thanks to guys from Remedy Entertainment who proved that D on gaming consoles is possible, he is trying to introduce the D language to programming teams in Ubisoft Paris studio. +

+
+

Jonathan M. Davis

+
+ + +
Jonathan M. Davis +

Jonathan M Davis is the primary author of std.datetime and one of Phobos' core contributors. He is a professional developer and has experience in a number of programming languages, including C++, Haskell, Java, and D. For better or worse, he's well known in the D community for answering questions and being long-winded. He currently resides in Utah. +

+
+

Jon Degenhardt

+
+ + +
Jon Degenhardt +

Jon Degenhardt is a senior member of eBay's Search Science team. He has been working on search engines for the last decade, both on the core search engine as well as the data science driving recall and ranking. His work includes substantial involvement in search engine performance. He started programming in D in late 2015. +

+
+

Stephan Dilly

+
+ + +
Stephan Dilly +

Stephan Dilly is the head of engineering at InnoGames. With over 10 years of professional software developmentexperience, he has worked as a consultant and engineer for top gaming companies including Funatics and Ubisoft Bluebyte. Before joining InnoGames, Stephan developed games in the front-end and back-end domain on titles like "The Settlers", "Tom Clancy’s Endwar" and "Assassin’s Creed Identity". Now, he focuses on front-end technology at InnoGames and shapes the strategy for mobile-only games using modern game engines. Stephan aka ’Extrawurst’ is an active member in the D community since 2007, he contributed to books like "The D Programming Language" by Andrei Alexandrescu and ”Web Development in D” by Kai Nacke. +

+
+

Johan Engelen

+
+ + +
Johan Engelen +

Johan Engelen is one of the core LDC developers. He is also a D compiler consultant for Weka.io (probably the largest industrial single-executable D codebase) and maintains and adds features to their fork of LDC. While working on LDC, he often studies the compiler output IR and assembly. To aid this, he helped setting up LDC at d.godbolt.org. Examples of his recent contributions to LDC related to LLVM functionality are: fuzzing with libFuzzer, better AddressSanitizer support, and IR-based PGO. Johan (PhD Electrical Engineering) is assistant professor in the Robotics and Mechatronics (RAM) group at the University of Twente, the Netherlands. His software engineering skills stem largely from participating in open source communities such as Inkscape, LLVM, Dlang, and LDC. +

+
+

Alexandru Jercaianu

+
+ + +
Alexandru Jercaianu +

Alex is currently a MSc student and teaches “Operating Systems" at the Polytechnic University of Bucharest. He has a strong interest in low level programming and for the past couple of months he has been working on D’s experimental allocators. In order to build a stronger D +community at his university, part of his efforts go to helping several students bring their contributions to the language. +

+
+

Mario Kröplin

+
+ + +
Mario Kröplin +

Mario Kröplin is a software architect at the German company Funkwerk. At the location near Munich, Funkwerk develops passenger +information systems, which are in operation at railway companies throughout Europe. In 2008 they started using D and since then, +D has been the means of choice for all new development. Mario (linkrope) is also the author of D tools and frameworks that are +in daily use at Funkwerk. +

+
+

Vang Le

+
+ + +
Vang Le +

Dr. Vang Le focused on physics during his high-school years, but spent his university career in molecular biology. Computer science and programming were always a secret hobby. He got a Postdoc job in Denmark which required both molecular biology and computer science. This gave birth to a full-time bioinformatician job where he openly combine his passions for computer science and curiosity for living things. He currently works in Aalborg University Hospital as a clinical bioinformatician, where he is key in establishing bioinformatic infrastructure and routine analysis workflows to deal with the great amount of data from next generation sequencing (NGS) machines. He has great opportunities to set up computer clusters for storage and computation and to learn many cutting edge technologies. He sees D as a great alternative to C and C++ and predicts it will one day enjoy a level of popularity (particularly in bioinformatics) comparable to C, C++, Java, or Python. +

+
+

Jean-Louis Leroy

+
+ + +
Jean-Louis Leroy +

Jean-Louis Leroy is the author of the openmethods module. He got his first taste of programming from a HP-25 calculator. His first real programming language was Forth, where CTFE is pervasive. Later he programmed (a little) in Lisp and Smalltalk, and (a lot) in C, C++, and Perl. He now works for Bloomberg LP in New York. His interests include object-relational mapping, open multi-methods, DSLs, and language extensions in general. +

+
+

Luís Marques

+
+ + +
Luís Marques +

I am a generalist programmer, with a good grasp of computer architecture. I have always been interested in the design of clean solutions for difficult programming problems, but there is something to be said about just bashing the problem in the head with some systems programming. In any case, the number of CPU cycle casualties has decreased dramatically since we introduced our unit of tactical rangers, generic ammunition and mental training by introspection. +

+
+

Kai Nacke

+
+ + +
Kai Nacke +

Kai Nacke is a professional IT architect. In his spare time he likes to develop open source applications. He is the current maintainer of LDC, the LLVM-based D compiler, and a committer of the LLVM project. His contributions to LDC include ports to different CPU architectures and operating systems. Another interest of him is using D for business applications. He is the developer of the D bindings for SAP. Besides programming he is also the author of "D Web Development" and a speaker at the Free and Open Source Software Developers' European Meeting (FOSDEM). +

+
+

Razvan Nitu

+
+ + +
Razvan Nitu +

Razvan Nitu is a PhD student and teaching assistant at University POLITEHNICA of Bucharest, Romania. He is passionate about compilers and operating systems and talking about himself is not one of his skills. +

+
+

Dmitry Olshansky

+
+ + +
Dmitry Olshansky +

Dmitry Olshansky is a young all-around researcher and software engineer. He's been a long-time D language contributor with his most notable contributions being the std.regex and std.uni modules of the standard library. Aside from everything D-related, his main interests are compilers, runtimes, text processing, parallel and +concurrent programming, scalable network systems and AI. +

+
+

Stefan Rohe

+
+ + +
Stefan Rohe +

Stefan Rohe is thrilled about Clean D Code and transformed Funkwerk into a D-shop by introducing D into green- and brownfield projects. Funkwerk being the first commercial adopter of D makes Stefan is the first commercial D programmer. Next to his work at Funkwerk he organizes the local community. +

+
+

Steven Schveighoffer

+
+ + +
Steven Schveighoffer +

Steven Schveighoffer has been hacking on D since 2007. He has numerous contributions to Phobos and Druntime, including the array runtime, and has written dcollections (a container library), and iopipe (a high-performance i/o pipeline library). He currently works at National Resource Management, in Massachusetts, where he is working on the subject of this talk — a hybrid php/vibe.d application that tracks sales and installations for the company (along with some other things). +

+
+

Shachar Shemesh

+
+ + +
Shachar Shemesh +

Shachar (that's me) has been a programmer for over 3 decades. His experience includes heading Check Point's security response team, being a core developer on LiveU's video streaming device, and helping porting Akamai's code into a more modern software architecture. In between, Shachar has also worked on several open source projects, authoring such joys as rsyncrypto and fakeroot-ng, as well as such abominations as sshpass. Shachar even has credit for a one-liner in the vanilla Linux kernel, which still officially makes him a "Linux kernel contributer". +

+ +

For the past 3½ years Shachar has been a D programmer at Weka.io, first writing its RAID subsystem, and recently fully engaged with the Mecca effort. +

+
+

Eduard Staniloiu

+
+ + +
Eduard Staniloiu +

Eduard is a MSc student and Teaching Assistant at University "Politehnica" of Bucharest. He is a hard working student who enjoys to get his hands dirty. He likes learning new technologies and strengthening his current knowledge. He is passionate about computer science because we get to think about and tackle problems that we encounter on a daily basis and we are able to find solutions that help other people. His previous experience includes distributed systems and parallel programming, operating systems, basic kernel development, open-source software and basic Android programming. He is a Linux fan, a command line addict and a vim enthusiast. He hopes that through his work he will be able to help and improve the D language, which he is becoming so fond of. +

+
+

Ethan Watson

+
+ + +
Ethan Watson +

Back for round 3 at DConf, Ethan Watson is coming in without an employer. Having quit his job before the new year, he has spent some time in his fictional homeland of Australia (a land without squirrels must be fictional after all) working on his future career prospects. As a seasoned game developer with 15 years of experience across multiple platforms, he has also presented at GDC Europe and Reboot Develop. +

+
+

Liran Zvibel

+
+ + +
Liran Zvibel +

Liran Zvibel is the Co-founder and CTO of WekaIO, the fastest and most scalable file system implemented in D. Prior to that he was the Co-Founder and VP R&D of Fusic, a video processing mobile/web based startup. Prior to that Liran was at XIV Storage (acquired by IBM in 2007) doing several architectural and leadership roles. Prior to that Liran served 6 years at the IDF, technologically leading a project that was awarded the most prestigious Israeli Defense Award, reaching a rank of Captain. Liran received his B.Sc. in Mathematics and Computer Sciences from the Tel Aviv University at the age of 18. +

+
+ +
+ + +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/alexandrescu.html b/docs/2018/talks/alexandrescu.html new file mode 100644 index 00000000..f140f1fd --- /dev/null +++ b/docs/2018/talks/alexandrescu.html @@ -0,0 +1,84 @@ + + + + + + + +DConf 2018 speaker: Andrei Alexandrescu + + + + + + +
+ +
+

Systematic Introspection in the D Language

+
+

Andrei Alexandrescu
+ May 3 @ 10:00


Duration: 50 minutes
+ Talk type: Keynote
+ Level: All
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

There has been increasing interest in using static introspection as an enabling technology in the D language. However, the primitives provided - some built-in, some available in library form - could be organized more systematically to allow simple, natural use that can be immediately understood and easily maintained. This talk is a vision of an integrated library-based approach to static introspection that makes short work of some traditional challenges, and more importantly enables new, complex uses. +

+ +

Speaker Bio: +

Andrei Alexandrescu coined the colloquial term "modern C++" (adapted from his award-winning book Modern C++ Design), used today to describe a collection of important C++ styles and idioms. He is also the coauthor (with Herb Sutter) of C++ Coding Standards and the author of The D Programming Language book. With Walter Bright, Andrei co-designed many important features of D and authored a large part of D's standard library. His research on Machine Learning and Natural Language Processing completes a broad spectrum of expertise. Andrei holds a Ph.D. in Computer Science from the University of Washington and a B.Sc. in Electrical Engineering from University "Politehnica" Bucharest. He works with the D Language Foundation. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/alexandrescu.pdf b/docs/2018/talks/alexandrescu.pdf new file mode 100644 index 00000000..7517081e Binary files /dev/null and b/docs/2018/talks/alexandrescu.pdf differ diff --git a/docs/2018/talks/bright.html b/docs/2018/talks/bright.html new file mode 100644 index 00000000..b770bb7b --- /dev/null +++ b/docs/2018/talks/bright.html @@ -0,0 +1,93 @@ + + + + + + + +DConf 2018 speaker: Walter Bright + + + + + + +
+ +
+

Taking Advantage of D Within Existing C Code Bases

+
+

Walter Bright
+ May 2 @ 10:00


Duration: 50 minutes
+ Talk type: Keynote
+ Level: All
+ + Slides: PDF
+ (Video lost) +

+
+
+

Abstract:  +

For 40 years now, C has been a major force in programming languages, and a great deal of the world's critical software is written +in it. But there's also been 40 years of advancement in programming languages, while C has remained relatively unchanged. It's +well known, and well understood. It's problems are well known, too, and have turned out to be relatively intractable, such as +buffer overflows. Security issues such as buffer overflows have cost enormous amounts of money, and continue to plague companies. +

+ +

These issues have been solved by more modern programming languages, but it is impractical to translate large code bases from C to +another language. It is possible, however, to incrementally start using a modern language alongside an existing code base, without +disrupting it, and without overhead. One such is the D programming language. This presentation will show how that is done and the +advantages in doing so - advantages such as guaranteed elimination of certain types of bugs, modern programming concepts, etc. +It'll make your code easier to write, easier to read, easier to review, and more robust. +

+ +

Speaker Bio: +

Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/bright.pdf b/docs/2018/talks/bright.pdf new file mode 100644 index 00000000..501441b6 Binary files /dev/null and b/docs/2018/talks/bright.pdf differ diff --git a/docs/2018/talks/cesi.html b/docs/2018/talks/cesi.html new file mode 100644 index 00000000..e0e73691 --- /dev/null +++ b/docs/2018/talks/cesi.html @@ -0,0 +1,120 @@ + + + + + + + +DConf 2018 speaker: Igor Česi + + + + + + +
+ +
+

Porting D to a non-Windows non-Posix platform

+
+

Igor Česi
+ May 3 @ 12:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

The D language has been ported and well supported on Windows and various Posix platforms. In order to use D on a non-Windows, non-Posix platform, often proprietary and closed source, the compiler, druntime and phobos need to be ported and adapted to the specificities of the platform in question. The talk presents challenges and gotchas encountered on the path of such an effort including: how to choose and build the compiler, how to bootstrap druntime and get the unittests running, phobos porting challenges and more. +

+ +

Description

+ +

This presentation is meant for programmers who are considering porting D language to currently unsupported platforms. It can also be of interest to D language code architects as it presents how easy (or difficult) it is to find the pieces of code which need to be ported and how well a new platform integrates in the existing code. Finally, the curious programmer can learn some new details on how compilers, druntime and phobos work. +

+ +

Using, or even evaluating, D language on non-supported platforms (non-Windows, non- Posix) requires a major porting effort. Such platforms are often proprietary and closed source (e.g. game consoles). +

+ +

Evaluating necessary work (and therefore time) to get a software working on a new platform is not an easy task. In addition to previous porting experience and knowledge of general porting techniques, a good guide, a How-To document or an overview in the form of a presentation can be invaluable source of information. +

+ +

During the porting, the programmer is faced with many questions and has many decisions to make, such as: compiler choice, build system choice, how to validate that the code is correct, what is the minimum code necessary to run existing unittests, how portable is phobos, and many others. +

+ +

In most cases, the answers are specific to the target platform, but knowing which questions will need answers can be a big help during the planning phase. During the implementation phase, having an idea how far away from the final goal is essential, both from planning and psychological/morale point of view. +

+ +

The presentation describes the porting of D language to an unnamed game console platform (*) which was done by Igor Česi at Ubisoft during autumn / winter 2017. In the form of an experience report it will describe: +

  1. How to choose and then build the compiler for the target platform
  2. +
  3. Build system options
  4. +
  5. Porting druntime
  6. +
    • Bootstrapping
    • +
    • A road to unittests
    • +
    • Filling the gaps
    • +
    +
  7. Porting phobos
  8. +
    • The easy part and low hanging fruits
    • +
    • The hard part (platform specificities; the devil is in the details)
    • +
    • Useful tips and tricks
    • +
    +
+ +(*) The reason to avoid specifically naming the target platform is the NDA agreement signed with the platform owner. This should have a positive impact on the content of the presentation as it forces the content to be more generic; it is not expected many people +will do exactly the same port. +

+ +

Speaker Bio: +

Igor Česi is a senior programmer at Ubisoft Paris studio where he helped making 10+ games including multiple titles in Ghost Recon and Just Dance franchises. The latest game he participated in making is Mario+Rabbids Kingdom Battle. He's been programming in C++ for the last 20 years. After following D from a 'distance' for many years and thanks to guys from Remedy Entertainment who proved that D on gaming consoles is possible, he is trying to introduce the D language to programming teams in Ubisoft Paris studio. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/cesi.pdf b/docs/2018/talks/cesi.pdf new file mode 100644 index 00000000..160d2faa Binary files /dev/null and b/docs/2018/talks/cesi.pdf differ diff --git a/docs/2018/talks/code.engelen.dconf_asan.d b/docs/2018/talks/code.engelen.dconf_asan.d new file mode 100644 index 00000000..0d710d2f --- /dev/null +++ b/docs/2018/talks/code.engelen.dconf_asan.d @@ -0,0 +1,22 @@ +class A { + int i; +} + +void inc(A a) { + a.i += 1; // Line 6 +} + +auto makeA() { // Line 9 + import std.algorithm : move; + // "scope" allocates object on the stack instead of the heap + scope a = new A(); + return move(a); +} + +void main() { + auto a = makeA(); + a.inc(); // Line 18 +} + +// ~/ldc/ldc2-1.9.0-osx-x86_64/bin/ldc2 -g -fsanitize=address dconf_asan.d +// ASAN_OPTIONS=detect_stack_use_after_return=1 ./dconf_asan 2>&1 | ddemangle \ No newline at end of file diff --git a/docs/2018/talks/code.engelen.dconf_fuzz.d b/docs/2018/talks/code.engelen.dconf_fuzz.d new file mode 100644 index 00000000..a3bb0a19 --- /dev/null +++ b/docs/2018/talks/code.engelen.dconf_fuzz.d @@ -0,0 +1,22 @@ +// RUN: ~/ldc/ldc2-1.9.0-osx-x86_64/bin/ldc2 -g -fsanitize=fuzzer dconf_fuzz.d + +import ldc.libfuzzer; + +// Set "fuzzMe" as fuzz entry point +mixin DefineTestOneInput!fuzzMe; + +int fuzzMe(in ubyte[] data) +{ + // Test that the first and Nth element are '<' and '>', + // and that two chars in the middle are equal. + enum N = 10; + if (data.length >= N && + data[0] == '<' && + data[N/2] == data[N/2+1] && + data[N] == '>') + { + return 1; + } + + return 0; +} diff --git a/docs/2018/talks/code.engelen.fuzz_dxml.d b/docs/2018/talks/code.engelen.fuzz_dxml.d new file mode 100644 index 00000000..5d694944 --- /dev/null +++ b/docs/2018/talks/code.engelen.fuzz_dxml.d @@ -0,0 +1,23 @@ +// RUN: ~/ldc/ldc2-1.9.0-osx-x86_64/bin/ldc2 -g -i -fsanitize=fuzzer fuzz_dxml.d + +import ldc.libfuzzer; +mixin DefineTestOneInput!fuzzMe; + +int fuzzMe(in ubyte[] data) +{ + import dxml.parser; + try + { + int sum; + auto range = parseXML(cast(char[])data); + foreach (elem; range) { + // Do something unpredictable to actually test the parser + sum += cast(int) elem.type; + } + return sum > 1; + } + catch (XMLParsingException) + { + return 0; + } +} diff --git a/docs/2018/talks/davis.html b/docs/2018/talks/davis.html new file mode 100644 index 00000000..b12905bc --- /dev/null +++ b/docs/2018/talks/davis.html @@ -0,0 +1,95 @@ + + + + + + + +DConf 2018 speaker: Jonathan M. Davis + + + + + + +
+ +
+

Overview of dxml and Lessons Learned

+
+

Jonathan M. Davis
+ May 4 @ 12:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

dxml is an XML parsing library written in D which heavily uses +common D idioms such as ranges. This talk will go over its design, the challenges encountered in implementing it, and lessons learned in the process. +

+ +

Description

+ +

This talk will go over how and why dxml came into existence and how its design evolved. It will go over some of the fundamental issues with using ranges when parsing XML and how those were solved (for a while, it actually presented a cursor API rather than a range API due to some of those issues). At least some of those lessons learned seem like they would be quite applicable beyond XML and of value to the D community at large in figuring out how to go about making an API range-based. At the time of writing, dxml currently only has a range-based STaX parser and related helper functions, but there should be plenty there to talk about. However, future development that is done between now and dconf could definitely affect what makes it into the talk (a DOM parser using the STaX parser is planned as are two XML writers - one which is the writer equivalent of a STaX parser and one which is DOM-based). Given the fact that std.xml needs to be replaced, dxml may or may not end up going through the Phobos review process (that will largely depend on community feedback) and ultimately end up in Phobos (that will of course depend on how the review process goes), so having a talk go over it is potentially valuable from that angle as well. +

+ +

Links to the source and documentation can be found here: + +http://jmdavisprog.com/projects.html +

+ +

Speaker Bio: +

Jonathan M Davis is the primary author of std.datetime and one of Phobos' core contributors. He is a professional developer and has experience in a number of programming languages, including C++, Haskell, Java, and D. For better or worse, he's well known in the D community for answering questions and being long-winded. He currently resides in Utah. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/davis.pdf b/docs/2018/talks/davis.pdf new file mode 100644 index 00000000..3d05c417 Binary files /dev/null and b/docs/2018/talks/davis.pdf differ diff --git a/docs/2018/talks/degenhardt.html b/docs/2018/talks/degenhardt.html new file mode 100644 index 00000000..08a5e360 --- /dev/null +++ b/docs/2018/talks/degenhardt.html @@ -0,0 +1,93 @@ + + + + + + + +DConf 2018 speaker: Jon Degenhardt + + + + + + +
+ +
+

Exploring D via Benchmarking of eBay's TSV Utilities

+
+

Jon Degenhardt
+ May 2 @ 12:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PDF
+ (Video lost) +

+
+
+

Abstract:  +

Over the past year I have conducted several performance studies based on eBay's TSV Utilities. One study was a comparative benchmark of similar tools written in different programming languages. A second study examined the impact of using Link Time Optimization and Profile Guided Optimization. This talk will describe the goals and motivations behind these studies, summarize the results, and offer a few thoughts on the findings. The talk will conclude with an update to the March 2017 comparative benchmark study. +

+ +

Description

+ +

The focus of the talk is run-time performance, but performance is only one consideration when examining a programming environment. This talk will describe the larger context under which these studies were conducted, how this influenced the studies, the way the code was written, and the takeaways. Indeed, the results of the first two benchmarks studies have been described before. The TSV Utilities GitHub repository contains results of the March 2017 comparative study. The comparative benchmarks and the LTO study have been presented at Silicon Valley D meetups. This talk will summarize these studies, highlighting the key results, but won't go into the same depth as the other venues. Having a set of standard set of benchmarks has had value outside of the evaluation itself, these benefits will also be covered in the talk. +

+ +

The benchmark studies themselves have interesting results. TSV Utilities performance compares quite well +to other tools, in many cases running several times faster. The LTO and PGO studies showed significant gains. The comparative benchmarks update will be conducted prior to DConf and will be new information. +

+ +

Speaker Bio: +

Jon Degenhardt is a senior member of eBay's Search Science team. He has been working on search engines for the last decade, both on the core search engine as well as the data science driving recall and ranking. His work includes substantial involvement in search engine performance. He started programming in D in late 2015. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/dilly.html b/docs/2018/talks/dilly.html new file mode 100644 index 00000000..0d3eff17 --- /dev/null +++ b/docs/2018/talks/dilly.html @@ -0,0 +1,89 @@ + + + + + + + +DConf 2018 speaker: Stephan Dilly + + + + + + +
+ +
+

Building a Scalable Webapp with Angular and D

+
+

Stephan Dilly
+ May 2 @ 14:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Beginner/Intermediate
+ + Slides: at live-ask
+ Video
+

+
+
+

Abstract:  +

The talk is about live-ask.com, a realtime feedback web application. The audience will hear about the journey to build a modern web app using Angular in the frontend and D in the backend. We will shed light on the advantages of D and why it has so much potential in the web space. +

+ +

Description

+ +

When starting the implementation of live-ask.com based on Angular it was natural to use nodejs as the driving backend technology at first. When the application got bigger and the backend more sophisticated it was switched to D. Vibe.d as the framework builds on the same principles like nodejs: event driven IO. Converting to D introduced strong typing, native unittesting, meta programming and more. It improved DRYness, convenience and performance. It allowed me to focus on building a more complex architecture that runs in a scalable, resilient and cost efficient environment on Amazon AWS. The implementation is unittested and integration tested, the CI and CD pipeline smoothly allows it to publish changes in a matter of minutes to the live environment. Aside all the glory features we will also look at the downsides like missing API libraries, convenience tools and compile times. +

+ +

Speaker Bio: +

Stephan Dilly is the head of engineering at InnoGames. With over 10 years of professional software developmentexperience, he has worked as a consultant and engineer for top gaming companies including Funatics and Ubisoft Bluebyte. Before joining InnoGames, Stephan developed games in the front-end and back-end domain on titles like "The Settlers", "Tom Clancy’s Endwar" and "Assassin’s Creed Identity". Now, he focuses on front-end technology at InnoGames and shapes the strategy for mobile-only games using modern game engines. Stephan aka ’Extrawurst’ is an active member in the D community since 2007, he contributed to books like "The D Programming Language" by Andrei Alexandrescu and ”Web Development in D” by Kai Nacke. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/engelen.html b/docs/2018/talks/engelen.html new file mode 100644 index 00000000..4f9e7a1e --- /dev/null +++ b/docs/2018/talks/engelen.html @@ -0,0 +1,84 @@ + + + + + + + +DConf 2018 speaker: Johan Engelen + + + + + + +
+ +
+

LLVM-backed goodies in LDC

+
+

Johan Engelen
+ May 4 @ 11:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ + Slides: PDF, dconf_asan.d, dconf_fuzz.d, fuzz_dxml.d
+ Video
+

+
+
+

Abstract:  +

A major part of LDC development is related with LLVM development. The LDC team closely follows (and contributes to) LLVM development, in order to expose the "latest and greatest" LLVM features to D developers. Since last DConf, LDC gained many new LLVM-based capabilities: AddressSanitizer, fuzzing, IR-based PGO, dynamic codegen at runtime, experimental integration of LLD, better integration of LLVM's compiler-rt runtime libraries. In this talk, I will focus on a selection of LDC's LLVM-based features: what they do and how they work, with examples of how they can be used effectively. +

+ +

Speaker Bio: +

Johan Engelen is one of the core LDC developers. He is also a D compiler consultant for Weka.io (probably the largest industrial single-executable D codebase) and maintains and adds features to their fork of LDC. While working on LDC, he often studies the compiler output IR and assembly. To aid this, he helped setting up LDC at d.godbolt.org. Examples of his recent contributions to LDC related to LLVM functionality are: fuzzing with libFuzzer, better AddressSanitizer support, and IR-based PGO. Johan (PhD Electrical Engineering) is assistant professor in the Robotics and Mechatronics (RAM) group at the University of Twente, the Netherlands. His software engineering skills stem largely from participating in open source communities such as Inkscape, LLVM, Dlang, and LDC. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/engelen.pdf b/docs/2018/talks/engelen.pdf new file mode 100644 index 00000000..f016fe7e Binary files /dev/null and b/docs/2018/talks/engelen.pdf differ diff --git a/docs/2018/talks/funkwerk.html b/docs/2018/talks/funkwerk.html new file mode 100644 index 00000000..22243e57 --- /dev/null +++ b/docs/2018/talks/funkwerk.html @@ -0,0 +1,113 @@ + + + + + + + +DConf 2018 speaker: Mario Kröplin, Stefan Rohe + + + + + + +
+ +
+

A Decade of D @ Funkwerk

+
+ + + + +
Mario Kröplin
Mario Kröplin
+ + + + +
Stefan Rohe
Stefan Rohe
+

Mario Kröplin, Stefan Rohe
+ May 2 @ 11:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ + Slides: PDF
+ (Video lost) +

+
+
+

Abstract:  +

Funkwerk's journey with D from 2008 until now. +

+ +

Description

+ +

We will roughly summarize our experiences from 10 years of fun and pain with D. + +Topics include: +

+ +

Speaker Bio: +

Mario Kröplin is a software architect at the German company Funkwerk. At the location near Munich, Funkwerk develops passenger +information systems, which are in operation at railway companies throughout Europe. In 2008 they started using D and since then, +D has been the means of choice for all new development. Mario (linkrope) is also the author of D tools and frameworks that are +in daily use at Funkwerk. +

+ +

Stefan Rohe is thrilled about Clean D Code and transformed Funkwerk into a D-shop by introducing D into green- and brownfield projects. Funkwerk being the first commercial adopter of D makes Stefan is the first commercial D programmer. Next to his work at Funkwerk he organizes the local community. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/funkwerk.pdf b/docs/2018/talks/funkwerk.pdf new file mode 100644 index 00000000..41c4ae5f Binary files /dev/null and b/docs/2018/talks/funkwerk.pdf differ diff --git a/docs/2018/talks/hackathon1.html b/docs/2018/talks/hackathon1.html new file mode 100644 index 00000000..3a4bd020 --- /dev/null +++ b/docs/2018/talks/hackathon1.html @@ -0,0 +1,100 @@ + + + + + + + +DConf 2018 speaker: Everybody + + + + + + +
+ +
+

Hackathon Morning Session

+
+

Everybody
+ May 5 @ 11:00


Duration: 2 hours
+ Talk type: Hackathon
+ Level: All
+ + + +

+
+
+

Abstract:  + +

The D conference will not end after the three days of talks, but will continue into a fourth day for our 2nd annual Hackathon! +Collaborate with fellow D hackers to make the D community a better place.

+ +

Description

+ +

The first DConf Hackathon resulted in, to quote Walter Bright, "A tsunami of pull requests". From work on core D features like the initial implementation of static foreach and the splitting up of std.datetime into multiple modules, to hacking on third-party projects like iopipe and dub, people worked alone or in groups to fix bugs and implement improvements. Others hashed out ideas, like the group that focused on bringing D to the GPU. Still others took their time to act as tutors, helping fellow D hackers improve their D skillset. +

+ +

This year, we aim to repeat our success, with two key differences: we're kicking off the Hackathon morning session with an extra talk and we're opening the doors to those who weren't able to make it to the full conference! +

+ +

WekaIO's Shachar Shemesh will get us started with a Hackathon keynote announcing the company's new open source library. That should give some Hackathon attendees something to focus on if they come in with no concrete plans! +

+ +

Additionally, for those in the vicinity who want to attend but are unable to get away for the full conference, we're opening the doors to you free of charge. Come hear Shachar's talk, find some help for your project or contribute to another, and enjoy mingling with the D community. We only ask that you please bring your own lunch and be prepared to have an enjoyable day! +

+ +

If you have the bought the full registration, we hope you stick around. If you're unable to attend the full conference and are looking for a fun way to spend your Saturday, we hope you join us. Who knows where the day will take you? +

+ +
+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/hackathon2.html b/docs/2018/talks/hackathon2.html new file mode 100644 index 00000000..7069b49c --- /dev/null +++ b/docs/2018/talks/hackathon2.html @@ -0,0 +1,100 @@ + + + + + + + +DConf 2018 speaker: Everybody + + + + + + +
+ +
+

Hackathon Afternoon Session

+
+

Everybody
+ May 5 @ 14:30


Duration: 4 hours
+ Talk type: Hackathon
+ Level: All
+ + + +

+
+
+

Abstract:  + +

The D conference will not end after the three days of talks, but will continue into a fourth day for our 2nd annual Hackathon! +Collaborate with fellow D hackers to make the D community a better place.

+ +

Description

+ +

The first DConf Hackathon resulted in, to quote Walter Bright, "A tsunami of pull requests". From work on core D features like the initial implementation of static foreach and the splitting up of std.datetime into multiple modules, to hacking on third-party projects like iopipe and dub, people worked alone or in groups to fix bugs and implement improvements. Others hashed out ideas, like the group that focused on bringing D to the GPU. Still others took their time to act as tutors, helping fellow D hackers improve their D skillset. +

+ +

This year, we aim to repeat our success, with two key differences: we're kicking off the Hackathon morning session with an extra talk and we're opening the doors to those who weren't able to make it to the full conference! +

+ +

WekaIO's Shachar Shemesh will get us started with a Hackathon keynote announcing the company's new open source library. That should give some Hackathon attendees something to focus on if they come in with no concrete plans! +

+ +

Additionally, for those in the vicinity who want to attend but are unable to get away for the full conference, we're opening the doors to you free of charge. Come hear Shachar's talk, find some help for your project or contribute to another, and enjoy mingling with the D community. We only ask that you please bring your own lunch and be prepared to have an enjoyable day! +

+ +

If you have the bought the full registration, we hope you stick around. If you're unable to attend the full conference and are looking for a fun way to spend your Saturday, we hope you join us. Who knows where the day will take you? +

+ +
+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/jercaianu.html b/docs/2018/talks/jercaianu.html new file mode 100644 index 00000000..bd1ab1bb --- /dev/null +++ b/docs/2018/talks/jercaianu.html @@ -0,0 +1,88 @@ + + + + + + + +DConf 2018 speaker: Alexandru Jercaianu + + + + + + +
+ +
+

Project Blizzard: safe memory allocation and deallocation

+
+

Alexandru Jercaianu
+ May 4 @ 16:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Intermediate
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

Fostering memory safe code is a key goal of the D language. However, as its predecessors have proven, manual memory management is highly incompatible with this world view. Dangling pointers and use-after-free can not only lead to memory corruption, but also to various security exploits. It is high time to put the allocator modules to good work and devise a way to have safe manual memory management, at negligible cost of performance. +

+ +

This talk will show how to compose the existing memory allocators in the D standard library, together with innovative techniques such as type reusabililty, to create a safe alternative to the traditional "malloc". +

+ +

Speaker Bio: +

Alex is currently a MSc student and teaches “Operating Systems" at the Polytechnic University of Bucharest. He has a strong interest in low level programming and for the past couple of months he has been working on D’s experimental allocators. In order to build a stronger D +community at his university, part of his efforts go to helping several students bring their contributions to the language. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/jercaianu.pdf b/docs/2018/talks/jercaianu.pdf new file mode 100644 index 00000000..159bdb34 Binary files /dev/null and b/docs/2018/talks/jercaianu.pdf differ diff --git a/docs/2018/talks/kroeplin.html b/docs/2018/talks/kroeplin.html new file mode 100644 index 00000000..db31b30a --- /dev/null +++ b/docs/2018/talks/kroeplin.html @@ -0,0 +1,85 @@ + + + + + + + +DConf 2018 speaker: Mario Kröplin + + + + + + +
+ +
+

+
+

Mario Kröplin
+ May 2 @ 11:00


Duration: 50 minutes
+ Talk type: Presentation
+ Level: All
+ + + +

+
+
+

Abstract: 

+ +

Speaker Bio: +

Mario Kröplin is a software architect at the German company Funkwerk. At the location near Munich, Funkwerk develops passenger +information systems, which are in operation at railway companies throughout Europe. In 2008 they started using D and since then, +D has been the means of choice for all new development. Mario (linkrope) is also the author of D tools and frameworks that are +in daily use at Funkwerk. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/le.html b/docs/2018/talks/le.html new file mode 100644 index 00000000..e3bb7104 --- /dev/null +++ b/docs/2018/talks/le.html @@ -0,0 +1,95 @@ + + + + + + + +DConf 2018 speaker: Vang Le + + + + + + +
+ +
+

Adoption of D for genomic bioinformatics

+
+

Vang Le
+ May 4 @ 15:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Beginner/Intermediate
+ + Slides: PDF
+ Video
+

+
+
+

Abstract:  +

Bioinformatics is a young, fast growing area of computer science. It is among the big-data areas that are most demanding in computation resources. Algorithms and tools are being actively researched and developed to utilize unprecedentedly huge amount of data, which is becoming cheaper and cheaper to collect. Genomics projects produces mostly plain texts saved in compressed file formats. +

+ +

Genomics laboratories can easily produce from dozens of terabytes, to petabytes of data every year. This poses great challenges to both storing and analyzing of data. While hardware (for computation and storage) is rather generic across all application areas, software tools are very specifically developed and used for a particular area. There are currently not many software pieces written in D for bioinformatics. However, D makes a very attractive candidate for use in bioinformatics. On-par performance to C, modern and readable syntax with plenty of syntactic sugars, built-in unit test, ability to both generate a single binary executable and support scripting, and elegant support for parallel computing are among the most appreciated features of D, especially to a C++ or scripting language programmer. +

+ +

In this talk we present our experience in adopting D for genomic bioinformatics, with some benchmarks and evaluation of how easy or difficult to do some common bioinformatic tasks in D. We discuss current status and potentials of the D-bioinformatics relationship. +

+ +

Description

+ +

We describe here our experience in adopting D for genomics bioinformatics. We also present our envision about applicability of D for bioinformatics. It is also an opportunity to explain the essence of bioinformatics (its input data, fundamental algorithms and output). This allows prospective bioinformatician, probably some current D programmers, to evaluate the requirements and a sense of what it takes and gives to work in bioinformatics. We will finish with discussions about what we and D can do more for bioinformatics. +

+ +

Speaker Bio: +

Dr. Vang Le focused on physics during his high-school years, but spent his university career in molecular biology. Computer science and programming were always a secret hobby. He got a Postdoc job in Denmark which required both molecular biology and computer science. This gave birth to a full-time bioinformatician job where he openly combine his passions for computer science and curiosity for living things. He currently works in Aalborg University Hospital as a clinical bioinformatician, where he is key in establishing bioinformatic infrastructure and routine analysis workflows to deal with the great amount of data from next generation sequencing (NGS) machines. He has great opportunities to set up computer clusters for storage and computation and to learn many cutting edge technologies. He sees D as a great alternative to C and C++ and predicts it will one day enjoy a level of popularity (particularly in bioinformatics) comparable to C, C++, Java, or Python. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/le.pdf b/docs/2018/talks/le.pdf new file mode 100644 index 00000000..c3544264 Binary files /dev/null and b/docs/2018/talks/le.pdf differ diff --git a/docs/2018/talks/leroy.html b/docs/2018/talks/leroy.html new file mode 100644 index 00000000..f5af8d54 --- /dev/null +++ b/docs/2018/talks/leroy.html @@ -0,0 +1,92 @@ + + + + + + + +DConf 2018 speaker: Jean-Louis Leroy + + + + + + +
+ +
+

Open Methods for D (The Expression Problem - solved)

+
+

Jean-Louis Leroy
+ May 3 @ 15:30


Duration: 50 minutes
+ Talk type: Presentation
+ Level: Beginner/Intermediate
+ + Slides: at GitHub
+ Video
+

+
+
+

Abstract:  +

Open methods are an alternative to traditional Object-Oriented Programming. In OOP polymorphism is typically implemented via virtual member functions. This makes it difficult to add new behavior to existing hierarchies of classes - the so called Expression problem. This leads to designs that are either flawed (God classes) or clumsy (the Visitor pattern). Open methods are virtual functions defined outside of classes. This solves the Expression problem and more. Open methods can be implemented in D as a library. By using a combination of compile- and run-time techniques, it is possible to deliver an elegant +syntax and a performance similar to native virtual functions. +

+ +

Outline (tentative) +

+ +

Speaker Bio: +

Jean-Louis Leroy is the author of the openmethods module. He got his first taste of programming from a HP-25 calculator. His first real programming language was Forth, where CTFE is pervasive. Later he programmed (a little) in Lisp and Smalltalk, and (a lot) in C, C++, and Perl. He now works for Bloomberg LP in New York. His interests include object-relational mapping, open multi-methods, DSLs, and language extensions in general. +

+ +
 
+
Partner/Host
+ +
QA Systems
+ Organizer
+ +
HLMC
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/2018/talks/lightning.html b/docs/2018/talks/lightning.html new file mode 100644 index 00000000..d22d5ae4 --- /dev/null +++ b/docs/2018/talks/lightning.html @@ -0,0 +1,93 @@ + + + + + + + +DConf 2018 speaker: Multiple Speakers + + + + + + +
+ +
+

Lightning Talks

+
+

Multiple Speakers
+ May 2 @ 17:30


Duration: 60 minutes
+ Talk type: Presentation
+ Level: All
+ + + (Individual video links below) +

+
+
+

Abstract:  +$(UL +

  • Gautam Kotian: Large Numbers
  • +
  • Dragos Carp: Protobuf 3 with D
  • +
  • Jean-Louis Leroy: Mixins vs Lisp Macros
  • +
  • Andreas Reischuck: Values as Types
  • +
  • Stefan Koch: Update on newCTFE
  • +
  • Bogdan Szabo: Trial - The extensible test runner for DLang
  • +
  • Walter Fil: Array Language Development
  • +
  • Shachar Shemesh: Announcing Mecca Briefly (Click for full version) +
  • Simon Lynx: Lynx Game
  • +
  • Nicholas Wilson: DCompute Update
  • +

    + +

    Speaker Bio: +

    Multiple Speakers

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/marques.html b/docs/2018/talks/marques.html new file mode 100644 index 00000000..236ddf34 --- /dev/null +++ b/docs/2018/talks/marques.html @@ -0,0 +1,114 @@ + + + + + + + +DConf 2018 speaker: Luís Marques + + + + + + +
    + +
    +

    Beyond OOP: A Case Study

    +
    +

    Luís Marques
    + May 3 @ 14:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Beginner
    + + Slides: PDF
    + Video
    +

    +
    +
    +

    Abstract:  +

    What makes for good software architecture? How should we design our programs? While much has been written about these topics, the answers rarely take into account D's differentiating features. Specifically, most contemporary software design advice assumes an object-oriented programming (OOP) mindset, leaving unexplored the breadth of possibilities allowed by a flexible, multi-paradigm language like D. +

    + +

    This talk has two parts. In the first part we identify an apparent contradiction imposed by the OOP design school. We analyze that contradiction in detail, with the goal of understanding its root cause and finding ways to avoid it. In the second part we take what we learned and go over how to design a program from scratch. We use the modeling power of D to achieve the desired architectural properties: simplicity, performance, and malleability. +

    + +

    Description

    + +

    This talk presents a way to design and implement software that departs from the orthodox advice and practices. Yet, it does not present a radically new idea. Instead, we build upon a collection of insights identified by several others, and synthesize a coherent approach that tries to balance competing priorities. In many ways, we use the more avant-garde D features to go back to a simple but expressive style, free from complicated inheritance hierarchies, tangled object graphs, and rococo design patterns. +

    + +

    In the first part of the talk we comment on the following topics: +

    + +

    In the second part of the talk we study the design of Simbool, an educational application used to design and simulate digital logic circuits. We touch upon the following topics: +

    + +

    Speaker Bio: +

    I am a generalist programmer, with a good grasp of computer architecture. I have always been interested in the design of clean solutions for difficult programming problems, but there is something to be said about just bashing the problem in the head with some systems programming. In any case, the number of CPU cycle casualties has decreased dramatically since we introduced our unit of tactical rangers, generic ammunition and mental training by introspection. +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/marques.pdf b/docs/2018/talks/marques.pdf new file mode 100644 index 00000000..b9d33c3b Binary files /dev/null and b/docs/2018/talks/marques.pdf differ diff --git a/docs/2018/talks/nacke.html b/docs/2018/talks/nacke.html new file mode 100644 index 00000000..ab0bf474 --- /dev/null +++ b/docs/2018/talks/nacke.html @@ -0,0 +1,90 @@ + + + + + + + +DConf 2018 speaker: Kai Nacke + + + + + + +
    + +
    +

    D for the Blockchain

    +
    +

    Kai Nacke
    + May 2 @ 16:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + Slides: PDF
    + Video
    +

    +
    +
    +

    Abstract:  +

    Write blockchain applications leveraging the power of D. +

    + +

    Description

    + +

    Blockchain is the latest emerging technology. Basically, a blockchain is a secure, distributed ledger, allowing a lot of applications beyond crypto currencies. Hyperledger Fabric is one of the frameworks which implements blockchain technology in a way well suited for business purposes. Mainly written in the Go programming language it seems not to be a good fit for a D programmer. In this talk I give a short introduction to the concepts of blockchain and the Hyperledger Fabric ecosystem. I point out the integration challenges and missing building +blocks a D programmer is facing in this environment. By presenting different approaches, I highlight the design decisions I have made for my solution. With my implementation it is now possible to write blockchain applications from the UI down to the chaincode (smart contracts) in D. +

    + +

    Speaker Bio: +

    Kai Nacke is a professional IT architect. In his spare time he likes to develop open source applications. He is the current maintainer of LDC, the LLVM-based D compiler, and a committer of the LLVM project. His contributions to LDC include ports to different CPU architectures and operating systems. Another interest of him is using D for business applications. He is the developer of the D bindings for SAP. Besides programming he is also the author of "D Web Development" and a speaker at the Free and Open Source Software Developers' European Meeting (FOSDEM). +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/nacke.pdf b/docs/2018/talks/nacke.pdf new file mode 100644 index 00000000..5892c920 Binary files /dev/null and b/docs/2018/talks/nacke.pdf differ diff --git a/docs/2018/talks/nitu.html b/docs/2018/talks/nitu.html new file mode 100644 index 00000000..3585ca67 --- /dev/null +++ b/docs/2018/talks/nitu.html @@ -0,0 +1,87 @@ + + + + + + + +DConf 2018 speaker: Razvan Nitu + + + + + + +
    + +
    +

    ExposeD - the war stories of an aspiring D compiler developer

    +
    +

    Razvan Nitu
    + May 3 @ 16:30


    Duration: 25 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + + Video
    +

    +
    +
    +

    Abstract:  +

    Razvan Nitu has been taking part in the development effort of the D compiler for one and a half years. During this period he has been involved in almost all the activities that such a task requires: implementation of language features, language design, writing documentation, reading specifications, solving bugs, refactorization etc. +

    + +

    The talk will delve into the struggles of a rookie compiler developer trying to leave his mark and make D a better language for everyone. Key aspects of the development process will be exposed via an overview of the most important projects that the author has worked on: D language compiler as a library, lambda comparison, and postblit qualifier paradox. If you have ever wondered about the perks of being a compiler contributor then this is the talk for you. +

    + +

    Speaker Bio: +

    Razvan Nitu is a PhD student and teaching assistant at University POLITEHNICA of Bucharest, Romania. He is passionate about compilers and operating systems and talking about himself is not one of his skills. +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/odersky.html b/docs/2018/talks/odersky.html new file mode 100644 index 00000000..a1b57ebc --- /dev/null +++ b/docs/2018/talks/odersky.html @@ -0,0 +1,88 @@ + + + + + + + +DConf 2018 speaker: Martin Odersky + + + + + + +
    + +
    +

    How To Abstract Over Context

    +
    +

    Martin Odersky
    + May 4 @ 10:00


    Duration: 50 minutes
    + Talk type: Keynote
    + Level: All
    + + Slides: PPTX
    + Video
    +

    +
    +
    +

    Abstract:  +

    Programming is fundamentally about abstraction. Without abstraction +we'd all be still programming in assembly language. A very important part of programming is context - to understand a program text one must also understand the environment including "other code" in which the program fragment is to be executed. So, can we abstract over context? And should we be doing that? +

    + +

    In fact, abstracting over context seems to be important, because it is the core of a large variety of programming techniques, including "monkey patching", dependency injection frameworks, dynamic scoping, receiver functions, type classes, the reader monad, the cake pattern, etc. Some of these techniques are more ad-hoc than others. In my talk I will argue that implicit parameters as they are found in Scala are a canonical way to express context and that implicit function types are the right way to abstract over it. +

    + +

    Speaker Bio: +

    Martin Odersky is the inventor of the Scala language, a professor at EPFL in Lausanne, Switzerland, and a founder of Lightbend. His work concentrates on the fusion of functional and object-oriented programming. He believes the two paradigms are two sides of the same coin, to be unified as much as possible. To prove this, he has worked on a number of language designs, from Pizza to GJ to Functional Nets. He was named an ACM fellow for his achievements in this area. He has also influenced the development of Java as a co-designer of Java generics and as the original author of the current javac reference compiler. +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/odersky.pptx b/docs/2018/talks/odersky.pptx new file mode 100644 index 00000000..224a7f2f Binary files /dev/null and b/docs/2018/talks/odersky.pptx differ diff --git a/docs/2018/talks/olshansky.html b/docs/2018/talks/olshansky.html new file mode 100644 index 00000000..218b8e0b --- /dev/null +++ b/docs/2018/talks/olshansky.html @@ -0,0 +1,113 @@ + + + + + + + +DConf 2018 speaker: Dmitry Olshansky + + + + + + +
    + +
    +

    Unified Concurrent Runtime for D

    +
    +

    Dmitry Olshansky
    + May 3 @ 11:00


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + Slides: PDF
    + Video
    +

    +
    +
    +

    Abstract:  +

    D happens to have a great deal of ways to do incompatible things especially when it comes to I/O and system interface in general. here is a zoo of incompatible approaches: +

    + +And it's not a difference that is easy to wrap away. +

    + +

    The talk is presenting experimental work being done to have C libraries respect D's Fibers, goes beyond I/O and finally discusses a unified view of D's concurrency primitives. +

    + +

    Description

    + +

    The talk is based on results of a joint work with Alexandru Caciulescu. The talks aims to present a simple coherent runtime via a model of light user-mode threads (UMT), where I/O and blocking system calls are handled efficiently by the runtime, which maintains an event-loop. +

    + +$(P +Then we see how can implement such a model where even 3rd party C code behaves well when called from UMT. A very different approaches lead to radically different internal designs for Windows and Linux, which however (with a few considerations) are nicely fitting in our model. + +

    The performance of the prototype is benchmarked against the baseline on a few typical applications. +

    + +

    The second part of the talk is focused on D itself and things like: +

    + +

    Speaker Bio: +

    Dmitry Olshansky is a young all-around researcher and software engineer. He's been a long-time D language contributor with his most notable contributions being the std.regex and std.uni modules of the standard library. Aside from everything D-related, his main interests are compilers, runtimes, text processing, parallel and +concurrent programming, scalable network systems and AI. +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/olshansky.pdf b/docs/2018/talks/olshansky.pdf new file mode 100644 index 00000000..d917424b Binary files /dev/null and b/docs/2018/talks/olshansky.pdf differ diff --git a/docs/2018/talks/panel.html b/docs/2018/talks/panel.html new file mode 100644 index 00000000..b8bd4058 --- /dev/null +++ b/docs/2018/talks/panel.html @@ -0,0 +1,96 @@ + + + + + + + +DConf 2018 speaker: Andrei Alexandrescu, Walter Bright + + + + + + +
    + +
    +

    Ask us Anything!

    +
    + + + + +
    Andrei Alexandrescu
    Andrei Alexandrescu
    + + + + +
    Walter Bright
    Walter Bright
    +

    Andrei Alexandrescu, Walter Bright
    + May 2 @ 17:30


    Duration: 50 minutes
    + Talk type: Panel
    + Level: All
    + + + Video
    +

    +
    +
    +

    Abstract:  +

    Ready your pitchforks and rotten fruit! Prepare your rose petals and candy! But most of all, sort your queries! This is your chance to raise your hand and ask D's maintainers directly to fill you in on the things about D and the ecosystem that matter to you most. It's been a while since Walter and Andrei faced the unrestrained, unpredictable, and intelligent grilling the D community loves to bring them. Remind them how much fun it is! +

    + +

    Speaker Bio: +

    Andrei Alexandrescu coined the colloquial term "modern C++" (adapted from his award-winning book Modern C++ Design), used today to describe a collection of important C++ styles and idioms. He is also the coauthor (with Herb Sutter) of C++ Coding Standards and the author of The D Programming Language book. With Walter Bright, Andrei co-designed many important features of D and authored a large part of D's standard library. His research on Machine Learning and Natural Language Processing completes a broad spectrum of expertise. Andrei holds a Ph.D. in Computer Science from the University of Washington and a B.Sc. in Electrical Engineering from University "Politehnica" Bucharest. He works with the D Language Foundation. +

    + +

    Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/rohe.html b/docs/2018/talks/rohe.html new file mode 100644 index 00000000..4b2d0263 --- /dev/null +++ b/docs/2018/talks/rohe.html @@ -0,0 +1,82 @@ + + + + + + + +DConf 2018 speaker: Stefan Rohe + + + + + + +
    + +
    +

    +
    +

    Stefan Rohe
    + May 2 @ 11:00


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: All
    + + + +

    +
    +
    +

    Abstract: 

    + +

    Speaker Bio: +

    Stefan Rohe is thrilled about Clean D Code and transformed Funkwerk into a D-shop by introducing D into green- and brownfield projects. Funkwerk being the first commercial adopter of D makes Stefan is the first commercial D programmer. Next to his work at Funkwerk he organizes the local community. +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/schveighoffer.html b/docs/2018/talks/schveighoffer.html new file mode 100644 index 00000000..26511bcd --- /dev/null +++ b/docs/2018/talks/schveighoffer.html @@ -0,0 +1,89 @@ + + + + + + + +DConf 2018 speaker: Steven Schveighoffer + + + + + + +
    + +
    +

    How to convert your rusty old LAMP into a shiny new Vibe app.

    +
    +

    Steven Schveighoffer
    + May 2 @ 15:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Beginner/Intermediate
    + + Slides: PDF
    + Video
    +

    +
    +
    +

    Abstract:  +

    Do you like programming in PHP? Me neither. This is why for the last year I have been porting my company’s in-house tracking system from a LAMP (Linux/Apache/Mysql/PHP) application into a vibe.d application. I’ll share the techniques I am using in converting my application one piece at a time, including some of the trickier parts to get both sides to act somewhat seamlessly with each other. I will also showcase some of the best reasons to undertake such an endeavor. +

    + +

    Description

    + +

    My company's web application is an in-house “job tracking” system, essentially a bug tracker, but for actual sales and installation of our products. It was built from a now-defunct basic job-tracking system that used PHP and Smarty templates to render pages. In the first section, I’ll briefly discuss the basics of the PHP design, so you can get a feel for what needs to be done to convert such a beast. The next section will focus on getting Apache to serve both vibe.d pages and php pages interchangeably, so that you can change one piece at a time. I’ll go over how to configure php to have sessions that are readable from both sides, and the best way to communicate between the two sides. Finally, I’ll show some comparisons of how the vibe.d/diet version compares to the PHP/Smarty version, highlighting the advantages of using D, along with a demo of the two sites for comparison. If there is time, I plan on doing some research into some of the more common PHP web frameworks (e.g. Symfony, Laravel), to discuss how this technique can be used for them. +

    + +

    Speaker Bio: +

    Steven Schveighoffer has been hacking on D since 2007. He has numerous contributions to Phobos and Druntime, including the array runtime, and has written dcollections (a container library), and iopipe (a high-performance i/o pipeline library). He currently works at National Resource Management, in Massachusetts, where he is working on the subject of this talk — a hybrid php/vibe.d application that tracks sales and installations for the company (along with some other things). +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/schveighoffer.pdf b/docs/2018/talks/schveighoffer.pdf new file mode 100644 index 00000000..bbdc6faf Binary files /dev/null and b/docs/2018/talks/schveighoffer.pdf differ diff --git a/docs/2018/talks/shemesh.html b/docs/2018/talks/shemesh.html new file mode 100644 index 00000000..a0a460fe --- /dev/null +++ b/docs/2018/talks/shemesh.html @@ -0,0 +1,104 @@ + + + + + + + +DConf 2018 speaker: Shachar Shemesh + + + + + + +
    + +
    +

    Announcing Mecca

    +
    +

    Shachar Shemesh
    + May 5 @ 10:00


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate/Advanced
    + + Slides: PDF
    + Video
    +

    +
    +
    +

    Abstract:  +

    Weka.io is a small start-up company producing a hyper-scalable high performance software only (BYOH) storage system written in D. During our work we've created a rather rich set of run time support tools for our system that are not, on their own, related to our specific product, or even storage at large. Mecca is a stand-alone library providing those tools. This lecture goes over the highlights of what Mecca contains, and some cool uses for it. +

    + +

    Description

    + +

    Weka's code has to be as efficient as possible. We often manage to provide performance on par with non-distributed devices. To achieve this, we have to remove run-time costs wherever they happen. Mecca, therefor, is written for providing the comfort of D while still keeping extreme high performance low-latency operation. +

    + +

    Mecca contains three main areas of interest: +

    + +

    mecca.lib is a set of useful utilities for making programming in D easier, especially for the GC averse among us. They include support for no-GC exception throwing, easier and more verbose assertions, a D port of libdivide (quicker division when the divider is constant), direct OS memory management, time keeping without calling the OS and type wrappers for making the type system more granular. +

    + +

    mecca.containers is a set of no GC containers, replacing or augmenting the D types. +

    + +

    mecca.reactor is a fibers manager. In essence, the reactor is a user-land implementation of an OS scheduler. It manages fiber's readiness state, contains IO wrappers for performing seemingly blocking calls, contains the standard synchronization constructs (mutex, event etc.) and time based operations. +

    + +

    Speaker Bio: +

    Shachar (that's me) has been a programmer for over 3 decades. His experience includes heading Check Point's security response team, being a core developer on LiveU's video streaming device, and helping porting Akamai's code into a more modern software architecture. In between, Shachar has also worked on several open source projects, authoring such joys as rsyncrypto and fakeroot-ng, as well as such abominations as sshpass. Shachar even has credit for a one-liner in the vanilla Linux kernel, which still officially makes him a "Linux kernel contributer". +

    + +

    For the past 3½ years Shachar has been a D programmer at Weka.io, first writing its RAID subsystem, and recently fully engaged with the Mecca effort. +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/shemesh.pdf b/docs/2018/talks/shemesh.pdf new file mode 100644 index 00000000..96396fc3 Binary files /dev/null and b/docs/2018/talks/shemesh.pdf differ diff --git a/docs/2018/talks/staniloiu.html b/docs/2018/talks/staniloiu.html new file mode 100644 index 00000000..6bdf23f8 --- /dev/null +++ b/docs/2018/talks/staniloiu.html @@ -0,0 +1,87 @@ + + + + + + + +DConf 2018 speaker: Eduard Staniloiu + + + + + + +
    + +
    +

    Showcasing Collections

    +
    +

    Eduard Staniloiu
    + May 3 @ 17:00


    Duration: 25 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + + Video
    +

    +
    +
    +

    Abstract:  +

    This talk discusses work on generic collections that are safe, flexible, and allow type qualifiers, all while being consistent with the Range API, to provide a clean and intuitive experience to both new and experienced users alike. +

    + +

    We will identify and discuss some of the challenges of using custom allocators with qualified types and how we can overcome them to define our path to success. +

    + +

    Speaker Bio: +

    Eduard is a MSc student and Teaching Assistant at University "Politehnica" of Bucharest. He is a hard working student who enjoys to get his hands dirty. He likes learning new technologies and strengthening his current knowledge. He is passionate about computer science because we get to think about and tackle problems that we encounter on a daily basis and we are able to find solutions that help other people. His previous experience includes distributed systems and parallel programming, operating systems, basic kernel development, open-source software and basic Android programming. He is a Linux fan, a command line addict and a vim enthusiast. He hopes that through his work he will be able to help and improve the D language, which he is becoming so fond of. +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/watson.html b/docs/2018/talks/watson.html new file mode 100644 index 00000000..5bb72ffb --- /dev/null +++ b/docs/2018/talks/watson.html @@ -0,0 +1,84 @@ + + + + + + + +DConf 2018 speaker: Ethan Watson + + + + + + +
    + +
    +

    Binderoo - Wait, What Do You Mean You Quit Your Job?

    +
    +

    Ethan Watson
    + May 4 @ 14:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + Slides: PDF
    + Video
    +

    +
    +
    +

    Abstract:  +

    So you think Binderoo sounded pretty cool. And then you learn the maintainer left his job. What happens to Binderoo then? Simple: The open-sourced project lives on. Oh, and it gets some interesting new features that non-game-developers have been after. How does Linux support sound? What about C# interop? Join in and hear about the ways Binderoo has been improved and expanded, and some of the problems that were solved along the way. +

    + +

    Speaker Bio: +

    Back for round 3 at DConf, Ethan Watson is coming in without an employer. Having quit his job before the new year, he has spent some time in his fictional homeland of Australia (a land without squirrels must be fictional after all) working on his future career prospects. As a seasoned game developer with 15 years of experience across multiple platforms, he has also presented at GDC Europe and Reboot Develop. +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/watson.pdf b/docs/2018/talks/watson.pdf new file mode 100644 index 00000000..3d17b166 Binary files /dev/null and b/docs/2018/talks/watson.pdf differ diff --git a/docs/2018/talks/zvibel.html b/docs/2018/talks/zvibel.html new file mode 100644 index 00000000..6057f45b --- /dev/null +++ b/docs/2018/talks/zvibel.html @@ -0,0 +1,90 @@ + + + + + + + +DConf 2018 speaker: Liran Zvibel + + + + + + +
    + +
    +

    Using D as the programming language of choice for large scale primary storage system

    +
    +

    Liran Zvibel
    + May 4 @ 17:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: All
    + + Slides: PDF
    + Video
    +

    +
    +
    +

    Abstract:  +

    At Weka.IO we are leveraging D to build the fastest and most scalable file system, solving challenges that have been around IT for the last 20 years. We face strict resource constraints and the systems' performance has to beat competing appliance-based solutions written in C/C++ for latency and throughput. +

    + +

    This is our fifth year using D, and are about a year now “out of stealth”, with customer experience. This talk will go over our field experience using D, and comparing what we are doing with SW only to competing solutions that are hardware based (FPGA or otherwise accelerated). +

    + +

    Hopefully this will be a good reference point for engineers that want to start a new project in D when discussing with their managers and peers. +

    + +

    Speaker Bio: +

    Liran Zvibel is the Co-founder and CTO of WekaIO, the fastest and most scalable file system implemented in D. Prior to that he was the Co-Founder and VP R&D of Fusic, a video processing mobile/web based startup. Prior to that Liran was at XIV Storage (acquired by IBM in 2007) doing several architectural and leadership roles. Prior to that Liran served 6 years at the IDF, technologically leading a project that was awarded the most prestigious Israeli Defense Award, reaching a rank of Captain. Liran received his B.Sc. in Mathematics and Computer Sciences from the Tel Aviv University at the age of 18. +

    + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/talks/zvibel.pdf b/docs/2018/talks/zvibel.pdf new file mode 100644 index 00000000..933a4c64 Binary files /dev/null and b/docs/2018/talks/zvibel.pdf differ diff --git a/docs/2018/thankyou.html b/docs/2018/thankyou.html new file mode 100644 index 00000000..7305250e --- /dev/null +++ b/docs/2018/thankyou.html @@ -0,0 +1,72 @@ + + + + + + +The D Programming Language Conference 2018 + + + + + + + + + + +


    +

    Registration

    +

    Thanks! Your request was processed successfully. We look forward to seeing you in Munich!

    +

    Return to the DConf homepage.

    +
    + + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2018/venue.html b/docs/2018/venue.html new file mode 100644 index 00000000..5b690427 --- /dev/null +++ b/docs/2018/venue.html @@ -0,0 +1,84 @@ + + + + + + +The D Programming Language Conference 2018 + + + + + + + + + + +


    +

    Venue

    +

    Like to hit the snooze button a few times before a busy day at DConf? This year, you'll be able to hit it a couple of times more than you could at past editions! DConf 2018 is taking place at the NH München Messe, a 253-room hotel in the Zamdorf area of Munich. +

    +

    +

    Not only will this save you time, it will save you money. The hotel is offering a discount to DConf 2018 attendees. To take advantage of this offer and book a single room (including breakfast) for €89/night, send an email to reservierungen@nh-hotels.com with the keyword D-Conf in the subject line. Visit nh-hotels.com for directions and points of interest. +

    + +

    Nearby hotels

    +

    If you'd like to find an alternative to the Hotel NH München Messe there are other options nearby (prices and availability may vary): +

    + +
    + + +
     
    +
    Partner/Host
    + +
    QA Systems
    + Organizer
    + +
    HLMC
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2019/brexit.html b/docs/2019/brexit.html new file mode 100644 index 00000000..1f785d2f --- /dev/null +++ b/docs/2019/brexit.html @@ -0,0 +1,61 @@ + + + + + + + +The D Programming Language Conference 2019 + + + + + + + +
    +

    Brexit Refund

    +

    Given that the delay to Brexit extends well past DConf, we don’t anticipate any significant problems with travel. But for those who are concerned about any risk: +

    +

    In case you encounter a flight cancellation due to Brexit without a suitable replacement travel method for reaching DConf 2019, the organizers will refund your DConf registration fee. +

    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/contact.html b/docs/2019/contact.html new file mode 100644 index 00000000..2db5dbe6 --- /dev/null +++ b/docs/2019/contact.html @@ -0,0 +1,62 @@ + + + + + + + +The D Programming Language Conference 2019 + + + + + + + +
    +

    Contact Us

    +

    + +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/images/dconf-2019-logo2.png b/docs/2019/images/dconf-2019-logo2.png new file mode 100644 index 00000000..e00ed9b6 Binary files /dev/null and b/docs/2019/images/dconf-2019-logo2.png differ diff --git a/docs/2019/images/dman.png b/docs/2019/images/dman.png new file mode 100644 index 00000000..fe1cc3d3 Binary files /dev/null and b/docs/2019/images/dman.png differ diff --git a/docs/2019/images/galla.jpg b/docs/2019/images/galla.jpg new file mode 100644 index 00000000..d0151ba3 Binary files /dev/null and b/docs/2019/images/galla.jpg differ diff --git a/docs/2019/images/laeeth.jpg b/docs/2019/images/laeeth.jpg new file mode 100644 index 00000000..77c39802 Binary files /dev/null and b/docs/2019/images/laeeth.jpg differ diff --git a/docs/2019/images/lunesu.jpg b/docs/2019/images/lunesu.jpg new file mode 100644 index 00000000..160c8030 Binary files /dev/null and b/docs/2019/images/lunesu.jpg differ diff --git a/docs/2019/images/mbrdna.png b/docs/2019/images/mbrdna.png new file mode 100644 index 00000000..0370ae29 Binary files /dev/null and b/docs/2019/images/mbrdna.png differ diff --git a/docs/2019/images/militaru.jpg b/docs/2019/images/militaru.jpg new file mode 100644 index 00000000..4dfb3e9b Binary files /dev/null and b/docs/2019/images/militaru.jpg differ diff --git a/docs/2019/images/neves.jpg b/docs/2019/images/neves.jpg new file mode 100644 index 00000000..94008498 Binary files /dev/null and b/docs/2019/images/neves.jpg differ diff --git a/docs/2019/images/piolat.png b/docs/2019/images/piolat.png new file mode 100644 index 00000000..6fd6f68c Binary files /dev/null and b/docs/2019/images/piolat.png differ diff --git a/docs/2019/images/register.png b/docs/2019/images/register.png new file mode 100644 index 00000000..2c875565 Binary files /dev/null and b/docs/2019/images/register.png differ diff --git a/docs/2019/images/symmetry-logo1.png b/docs/2019/images/symmetry-logo1.png new file mode 100644 index 00000000..4dcca0f3 Binary files /dev/null and b/docs/2019/images/symmetry-logo1.png differ diff --git a/docs/2019/images/watson.jpg b/docs/2019/images/watson.jpg new file mode 100644 index 00000000..4ecd0f31 Binary files /dev/null and b/docs/2019/images/watson.jpg differ diff --git a/docs/2019/images/wilzbach.jpg b/docs/2019/images/wilzbach.jpg new file mode 100644 index 00000000..337b684b Binary files /dev/null and b/docs/2019/images/wilzbach.jpg differ diff --git a/docs/2019/includes/style.css b/docs/2019/includes/style.css new file mode 100644 index 00000000..b138e4f9 --- /dev/null +++ b/docs/2019/includes/style.css @@ -0,0 +1,290 @@ +html { + line-height: 1.15em; + font-size: 1.1em; + -webkit-text-size-adjust: 100%; /* Prevent adjustment of font size after orientation changes on iOS */ +} + +body { + background-color: #ffffff; + text-align: justify; + font-family: "Arial Narrow", Arial, Helvetica, sans-serif; +} + +#masthead { + text-align: center; +} + +#masthead img { + max-width: 75%; +} + +#sitenav { + padding: 0.5em; + margin: 0; + font-size: 0.9em; + background-color: #000066; + text-align: center; + border: 1px solid #000066; +} + +#sitenav ul { + list-style-type: none; + margin: 0; + padding: 0; + text-align: center; +} + +#sitenav ul li { + padding: 0.2em; + font-size: 1em; + margin-right: 1em; + display: inline; +} + +#sitenav ul a { + text-decoration: none; + font-weight: bolder; + color: #ffffff; +} + +#sitenav ul a:hover { + color: #cc0000; +} + +#sidebar { + text-align: center; + line-height: 2em; +} + +#sitefoot { + font-size: 0.9em; + font-style: italic; + text-align: center; + padding: 0 0 2em 0; +} + +#container { + /*background-color: #bbdefb;*/ +} + +#twitter { + display: none; +} + +#hash { + text-align: center; +} + +#daily, #daily td, #daily th { + border: 1px solid #000000; + border-collapse: collapse; + padding: 0.5em 0.3em 0.5em 0.3em; +} + +#schedule { + margin: 0; +} + +#daily { + margin: auto auto 3em auto; + width: 75%; + background-color: #ffffff; +} + +#daily th { + font-size: 1.3em; + line-height: 1.3em; + color: #ffffff; + font-weight: bold; + text-shadow: 0px 1px 0px #000000; +} + +#daily td:first-child { + width: 15%; + color: ec8618; +} + +.red th { + background-color: #cc0000; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cc0000', endColorstr='#992222'); + background: -webkit-gradient(linear, left top, left bottom, from(#cc0000), to(#992222)); + background: -moz-linear-gradient(top, #cc0000, #992222); +} + +.blue th { + background-color: #000066; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#222299', endColorstr='#000066'); + background: -webkit-gradient(linear, left top, left bottom, from(#222299), to(#000066)); + background: -moz-linear-gradient(top, #222299, #000066); +} + +.red tr:hover { + background-color: #ef9a9a; +} +.blue tr:hover { + background-color: #bbdefb; +} + +.centered { + text-align: center; +} + +.row { + background-color: white; + padding-right: 1em; +} + +.rowitem { + margin: 2em 0 0 2em; +} + +.map { + display: flex; + justify-content: center; +} + +.wrapper { + background-color: #ffffff; + padding: 1em; +} + +.tablediv { + background-color: #ffffff; +} + +.tablediv td { + padding-left: 1em; +} + +.tablediv th { + padding-left: 1em; +} + +.tableimg { + display: none; + vertical-align:middle; + float: right; +} + +.hilite { + color: #cc0000; +} + +main { + display: block; + padding: 0.5em; +} + +h1, h2, h3 { + font-family: "Franklin Gothic Medium", Geneva, Tahoma, sans-serif; + text-align: left; + line-height: 1em; +} + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +h2 { + font-size: 1.8em; + margin: 0.47em 0; +} + +h3 { + font-size: 1.6em; + margin: 0.27em 0; +} + +a { + background-color: transparent; + color: #0000cc; + text-decoration: none; +} + +a:hover { + color: #000066; +} + +.name { + color: #000066; +} + +a.name:hover { + color: #0000cc; +} + +img { + border-style: none; +} + +code { + font-size: 1.1em; + background-color: #efefef; +} + +@media screen and (min-width: 600px) { + .row { + display: flex; + justify-content: center; + } +} + +@media screen and (max-width: 1279px) { + #sitenav { + line-height: 2em; + } + + .tablediv th { + padding-left: 0.2em; + } + + .tablediv td { + padding-left: 0.2em; + } +} + +@media screen and (min-width: 1280px) { + #masthead img { + width: auto; + } + + #sidebar { + margin: 1em; + min-width: 35%; + } + + #container { + display: flex; + justify-content: center; + border: 1px solid #000066; + } + + #twitter { + display: block; + margin: 3em; + border: 1px solid #000066; + min-width: 40%; + } + + .tablediv { + display: flex; + justify-content: center; + } + + .tableimg { + display: block; + } + + main { + padding: 1em 2em; + width: 100%; + } +} + +@media screen and (min-width: 1768px) { + + #sitefoot { + padding: 0; + } +} \ No newline at end of file diff --git a/docs/2019/index.html b/docs/2019/index.html new file mode 100644 index 00000000..a6f49d3a --- /dev/null +++ b/docs/2019/index.html @@ -0,0 +1,116 @@ + + + + + + + +The D Programming Language Conference 2019 + + + + + + + +
    +

    DConf 2019 in London!

    +
    +

    DConf 2019 was a great success. Thanks to our partners at Symmetry Investments for hosting such a fun event. Now we're looking forward to DConf 2020! +

    +
    +

    The D Language Foundation is pleased to announce the international conference and hackathon DConf 2019 in London, United Kingdom, May 8 - 11 2019. +

    +

    DConf is the largest gathering of D programming language enthusiasts on the planet, a face-to-face event where programmers talk shop, share and learn about their craft, find jobs, work to improve the D ecosystem, and sample the local selection of brews. Three days of presentations are followed by a fourth day of collaborative hacking on D projects, each day capped off by spirited discussion well into the night. +

    +

    DConf 2019 is hosted by our friends at Symmetry Investments. With offices in Hong Kong, Singapore, and London, Symmetry employs D in their investment management mission and previously sponsored the Symmetry Autumn of Code. We're excited to work with Symmetry in bringing DConf to London for the first time. +

    +

    London's technology sector is booming from government support and heavy investment in startups. The heart of the boom is East London Tech City, a.k.a. the Silicon Roundabout. Dozens of global and local tech firms call the area their home. DConf 2019 will be right in the middle of it, at Inmarsat's 99 City Road Conference Centre. +

    +

    We welcome members of the D programming language community and anyone interested in learning more about our favorite language to join us in London for four days of fun, challenge, and camaraderie. If you've never attended a DConf, read a summary of DConf 2018 on the D Blog to get an idea of what it's all about. +

    +

    Keynote Speakers

    +

    This year, we're thrilled to have Laeeth Isharc of Symmetry Investments as our invited keynote speaker. Walter Bright and Andrei Alexandrescu will be back to regale the crowd with their bookend keynotes as usual. +

    + + +

    Call for Submissions

    +

    The submission period has ended! All of the talks have been selected and the schedule has been published. We've got another great line up this year. We want to thank everyone who made a submission. If you didn't get in this year, please try again next year! +

    +

    Hackathon

    +

    The DConf Hackathon returns on Saturday, May 11th. The Hackathon is an unstructured, free-wheeling, full day of solving D issues, advancing D projects, teaching, learning, and communing with like-minded souls. The previous edition of the Hackathon was open to the general public. This year, we're doing it again! See the hackathon page for details. +

    +

    Important Dates

    + + + + + + + + + + + + + + + + + + +
    Submission deadlineMarch 10, 2019, 24:00 AOE
    Author notificationMarch 17, 2019, 24:00 AOE
    Early-bird registration deadlineMarch 24, 2019, 24:00 AOE
    Registration deadline May 6, 2019, 24:00 AOE
    ConferenceWednesday May 8–Friday May 10, 2019
    HackathonSaturday May 11, 2019
    + + +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/registration.html b/docs/2019/registration.html new file mode 100644 index 00000000..461ab0ee --- /dev/null +++ b/docs/2019/registration.html @@ -0,0 +1,91 @@ + + + + + + + +The D Programming Language Conference 2019 + + + + + + + +
    +

    Registration

    +

    We'd love for you to join us at the 99 City Road Conference Centre in the heart London's Silicon Roundabout for DConf 2019! +

    +

    Worried about Brexit? We've got you covered! +

    +

    Education/Open Source Discount

    +

    If you are a student, academic, or a major open source contributor, we want to see you in London! Please contact social@dlang.org to apply for a 50% discount on the general registration rate. Even if you've never worked with the D Programming Language, we'd love to meet you. +

    +

    General Registration

    +

    The general registration rate is $400. This year, we are required to tack on a 20% VAT, so the total amount is $480. Advance registrations are open until May 6, 24:00 AOE. Registrations will be open at the venue throughout the first day of the conference (May 8). +

    +

    Note that GBP values in the following table are based on the May 2019 HMRC exchange rate of 1.3049 GBP to 1 USD +

    + + + + + + + + + + + + + + + +
    Registration TypeBase FeeVAT (20%)Total
    Regular Fee (USD)$400.00$80.00$480.00
    Regular Fee (GBP)£306.54£61.31£367.85
    +

    Keep an eye on our Twitter feed, the D Announce forum, or the official D Blog for registration news. +

    +

    We support registrations through FlipCause and PayPal. If you are registering with a credit card rather than an existing PayPal balance, choosing FlipCause will be more efficient for us, so we encourage you to do so. Thanks! +

    +

    + +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/schedule/index.html b/docs/2019/schedule/index.html new file mode 100644 index 00000000..0e326c91 --- /dev/null +++ b/docs/2019/schedule/index.html @@ -0,0 +1,294 @@ + + + + + + + +The D Programming Language Conference 2019 + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Day 1: Wednesday May 8, 2019
    08:00Morning Snack and Registration
    09:00
    +
    + Keynote
    + Walter Bright +
    10:00
    +
    + A Pragmatic Approach for Machine Learning in D
    + Jens Mueller +
    11:00
    +
    + Introducing the D Copy Constructor
    + Razvan Nitu +
    12:00Lunch & Mingling
    13:30
    +
    + All Spreadsheets Must Die
    + Robert Schadek +
    14:30
    +
    + intel-intrinsics - Not intrinsically about intrinsics
    + Guillaume Piolat +
    15:30
    +
    + Packaging Your D App
    + Lionello Lunesu +
    16:00
    +
    + How to Become a D Contributor
    + Sebastian Wilzbach +
    16:30
    +
    + Ask us Anything!
    + Andrei Alexandrescu, Walter Bright +
    17:30End of Day 1
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Day 2: Thursday May 9, 2019
    08:00Morning Snack
    09:00
    +
    + Keynote: Alternative Investment Management
    + Laeeth Isharc +
    10:00
    +
    + D and Process-based Object Orientation at Funkwerk
    + Mathis Beer +
    11:00
    +
    + Compile-Time Types
    + Luís Marques +
    12:00Lunch & Mingling
    13:30
    +
    + Frictionless D adoption for the masses.
    + Átila Neves +
    14:30
    +
    + Rethinking the Default Class Hierarchy: an Object’s Tale
    + Eduard Staniloiu +
    15:00
    +
    + D for a @safer Linux Kernel
    + Alexandru Militaru +
    15:30
    +
    + A season with D: Symmetry Autumn of Code Report
    + Francesco Gallà +
    16:30
    +
    + Lightning Talks
    + Multiple Speakers +
    17:30End of Day 2
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Day 3: Friday May 10, 2019
    08:00Morning Snack
    09:00
    +
    + Keynote: Binding Rvalues to ref Parameters
    + Andrei Alexandrescu +
    10:00
    +
    + Transcompilation into D
    + Bastiaan Veelo +
    11:00
    +
    + D is for (De)Serialization
    + Steven Schveighoffer +
    12:00Lunch & Mingling
    13:30
    +
    + Mad With Power - The Hunt for New Compile-Time Idioms
    + Ethan Watson +
    14:30
    +
    + Lessons from a DSL where all you have is ranges
    + John Colvin +
    15:30
    +
    + Handmade or tool-built?
    + Kai Nacke +
    16:30
    +
    + Using D for ROS Bag File Manipulation for Autonomous Driving
    + Ali Çehreli +
    17:30End of Day 3
    +

    + + + + + + + + + + + + + + + + + +
    Day 4: Saturday May 11, 2019
    08:00Morning Snack
    09:00
    +
    + Annual General Meeting
    + Everybody +
    ~11:00
    +
    + Hackathon Morning Session
    + Everybody +
    12:00Lunch & Mingling
    13:30
    +
    + Hackathon Afternoon Session
    + Everybody +
    17:30End of the Conference
    +
    + + +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/speakers/index.html b/docs/2019/speakers/index.html new file mode 100644 index 00000000..f03e1d8b --- /dev/null +++ b/docs/2019/speakers/index.html @@ -0,0 +1,232 @@ + + + + + + + +The D Programming Language Conference 2019 + + + + + + + +
    +

    Walter Bright

    +
    Walter Bright +
    +
    +

    Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

    +
    +
    +

    Andrei Alexandrescu

    +
    Andrei Alexandrescu +
    +
    +

    Andrei Alexandrescu coined the colloquial term "modern C++" (adapted from his award-winning book Modern C++ Design), used today to describe a collection of important C++ styles and idioms. He is also the coauthor (with Herb Sutter) of C++ Coding Standards and the author of The D Programming Language book. With Walter Bright, Andrei co-designed many important features of D and authored a large part of D's standard library. His research on Machine Learning and Natural Language Processing completes a broad spectrum of expertise. Andrei holds a Ph.D. in Computer Science from the University of Washington and a B.Sc. in Electrical Engineering from University "Politehnica" Bucharest. He works with the D Language Foundation. +

    +
    +
    +

    Laeeth Isharc

    +
    Laeeth Isharc +
    +
    +

    Laeeth Isharc graduated in 1996 from Trinity College, Cambridge, and holds an MA in Economics. Since 2014 he has been developing tools to apply technology to the investment process. +

    +
    +
    +

    Mathis Beer

    +
    Mathis Beer +
    +
    +

    Mathis Beer has been working at Funkwerk for close to two years. In that time, he has witnessed and contributed to the transition of our design sentiment of OOP-heavy code made generic by a class hierarchy, to cleanly separated domains of concern connected by a plain-old-data semi-immutable domain model. This has various advantages. +

    + +

    Mathis is also known as “FeepingCreature”. He is the author of https://github.com/funkwerk/boilerplate. +

    +
    +
    +

    Ali Çehreli

    +
    Ali Çehreli +
    +
    +

    Ali is a software engineer with programming language experiences mostly in C, C++, and D. His past work includes a fun stint at WekaIO, a high performance storage company that bases its technology entirely on D. Ali is the author of the book Programming in D, the Secretary and a board member of The D Language Foundation, former acting president of the Silicon Valley Chapter of the ACCU, an organizer of the Silicon Valley DLang meetup group, and a team member of the revolutionary Mill CPU. He currently works in the sensor fusion team of the Autonomous Driving division at Mercedes-Benz Research and Development, North America. One of his responsibilities is helping with ISO 26262 software safety issues. +

    +
    +
    +

    John Colvin

    +
    John Colvin +
    +
    +

    I am a long time low-frequency contributor to the D community in various forms, ranging from one-line fixes on new dub repositories to wider visions of what D can do in science and GPU computing (my thanks to many other people for making their more substantial visions reality) to tips and tricks for comers both new and old on the D forums. I have a background in physics and aim to bring the disciplined yet creative pragmatism of that field to what I produce, both in open source and my work at Symmetry Investments. +

    +
    +
    +

    Francesco Gallà

    +
    Francesco Gallà +
    +
    +

    Francesco Gallà is a MSc student in Computer Science at University of Turin, Italy. He is interested in language theory, network protocols and formal verification methods for concurrent programming, a topic which he's working on for his master thesis. He also enjoys hiking and climbing when he leaves the keyboard behind. He discovered D while looking for modern alternatives to C and C++ which could be used for system programming on multiple platforms (notably Linux). He took part in Symmetry Autumn of Code 2018 to work on the HTTP/2 implementation for the Vibe.d framework. +

    +
    +
    +

    Lionello Lunesu

    +
    Lionello Lunesu +
    +
    +

    Lionello Lunesu is creator of Nounly and Co-Founder of Enuma Technologies, a hardware/software consultancy company in Hong Kong, building solutions for enterprise customers. Nounly started as a weekend project, but turned into a web app people started to rely on. To meet expectations, Nounly was ported to Vibe.D and is now hosted as an auto-scaling web service. +

    +
    +
    +

    Luís Marques

    +
    Luís Marques +
    +
    +

    Luís currently works at lowRISC, a not-for-profit organization that creates open-source hardware and associated tools. In particular, Luís has been working on improving the RISC-V backend of the LLVM compiler infrastructure. He is a long-time D user. More recently he has been experimenting with D language extensions, such as for hardware design. +

    +
    +
    +

    Alexandru Militaru

    +
    Alexandru Militaru +
    +
    +

    Alexandru Militaru is a student in his final year of bachelor’s studies and an undergraduate teaching assistant at University "Politehnica" of Bucharest. He is passionate about operating systems and compilers. In his bachelor thesis project, he uses the D programming language to strengthen the security of Linux kernel modules. +

    +
    +
    +

    Jens Mueller

    +
    Jens Mueller +
    +
    +

    Jens studied computer science at Ulm University and Humboldt-Universität zu Berlin. Afterwards he started a Phd in Machine Learning and defended his thesis in 2014. He stayed for a brief post-doc and left academia in 2016 to join dunnhumby. +

    +
    +
    +

    Kai Nacke

    +
    Kai Nacke +
    +
    +

    Kai Nacke is a professional IT architect. In his spare time he likes to develop open source applications. He was maintainer of LDC, the LLVM-based D compiler, and a committer of the LLVM project. His contributions to LDC include ports to different CPU architectures and operating systems. Another interest of him is using D for business applications. He is the developer of the D bindings for SAP. Besides being programmer, he is also the author of "D Web Development" and a speaker at the Free and Open Source Software Developers' European Meeting (FOSDEM). +

    +
    +
    +

    Átila Neves

    +
    Átila Neves +
    +
    +

    Átila Neves has a PhD in Particle Physics for research done at CERN. Most of the time spent there required programming in C++, with a 2-year stint as a Perl programmer in the IT department's security team. He also worked for Cisco for almost 7 years, developing networking software in C and C++ and leading his teams in the areas of software quality and testing. He now works as a D consultant/programmer for Symmetry Investments. He spends his spare time yelling at the screen in frustration while waiting for computers to compile his code. +

    +
    +
    +

    Razvan Nitu

    +
    Razvan Nitu +
    +
    +

    I am a PhD student doing my thesis on programming languages and I have been contributing to the D compiler for 2.5 years. +

    +
    +
    +

    Guillaume Piolat

    +
    Guillaume Piolat +
    +
    +

    Guillaume Piolat worked as a professional complainer in various segments of the software industry: mostly signal processing. Struck by baldness early, he is now a purveyor of audio effects in the pro audio market, as Auburn Sounds. Guillaume created "D-idioms", a blog to bring awareness on the most mundane points of the language. You will likely see him rant about complexity on the D forums. +

    +
    +
    +

    Robert Schadek

    +
    Robert Schadek +
    +
    +

    Robert Schadek received a Master degree in computer science at the University of Oldenburg. His master thesis was titled "DMCD A Distributed Multithreading Caching D Compiler" and introduced multi-threading among other optimizations to the compiler control flow. He was a computer science PhD student from 2012-2018 at the University of Oldenburg. His PhD research focuses on quorum systems in combination with graphs. Since 2018 he is happily using D in his day job working for Symmetry Investments. +

    +
    +
    +

    Steven Schveighoffer

    +
    Steven Schveighoffer +
    +
    +

    Steven Schveighoffer has written several D libraries, including dcollections (container library) and iopipe (a high-performance i/o pipeline library). He has numerous contributions to both Phobos and Druntime, including rewriting the array runtime, and the RedBlackTree implementation. Most recently, he is working on getting the JSON iopipe library ready for release, including a full serializer. +

    +
    +
    +

    Eduard Staniloiu

    +
    Eduard Staniloiu +
    +
    +

    Eduard is a PhD student and Teaching Assistant at University "Politehnica" of Bucharest. He is a hard working student who enjoys ​to get his hands dirty +

    + +

    He likes learning new technologies and strengthening his current knowledge. He is passionate about computer science, programming languages, coffee and doing nothing. His previous experience includes distributed systems and parallel programming, operating systems, basic kernel development, open-source software and basic Android programming. He is a Linux fan, a command line addict and a vim enthusiast. He hopes that through his work he will be able to help and improve the D language, which he is becoming so fond of. +

    +
    +
    +

    Bastiaan Veelo

    +
    Bastiaan Veelo +
    +
    +

    Bastiaan Veelo is the lead developer of a specialised program for the computer aided geometric design of ship hulls called Fairway, for the company SARC in the Netherlands. He holds a B.Eng. in naval architecture from the Haarlem Polytechnic, an M.Sc. in marine technology and a Ph.D. in mechanical engineering from NTNU, the Norwegian University of Science and Technology. He has been following the development of the D programming language from its early days, but only started using it actively since 2015 when he saw a chance to change his own future. Now he is well on his way in his master plan to convert his employer's business to a D shop. +

    +
    +
    +

    Ethan Watson

    +
    Ethan Watson +
    +
    +

    Fourth time lucky? Ethan Watson is a bit of a vet when it comes to D Conf, having presented at the three previous events. An unhealthy fascination with squirrels aside, his talks are regarded for being information-rich and entertaining at the same time—thanks to combining 16 years of experience as a programmer in the video games industry with his experience in amateur stand-up comedy. He is currently in the process of setting up a middleware studio and working at another Finnish game studio (Housemarque) at the same time. +

    +
    +
    +

    Sebastian Wilzbach

    +
    Sebastian Wilzbach +
    +
    +

    Sebastian has contributed to D’s core repositories with more than 2.000 pull requests and, while he secretly hates D, he still thinks it's by far the least ugly language. Among others things, he is the +guy behind run.dlang.io, D’s Functional Garden, the DTour, the D documentation archives, and those mysterious pull requests to your project. Currently, he is helping to organize D’s 2019 GSoC as one of the organization admins for the D programming language. +

    +
    +
    + + +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/agm.html b/docs/2019/talks/agm.html new file mode 100644 index 00000000..0e314e3a --- /dev/null +++ b/docs/2019/talks/agm.html @@ -0,0 +1,77 @@ + + + + + + + + +DConf 2019 speaker: Everybody + + + + + + + +
    +
    +

    Annual General Meeting

    +

    + +

    Everybody
    + May 11 @ 09:00


    Duration: ~2 hours
    + Talk type: AGM
    + Level: All
    + + + +

    +

    Abstract:  +

    The AGM provides an opportunity to participate in the determination of the Foundation's vision, provides a formal setting to discuss and resolve longstanding issues and take advantage of face-to-face communication to accelerate organizational processes. Topics up for discussion include: DIPs; Pull requests; Internal implementation issues; General issues and topics of interest; Infrastructure, libraries and progress reports; bug squashing prioritization, and longer-term goals and vision for the DLF. The proceeds of the discussions will help focus and set the stage for the Hackathon. +

    + +

    This is the first AGM we've hosted at DConf. It was proposed by Nicholas Wilson and is expected to last an-hour-and-a-half, but it could go longer. The morning session of the Hackathon will begin immediately following the AGM. +

    + +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/alexandrescu.html b/docs/2019/talks/alexandrescu.html new file mode 100644 index 00000000..dfe78d25 --- /dev/null +++ b/docs/2019/talks/alexandrescu.html @@ -0,0 +1,85 @@ + + + + + + + + +DConf 2019 speaker: Andrei Alexandrescu + + + + + + + +
    +
    +

    Keynote: Binding Rvalues to ref Parameters

    +

    + +

    Andrei Alexandrescu
    + May 10 @ 09:00


    Duration: 50 minutes
    + Talk type: Keynote
    + Level: All
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    The mechanics of binding values to function parameters is a +central concern in programming languages. In the D language, binding an +unnamed temporary (rvalue) to a reference parameter is disallowed to +avoid unintentional misuse. In C++ binding an rvalue to a reference to +constant is allowed, but binds too tightly, a complication that ultimately +motivated the introduction of rvalue references. In Rust binding is +allowed but requires additional syntax on the call side, which hurts +genericity and composition. How can we relax the rules in the D language +such that meaningful cases are allowed while improving on the experience +with other languages? +

    +

    Speaker Bio: +

    Andrei Alexandrescu coined the colloquial term "modern C++" (adapted from his award-winning book Modern C++ Design), used today to describe a collection of important C++ styles and idioms. He is also the coauthor (with Herb Sutter) of C++ Coding Standards and the author of The D Programming Language book. With Walter Bright, Andrei co-designed many important features of D and authored a large part of D's standard library. His research on Machine Learning and Natural Language Processing completes a broad spectrum of expertise. Andrei holds a Ph.D. in Computer Science from the University of Washington and a B.Sc. in Electrical Engineering from University "Politehnica" Bucharest. He works with the D Language Foundation. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/alexandrescu.pdf b/docs/2019/talks/alexandrescu.pdf new file mode 100644 index 00000000..bf2f6153 Binary files /dev/null and b/docs/2019/talks/alexandrescu.pdf differ diff --git a/docs/2019/talks/beer.html b/docs/2019/talks/beer.html new file mode 100644 index 00000000..4cff9553 --- /dev/null +++ b/docs/2019/talks/beer.html @@ -0,0 +1,84 @@ + + + + + + + + +DConf 2019 speaker: Mathis Beer + + + + + + + +
    +
    +

    D and Process-based Object Orientation at Funkwerk

    +

    + +

    Mathis Beer
    + May 9 @ 10:00


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate, Enterprise
    + + Slides: ODP
    + Video
    +

    +

    Abstract:  +

    Functional programming and object-orientation are often seen as contradictory. By modelling processes with objects rather than entities, and keeping domain data largely immutable, we get the best of both worlds. +

    + +

    Description

    + +

    Funkwerk application design started out as UML-heavy Java-like. Over the past years we’ve worked on transitioning to a model of immutable unowned domain data managed on the scale of processes, rather than entities, transformed between usecases by freestanding pure functions. Interfaces are primarily used as a tool for separation of concern and domain process abstraction rather than describing actions that can be done with data. +

    +

    Speaker Bio: +

    Mathis Beer has been working at Funkwerk for close to two years. In that time, he has witnessed and contributed to the transition of our design sentiment of OOP-heavy code made generic by a class hierarchy, to cleanly separated domains of concern connected by a plain-old-data semi-immutable domain model. This has various advantages. +

    + +

    Mathis is also known as “FeepingCreature”. He is the author of https://github.com/funkwerk/boilerplate. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/beer.odp b/docs/2019/talks/beer.odp new file mode 100644 index 00000000..0381500a Binary files /dev/null and b/docs/2019/talks/beer.odp differ diff --git a/docs/2019/talks/bright.html b/docs/2019/talks/bright.html new file mode 100644 index 00000000..48feef48 --- /dev/null +++ b/docs/2019/talks/bright.html @@ -0,0 +1,75 @@ + + + + + + + + +DConf 2019 speaker: Walter Bright + + + + + + + +
    +
    +

    Keynote

    +

    + +

    Walter Bright
    + May 8 @ 09:00


    Duration: 50 minutes
    + Talk type: Keynote: Allocating Memory with the D Programming Language
    + Level: All
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    Non-trivial programs are typically heavily dependent on allocating memory. The strategy chosen can have enormous influence over the utility of the resulting program. D supports a number of techniques for allocating memory. Even within a program, multiple techniques can be used. I'll cover the main strategies, along with their strengths and weaknesses. Coverage includes garbage collection, C style allocation, stack allocation, RAII, scope guard, hybrid stack/malloc, and no-allocation allocation. +

    +

    Speaker Bio: +

    Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/bright.pdf b/docs/2019/talks/bright.pdf new file mode 100644 index 00000000..4bd942e7 Binary files /dev/null and b/docs/2019/talks/bright.pdf differ diff --git a/docs/2019/talks/cehreli.html b/docs/2019/talks/cehreli.html new file mode 100644 index 00000000..f193b0d7 --- /dev/null +++ b/docs/2019/talks/cehreli.html @@ -0,0 +1,87 @@ + + + + + + + + +DConf 2019 speaker: Ali Çehreli + + + + + + + +
    +
    +

    Using D for ROS Bag File Manipulation for Autonomous Driving

    +

    + +

    Ali Çehreli
    + May 10 @ 16:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + Slides: PPTX
    + Video
    +

    +

    Abstract:  +

    The D programming language is used in writing development tools at Mercedes-Benz Research and Development, North America. This talk will present how the many low- and high-level features of D and its standard library have been used effectively in migrating and merging ROS bag files: bit manipulations, templates, UDAs, UFCS, design by introspection, mixins, code generation, and more. +

    + +

    Description

    + +

    The Robot Operating System (ROS) is a set of software libraries and tools that are useful in research and development of robots and other autonomous devices like self-driving cars. +

    + +

    ROS applications communicate with each other through messages that are published and subscribed under specific topics. Messages of ROS sessions can be stored in so called "bag files" for further research and development. As message types ordinarily need to be improved in active development, existing bag files become incompatible but can be migrated. +

    + +

    Mercedes-Benz Research and Development, North America, in partnership with Bosch, use ROS as a tool in research in their autonomous driving projects. This talk will describe how D has been useful in writing tools for migrating and merging bag files. +

    +

    Speaker Bio: +

    Ali is a software engineer with programming language experiences mostly in C, C++, and D. His past work includes a fun stint at WekaIO, a high performance storage company that bases its technology entirely on D. Ali is the author of the book Programming in D, the Secretary and a board member of The D Language Foundation, former acting president of the Silicon Valley Chapter of the ACCU, an organizer of the Silicon Valley DLang meetup group, and a team member of the revolutionary Mill CPU. He currently works in the sensor fusion team of the Autonomous Driving division at Mercedes-Benz Research and Development, North America. One of his responsibilities is helping with ISO 26262 software safety issues. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/cehreli.pptx b/docs/2019/talks/cehreli.pptx new file mode 100644 index 00000000..8a95c30b Binary files /dev/null and b/docs/2019/talks/cehreli.pptx differ diff --git a/docs/2019/talks/colvin.html b/docs/2019/talks/colvin.html new file mode 100644 index 00000000..85e5b54d --- /dev/null +++ b/docs/2019/talks/colvin.html @@ -0,0 +1,81 @@ + + + + + + + + +DConf 2019 speaker: John Colvin + + + + + + + +
    +
    +

    Lessons from a DSL where all you have is ranges

    +

    + +

    John Colvin
    + May 10 @ 14:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate - Advanced (with some basics)
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    Ranges are so good, we semi-accidentally ended up developing software in a language where ranges were almost the only feature developed. Inspired heavily (cough cough) by D's ranges, we were able get moving fast with basic data processing before most of the language was complete. Over many months of writing code—including a lot by non-D users and people who weren't at the start active programmers—many lessons were learnt; some sweet, some bitter, some downright perplexing. Overall a picture emerged of what ranges are good for, what they aren't suited to, and what they could become good at given specific language and community attention. +

    + +

    Description

    + +

    This is both an experience report of using D itself in industry and the concepts that modern D embodies. The aim is to make people aware of just how much you can do with ranges and how this opens the door to writing code without having to leverage so much deep programming craft. The talk would consist of perhaps 5-10 mins introduction on how ranges work (including some of the unpleasant parts like how to initialise the front), 15-20 mins on examples of interest of how ranges have worked for us at Symmetry and 20-30 minutes of exploring the limits of ranges as a generic framing for a variety of programming tasks, with a special focus on ease of use and readability informed by our experiences so far using a heavily range-based DSL. +

    +

    Speaker Bio: +

    I am a long time low-frequency contributor to the D community in various forms, ranging from one-line fixes on new dub repositories to wider visions of what D can do in science and GPU computing (my thanks to many other people for making their more substantial visions reality) to tips and tricks for comers both new and old on the D forums. I have a background in physics and aim to bring the disciplined yet creative pragmatism of that field to what I produce, both in open source and my work at Symmetry Investments. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/colvin.pdf b/docs/2019/talks/colvin.pdf new file mode 100644 index 00000000..c547857c Binary files /dev/null and b/docs/2019/talks/colvin.pdf differ diff --git a/docs/2019/talks/galla.html b/docs/2019/talks/galla.html new file mode 100644 index 00000000..45dd205f --- /dev/null +++ b/docs/2019/talks/galla.html @@ -0,0 +1,76 @@ + + + + + + + + +DConf 2019 speaker: Francesco Gallà + + + + + + + +
    +
    +

    A season with D: Symmetry Autumn of Code Report

    +

    + +

    Francesco Gallà
    + May 9 @ 15:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Beginner - Intermediate
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    Symmetry Autumn of Code has been a great opportunity for a few motivated developers to challenge their abilities and boost their involvement in the DLang Community while contributing to the D ecosystem. This report is going to describe my experience as a participant, focusing on the benefits that SAoC brought to me and the community and what future projects could learn from it. +

    +

    Speaker Bio: +

    Francesco Gallà is a MSc student in Computer Science at University of Turin, Italy. He is interested in language theory, network protocols and formal verification methods for concurrent programming, a topic which he's working on for his master thesis. He also enjoys hiking and climbing when he leaves the keyboard behind. He discovered D while looking for modern alternatives to C and C++ which could be used for system programming on multiple platforms (notably Linux). He took part in Symmetry Autumn of Code 2018 to work on the HTTP/2 implementation for the Vibe.d framework. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/galla.pdf b/docs/2019/talks/galla.pdf new file mode 100644 index 00000000..09e1c77e Binary files /dev/null and b/docs/2019/talks/galla.pdf differ diff --git a/docs/2019/talks/hackathon1.html b/docs/2019/talks/hackathon1.html new file mode 100644 index 00000000..2c15c062 --- /dev/null +++ b/docs/2019/talks/hackathon1.html @@ -0,0 +1,89 @@ + + + + + + + + +DConf 2019 speaker: Everybody + + + + + + + +
    +
    +

    Hackathon Morning Session

    +

    + +

    Everybody
    + May 11 @ ~11:00


    Duration: ~1 hour
    + Talk type: Hackathon
    + Level: All
    + + + +

    +

    Abstract:  + +

    The fourth day of DConf 2019 is set aside for our 3rd annual Hackathon! Collaborate with fellow D hackers to make the D community a better place. +

    + +

    Description

    + +

    The first DConf Hackathon resulted in, to quote Walter Bright, "A tsunami of pull requests". That cemented its place as part of the DConf tradition. The 2018 edition of the Hackathon saw coders from Ubisoft tutoring some folks on game development in D, a clinical bioinformatician organizing programmers interested in contributing to projects for genomic bioinformatics, and keyboards banging on & birds-of-a-feather discussions about a variety of issues from the D ecosystem. +

    + +

    This year, just as we did in Munich, we're opening the Hackathon doors to the general public. If you're in the area, we invite you to join us. Learn more about D, help some D coders hack on a project, partake in some interesting conversations, or just drop in and say hi! We'll even provide lunch and snacks for our guests as we can. Availability for the food will be limited, though, so it's a first-come-first-serve sort of thing. If you do join us in the morning, be sure to have a backup plan for lunch just in case. +

    + +

    In 2018, we kicked off the Hackathon day with one more talk. This year, we're starting it with an Annual General Meeting to hash out longstanding issues and set the stage for the Hackathon. The morning Hackathon session will begin immediately following the AGM, the afternoon session immediately after lunch. +

    + +

    We encourage all attendees interested in D's future to stick around until May 11 for the AGM and the Hackathon! +

    + +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/hackathon2.html b/docs/2019/talks/hackathon2.html new file mode 100644 index 00000000..d21f7b25 --- /dev/null +++ b/docs/2019/talks/hackathon2.html @@ -0,0 +1,89 @@ + + + + + + + + +DConf 2019 speaker: Everybody + + + + + + + +
    +
    +

    Hackathon Afternoon Session

    +

    + +

    Everybody
    + May 11 @ 13:30


    Duration: 4 hours
    + Talk type: Hackathon
    + Level: All
    + + + +

    +

    Abstract:  + +

    The fourth day of DConf 2019 is set aside for our 3rd annual Hackathon! Collaborate with fellow D hackers to make the D community a better place. +

    + +

    Description

    + +

    The first DConf Hackathon resulted in, to quote Walter Bright, "A tsunami of pull requests". That cemented its place as part of the DConf tradition. The 2018 edition of the Hackathon saw coders from Ubisoft tutoring some folks on game development in D, a clinical bioinformatician organizing programmers interested in contributing to projects for genomic bioinformatics, and keyboards banging on & birds-of-a-feather discussions about a variety of issues from the D ecosystem. +

    + +

    This year, just as we did in Munich, we're opening the Hackathon doors to the general public. If you're in the area, we invite you to join us. Learn more about D, help some D coders hack on a project, partake in some interesting conversations, or just drop in and say hi! We'll even provide lunch and snacks for our guests as we can. Availability for the food will be limited, though, so it's a first-come-first-serve sort of thing. If you do join us in the morning, be sure to have a backup plan for lunch just in case. +

    + +

    In 2018, we kicked off the Hackathon day with one more talk. This year, we're starting it with an Annual General Meeting to hash out longstanding issues and set the stage for the Hackathon. The morning Hackathon session will begin immediately following the AGM, the afternoon session immediately after lunch. +

    + +

    We encourage all attendees interested in D's future to stick around until May 11 for the AGM and the Hackathon! +

    + +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/isharc.html b/docs/2019/talks/isharc.html new file mode 100644 index 00000000..4e4457cb --- /dev/null +++ b/docs/2019/talks/isharc.html @@ -0,0 +1,76 @@ + + + + + + + + +DConf 2019 speaker: Laeeth Isharc + + + + + + + +
    +
    +

    Keynote: Alternative Investment Management

    +

    + +

    Laeeth Isharc
    + May 9 @ 09:00


    Duration: 50 minutes
    + Talk type: Keynote
    + Level: Beginner - Intermediate
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    Adoption of an emerging language at a $4.8bn hedge fund. +

    +

    Speaker Bio: +

    Laeeth Isharc graduated in 1996 from Trinity College, Cambridge, and holds an MA in Economics. Since 2014 he has been developing tools to apply technology to the investment process. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/isharc.pdf b/docs/2019/talks/isharc.pdf new file mode 100644 index 00000000..6ba2dbb1 Binary files /dev/null and b/docs/2019/talks/isharc.pdf differ diff --git a/docs/2019/talks/lightning.html b/docs/2019/talks/lightning.html new file mode 100644 index 00000000..870f3244 --- /dev/null +++ b/docs/2019/talks/lightning.html @@ -0,0 +1,75 @@ + + + + + + + + +DConf 2019 speaker: Multiple Speakers + + + + + + + +
    +
    +

    Lightning Talks

    +

    + +

    Multiple Speakers
    + May 9 @ 16:30


    Duration: 60 minutes
    + Talk type: Presentation
    + Level: All
    + + + Video
    +

    +

    Abstract:  +

    Got a D project or idea you want the world to know about? Can you tell the world about it in 5 minutes? Here's your chance! Send an email to social@dlang.org before the conference, or let us know before May 9 at the conference, and if there's room we'll squeeze you in. +

    +

    Speaker Bio: +

    Multiple Speakers

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/lunesu.html b/docs/2019/talks/lunesu.html new file mode 100644 index 00000000..2f7367d0 --- /dev/null +++ b/docs/2019/talks/lunesu.html @@ -0,0 +1,81 @@ + + + + + + + + +DConf 2019 speaker: Lionello Lunesu + + + + + + + +
    +
    +

    Packaging Your D App

    +

    + +

    Lionello Lunesu
    + May 8 @ 15:30


    Duration: 25 minutes
    + Talk type: Presentation
    + Level: Beginner - Intermediate
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    You’ve developed your app in D, now how to get it into people’s hands? In this talk I will cover several packaging methods for your CLI or web app. +

    + +

    Description

    + +

    One of the harder problems is how to manage dependencies, not just during development in a team where people have different operating systems, but also during deployment in the cloud or customer's environment. DUB is a great package manager for D, but does little to help you build the final deployment package. In the past I’ve created DEB and RPM packages for my D apps, but more recently I'm using Docker containers and/or NIX packages. The latter is great for managing dependencies and creating a platform-agnostic package and can also be used to create minimal Docker containers. +

    +

    Speaker Bio: +

    Lionello Lunesu is creator of Nounly and Co-Founder of Enuma Technologies, a hardware/software consultancy company in Hong Kong, building solutions for enterprise customers. Nounly started as a weekend project, but turned into a web app people started to rely on. To meet expectations, Nounly was ported to Vibe.D and is now hosted as an auto-scaling web service. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/lunesu.pdf b/docs/2019/talks/lunesu.pdf new file mode 100644 index 00000000..0db74897 Binary files /dev/null and b/docs/2019/talks/lunesu.pdf differ diff --git a/docs/2019/talks/marques.html b/docs/2019/talks/marques.html new file mode 100644 index 00000000..bc6d7213 --- /dev/null +++ b/docs/2019/talks/marques.html @@ -0,0 +1,90 @@ + + + + + + + + +DConf 2019 speaker: Luís Marques + + + + + + + +
    +
    +

    Compile-Time Types

    +

    + +

    Luís Marques
    + May 9 @ 11:00


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Beginner
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    This talk explores how D's compile-time features could be made even more approachable and regular. Currently, each compile-time feature has its own syntax, implementing an approximate equivalent of a corresponding run-time feature. This duplication and imperfect mapping between the two introduces complexity and irregularities into the language. The talk discusses how these issues could be addressed by distinguishing between compile-time and run-time facilities at the level of the type system, instead of the language grammar. +

    + +

    Description

    + +

    One of the ways in which D improves upon C++ is by providing powerful, yet sensible, facilities for compile-time computation, conditional compilation and metaprogramming. Several D features contribute to make these compile-time activities more approachable and more similar to regular programming. Yet, despite D already comparing favorably with other languages, using compile-time features still requires additional expertise and often presents stumbling blocks and inconveniences. +

    + +

    D distinguishes between run-time and compile-time facilities by using different syntactical constructs for both. For instance, compile-time value declarations can be distinguished from normal ones by the use of the enum keyword. Generic functions can be recognized by the use of two sets of parameters, or by the employment of a template declaration. A conditional becomes a compile-time decision when the static keyword is prepended to the regular if statement. The list goes on. +

    + +

    These differences introduce into the language complexity and irregularities that can create problems. They make the language harder to learn and master; they create corner cases and unexpected interactions; and they make it harder to transition code between the run-time and the compile-time realms, and freely combine from both. For example, if you have a call to a function such as writefln you cannot automatically take advantage of compile-time knowledge of the arguments. Instead, the user must change the call syntax according to the circumstances, which becomes even more problematic in generic code. +

    + +

    This talk makes the case for introducing a new type qualifier, to denote the notion of a compile-time value, and discusses how doing so could address many of these issues. +

    +

    Speaker Bio: +

    Luís currently works at lowRISC, a not-for-profit organization that creates open-source hardware and associated tools. In particular, Luís has been working on improving the RISC-V backend of the LLVM compiler infrastructure. He is a long-time D user. More recently he has been experimenting with D language extensions, such as for hardware design. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/marques.pdf b/docs/2019/talks/marques.pdf new file mode 100644 index 00000000..c064ccf0 Binary files /dev/null and b/docs/2019/talks/marques.pdf differ diff --git a/docs/2019/talks/militaru.html b/docs/2019/talks/militaru.html new file mode 100644 index 00000000..41ba8658 --- /dev/null +++ b/docs/2019/talks/militaru.html @@ -0,0 +1,96 @@ + + + + + + + + +DConf 2019 speaker: Alexandru Militaru + + + + + + + +
    +
    +

    D for a @safer Linux Kernel

    +

    + +

    Alexandru Militaru
    + May 9 @ 15:00


    Duration: 25 minutes
    + Talk type: Presentation
    + Level: Beginner - Intermediate
    + + Slides: PPTX
    + Video
    +

    +

    Abstract:  +

    D is advertised as a safe and fast systems programming language. “Fast code, fast." is the mantra of the D community. But how fast is it really and how suitable for systems programming? We thought to investigate this by porting a Linux kernel driver to D, documenting the process, and assessing the results. The talk will delve into the details of integrating a D kernel module with the C-written kernel, discuss the difficulties encountered, and present the performance and safety benchmarks obtained. If you ever wondered if writing a Linux driver in D would be a good idea and +how to do that, then this talk could be a good starting point for you. +

    + +

    Description

    + +

    The talk aims to present the steps we took to port a Linux device driver to D, namely virtio_net. We will comment on the main difficulties we encountered and how we overcame them, the safety improvements we achieved using features implemented in the D language, and the performance and safety benchmarks obtained. There will be five big topics discussed: +

    • linking a D object file with the other Linux kernel objects
    • +
    • porting C code to D: issues, design decisions and shortcomings
    • +
    • a better C: the features we used to improve the code’s safety and how we did that
    • +
    • assessing the D-written driver’s behaviour: benchmarks and results
    • +
    • conclusions
    • +
    +

    + +

    The talk offers a starting point and proposes a methodology for those who want to port or implement a Linux driver in D and, in the end, reflects on how suitable D is for kernel programming, how fast it is in such an environment, and what improvements it brings. +

    + +

    Current Status

    + +

    By the end of March, the porting of the virtio_net driver will be done. From that point on, we will begin “D-ifying” the obtained code and benchmark it. Our estimate is that by the time of the conference everything will be ready. Even if something unexpected occurs and delays the project schedule, we think that the discoveries we have made so far should be interesting enough for the D community. +

    +

    Speaker Bio: +

    Alexandru Militaru is a student in his final year of bachelor’s studies and an undergraduate teaching assistant at University "Politehnica" of Bucharest. He is passionate about operating systems and compilers. In his bachelor thesis project, he uses the D programming language to strengthen the security of Linux kernel modules. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/militaru.pptx b/docs/2019/talks/militaru.pptx new file mode 100644 index 00000000..0d180da7 Binary files /dev/null and b/docs/2019/talks/militaru.pptx differ diff --git a/docs/2019/talks/mueller.html b/docs/2019/talks/mueller.html new file mode 100644 index 00000000..924bbd17 --- /dev/null +++ b/docs/2019/talks/mueller.html @@ -0,0 +1,93 @@ + + + + + + + + +DConf 2019 speaker: Jens Mueller + + + + + + + +
    +
    +

    A Pragmatic Approach for Machine Learning in D

    +

    + +

    Jens Mueller
    + May 8 @ 10:00


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Beginner - Intermediate
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    In this talk I will present an approach to perform machine learning as part of our existing D applications at dunnhumby. It covers not only our integration of the MXNet deep learning library, but also why we chose this option in comparison. Our implementation is split into two parts: bindings for the MXNet C API and convenience wrappers. I will present and discuss the exposed API for solving learning problems. Its building blocks are common across major learning frameworks, namely, n-dimensional arrays, (stochastic) gradient calculations and optimization algorithms. +

    + +

    Finally, I will show how you can solve your machine learning problem using the presented library. +

    + +

    Description

    + +

    Machine learning has come a long way since its birth in the 1950s. Thanks to the availability of data and computational resources, many problems are routinely solved using machine learning these days. In comparison to (explicit) programming, machine learning is about performing a task without explicit instructions but rather by means of learning from data. Machine learning comes with its own up- and downsides but is largely expected to stay relevant in the 21st century as a core technology. +

    + +

    At dunnhumby we integrate machine learning into our D applications with an aim to get the most out of what it has to offer. We developed a machine learning library called dmxnet which integrates MXNet. MXNet is one of the lesser known machine learning libraries, though it is easy to integrate and work with. It has received back up from Amazon. Other noteworthy mentions related to learning frameworks include TensorFlow, Keras and PyTorch. +

    + +

    Our library was open-sourced in 2017 and can be found at https://github.com/sociomantic-tsunami/dmxnet. Recently, it was converted to D2-only, which would make it even more appealing to a wider audience. Special care is taken with respect to garbage collection in order to avoid adversely affecting the real-time behavior of our applications. The code also comes with unit and integration tests and code changes are always reviewed and continuously integrated. +

    + +

    Our current implementation exposes only core MXNet functionality like n-dimensional arrays, gradient calculations and model parameter updates. Specifically, we did not include its distributed key value store and handling of datasets since we use our own existing open source solutions. +

    +

    Speaker Bio: +

    Jens studied computer science at Ulm University and Humboldt-Universität zu Berlin. Afterwards he started a Phd in Machine Learning and defended his thesis in 2014. He stayed for a brief post-doc and left academia in 2016 to join dunnhumby. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/mueller.pdf b/docs/2019/talks/mueller.pdf new file mode 100644 index 00000000..ebac377f Binary files /dev/null and b/docs/2019/talks/mueller.pdf differ diff --git a/docs/2019/talks/nacke.html b/docs/2019/talks/nacke.html new file mode 100644 index 00000000..3ae3c790 --- /dev/null +++ b/docs/2019/talks/nacke.html @@ -0,0 +1,84 @@ + + + + + + + + +DConf 2019 speaker: Kai Nacke + + + + + + + +
    +
    +

    Handmade or tool-built?

    +

    + +

    Kai Nacke
    + May 10 @ 15:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    On the evolution of a parser generator written in D. +

    + +

    Description

    + +

    The parsers of real-world compilers like dmd and clang are hand-written. Does it have to be that way? Tools like Coco and AntLR are too simple or bring additional dependencies. In many such tools support for D is outdated or not available. When I was faced with the task of writing a parser for a programming language, I did not think about it for a long time, and decided to create a hand-written reursive descent parser. But it was immediately clear that this is a tedious job. I came up with the idea to automate the essential part of it. The aim was to achieve convenience before completeness. Repetitive activities should be removed from the programmer's resonsibilities without causing restrictions. +

    + +

    The result is my tool, LLtool. LLtool generates just the body of a parser from a grammar description, relying on conventions to interface with other parts of a compiler. In my talk I show how a grammar and a recursive descent parser relate to each other and create a parser from a grammar description. I also show how limitations of my approach can be solved in a systematic way. A further topic is how to support language variations. For demonstration, I use the grammar of a real programming language. +

    +

    Speaker Bio: +

    Kai Nacke is a professional IT architect. In his spare time he likes to develop open source applications. He was maintainer of LDC, the LLVM-based D compiler, and a committer of the LLVM project. His contributions to LDC include ports to different CPU architectures and operating systems. Another interest of him is using D for business applications. He is the developer of the D bindings for SAP. Besides being programmer, he is also the author of "D Web Development" and a speaker at the Free and Open Source Software Developers' European Meeting (FOSDEM). +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/nacke.pdf b/docs/2019/talks/nacke.pdf new file mode 100644 index 00000000..c7c61408 Binary files /dev/null and b/docs/2019/talks/nacke.pdf differ diff --git a/docs/2019/talks/neves.html b/docs/2019/talks/neves.html new file mode 100644 index 00000000..4f924508 --- /dev/null +++ b/docs/2019/talks/neves.html @@ -0,0 +1,93 @@ + + + + + + + + +DConf 2019 speaker: Átila Neves + + + + + + + +
    +
    +

    Frictionless D adoption for the masses.

    +

    + +

    Átila Neves
    + May 9 @ 13:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: All
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    The talk will mention psychological aspects of programming language adoption, and how C++ "conquered the world" by removing barriers to entry for C programmers. It will suggest a way for D to copy C++'s success in this area. +

    + +

    Description

    + +

    The talk will cover anecdotes from the speaker's experience with regards to getting software teams to adopt, or at least consider adopting, D. It will mention that the speaker himself once chose C++ over D at work, why his team efforts ultimately failed, and the steps he believes are needed to decrease the friction of adoption so that it comes naturally. +

    + +

    The talk will spend some time on C++'s success, specifically how it made the transition from C codebases so easy that its ubiquity will quite likely last at least a few decades more. It is the speaker's belief that C++'s killer feature is the ability to #include C headers with at most wrapping the preprocessor directive in an +extern "C" {} block, and the talk will argue that the only way to emulate that success is to "steal" said killer feature. That is, to make it possible to write: +

    #include "foo.h"
    +And have that work as simply and easily as it does in C++, with the exact same semantics. +

    + +

    The talk will conclude with a case study of an implementation of said feature that doesn't require compiler modifications or a forked compiler, and suggest that some of the work demonstrated be included in future versions of dmd. +

    + +

    It will also mention existing alternatives in the D ecosystem to interface with C and C++ and how they're not enough to make adoption as easy as it can be. +

    +

    Speaker Bio: +

    Átila Neves has a PhD in Particle Physics for research done at CERN. Most of the time spent there required programming in C++, with a 2-year stint as a Perl programmer in the IT department's security team. He also worked for Cisco for almost 7 years, developing networking software in C and C++ and leading his teams in the areas of software quality and testing. He now works as a D consultant/programmer for Symmetry Investments. He spends his spare time yelling at the screen in frustration while waiting for computers to compile his code. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/neves.pdf b/docs/2019/talks/neves.pdf new file mode 100644 index 00000000..b86edb9b Binary files /dev/null and b/docs/2019/talks/neves.pdf differ diff --git a/docs/2019/talks/nitu.html b/docs/2019/talks/nitu.html new file mode 100644 index 00000000..54ef46b3 --- /dev/null +++ b/docs/2019/talks/nitu.html @@ -0,0 +1,96 @@ + + + + + + + + +DConf 2019 speaker: Razvan Nitu + + + + + + + +
    +
    +

    Introducing the D Copy Constructor

    +

    + +

    Razvan Nitu
    + May 8 @ 11:00


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + Slides: ODP
    + Video
    +

    +

    Abstract:  +

    One of the newest D features (not yet released) is the copy constructor. If you want to get a head start on what it can do, how it is better than the postblit and why it was designed this way, then this is the talk for you. +

    + +

    Description

    + +

    The D version of the C++ copy constructor, historically called “postblit”, offers the advantage of automatic field copying, but comes with the shortcoming that it cannot correctly perform copies from differently qualified source/destination objects. Moreover, the automatic copying of immutable fields is problematic since the object is passed to the user in a cooked state and cannot be further modified. With the evolution of meta-programming the field copying that the postblit does automatically can be easily replaced by a few lines of code, rendering the single advantage of the postblit useless. This is where the new copy constructor steps in: it can create copies from differently qualified objects, therefore being able to initialize immutable objects and it does not +present any safety vulnerabilities. +

    + +

    The main topics of the talk will be: +

    • Postblit problems
    • +
    • Copy constructor as an alternative
    • +
    • Syntax
    • +
    • Semantics
    • +
    • Implicit generation of copy constructors
    • +
    • Future (possible) enhancements
    • +
    +

    + +

    The copy constructor is fully implemented and the DIP has been accepted. It is estimated that by the time of this talk, the copy constructor will be available in the master branch of the D +compiler. +

    +

    Speaker Bio: +

    I am a PhD student doing my thesis on programming languages and I have been contributing to the D compiler for 2.5 years. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/nitu.odp b/docs/2019/talks/nitu.odp new file mode 100644 index 00000000..ed07af72 Binary files /dev/null and b/docs/2019/talks/nitu.odp differ diff --git a/docs/2019/talks/panel.html b/docs/2019/talks/panel.html new file mode 100644 index 00000000..9029fa57 --- /dev/null +++ b/docs/2019/talks/panel.html @@ -0,0 +1,88 @@ + + + + + + + + +DConf 2019 speaker: Andrei Alexandrescu, Walter Bright + + + + + + + +
    +
    +

    Ask us Anything!

    +

    + + + + +
    Andrei Alexandrescu
    Andrei Alexandrescu
    + + + + +
    Walter Bright
    Walter Bright

    + +

    Andrei Alexandrescu, Walter Bright
    + May 8 @ 16:30


    Duration: 50 minutes
    + Talk type: Panel
    + Level: All
    + + + Video
    +

    +

    Abstract:  +

    Ready your pitchforks and rotten fruit! Prepare your rose petals and candy! But most of all, sort your queries! This is your chance to raise your hand and ask D's maintainers directly to fill you in on the things about D and the ecosystem that matter to you most. It's been a while since Walter and Andrei faced the unrestrained, unpredictable, and intelligent grilling the D community loves to bring them. Remind them how much fun it is! +

    +

    Speaker Bio: +

    Andrei Alexandrescu coined the colloquial term "modern C++" (adapted from his award-winning book Modern C++ Design), used today to describe a collection of important C++ styles and idioms. He is also the coauthor (with Herb Sutter) of C++ Coding Standards and the author of The D Programming Language book. With Walter Bright, Andrei co-designed many important features of D and authored a large part of D's standard library. His research on Machine Learning and Natural Language Processing completes a broad spectrum of expertise. Andrei holds a Ph.D. in Computer Science from the University of Washington and a B.Sc. in Electrical Engineering from University "Politehnica" Bucharest. He works with the D Language Foundation. +

    + +

    Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He's an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 years after its debut.

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/piolat.html b/docs/2019/talks/piolat.html new file mode 100644 index 00000000..5681a9d2 --- /dev/null +++ b/docs/2019/talks/piolat.html @@ -0,0 +1,85 @@ + + + + + + + + +DConf 2019 speaker: Guillaume Piolat + + + + + + + +
    +
    +

    intel-intrinsics - Not intrinsically about intrinsics

    +

    + +

    Guillaume Piolat
    + May 8 @ 14:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    intel-intrinsics is a D SIMD library that reuses existing Intel syntax for SIMD intrinsics, . +

    + +

    Besides familiarity, we'll discuss the measurable improvements you may expect today from your usage of intel-intrinsics, versus alternatives, with examples of real production code. +

    + +

    What could possibly be more boring than that? +

    + +

    It turns out intel-intrinsics is different from equivalents in other languages. Our vision is to decorrelate semantics and codegen completely to harness the power of the backend. +

    +

    Speaker Bio: +

    Guillaume Piolat worked as a professional complainer in various segments of the software industry: mostly signal processing. Struck by baldness early, he is now a purveyor of audio effects in the pro audio market, as Auburn Sounds. Guillaume created "D-idioms", a blog to bring awareness on the most mundane points of the language. You will likely see him rant about complexity on the D forums. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/piolat.pdf b/docs/2019/talks/piolat.pdf new file mode 100644 index 00000000..44e31bad Binary files /dev/null and b/docs/2019/talks/piolat.pdf differ diff --git a/docs/2019/talks/schadek.html b/docs/2019/talks/schadek.html new file mode 100644 index 00000000..d29f0bf6 --- /dev/null +++ b/docs/2019/talks/schadek.html @@ -0,0 +1,85 @@ + + + + + + + + +DConf 2019 speaker: Robert Schadek + + + + + + + +
    +
    +

    All Spreadsheets Must Die

    +

    + +

    Robert Schadek
    + May 8 @ 13:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: All
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    The presentation will make the case why spreadsheets are D's biggest competition on its way to world domination and how this battle can be won. +

    + +

    Description

    + +

    Languages like C++, Rust or Go seem to be the natural competition for the D programming language. This presentation will show how this is only true for a selected field of industries, and how spreadsheets are the dominant programming language on +the planet. After a brief and humorous look into the capabilities and idiosyncrasies of spreadsheet programming, using D as an alternative will be explored. Starting from there, techniques will be presented to combat spreadsheets on all fronts. These techniques will span a wide range of activities from data extraction, database interaction, use of existing code (in various languages), and finally data exchange via GraphQL*. All of these techniques will be examined under the scope of applicability, required effort, and impact. +

    + +

    * GraphQL is a data query and manipulation language that is superseding more and more REST APIs. +

    +

    Speaker Bio: +

    Robert Schadek received a Master degree in computer science at the University of Oldenburg. His master thesis was titled "DMCD A Distributed Multithreading Caching D Compiler" and introduced multi-threading among other optimizations to the compiler control flow. He was a computer science PhD student from 2012-2018 at the University of Oldenburg. His PhD research focuses on quorum systems in combination with graphs. Since 2018 he is happily using D in his day job working for Symmetry Investments. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/schadek.pdf b/docs/2019/talks/schadek.pdf new file mode 100644 index 00000000..77eaab6e Binary files /dev/null and b/docs/2019/talks/schadek.pdf differ diff --git a/docs/2019/talks/schveighoffer.html b/docs/2019/talks/schveighoffer.html new file mode 100644 index 00000000..a8525b37 --- /dev/null +++ b/docs/2019/talks/schveighoffer.html @@ -0,0 +1,84 @@ + + + + + + + + +DConf 2019 speaker: Steven Schveighoffer + + + + + + + +
    +
    +

    D is for (De)Serialization

    +

    + +

    Steven Schveighoffer
    + May 10 @ 11:00


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: All
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    Why is it that every time I write some project in D, I end up writing a serializer? I believe the reason lies in the ease with which you can use D to write generative code. It comes down to the fundamental truth that writing code that rids you of boilerplate is not only fun and satisfying, but when it’s easy, you feel foolish not to do it! With D, teaching the compiler how to write code is easier than with any other language I know, and everyone should be doing it. +

    + +

    Description

    + +

    I’ve written a few different libraries in D, I’ve written some in C++, Java, and several other languages. But every time I write some code where I find myself copy/pasting or writing tedious code that maps one type of thing to something else, I yearn to use D’s awesome compiler capabilities. D is the only language where I feel comfortable writing generative or templated code, and can actually read and understand (and maintain) the result. +

    + +

    This talk will cover several examples of generative programming from the community, and show how all the tools the compiler provides makes such programming far simpler than the manual alternatives. If you ever wrote a program in D, and used templates or static if, you probably know this feeling. Even more so if you have used generics or templates in other languages. But add in CTFE, User-Defined Attributes, compiler __traits, and mixins, and all of a sudden, you can quit your “day job” of writing boilerplate, and let the compiler do all the hard work. +

    +

    Speaker Bio: +

    Steven Schveighoffer has written several D libraries, including dcollections (container library) and iopipe (a high-performance i/o pipeline library). He has numerous contributions to both Phobos and Druntime, including rewriting the array runtime, and the RedBlackTree implementation. Most recently, he is working on getting the JSON iopipe library ready for release, including a full serializer. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/schveighoffer.pdf b/docs/2019/talks/schveighoffer.pdf new file mode 100644 index 00000000..30fb97d2 Binary files /dev/null and b/docs/2019/talks/schveighoffer.pdf differ diff --git a/docs/2019/talks/staniloiu.html b/docs/2019/talks/staniloiu.html new file mode 100644 index 00000000..a9026b9e --- /dev/null +++ b/docs/2019/talks/staniloiu.html @@ -0,0 +1,100 @@ + + + + + + + + +DConf 2019 speaker: Eduard Staniloiu + + + + + + + +
    +
    +

    Rethinking the Default Class Hierarchy: an Object’s Tale

    +

    + +

    Eduard Staniloiu
    + May 9 @ 14:30


    Duration: 25 minutes
    + Talk type: Presentation
    + Level: Beginner - Intermediate
    + + Slides: PPTX
    + Video
    +

    +

    Abstract:  +

    Every class defined in the D language has Object as the root ancestor. Object defines four +methods: toString, toHash, opCmp and opEquals; at first glance, their presence might not +strike you with much, but they are doing more harm than good. Their signatures predate the +introduction of the @nogc, nothrow, pure, and @safe function attributes, and also of the const, +immutable, and shared type qualifiers. As a consequence, these methods make it difficult to use +Object with qualifiers or in code with properties such as @nogc, pure, or @safe. We propose +the introduction of a new class, ProtoObject, as the root class and ancestor of Object. +ProtoObject defines no method and requires the user to implement the desired behaviour +through interfaces: this approach enables the user to opt-in for the behaviour that makes sense +for his class and the design is flexible enough to allow future attributes and language +improvements to be used without breaking code. +

    + +

    Description

    + +

    We start by having a look at the current design and discuss the shortcomings of Object. There are two main issues: +

    • The user has no way of opting out of one of the four methods; Ex. there are classes for which opCmp doesn't make sense
    • +
    • The signatures predate function attributes and qualifiers and this makes it difficult, if not impossible, to work with object in attributed code. Since we sadly can't predict the future and know if and what attributes and qualifiers will be available in the language, this is yet another argument to have a ProtoObject with no methods.
    • +
    +

    + +

    We will discuss how existing code and new code will interact with ProtoObject in this brave new world. +

    +

    Speaker Bio: +

    Eduard is a PhD student and Teaching Assistant at University "Politehnica" of Bucharest. He is a hard working student who enjoys ​to get his hands dirty +

    + +

    He likes learning new technologies and strengthening his current knowledge. He is passionate about computer science, programming languages, coffee and doing nothing. His previous experience includes distributed systems and parallel programming, operating systems, basic kernel development, open-source software and basic Android programming. He is a Linux fan, a command line addict and a vim enthusiast. He hopes that through his work he will be able to help and improve the D language, which he is becoming so fond of. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/staniloiu.pptx b/docs/2019/talks/staniloiu.pptx new file mode 100644 index 00000000..633e7a47 Binary files /dev/null and b/docs/2019/talks/staniloiu.pptx differ diff --git a/docs/2019/talks/veelo.html b/docs/2019/talks/veelo.html new file mode 100644 index 00000000..fb5459b0 --- /dev/null +++ b/docs/2019/talks/veelo.html @@ -0,0 +1,94 @@ + + + + + + + + +DConf 2019 speaker: Bastiaan Veelo + + + + + + + +
    +
    +

    Transcompilation into D

    +

    + +

    Bastiaan Veelo
    + May 10 @ 10:00


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Intermediate
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    SARC is an engineering company listed as one of the organisations using D. An important pillar of its business is the development of software for the maritime industry. Currently, its main D-related focus is to translate all of its 500KLOC of Extended Pascal into D using an in-house developed transcompiler. The transcompiler is purely developed using D tools, which was the subject of my DConf 2017 talk. SARC's motivation for selecting D as its future language was presented on the D blog in 2018. This talk will present the proceedings of this particular transcompilation effort, discussing challenges and strategies, and the D language features that help to make the project a success. +

    + +

    Description

    + +

    Subjects that I plan to cover: +

    • Review of earlier developments (Initial Pegged parser, working on Pegged itself to solve left-recursion etc., sample manual translations into multiple languages, language evaluation).
    • +
    • Dealing with language differences (case [in]sensitivity, array and string indices, mutable strings, bit sets, schema types, memory management).
    • +
    • Keeping backwards file IO compatibility in the end products.
    • +
    • Finding a balance between literal translation (reimplementing the language in D) and migration towards standard D (string type?)
    • +
    • Transcompilation project on live code: I am busy implementing the transcompilation while colleagues continue developing the software further.
    • +
    • Finding a balance between perfecting automation and keeping the transcompiler simple at the price of requiring manual tweaking.
    • +
    • No symbol table -> no import resolution, no scope, no stack, no type conversion, no semantics.
    • +
    • Conditioning the code for transcompilation case.
    • +
    • Building a tool that does the right thing most of the time based on heurtics, insert CT introspection checks that it did the right thing (adding extra braces where necessary), do manual fix ups in the original source where necessary, finally retranslate without the CT checks.
    • +
    • Where D could improve (type conversion (initial value types), cycles of module constructors, dub preGenerateCommands, Pegged improvements)
    • +
    • Summary of valuable D language features
    • +
    • Matryoshka doll analogy. There's another hill after reaching each new top. There's progress but you never know when you'll be done until you're done.
    • +
    +

    +

    Speaker Bio: +

    Bastiaan Veelo is the lead developer of a specialised program for the computer aided geometric design of ship hulls called Fairway, for the company SARC in the Netherlands. He holds a B.Eng. in naval architecture from the Haarlem Polytechnic, an M.Sc. in marine technology and a Ph.D. in mechanical engineering from NTNU, the Norwegian University of Science and Technology. He has been following the development of the D programming language from its early days, but only started using it actively since 2015 when he saw a chance to change his own future. Now he is well on his way in his master plan to convert his employer's business to a D shop. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/veelo.pdf b/docs/2019/talks/veelo.pdf new file mode 100644 index 00000000..97cf7a71 Binary files /dev/null and b/docs/2019/talks/veelo.pdf differ diff --git a/docs/2019/talks/watson.html b/docs/2019/talks/watson.html new file mode 100644 index 00000000..1ecde919 --- /dev/null +++ b/docs/2019/talks/watson.html @@ -0,0 +1,79 @@ + + + + + + + + +DConf 2019 speaker: Ethan Watson + + + + + + + +
    +
    +

    Mad With Power - The Hunt for New Compile-Time Idioms

    +

    + +

    Ethan Watson
    + May 10 @ 13:30


    Duration: 50 minutes
    + Talk type: Presentation
    + Level: Beginner - Intermediate
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    Design by introspection and compile-time function evaluation is fun and exciting. Especially for a performance-focused programmer that likes the idea of running as much code as possible offline. But it’s also something of a wild-west. There are idioms for standard metaprogramming approaches. But what else is the language capable of? Join Ethan as he discovers just how far he can push D with an eye on making a code base easily maintainable and highly efficient—two goals that have generally been considered mutually exclusive. +

    + +

    This session also aims to give a person new to this kind of programming an easy road into the concepts and methods used. +

    +

    Speaker Bio: +

    Fourth time lucky? Ethan Watson is a bit of a vet when it comes to D Conf, having presented at the three previous events. An unhealthy fascination with squirrels aside, his talks are regarded for being information-rich and entertaining at the same time—thanks to combining 16 years of experience as a programmer in the video games industry with his experience in amateur stand-up comedy. He is currently in the process of setting up a middleware studio and working at another Finnish game studio (Housemarque) at the same time. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/watson.pdf b/docs/2019/talks/watson.pdf new file mode 100644 index 00000000..7e91d6ff Binary files /dev/null and b/docs/2019/talks/watson.pdf differ diff --git a/docs/2019/talks/wilzbach.html b/docs/2019/talks/wilzbach.html new file mode 100644 index 00000000..aeb5f15f --- /dev/null +++ b/docs/2019/talks/wilzbach.html @@ -0,0 +1,95 @@ + + + + + + + + +DConf 2019 speaker: Sebastian Wilzbach + + + + + + + +
    +
    +

    How to Become a D Contributor

    +

    + +

    Sebastian Wilzbach
    + May 8 @ 16:00


    Duration: 25 minutes
    + Talk type: Presentation
    + Level: Beginner - Intermediate
    + + Slides: PDF
    + Video
    +

    +

    Abstract:  +

    While there are many people actively contributing to the D Programming Language, there are still more than 7 billion people out there who aren’t. This talk will try to explain some of the hurdles typical beginners run into and open them the door to the D world. +

    + +

    Description

    + +

    High barrier to enter, finding good issues to get started, and a confusing structure are among the most common reasons people cited, in the State of D 2018, survey which prevented them from contributing to D. +

    + +

    This talk will explain every step on how to become a contributor and core team member. Among others, it will answer these questions: +

    • How to find things to help with?
    • +
    • How can I fix this bug XZY (with actual examples)?
    • +
    • How is a good PR supposed to look?
    • +
    • What are all these CIs doing and why are they red?
    • +
    • Why is no one reviewing my PR?
    • +
    • What is this suspicious dlang-bot and how can he help me?
    • +
    • Who has merge rights and how could I get them?
    • +
    • How do I follow-up on a PR?
    • +
    • What’s the best thing I can do to help D?
    • +
    +

    +

    Speaker Bio: +

    Sebastian has contributed to D’s core repositories with more than 2.000 pull requests and, while he secretly hates D, he still thinks it's by far the least ugly language. Among others things, he is the +guy behind run.dlang.io, D’s Functional Garden, the DTour, the D documentation archives, and those mysterious pull requests to your project. Currently, he is helping to organize D’s 2019 GSoC as one of the organization admins for the D programming language. +

    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/talks/wilzbach.pdf b/docs/2019/talks/wilzbach.pdf new file mode 100644 index 00000000..7dd33d67 Binary files /dev/null and b/docs/2019/talks/wilzbach.pdf differ diff --git a/docs/2019/thankyou.html b/docs/2019/thankyou.html new file mode 100644 index 00000000..e030570a --- /dev/null +++ b/docs/2019/thankyou.html @@ -0,0 +1,60 @@ + + + + + + + +The D Programming Language Conference 2019 + + + + + + + +
    +

    Registration

    +

    Thanks! Your request was processed successfully. We look forward to seeing you in London!

    +

    Return to the DConf homepage.

    + +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2019/venue.html b/docs/2019/venue.html new file mode 100644 index 00000000..b5f620a0 --- /dev/null +++ b/docs/2019/venue.html @@ -0,0 +1,75 @@ + + + + + + + +The D Programming Language Conference 2019 + + + + + + + +
    +

    Venue

    +

    99 City Road Conference Centre is located in the heart of the area known as East London Tech City, near the Old Street tube and rail stations. Operated by https://www.inmarsat.com, Inmarsat, a global satellite communications firm headquartered in the same location, the venue is equipped to meet the needs of technology-oriented conferences. With its easy access to transportation, its proximity to popular tourist attractions, and the variety of nearby hotels, it's an ideal location for DConf 2019. +

    +
    +
    +

    Inmarsat has relationships with several local hotels allowing discounts for conference attendees. Upon registration, every DConf attendee will receive information on how to take advantage of these offers. Anyone who submits a talk and would like to wait until after the author notification date to register, please send an email to social@dlang.org for details. +

    +

    Even with the discounts, the partner hotels may be rather pricey. For those looking for cheaper alternatives, there are at least three budget hotels within walking distance: +

    +

    Other budget hotels can be found within a longer walking distance or a short tube ride away. There are numerous hostels to choose from as well. +

    +

    Nightly Gathering Spot

    +

    Just around the corner from the venue is the Prince Arthur Pub. This is our official gathering spot in the evenings. Mercedes-Benz Research and Development North America has booked a room for us for May 8, 9, and 10. Part of the fun of DConf is talking face-to-face with the other attendees. This backstreet pub is a cozy spot to do so. Drop by, enjoy a couple of rounds with us, and have some fun! +

    +
    +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/docs/2020/images/bright.jpg b/docs/2020/images/bright.jpg new file mode 100644 index 00000000..3e04d276 Binary files /dev/null and b/docs/2020/images/bright.jpg differ diff --git a/docs/2020/images/dconf2019group2.jpg b/docs/2020/images/dconf2019group2.jpg new file mode 100644 index 00000000..dbbfd5e0 Binary files /dev/null and b/docs/2020/images/dconf2019group2.jpg differ diff --git a/docs/2020/images/logo.png b/docs/2020/images/logo.png new file mode 100644 index 00000000..3c2750eb Binary files /dev/null and b/docs/2020/images/logo.png differ diff --git a/docs/2020/images/montage2.jpg b/docs/2020/images/montage2.jpg new file mode 100644 index 00000000..676f04b8 Binary files /dev/null and b/docs/2020/images/montage2.jpg differ diff --git a/docs/2020/images/register.png b/docs/2020/images/register.png new file mode 100644 index 00000000..d5b0309d Binary files /dev/null and b/docs/2020/images/register.png differ diff --git a/docs/2020/images/robertoi.jpg b/docs/2020/images/robertoi.jpg new file mode 100644 index 00000000..05381736 Binary files /dev/null and b/docs/2020/images/robertoi.jpg differ diff --git a/docs/2020/images/symmetry-logo1.png b/docs/2020/images/symmetry-logo1.png new file mode 100644 index 00000000..4dcca0f3 Binary files /dev/null and b/docs/2020/images/symmetry-logo1.png differ diff --git a/docs/2020/includes/w3.css b/docs/2020/includes/w3.css new file mode 100644 index 00000000..a10a4a6d --- /dev/null +++ b/docs/2020/includes/w3.css @@ -0,0 +1,147 @@ +/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent}a:active,a:hover{outline-width:0} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} +.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:1205px){.w3-auto{max-width:95%}} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:whitesmoke!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} \ No newline at end of file diff --git a/docs/2020/index.html b/docs/2020/index.html new file mode 100644 index 00000000..ba35b6e5 --- /dev/null +++ b/docs/2020/index.html @@ -0,0 +1,88 @@ + + + + + + + + +The D Programming Language Conference 2020 + + + + +
    +
    + HOME + 2019 + 2018 + 2017 + 2016 + 2015 + 2014 + 2013 + +
    +
    + 2019 + 2018 + 2017 + 2016 + 2015 + 2014 + 2013 +
    +
    + +
    +
    + DConf 2020 London Logo +
    +
    + + +
    +
    +

    DConf 2020 Canceled

    +

    Due to the COVID-19 pandemic, the D Language Foundation and our DConf 2020 sponsors, + Symmetry Investments, came to the painful but correct decision to cancel DConf 2020. We + hope to bring DConf back as soon as possible, be that in 2021 or some later date. +

    +

    + In the meantime, we've started a new tradition. DConf Online 2020 took place + November 21 & 22, 2020. Details can be found on the DConf Online 2020 home page. +

    +
    +
    + + + + \ No newline at end of file diff --git a/docs/2020/online/images/cehreli.jpg b/docs/2020/online/images/cehreli.jpg new file mode 100644 index 00000000..cf633eeb Binary files /dev/null and b/docs/2020/online/images/cehreli.jpg differ diff --git a/docs/2020/online/images/koch.jpg b/docs/2020/online/images/koch.jpg new file mode 100644 index 00000000..270806d0 Binary files /dev/null and b/docs/2020/online/images/koch.jpg differ diff --git a/docs/2020/online/images/lang.jpg b/docs/2020/online/images/lang.jpg new file mode 100644 index 00000000..c31ed01f Binary files /dev/null and b/docs/2020/online/images/lang.jpg differ diff --git a/docs/2020/online/images/logo.png b/docs/2020/online/images/logo.png new file mode 100644 index 00000000..ce679234 Binary files /dev/null and b/docs/2020/online/images/logo.png differ diff --git a/docs/2020/online/images/ruppe.jpg b/docs/2020/online/images/ruppe.jpg new file mode 100644 index 00000000..93357d69 Binary files /dev/null and b/docs/2020/online/images/ruppe.jpg differ diff --git a/docs/2020/online/images/schadek.jpg b/docs/2020/online/images/schadek.jpg new file mode 100644 index 00000000..c3e99285 Binary files /dev/null and b/docs/2020/online/images/schadek.jpg differ diff --git a/docs/2020/online/images/stock.jpg b/docs/2020/online/images/stock.jpg new file mode 100644 index 00000000..dde60f8f Binary files /dev/null and b/docs/2020/online/images/stock.jpg differ diff --git a/docs/2020/online/images/wna.png b/docs/2020/online/images/wna.png new file mode 100644 index 00000000..c3c57177 Binary files /dev/null and b/docs/2020/online/images/wna.png differ diff --git a/docs/2020/online/index.html b/docs/2020/online/index.html new file mode 100644 index 00000000..06085227 --- /dev/null +++ b/docs/2020/online/index.html @@ -0,0 +1,697 @@ + + + + + + + + +The D Programming Language Conference 2020 + + + +
    +
    + HOME + SCHEDULE + SWAG + DCONF OFFLINE + DLANG.ORG + +
    +
    + SCHEDULE + SWAG + DCONF OFFLINE + DLANG.ORG +
    +
    + +
    +
    + DConf 2020 London Logo +
    +
    + + +
    +
    +

    DConf Goes Online

    +

    + The D Language Foundation is very pleased to announce that DConf Online 2020 (not DConf 2020 Online!) took place November 21 and 22, 2020. This two-day event presented a mix of pre-recorded talks and livestream sessions. No registration was required, no payment was necessary. It was open to any and all who would like to participate in real time, and all talks and livestreams will forever persist on DConf Online 2020 Playlist. Be sure to subscribe to the D Language Foundation's YouTube channel for notifications and reminders about future editions of DConf Online and other D-related videos! +

    +

    + The prerecorded talks are listed in the schedule below, along with links to the relevant slides and videos. Both the Day One Q & A Livestream and the Day Two Q & A Livestream are available to view in their entirety. We have chopped them up into individual Q & A videos for each talk and made them available in a DConf Online 2020 Q & A Playlist. The Ask Us Anything! session with Walter and Átila is also be availble as a standalone video in the main DConf Online 2020 playlist. +

    +

    + Thanks to everyone who took part in DConf Online 2020! Whether you did so as a speaker or as a viewer, whether you were just lurking or asking questions, the conference would not have been successful without your participation. We now look forward to both the next DConf (whether it be in 2021 or 2022) and the second edition of DConf Online! +

    + +
    +
    + + +
    +
    +

    Schedule

    + + + + + + +
    Back to schedule top
    +
    +
    + + +
    +
    +

    Swag

    +

    + DConf Online 2020 swag is available for purchase at the DLang Swag Emporium. All proceeds will be directed to the D Language Foundation General Fund, which is the fund we used to provide the free swag to our speakers and prizes to lucky viewers. (Direct donations to the General Fund are welcome, too!) +

    +

    We'll keep the DConf Online 2020 swag in the store for the foreseeable future, but don't expect it to be there forever!

    +
    +
    +
    + © 2020 The D Language Foundation +
    + + + + \ No newline at end of file diff --git a/docs/2020/online/slides/alex.pptx b/docs/2020/online/slides/alex.pptx new file mode 100644 index 00000000..ef26c25d Binary files /dev/null and b/docs/2020/online/slides/alex.pptx differ diff --git a/docs/2020/online/slides/ali-1.pdf b/docs/2020/online/slides/ali-1.pdf new file mode 100644 index 00000000..7094756b Binary files /dev/null and b/docs/2020/online/slides/ali-1.pdf differ diff --git a/docs/2020/online/slides/ali-2.pdf b/docs/2020/online/slides/ali-2.pdf new file mode 100644 index 00000000..d60188f4 Binary files /dev/null and b/docs/2020/online/slides/ali-2.pdf differ diff --git a/docs/2020/online/slides/atila.pdf b/docs/2020/online/slides/atila.pdf new file mode 100644 index 00000000..12ded860 Binary files /dev/null and b/docs/2020/online/slides/atila.pdf differ diff --git a/docs/2020/online/slides/mathias.pdf b/docs/2020/online/slides/mathias.pdf new file mode 100644 index 00000000..c5d5bc62 Binary files /dev/null and b/docs/2020/online/slides/mathias.pdf differ diff --git a/docs/2020/online/slides/mathis.odp b/docs/2020/online/slides/mathis.odp new file mode 100644 index 00000000..9370bc04 Binary files /dev/null and b/docs/2020/online/slides/mathis.odp differ diff --git a/docs/2020/online/slides/robert.pdf b/docs/2020/online/slides/robert.pdf new file mode 100644 index 00000000..205c61cd Binary files /dev/null and b/docs/2020/online/slides/robert.pdf differ diff --git a/docs/2020/online/slides/stefan.odp b/docs/2020/online/slides/stefan.odp new file mode 100644 index 00000000..2a519572 Binary files /dev/null and b/docs/2020/online/slides/stefan.odp differ diff --git a/docs/2020/online/slides/steve.pdf b/docs/2020/online/slides/steve.pdf new file mode 100644 index 00000000..14187739 Binary files /dev/null and b/docs/2020/online/slides/steve.pdf differ diff --git a/docs/2020/online/slides/walter.pdf b/docs/2020/online/slides/walter.pdf new file mode 100644 index 00000000..eca7d695 Binary files /dev/null and b/docs/2020/online/slides/walter.pdf differ diff --git a/docs/2021/includes/w3.css b/docs/2021/includes/w3.css new file mode 100644 index 00000000..6641e1e7 --- /dev/null +++ b/docs/2021/includes/w3.css @@ -0,0 +1,147 @@ +/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent}a:active,a:hover{outline-width:0} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} +.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:1205px){.w3-auto{max-width:95%}} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:whitesmoke!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} \ No newline at end of file diff --git a/docs/2021/index.html b/docs/2021/index.html new file mode 100644 index 00000000..11eeaec2 --- /dev/null +++ b/docs/2021/index.html @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/docs/2021/online/images/callahan.jpg b/docs/2021/online/images/callahan.jpg new file mode 100644 index 00000000..2e73c633 Binary files /dev/null and b/docs/2021/online/images/callahan.jpg differ diff --git a/docs/2021/online/images/chatha.jpg b/docs/2021/online/images/chatha.jpg new file mode 100644 index 00000000..1bdeefe2 Binary files /dev/null and b/docs/2021/online/images/chatha.jpg differ diff --git a/docs/2021/online/images/haughton.jpg b/docs/2021/online/images/haughton.jpg new file mode 100644 index 00000000..9297a2b5 Binary files /dev/null and b/docs/2021/online/images/haughton.jpg differ diff --git a/docs/2021/online/images/stone.jpg b/docs/2021/online/images/stone.jpg new file mode 100644 index 00000000..039fc001 Binary files /dev/null and b/docs/2021/online/images/stone.jpg differ diff --git a/docs/2021/online/images/war.jpg b/docs/2021/online/images/war.jpg new file mode 100644 index 00000000..e6443ea7 Binary files /dev/null and b/docs/2021/online/images/war.jpg differ diff --git a/docs/2021/online/index.html b/docs/2021/online/index.html new file mode 100644 index 00000000..9cde06d6 --- /dev/null +++ b/docs/2021/online/index.html @@ -0,0 +1,607 @@ + + + + + + + + +The D Programming Language Conference 2021 + + + + + +
    +
    + +

    + writeln("DConf Online 2021"); +

    +
    +
    + + +
    +
    +

    DConf is Back Online

    +

    + The D Language Foundation hosted DConf Online 2021 on our YouTube channel on November 20 and 21, 2021. The event was comprised of eight prerecorded talks, eight live Q & A sessions (one with each speaker), an Ask Us Anything! session with the lanuage maintainers, and a livecoding session with a proilific D programmer. The schedule below describes each talk and provides links to the prerecorded video, the associated Q & A session, and any slides used. +

    +

    + We had a lot of fun bringing DConf Online 2021 to life. Now we're looking to the possibility to bring DConf back to the real world in 2022, and we're already making plans for the next edition of DConf Online! +

    +
    +
    + + +
    +
    +

    Schedule

    + + + + + + +
    Back to schedule top
    +
    +
    + + +
    +
    +

    Swag

    +

    + DConf Online 2021 swag is available for purchase at the DLang Swag Emporium along with other D-themed items. Royalties from all purchases in the DLang Swag Emporium are directed to the D Language Foundation General Fund. Money from this fund is used to provide free swag to our speakers and prizes to lucky viewers. (Direct donations to the General Fund are welcome, too!) +

    +

    + Random viewers whose questions were answered in the livestream were awarded a total of three t-shirts, three coffee mugs, and six Amazon eGift cards (three $25, two $50, one $100). See the DConf Online 2021 Q & A videos for the questions that viewers asked and the answers our speakers provided. +

    +
    +
    +
    + © 2021 The D Language Foundation +
    + + + + \ No newline at end of file diff --git a/docs/2021/online/slides/bright.pdf b/docs/2021/online/slides/bright.pdf new file mode 100644 index 00000000..2ac49061 Binary files /dev/null and b/docs/2021/online/slides/bright.pdf differ diff --git a/docs/2021/online/slides/callahan.pdf b/docs/2021/online/slides/callahan.pdf new file mode 100644 index 00000000..6a4551f6 Binary files /dev/null and b/docs/2021/online/slides/callahan.pdf differ diff --git a/docs/2021/online/slides/chatha.odp b/docs/2021/online/slides/chatha.odp new file mode 100644 index 00000000..2688a6e8 Binary files /dev/null and b/docs/2021/online/slides/chatha.odp differ diff --git a/docs/2021/online/slides/haughton.pdf b/docs/2021/online/slides/haughton.pdf new file mode 100644 index 00000000..e08236c3 Binary files /dev/null and b/docs/2021/online/slides/haughton.pdf differ diff --git a/docs/2021/online/slides/neves.pptx b/docs/2021/online/slides/neves.pptx new file mode 100644 index 00000000..29de4a21 Binary files /dev/null and b/docs/2021/online/slides/neves.pptx differ diff --git a/docs/2021/online/slides/schadek.pdf b/docs/2021/online/slides/schadek.pdf new file mode 100644 index 00000000..7345c922 Binary files /dev/null and b/docs/2021/online/slides/schadek.pdf differ diff --git a/docs/2022/images/colvin.jpg b/docs/2022/images/colvin.jpg new file mode 100644 index 00000000..809d1732 Binary files /dev/null and b/docs/2022/images/colvin.jpg differ diff --git a/docs/2022/images/danescu.jpg b/docs/2022/images/danescu.jpg new file mode 100644 index 00000000..8eea0397 Binary files /dev/null and b/docs/2022/images/danescu.jpg differ diff --git a/docs/2022/images/devIT.png b/docs/2022/images/devIT.png new file mode 100644 index 00000000..3c2f19fa Binary files /dev/null and b/docs/2022/images/devIT.png differ diff --git a/docs/2022/images/flipcause-register.jpg b/docs/2022/images/flipcause-register.jpg new file mode 100644 index 00000000..4753bfbd Binary files /dev/null and b/docs/2022/images/flipcause-register.jpg differ diff --git a/docs/2022/images/funkwerk-logo.png b/docs/2022/images/funkwerk-logo.png new file mode 100644 index 00000000..fda5b9bb Binary files /dev/null and b/docs/2022/images/funkwerk-logo.png differ diff --git a/docs/2022/images/koppe.jpg b/docs/2022/images/koppe.jpg new file mode 100644 index 00000000..13dfe431 Binary files /dev/null and b/docs/2022/images/koppe.jpg differ diff --git a/docs/2022/images/logo-og2.jpg b/docs/2022/images/logo-og2.jpg new file mode 100644 index 00000000..8198c4d0 Binary files /dev/null and b/docs/2022/images/logo-og2.jpg differ diff --git a/docs/2022/images/logo-trans-512.png b/docs/2022/images/logo-trans-512.png new file mode 100644 index 00000000..b3eaec11 Binary files /dev/null and b/docs/2022/images/logo-trans-512.png differ diff --git a/docs/2022/images/margalit.jpg b/docs/2022/images/margalit.jpg new file mode 100644 index 00000000..031f3c6f Binary files /dev/null and b/docs/2022/images/margalit.jpg differ diff --git a/docs/2022/images/nayar.jpg b/docs/2022/images/nayar.jpg new file mode 100644 index 00000000..5308dd40 Binary files /dev/null and b/docs/2022/images/nayar.jpg differ diff --git a/docs/2022/images/parker.jpg b/docs/2022/images/parker.jpg new file mode 100644 index 00000000..6cff0cf9 Binary files /dev/null and b/docs/2022/images/parker.jpg differ diff --git a/docs/2022/images/plpanel.jpg b/docs/2022/images/plpanel.jpg new file mode 100644 index 00000000..48c60384 Binary files /dev/null and b/docs/2022/images/plpanel.jpg differ diff --git a/docs/2022/images/shah.jpg b/docs/2022/images/shah.jpg new file mode 100644 index 00000000..ad325ac0 Binary files /dev/null and b/docs/2022/images/shah.jpg differ diff --git a/docs/2022/images/twitter.png b/docs/2022/images/twitter.png new file mode 100644 index 00000000..8918cc2f Binary files /dev/null and b/docs/2022/images/twitter.png differ diff --git a/docs/2022/images/vais.jpg b/docs/2022/images/vais.jpg new file mode 100644 index 00000000..f81436d9 Binary files /dev/null and b/docs/2022/images/vais.jpg differ diff --git a/docs/2022/includes/w3.css b/docs/2022/includes/w3.css new file mode 100644 index 00000000..a10a4a6d --- /dev/null +++ b/docs/2022/includes/w3.css @@ -0,0 +1,147 @@ +/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent}a:active,a:hover{outline-width:0} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} +.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:1205px){.w3-auto{max-width:95%}} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:whitesmoke!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} \ No newline at end of file diff --git a/docs/2022/index.html b/docs/2022/index.html new file mode 100644 index 00000000..f218b446 --- /dev/null +++ b/docs/2022/index.html @@ -0,0 +1,780 @@ + + + + + + + + + + + + + + + +The D Programming Language Conference 2022 + + + + +
    +
    + +
    +
    + + +
    +
    +

    DConf Returns to London

    +

    + Thanks to our friends at Symmetry Investments, the D Programming Language Conference took place in London from August 1–4, 2022. This was Symmetry's second time hosting the conference in London for us, and it was even better than the first time! Everyone at the D Language Foundation is grateful for the time, money, and effort they put toward hosting a successful event. +

    +

    + DConf is the largest meetup event of the D programming language community. Like many other annual gatherings throughout the world, we were sidelined for two years by events beyond our control. We'd had regular meetups online to tide us over, but we were eager to once again meet face-to-face in the real world. Our anticipation was well satisfied as old hands and new, including several first-time DConf speakers, joined us for four days of education, knowledge sharing, fellowship, and fun. +

    + + +

    + We're in the process of preparing individual videos of each talk. Those will be available on our YouTube channel, a link to which you'll in the talk details for each talk in the schedule below. Slide links are available for each talk now. +

    +

    Keynote Speakers

    +
    +
    + +

    + Walter Bright
    + Creator and comaintainer of the D programming language. +

    +
    +
    + +

    + Roberto Ierusalimschy
    + Associate Professor at the PUC-Rio Department of Informatics and head designer of the Lua programming language. +

    +
    +
    + +

    + Átila Neves
    + Comaintainer of the D programming language. +

    +
    +
    +
    +
    + + +
    +
    +

    Schedule

    +

    + Click [Show Details] next to a speaker's name below for information about a talk, panel, or speaker.
    + Note that all times are in UTC + 1. +

    + + +
    +

    Monday August 1st

    +
    + + + +
    +

    Tuesday August 2nd

    +
    + + + +
    +

    Wednesday August 3rd

    +
    + + + +
    +

    Thursday August 4th—The DConf Hackathon

    +
    + +
    +
    + +
    +
    +

    Registration

    + Registration is now closed. Thank you to all who registered. +
    +
    + + +
    +
    +

    Venue

    +

    + Our DConf '22 venue is CodeNode, a space in Central London specifically designed for tech conferences. It's conveniently located close between Moorgate and Liverpool Street stations, and is a 10–15 minute walk from Old Street Station to the north. +

    +
    + +
    +

    + Our presentations will happen on the ground floor in the CTRL room, and we'll have the entirety of the ESC area downstairs to ourselves, where attendees can relax, chat, or play table tennis or foosball between talks. +

    +

    Accommodations

    +

    + There are several budget hotels in easy walking distance. The following are some options that, according to Google Maps, are less than a 20-minute walk from the venue. Some of them are near an underground station that is one stop away from Moorgate or Liverpool Street stations. Click a link to see the walking route(s) between a hotel and the venue. On the map, you'll find links to reserve a room. +

    + +

    BeerConf!

    +

    + Traditionally, on each of the first three evenings we designate a location where attendees can gather to hang out and chat over drinks. Often, it’s a the lobby or bar of a nearby hotel. When we are unable to find a hotel with a suitable space, we look for a pub that has space for hire. Ethan Watson coined the term BeerConf, and it stuck. Since 2020, when DConf was canceled due to the pandemic, we’ve also been holding an online BeerConf on the last weekend of every month. You can read more about it on the D Wiki. +

    +

    + BeerConf ’22 is sponsored by Funkwerk and is happening at The Fox in Shoreditch, just a short walk north of the venue and very close to the Point A Hotel London - Shoreditch and Travelodge London Central City Road. We’ll have the roof terrace to ourselves. Drinks are free for DConf attendees each night until the tab runs out, courtesy of Funkwerk. If you’re attending DConf ’22, join us on the evenings of August 1–3 any time from 18:30 to 23:00 and raise a glass or two! +

    +
    + +
    +
    +
    + + +
    +
    +

    Sponsors

    +
    + Symmetry Investments +
    +

    DConf ’22 is hosted by our friends at Symmetry Investments. With offices in Hong Kong, Singapore, London, Jersey, and the Cayman Islands, Symmetry employs D in their investment + management mission. This is the second time they've hosted a DConf. Their first go in 2019 was a smashing success. They are also the sponsors of the + Symmetry Autumn of Code, an annual event that, since 2018, has provided experience to emerging programmers while + enhancing the D ecosystem. We couldn't be more thrilled to be working with Symmetry in bringing DConf to London once again.

    + +
    + Funkwerk +
    +

    We are happy for the support of our friends at Funkwerk. The medium-sized technology group has several branches in Germany and Austria. Funkwerk has emerged as a technological leader in the growing markets of mobility and digital infrastructure. It offers tailored concepts to control and streamline operational processes—primarily for the rail industry and public transport. Funkwerk’s portfolio includes voice and data communication for rail (GSM-R, LTE and 5G), information systems and electronic video and security systems. That’s modern rail technology—made in Germany!

    + +
    + DevITjobs.uk +
    +

    A big thanks to DevITjobs, our media partners for DConf ’22. DevITjobs is the first job board built with Software Engineers in mind. Their goal is to bring more transparency, openness and diversity to the British IT market. They want to make the job search process for Software Engineers more enjoyable by gathering all job postings in the United Kingdom and presenting them in an informative way. The DevITjobs.uk portal is not only for Developers but for everyone working in the IT industry: Engineers, SAP and System Admins, Product Managers, QAs and UX/UI Designers!

    +
    +
    + +
    + © 2022 The D Language Foundation +
    + + + diff --git a/docs/2022/online/images/hemsley.png b/docs/2022/online/images/hemsley.png new file mode 100644 index 00000000..87fa3abb Binary files /dev/null and b/docs/2022/online/images/hemsley.png differ diff --git a/docs/2022/online/images/li.jpg b/docs/2022/online/images/li.jpg new file mode 100644 index 00000000..9d189c71 Binary files /dev/null and b/docs/2022/online/images/li.jpg differ diff --git a/docs/2022/online/images/logo-512.jpg b/docs/2022/online/images/logo-512.jpg new file mode 100644 index 00000000..964ab0d6 Binary files /dev/null and b/docs/2022/online/images/logo-512.jpg differ diff --git a/docs/2022/online/images/logo-og.jpg b/docs/2022/online/images/logo-og.jpg new file mode 100644 index 00000000..d2e8d6a9 Binary files /dev/null and b/docs/2022/online/images/logo-og.jpg differ diff --git a/docs/2022/online/includes/w3.css b/docs/2022/online/includes/w3.css new file mode 100644 index 00000000..a10a4a6d --- /dev/null +++ b/docs/2022/online/includes/w3.css @@ -0,0 +1,147 @@ +/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent}a:active,a:hover{outline-width:0} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} +.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:1205px){.w3-auto{max-width:95%}} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:whitesmoke!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} \ No newline at end of file diff --git a/docs/2022/online/index.html b/docs/2022/online/index.html new file mode 100644 index 00000000..5df315f5 --- /dev/null +++ b/docs/2022/online/index.html @@ -0,0 +1,552 @@ + + + + + + + + + + + + + + + + + + + + + +The D Programming Language Conference Online 2022 + + + + +
    +
    + +
    +
    + + +
    +
    +

    DConf Online Third Edition

    +

    + The D Language Foundation invites you to join us for the third edition of DConf Online, December 17th and 18th, 2022! It’s all happening on the D Language Foundation’s YouTube channel, and it’s completely free. No registration required. All you need is a web browser or YouTube app, an internet connection, and, if you want to participate in the live chats, a YouTube account. +

    +

    + As with past editions of DConf Online, you’ll be able to watch a number of prerecorded talks as they appear, and ask questions of each speaker during the talks, and in an ongoing livestream after the talks. All of the talks and the livestreams from both days will continue to be available after the conference ends, and we’ll upload each post-talk Q & A session as separate, trimmed-down videos. You can watch videos from the past editions at the following links. +

    + +

    + When we had to cancel DConf in 2020 due to the pandemic, we launched the online version as a companion to, and not a substitute for, the real-world version. DConf ‘22 was arguably the best DConf yet, and now we finally get to have both versions in the same year. We look forward to continuing both in the years to come. +

    +
    +
    + + +
    +
    +

    Schedule

    +

    Both days of DConf Online ‘22 start with a livestream at 13:50 UTC hosted by Mike Parker. Here are the links:

    + +

    Each of the talks are pre-recorded videos which are set to premiere at the scheduled times below.

    +

    The Livestream

    +

    Each presenter will join the livestream five minutes prior to the start of their talk. During the talk, the presenter will remain in the livestream. They will answer questions both from the talk video’s livechat and from the livestream. They’ll answer livechat questions in two ways: they’ll type short answers in the livechat, and they’ll verbalize each answer in the livestream, elaborating as required. In between questions, Mike will chat with the presenter, asking his own questions about their talk and their experience with the D language. After the talk ends, the presenter will remain in the livestream for another 20 minutes or so for a Q & A session. During this post-talk session, anyone whose question is answered will be entered into a drawing for a prize.

    +

    Viewers are free to remain in the livestream during each talk, but we recommend you instead do the following:

    + +

    Why do we do it this way? Each presenter should be available anyway to answer questions in their talk’s livechat, but a chat box isn’t the best medium for long, detailed answers and followups. The livestream gives them the opportunity to provide more detailed answers, often with followups from the host, and allows us to record all such answers for posterity. Each presenter’s livestream session will be recorded, edited, and uploaded to our YouTube channel as an independent video. Watch the livestream Q & A sessions from DConf Online 2020 and DConf Online 2021 as examples of what to expect.

    + +

    The Talks

    +

    Click [Show Details] next to a speaker’s name below for information about a talk or speaker.
    + Note that all times are in UTC.

    + + +
    +

    Saturday December 17

    +
    + + + +
    +

    Sunday December 18

    +
    + +
    +
    +
    + © 2022 The D Language Foundation +
    + + + + diff --git a/docs/2022/online/slides/bright.pdf b/docs/2022/online/slides/bright.pdf new file mode 100644 index 00000000..b5b2a698 Binary files /dev/null and b/docs/2022/online/slides/bright.pdf differ diff --git a/docs/2022/online/slides/hemsley.pdf b/docs/2022/online/slides/hemsley.pdf new file mode 100644 index 00000000..e82f3c40 Binary files /dev/null and b/docs/2022/online/slides/hemsley.pdf differ diff --git a/docs/2022/online/slides/korpel.pdf b/docs/2022/online/slides/korpel.pdf new file mode 100644 index 00000000..52410d0a Binary files /dev/null and b/docs/2022/online/slides/korpel.pdf differ diff --git a/docs/2022/online/slides/li.pdf b/docs/2022/online/slides/li.pdf new file mode 100644 index 00000000..9e6514ad Binary files /dev/null and b/docs/2022/online/slides/li.pdf differ diff --git a/docs/2022/online/slides/neves.pdf b/docs/2022/online/slides/neves.pdf new file mode 100644 index 00000000..e081b2d2 Binary files /dev/null and b/docs/2022/online/slides/neves.pdf differ diff --git a/docs/2022/online/slides/schadek.pdf b/docs/2022/online/slides/schadek.pdf new file mode 100644 index 00000000..0bb5ba2b Binary files /dev/null and b/docs/2022/online/slides/schadek.pdf differ diff --git a/docs/2022/online/slides/schveighoffer.pdf b/docs/2022/online/slides/schveighoffer.pdf new file mode 100644 index 00000000..eef24231 Binary files /dev/null and b/docs/2022/online/slides/schveighoffer.pdf differ diff --git a/docs/2022/online/slides/shah.pdf b/docs/2022/online/slides/shah.pdf new file mode 100644 index 00000000..e1182c3d Binary files /dev/null and b/docs/2022/online/slides/shah.pdf differ diff --git a/docs/2022/slides/beer.pdf b/docs/2022/slides/beer.pdf new file mode 100644 index 00000000..ad776d64 Binary files /dev/null and b/docs/2022/slides/beer.pdf differ diff --git a/docs/2022/slides/bright.pdf b/docs/2022/slides/bright.pdf new file mode 100644 index 00000000..95475d78 Binary files /dev/null and b/docs/2022/slides/bright.pdf differ diff --git a/docs/2022/slides/cehreli.pdf b/docs/2022/slides/cehreli.pdf new file mode 100644 index 00000000..6f3c1305 Binary files /dev/null and b/docs/2022/slides/cehreli.pdf differ diff --git a/docs/2022/slides/colvin.pdf b/docs/2022/slides/colvin.pdf new file mode 100644 index 00000000..89ff3da7 Binary files /dev/null and b/docs/2022/slides/colvin.pdf differ diff --git a/docs/2022/slides/danescu.pptx b/docs/2022/slides/danescu.pptx new file mode 100644 index 00000000..2d070e22 Binary files /dev/null and b/docs/2022/slides/danescu.pptx differ diff --git a/docs/2022/slides/dutu.pptx b/docs/2022/slides/dutu.pptx new file mode 100644 index 00000000..7a687d20 Binary files /dev/null and b/docs/2022/slides/dutu.pptx differ diff --git a/docs/2022/slides/haughton.pdf b/docs/2022/slides/haughton.pdf new file mode 100644 index 00000000..9794efdb Binary files /dev/null and b/docs/2022/slides/haughton.pdf differ diff --git a/docs/2022/slides/ierusalimschy.pdf b/docs/2022/slides/ierusalimschy.pdf new file mode 100644 index 00000000..de6c644f Binary files /dev/null and b/docs/2022/slides/ierusalimschy.pdf differ diff --git a/docs/2022/slides/korpel.pdf b/docs/2022/slides/korpel.pdf new file mode 100644 index 00000000..12fb95df Binary files /dev/null and b/docs/2022/slides/korpel.pdf differ diff --git a/docs/2022/slides/margalit.pptx b/docs/2022/slides/margalit.pptx new file mode 100644 index 00000000..86927d23 Binary files /dev/null and b/docs/2022/slides/margalit.pptx differ diff --git a/docs/2022/slides/nayar.pdf b/docs/2022/slides/nayar.pdf new file mode 100644 index 00000000..1195099e Binary files /dev/null and b/docs/2022/slides/nayar.pdf differ diff --git a/docs/2022/slides/neves.pdf b/docs/2022/slides/neves.pdf new file mode 100644 index 00000000..1ce89669 Binary files /dev/null and b/docs/2022/slides/neves.pdf differ diff --git a/docs/2022/slides/parker.pdf b/docs/2022/slides/parker.pdf new file mode 100644 index 00000000..8e530ed3 Binary files /dev/null and b/docs/2022/slides/parker.pdf differ diff --git a/docs/2022/slides/schadek.pdf b/docs/2022/slides/schadek.pdf new file mode 100644 index 00000000..ed37b1ec Binary files /dev/null and b/docs/2022/slides/schadek.pdf differ diff --git a/docs/2022/slides/shah.pdf b/docs/2022/slides/shah.pdf new file mode 100644 index 00000000..7997a348 Binary files /dev/null and b/docs/2022/slides/shah.pdf differ diff --git a/docs/2022/slides/vais.pptx b/docs/2022/slides/vais.pptx new file mode 100644 index 00000000..05ebe91b Binary files /dev/null and b/docs/2022/slides/vais.pptx differ diff --git a/docs/2023/images/abbott.jpg b/docs/2023/images/abbott.jpg new file mode 100644 index 00000000..db29bc88 Binary files /dev/null and b/docs/2023/images/abbott.jpg differ diff --git a/docs/2023/images/ahrefs.svg b/docs/2023/images/ahrefs.svg new file mode 100644 index 00000000..ba98b191 --- /dev/null +++ b/docs/2023/images/ahrefs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/2023/images/briasco-stewart.jpg b/docs/2023/images/briasco-stewart.jpg new file mode 100644 index 00000000..aaf67656 Binary files /dev/null and b/docs/2023/images/briasco-stewart.jpg differ diff --git a/docs/2023/images/chicos.jpg b/docs/2023/images/chicos.jpg new file mode 100644 index 00000000..e75ca89d Binary files /dev/null and b/docs/2023/images/chicos.jpg differ diff --git a/docs/2023/images/doherty.jpg b/docs/2023/images/doherty.jpg new file mode 100644 index 00000000..1378c84c Binary files /dev/null and b/docs/2023/images/doherty.jpg differ diff --git a/docs/2023/images/gehr.jpg b/docs/2023/images/gehr.jpg new file mode 100644 index 00000000..94e1d957 Binary files /dev/null and b/docs/2023/images/gehr.jpg differ diff --git a/docs/2023/images/korpel.jpg b/docs/2023/images/korpel.jpg new file mode 100644 index 00000000..9bc10610 Binary files /dev/null and b/docs/2023/images/korpel.jpg differ diff --git a/docs/2023/images/logo-og.jpg b/docs/2023/images/logo-og.jpg new file mode 100644 index 00000000..d589ea81 Binary files /dev/null and b/docs/2023/images/logo-og.jpg differ diff --git a/docs/2023/images/logo-trans-512.png b/docs/2023/images/logo-trans-512.png new file mode 100644 index 00000000..36b5f217 Binary files /dev/null and b/docs/2023/images/logo-trans-512.png differ diff --git a/docs/2023/images/mancini.jpg b/docs/2023/images/mancini.jpg new file mode 100644 index 00000000..c4393443 Binary files /dev/null and b/docs/2023/images/mancini.jpg differ diff --git a/docs/2023/images/miranda.jpg b/docs/2023/images/miranda.jpg new file mode 100644 index 00000000..de00a160 Binary files /dev/null and b/docs/2023/images/miranda.jpg differ diff --git a/docs/2023/images/nitu.jpg b/docs/2023/images/nitu.jpg new file mode 100644 index 00000000..827b6cdf Binary files /dev/null and b/docs/2023/images/nitu.jpg differ diff --git a/docs/2023/images/sabeti.jpg b/docs/2023/images/sabeti.jpg new file mode 100644 index 00000000..83636fcf Binary files /dev/null and b/docs/2023/images/sabeti.jpg differ diff --git a/docs/2023/images/sabeti2.jpg b/docs/2023/images/sabeti2.jpg new file mode 100644 index 00000000..e9d70332 Binary files /dev/null and b/docs/2023/images/sabeti2.jpg differ diff --git a/docs/2023/images/schveighoffer.jpg b/docs/2023/images/schveighoffer.jpg new file mode 100644 index 00000000..f787b575 Binary files /dev/null and b/docs/2023/images/schveighoffer.jpg differ diff --git a/docs/2023/images/williams.jpg b/docs/2023/images/williams.jpg new file mode 100644 index 00000000..9b4af905 Binary files /dev/null and b/docs/2023/images/williams.jpg differ diff --git a/docs/2023/images/yedidia.jpg b/docs/2023/images/yedidia.jpg new file mode 100644 index 00000000..ab19bc9b Binary files /dev/null and b/docs/2023/images/yedidia.jpg differ diff --git a/docs/2023/includes/w3.css b/docs/2023/includes/w3.css new file mode 100644 index 00000000..a10a4a6d --- /dev/null +++ b/docs/2023/includes/w3.css @@ -0,0 +1,147 @@ +/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent}a:active,a:hover{outline-width:0} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} +.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:1205px){.w3-auto{max-width:95%}} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:whitesmoke!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} \ No newline at end of file diff --git a/docs/2023/index.html b/docs/2023/index.html new file mode 100644 index 00000000..9d634149 --- /dev/null +++ b/docs/2023/index.html @@ -0,0 +1,1274 @@ + + + + + + + + + + + + + + + + + The D Programming Language Conference '23 + + + + + +
    +
    + +
    +
    + + +
    +
    +

    DConf London Part 3

    +

    + We're at CodeNode in London once again from August 29 – September 1, 2023, for the D Programming + Language Conference, sponsored by Symmetry Investments and hosted by the D Language Foundation. This is our + third time in London, thanks to Symmetry’s support, and we’re thrilled to be back! DConf ‘22 at CodeNode was a huge success, with overwhelmingly + positive feedback from attendees. In fact, it was the best one yet, and we’re committed to making DConf + ‘23 even better. +

    +

    + Can't be there in person? No problem! Join our livestreams during the three days of talks and ask questions + of the speakers at any time during each session. +

    +

    +

    + DConf is the premier meetup event for the D programming language community. Although we continue to hold regular + online meetups, nothing compares to the energy and camaraderie of face-to-face interactions. At DConf, both + seasoned veterans and first-time attendees, and many in between, come together for four days of education, + knowledge sharing, and fun. We can’t wait to do it all again! +

    +

    Keynote Speakers

    +
    +
    + +

    + Walter Bright
    + Creator and Co-maintainer of the D Programming Language +

    +
    +
    + +

    + Saeed Sabeti
    + Director of Organizational Development at Ucora Corporation in Vancouver, Canada +

    +
    +
    + +

    + Átila Neves
    + Co-maintainer of the D Programming Language +

    +
    +
    +
    +
    + + +
    +
    +

    Schedule

    +

    + Click [Show Details] next to a speaker’s name below for information about a talk, panel, or + speaker.
    + Note that all times are in UTC + 1. +

    + + +
    +

    Tuesday August 29th

    +
    +
    +
      +
    • 08:00 Breakfast Snacks
    • +
    • 08:55 Introduction
    • +
    • 09:00 The Truth About D
      + by Saeed Sabeti +
      +
      + +
      + Duration: 45 Minutes
      + +
      +

      Are you feeling the weight of uncertainty in the programming world as the D Language grapples with + challenges amidst the rise of competing languages? There's a looming concern that these hurdles might + hold D back from its true potential, relegating it to a lower standing. The cost of letting this happen + is significant, not just for D enthusiasts but for the entire programming community. Yet, a solution + exists; a way to steer D towards the path of popularity and influence it deserves. There is an + unexpected approach to unlocking the value behind the language, and the result will shape D's future and + elevate your own personal and professional success. Don't miss out on this discourse that promises to + transform your perspective on what DLF means to all of us.

      +
      +

      Saeed Sabeti is a seasoned expert in human motivation, team dynamics, team + building, and team alignment, executive coaching, and organizational development. He currently serves as + the Director of Organizational Development at Ucora Corporation in Vancouver, Canada. His work takes him + across the globe, partnering with organizations to build strong, effective teams with focused, aligning + visions. As an executive coach and consultant, Saeed addresses the widespread problem of staff + acquisition, retention, motivation, and productivity by helping leaders, stakeholders, and organizations + develop a new mindset rooted in fundamental purpose.

      +
      +
    • +
    • 10:00 Types and Tuples in D
      + by Timon Gehr +
      +
      + +
      + Audience: Intermediate/Advanced
      + Duration: 45 minutes
      + +
      +

      Like many modern programming languages, D has a static type system and + built-in tuple support. In this talk, I will present general design + considerations around type systems, with a particular focus on D’s + type system, recent developments in D, and possible avenues for + further improving the soundness, expressiveness, and ergonomics of D. + As some operations on tuples remain rather clunky in today’s D, this + will in particular include design considerations around tuples and a + number of different proposals for how to move forward.

      +
      +

      Timon Gehr is a postdoctoral researcher at ETH Zürich who has + used D to implement a number of tools and programming languages for his research. He + has opened almost 1% of all issues on the D issue tracker. He sometimes dabbles in + DMD development and contributed the initial implementation of static + foreach.

      +
      +
    • +
    • 11:00 DMD as a Library: Between Myth and + Reality
      + by Razvan Nitu +
      +
      + +
      + Audience: Intermediate
      + Duration: 30 minutes
      + +
      +

      The absence of a proper compiler library has been haunting the D ecosystem since + forever. Although progress has been made in creating a public API, there is a lot of + room for improvement. In this talk, I will discuss the major challenges of + developing a proper compiler interface for DMD-as-a-library, what has been done so + far, what are the future plans, and what will be the limitations.

      +
      +

      Razvan Nitu has a PhD in computer science. He is also one of + the Pull Request and Issue Managers for the D Language Foundation. His experience + with D lies mostly in compiler development, but he occasionally contributes to + DRuntime and Phobos. Razvan has been organizing D summer schools at his hometown + university and mentoring students to work on D-related projects (such as + integrating DMD-as-a-library in D-Scanner, pay-as-you-go DRuntime, D Google APIs, + etc.) for the past 5 years.

      +
      +
    • +
    • 11:45 Lunch
    • +
    • 13:30 Stack Memory is + Awesome!
      + by Dennis Korpel +
      +
      + +
      + Audience: Intermediate
      + Duration: 45 minutes
      + +
      +

      Should D have a smarter Garbage Collector, or support Reference Counting? I + don’t care. Stack memory is where it’s at! D is really good at it with its static + arrays, slices, and DIP1000’s lifetime tracking to make it all memory-safe. + DIP1000 has evolved a lot in its design and implementation, so I’ll get you up to + speed with where we are now and how we got here. +

      +
      +

      Dennis Korpel is a recent CS graduate from Delft University + of Technology. D became his language of choice after discovering it in 2018, and he + is currently a Pull Request and Issue Manager for the D Language Foundation.

      +
      +
    • +
    • 14:30 Simple @safe D
      + by Robert Schadek +
      +
      + +
      + Audience: All
      + Duration: 45 minutes
      + +
      +

      DIP1000 adds quite a bit of syntax to the language and makes D look a lot less + beautiful, in my opinion. Instead of trying to add things to the language, why not + take a look at things that need to be removed to achieve the same level of memory + safety? This talk shows how to remove three things from the language to make it + memory-safe and still live with the consequences.

      +
      +

      Robert Schadek received a doctorate degree in computer + science from the University of Oldenburg. His dissertation was titled + ‘Analysis and Development of Quorum Protocols for Real-World Network + Topologies’ and focused on quorum systems in combination with graphs. Since + 2018, he has been happily using D in his day job working for Symmetry + Investments.

      +
      +
    • +
    • 15:30 Getting from C to D without Tripping
      + by Steven Schveighoffer +
      +
      + +
      + Audience: All
      + Duration: 45 minutes
      + +
      +

      C is the lingua franca of programming languages. Chances are, if + something exists in the world of computer science, there is a version of it + in C. But what if you use D? The great news is that any C project is almost + trivially accessible via D. But what if you hate the problems that come with + C? No overloading! No operators! Zero-terminated strings! Manual memory + management! No memory safety! Many of these things led me to undertake a + project of porting a quite broad and well-used C library to D. What might be + in store for you if you decide to take this journey? Tune in to find out! +

      +
      +

      Steven Schveighoffer has been programming for nearly 25 years + professionally, using D for over half of that time. He has written several D + libraries, including dcollections and iopipe. He currently maintains the raylib-d binding and the + mysql-native client library + (which he recently converted to fully + @safe). He has been contributing to Phobos and DRuntime nearly the + whole time he’s been a D user. +

      +
      +
    • +
    • 16:30 OpenAPI and Service Integration
      + by Vijay Nayar +
      +
      + +
      + Audience: Intermediate
      + Duration: 30 minutes
      + +
      +

      When building software services using D, a practical reality is that most other + services are not also using D. A fairly standard way of inter-service + communication is accomplished via a REST Architecture, based on JSON over HTTPS, + for example. However, writing a new client for every programming language is + error-prone and labor intensive. The internals of the OpenAPI Client library are + discussed showing how D Client code can be generated using mixins and templates + from OpenAPI specifications, permitting compatibility with well known APIs such as + Slack, Stripe, or OpenAI.

      +
      +

      Vijay Paul Nayar is a CalTech graduate and has been + professionally programming for over 20 years in various roles from software engineer + to CTO. Recently, he has taken on the role of entrepreneur and founded + Funnel-Labs.io, where he has been using + the D Programming Language in production services. +

      +
      +
    • +
    • 18:00 End of Day One
    • +
    +
    + + +
    +

    Wednesday August 30th

    +
    +
    +
      +
    • 08:00 Breakfast Snacks
    • +
    • 09:00 Crafting Self-Evident Code with D
      + by Walter Bright +
      +
      + +
      + Duration: 45 Minutes
      + +
      +

      Have you ever looked at code you wrote five years ago and wondered what you were thinking? Just think + of code you authored even further back! You’ve heard about secure code, safe code, clean code, modern + code, optimized code, clever code, user-friendly code, structured code, effective code, etc. Everybody + thinks they write easy-to-understand code (including me), but your future self will likely have the last + word on that.

      +

      Here I’ll be talking about writing easy-to-understand code. The talk is based on decades of experience + writing code that is hard to understand. I’ll show how D makes it easy to write easy-to-understand + code. It won’t cost anything, either. And who knows? Maybe your future self will sigh contentedly with + “I wrote that!”

      +

      The highest praise you can get for your code is someone else looking at it saying “that’s so + simple, anyone could have done it!” (But you and I know better!)

      +
      +

      Walter Bright is the creator and first implementer of the D programming language + and has implemented compilers for several other languages. He’s an expert in all areas of compiler + technology, including front ends, optimizers, code generation, interpreter engines, and runtime + libraries. Walter regularly writes articles about compilers and programming, is known for engaging and + informative presentations, and provides training in compiler development techniques. Many are surprised + to discover that Walter is also the creator of the wargame Empire, which is still popular today over 30 + years after its debut.

      +
      +
    • +
    • 10:00 Hipreme Engine: Bringing D + Everywhere
      + by Marcelo Mancini +
      +
      + +
      + Audience: Beginner/Intermediate
      + Duration: 45 minutes
      + +
      +

      In this talk, I will discuss how a three-year ongoing game engine project in D has + been able to run on multiple platforms while staying consistent, fast, and easy + to use. +

      +
      +

      Having used several game engines from several programming + languages and unsatisfied with how hard it was to get started with a native + programming language, Marcelo Mancini went from being a complete novice who didn’t even know + how to build anything to a daily D user producing one of the most ambitious projects + in the language. He noticed a big opportunity in D with its flexibility as both a low- + and high-level language, its compile-time reflection and mixins, the simplicity of + its build system, the presence of a package manager, and how all of this could lead to + increased productivity for people learning their first programming language.

      +
      +
    • +
    • 11:00 A Semester at University: Teaching + Software Engineering in + DLang
      + by Mike Shah +
      +
      + +
      + Audience: All
      + Duration: 30 minutes
      + +
      +

      In January of 2023, I excitedly showed a group of over 110 university students + that D is the 48th most popular programming language on the Tiobe Index (for + whatever its metrics are)—and then told those students they would be + learning D in the software engineering course that semester. In this talk, I will + recap my university curriculum of how I taught D, and why I think D should be + taught by more faculty in universities. For this software engineering course, we + made use of low-level access, multiple programming paradigms, built-in profilers, + package management (dub), code coverage, ddoc, and unit testing in order to build a + half-semester long project. My conclusion is that using D at university can give + students a competitive advantage versus other languages, and in this talk I’ll + reflect on the curriculum, pain points, strengths, and future of D in + education.

      +
      +

      Michael discovered computer science at the age of 13 when + googling “how do I make games”. Since that fateful google search, he has + worked as a freelance game developer, worked in industry for Intel, Sony + PlayStation, and Oblong Industries, and researched at The Ohio Supercomputer Center. + Mike cares about building tools to help programmers monitor and improve the + performance of real-time applications—particularly any visual multimedia. He + believes computer science can be learned by all. Mike Shah completed his PhD at + Tufts University in 2017 and is an associate teaching professor at Northeastern + University. He also consults as a 3D Senior Graphics Engineer. In his spare time he + goes for long runs, plays video games while on his exercise bike, learns guitar, and + considers himself an amateur pizza and wine maker.

      +
      +
    • +
    • 11:30 A Semester at + University: Learning Software + Engineering in DLang
      + by Ben Mallet, Elizabeth Williams, Andrew Briasco-Stewart, Steven Abbott +
      +
      +
      + + + + +
      +
      + Audience: All
      + Duration: 30 minutes
      + +
      +

      In January of 2023, around 110 students took Foundations of Software + Engineering with Professor Mike Shah at Northeastern University. During the first + class, it was announced that the course would be taught in D. This talk will + follow the perspective of four students (one group) in said course, beginning with + their experience learning the D programming language.

      + +

      The main portion will discuss the creation and implementation of the + half-semester long final project: an interactive networked whiteboard application + with a couple of features (chat, brushes). Various tools and add-ons this project + used were GtkD, networking, package management (dub), code coverage, and unit + testing (unit-threaded). To conclude, this + talk will discuss the main benefits of D as a post-secondary educational language and reflect on the + state of the D community and development tools.

      + +

      NOTE: This talk immediately follows, and is a continuation of, Mike Shah’s talk, + with no break in between.

      +
      +
      +

      Ben Mallet is a graduate student at Northeastern University. He expects to + graduate in May 2024. He has D experience from Mike Shah’s course (Spring 2023) + and some C experience as an Embedded Software Engineer at Running Tide

      + +

      Elizabeth Williams is a graduate student at Northeastern University who expects + to graduate in May 2024. She has D experience from Mike Shah’s course (Spring + 2023) and some C experience from other courses.

      + +

      Andrew Briasco-Stewart is an undergraduate student at Northeastern University + who expects to graduate in May 2024. He has D experience from Mike Shah’s course + (Spring 2023) and C/C++ experience from other courses.

      + +

      Steven Abbott is an undergraduate student at Northeastern University. He + expects to graduate in December 2023. He has D experience from Mike Shah’s course + (Spring 2023) and experience with C/C++ experience and Build System/CCID as a + Software Engineer Co-op at MORSE Corp.

      +
      +
      +
    • +
    • 12:00 Lunch
    • +
    • 13:30 If I Cannot Dissuade You from Using + Atomics, at least Do It + Safely
      + by Roy Margalit +
      +
      + +
      + Audience: Intermediate/Advanced
      + Duration: 45 minutes
      + +
      +

      Different hardware architectures implement different memory models. This in + turn makes porting multi-threaded software between different target architectures + an insanely complicated task. To solve this problem, C++11 introduced a language + memory model that was later adopted by other languages such as D and Rust.

      + +

      In this talk, we’ll present the C++11 memory model, including multiple options + for atomic accesses that lie on the trade-off between performance and the + consistency level they support. Due to the well known complexities and pitfalls in + this kind of programming, we will also consider several safe patterns to work with + atomic variables that lower the chances of introducing bugs.

      +
      +

      Roy Margalit is a PhD student in the Programming Languages + group at School of Computer Science, Tel Aviv University. Currently researching + programming languages and verification, with a focus on concurrency and relaxed + memory models.

      +
      +
    • +
    • 14:30 Taming the Snakes
      + by Ikey Doherty +
      +
      + +
      + Audience: All
      + Duration: 45 minutes
      + +
      +

      Serpent OS is a Linux distribution heavily utilizing D for its tooling, + infrastructure, and software update processes. It’s been an extensive journey, + with lots of mistakes made along the way. Learn how we screwed up - so you don’t + have to! +

      +
      +

      Ikey Doherty is a Staff Engineer at MZLA Technologies working + on Thunderbird. He is also the chief architect of the Serpent OS Linux distribution + and a member of the Solus Technical Steering Committee, currently working with the + team to assist with a rebase onto Serpent OS core technologies.. +

      +
      +
    • +
    • 15:30 Multiplix: Using D for Kernel Developmebt
      + by Zachary Yedidia +
      +
      + +
      + Audience: Intermediate/Advanced
      + Duration: 45 minutes
      + +
      +

      Multiplix is an operating system written in D under development for a research + project at Stanford University. Kernel code is an unusual setting where there + is no surrounding infrastructure, thus requiring hand-written assembly, a + specialized build process, and custom implementations for core features like + memory allocation and concurrency primitives. This talk will explain how we are + using D for OS development, and show examples of how to write bare-metal D + code. The talk will go over the architecture of Multiplix with an emphasis on + how the D language has shaped it. I’ll also discuss our experiences using D for + kernel development, and the benefits and challenges that arise from using D in + this setting.

      +
      +

      Zachary Yedidia is a computer science PhD student at Stanford + interested in computer systems, hardware, and compilers. You can learn more about him + at zyedidia.github.io.

      +
      +
    • +
    • 16:30 The Neat Language: AKA What I've been up to the past three years
      + by Mathis Beer +
      +
      + +
      + Audience: Intermediate/Advanced
      + Duration: 45 minutes
      + +
      +

      Want to see what D would look like with native sumtypes, rich types, better + lambdas, and macros?

      +
      +

      Mathis Beer writes D code for Funkwerk. He is the author of Serialized as well + as the company’s Boilerplate + library. Mathis is also known in the D community as + “FeepingCreature”.

      +
      +
    • +
    • 18:00 End of Day Two
    • +
    +
    + + +
    +

    Thursday August 31st

    +
    +
    +
      +
    • 08:00 Breakfast Snacks
    • +
    • 09:00 You're Writing D Wrong
      + by Átila Neves +
      +
      + +
      + Duration: 45 Minutes
      + +
      +

      An old man yells his pet peeves at the clouds.

      +
      +

      Átila Neves has a PhD in Particle Physics for research done at CERN. Most of his + time spent there required programming in C++, with a two-year stint as a Perl programmer on the IT + department’s security team. He also worked for Cisco for almost seven years, developing networking + software in C and C++ and leading his teams in the areas of software quality and testing. He now works + as a D consultant/programmer for Symmetry Investments, and is also the deputy maintainer of the D + programming language. He spends his spare time yelling at the screen in frustration while waiting for + computers to compile his code.

      +
      +
    • +
    • 10:00 Internationalization with + gettext
      + by Bastiaan Veelo +
      +
      + +
      + Audience: All
      + Duration: 45 minutes
      + +
      +

      The first part of this talk demonstrates the process of internationalizing an existing program + (adding support for multiple natural languages to its user interface) using the dub gettext package. The second part focuses + on the implementation of said package, which makes interesting use of various features of the D + programming language. +

      +
      +

      Bastiaan Veelo has been in charge of the conversion of roughly half a million lines + of Pascal code to D for the company SARC, who develop applications for the marine- and shipping + industry. This process has been the topic of one blog + post and two prior D conference presentations in 2017 + and in 2019. Besides upgrading the programming language, SARC + decided that it was also time to upgrade their system for internationalization. Thus, Bastiaan + implemented the gettext package with valuable + help from the D community. This work is now available to everybody under the Boost license.

      +
      +
    • +
    • 11:00 The QUIC Protocol in + D
      + by Vlăduț Chicoș +
      +
      + +
      + Audience: All
      + Duration: 30 minutes
      + +
      +

      QUIC is a new, standardized and widely adopted internet protocol. + A native library within the D ecosystem would pave the way towards HTTP/3 + adoption. Furthermore, it would remove the reliance on bindings to third party C + implementations and would facilitate the use of features like D exceptions and + fiber-based concurrency.

      + +

      This talk aims to present my progress on bringing QUIC + to the D environment. I will talk about why someone might consider using QUIC + over other protocols. I will present the challenges that I encountered and how + the solutions reflect into the design of quic-d. I think that the requirements + of QUIC framing/packetization and streams made an interesting case of using D’s + features, like introspection. I will conclude by presenting some possible + improvements and opportunities.

      +
      +

      Vlăduț Chicoș is a 4th year student at Politehnica University + of Bucharest. He participated in SAOC 2022, during which he worked on the quic-d library, adding + modules mostly related to cryptography, packetization/framing and streams. In his + bachelor thesis project, he is experimenting with model predictive control as an + alternate solution of pacing QUIC packet sending that is compatible with the + standard approach.

      +
      +
    • +
    • 11:45 Lunch
    • +
    • 13:30 Lightning Talks
      + by Multiple Speakers +
      +
      + +
      + Audience: All
      + Duration: 45 minutes
      + +
      +

      Got something interesting to tell the D community, but not interested in presenting a full talk? + We’ll give you five minutes to tell the world!

      +

      Lightning Talks are presentations restricted to five minutes or less. Speakers plug in their + laptops and get started immediately. When their time is up, the emcee pulls them off stage and the + next speaker gets going. The Lightning Talk session from DConf + ‘22 is a great example of the format.

      +

      Any DConf attendee can sign up to present a Lightning Talk. We’ll have nine slots available + this year, and we’ll fill them on a first-come first-serve basis. Email social@dlang.org + anytime before the conference to reserve your spot (after you’ve registered), or let Mike Parker + know at any point during the conference prior to the start of the Lightning Talks session.

      +
      +
      +
    • +
    • 14:30 A Beginner’s Journey with AI in + D
      + by Murilo Miranda +
      +
      + +
      + Audience: All
      + Duration: 45 minutes
      + +
      +

      I will talk about my journey learning AI, what I’ve discovered about it, the + ins and outs most people do not understand, and how I did it all purely in D. + I was able to implement neural networks to do a variety of tasks, such as text + and color recognition. I’ve created my own neural network creator software, + which in turn was also written in D. +

      +
      +

      Murilo Miranda is a computer scientist at the + University of Brasília (UnB). He works as a programmer, computer technician, and + teacher of computer programming. He’s also an indie game developer, overclocker, and + casemodder in his free time. He maintains a blog about CS at computingthesciences.blogspot.com. +

      +
      +
    • +
    • 15:30 Language Models, D, and so on
      + by Max Haughton +
      +
      + +
      + Audience: Beginner/Intermediate
      + Duration: 45 minutes
      + +
      +

      Even in their infancy, large language models like ChatGPT are the talk + of the town. Until recently, LLMs have been inferenced (run) using huge + chunks of Python code, but recent interest has brought about some + much simpler, specialized, libraries written in native languages + (llama.cpp being a recently famous example). In this talk, Max talks about the state of + LLMs and how they might be useful for D programmers.

      +
      +

      Max slings code for Symmetry Investments. Otherwise... all words, some action, no + bona fides!

      +
      +
    • +
    • 16:30 Ask Us Anything!
      + with Walter Bright, Átila Neves, Mathias Lang, Dennis Korpel, Saeed Sabeti, Mike Parker +
      +
      +
      + + + + + + +
      +
      + Audience: All
      + Duration: 60 minutes
      + +
      +

      This year, it isn't only Walter and Átila in the hotseat! They'll be joined on stage by Mathias Lang, one of the DLF team members in charge of our high-level goal to enhance the D ecosystem; Dennis Korpel, one of our Pull Request and Issue Managers; Mike Parker, one of the DLF team members in charge of our high-level goal to strengthen the D community; and Saeed Sabeti, who's joining to take questions about Ucora's organizational redevelopment program.

      + +

      Curious about the DLF’s organizational redevelopment? Wondering what’s in store for the language, + ecosystem, and community down the road? Eager to learn more details about progress on our current + goals? Dying to hear any juicy bits of history from Walter’s decades as a C compiler developer? + All of these topics and more are on topic for the annual DConf Ask Us Anything!

      +
      +
      +
    • +
    • 18:00 End of Day Three
    • +
    +
    + + +
    +

    Friday September 1st

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

    Venue

    +

    + Our DConf ‘23 venue is CodeNode, a space in Central London + specifically designed for tech conferences. It’s conveniently located close between Moorgate and Liverpool + Street stations and is a 10–15 minute walk from Old Street Station to the north. +

    +
    + +
    +

    + Our presentations will happen on the ground floor in the CTRL room, and we’ll have the entirety of the ESC area + downstairs to ourselves, where attendees can relax, chat, or play table tennis or foosball between talks. +

    +

    Accommodations

    +

    + There are several budget hotels in easy walking distance. The following are some options that, according to + Google Maps, are less than a 20-minute walk from the venue. Some of them are near an underground station that is + one stop away from Moorgate or Liverpool Street stations. Click a link to see the walking route(s) between a + hotel and the venue. On the map, you’ll find links to reserve a room. +

    + +

    BeerConf

    +

    Every evening during the first three nights of DConf means only one thing: BeerConf! Ethan Watson coined the term in 2016 as a name for + what happens at the designated evening gathering spot at every DConf. In 2019 and 2022, we + were able to hire space at pubs for BeerConf. Unfortunately, pub hire rates are well beyond + our budget this year, so we’re going back to what we used to do and designating a hotel where + everyone can gather. +

    +

    + Travelodge London Central City Road + is tentatively designated the DConf ‘23 BeerConf spot. They have a restaurant/lounge + on the ground floor which serves beer, non-alcoholic beverages, and snacks. Despite the + name, drinking beer is not required to particpate. Come and go as you please each evening. + Chat and talk about D, about programming, about life, or whatever comes up. BeerConf is an + excellent way to unwind after a day of DConf! +

    +
    +
    + + +
    +
    +

    Sponsors

    +
    + Symmetry Investments +
    +

    Our friends at Symmetry Investments are the primary sponsors and + hosts of DConf ‘23. With offices in Hong Kong, Singapore, London, Jersey, and the Cayman Islands, Symmetry + employs D in their investment management mission. This is the third time they’ve sponsored DConf, and we + are thankful for their continued support. They are also the sponsors of the Symmetry Autumn of Code, an annual event that, + since 2018, has provided experience to emerging programmers while enhancing the D ecosystem. We couldn’t + be more excited to bring DConf to London once again with Symmetry’s support.

    +

    Supporters

    +
    + ahrefs +
    +

    We thank our new friends at Ahrefs for their sponsorship of DConf ‘23. Ahrefs Pte. Ltd. is a software + company that develops online SEO tools, a search engine, and free educational materials for marketing + professionals. They are a lean multinational startup headquartered in Singapore that values making meaningful + and easy-to-use products. They shift things fast to give their customers what matters most to them, and to keep + us ahead of the game. Their motto is “First do it, then do it right, then do it better.”

    +

    Partners

    +
    + DevITjobs.uk +
    +

    A big thanks to DevITjobs, our media partner for DConf + ‘23. DevITjobs is the first job board built with Software Engineers in mind. Their goal is to bring more + transparency, openness and diversity to the British IT market. They want to make the job search process for + Software Engineers more enjoyable by gathering all job postings in the United Kingdom and presenting them in an + informative way. The DevITjobs.uk portal is not only for + Developers but for everyone working in the IT industry: Engineers, SAP and System Admins, Product Managers, QAs + and UX/UI Designers!

    +
    +
    + +
    + © 2023 The D Language Foundation +
    + + + + diff --git a/docs/2023/slides/beer.odp b/docs/2023/slides/beer.odp new file mode 100644 index 00000000..63885f4f Binary files /dev/null and b/docs/2023/slides/beer.odp differ diff --git a/docs/2023/slides/bright.pdf b/docs/2023/slides/bright.pdf new file mode 100644 index 00000000..7f28120d Binary files /dev/null and b/docs/2023/slides/bright.pdf differ diff --git a/docs/2023/slides/chicos.pdf b/docs/2023/slides/chicos.pdf new file mode 100644 index 00000000..75d80b99 Binary files /dev/null and b/docs/2023/slides/chicos.pdf differ diff --git a/docs/2023/slides/gehr.pdf b/docs/2023/slides/gehr.pdf new file mode 100644 index 00000000..b49bea4c Binary files /dev/null and b/docs/2023/slides/gehr.pdf differ diff --git a/docs/2023/slides/haughton.pdf b/docs/2023/slides/haughton.pdf new file mode 100644 index 00000000..42ccac5e Binary files /dev/null and b/docs/2023/slides/haughton.pdf differ diff --git a/docs/2023/slides/korpel.pdf b/docs/2023/slides/korpel.pdf new file mode 100644 index 00000000..c759b23f Binary files /dev/null and b/docs/2023/slides/korpel.pdf differ diff --git a/docs/2023/slides/mancini.pdf b/docs/2023/slides/mancini.pdf new file mode 100644 index 00000000..72168f1c Binary files /dev/null and b/docs/2023/slides/mancini.pdf differ diff --git a/docs/2023/slides/margalit.pptx b/docs/2023/slides/margalit.pptx new file mode 100644 index 00000000..c14c321a Binary files /dev/null and b/docs/2023/slides/margalit.pptx differ diff --git a/docs/2023/slides/miranda.odp b/docs/2023/slides/miranda.odp new file mode 100644 index 00000000..52b9838b Binary files /dev/null and b/docs/2023/slides/miranda.odp differ diff --git a/docs/2023/slides/nayar.pdf b/docs/2023/slides/nayar.pdf new file mode 100644 index 00000000..1b5d5761 Binary files /dev/null and b/docs/2023/slides/nayar.pdf differ diff --git a/docs/2023/slides/neves.pdf b/docs/2023/slides/neves.pdf new file mode 100644 index 00000000..8e4d8845 Binary files /dev/null and b/docs/2023/slides/neves.pdf differ diff --git a/docs/2023/slides/nitu.pdf b/docs/2023/slides/nitu.pdf new file mode 100644 index 00000000..947aa8f8 Binary files /dev/null and b/docs/2023/slides/nitu.pdf differ diff --git a/docs/2023/slides/sabeti.pdf b/docs/2023/slides/sabeti.pdf new file mode 100644 index 00000000..4583470e Binary files /dev/null and b/docs/2023/slides/sabeti.pdf differ diff --git a/docs/2023/slides/schadek.pdf b/docs/2023/slides/schadek.pdf new file mode 100644 index 00000000..855aeaca Binary files /dev/null and b/docs/2023/slides/schadek.pdf differ diff --git a/docs/2023/slides/schveighoffer.pdf b/docs/2023/slides/schveighoffer.pdf new file mode 100644 index 00000000..48b6be2e Binary files /dev/null and b/docs/2023/slides/schveighoffer.pdf differ diff --git a/docs/2023/slides/shah_and_students.pdf b/docs/2023/slides/shah_and_students.pdf new file mode 100644 index 00000000..4b4e46c8 Binary files /dev/null and b/docs/2023/slides/shah_and_students.pdf differ diff --git a/docs/2023/slides/veelo.pdf b/docs/2023/slides/veelo.pdf new file mode 100644 index 00000000..0963efd5 Binary files /dev/null and b/docs/2023/slides/veelo.pdf differ diff --git a/docs/2023/slides/yedidia.pdf b/docs/2023/slides/yedidia.pdf new file mode 100644 index 00000000..764907f2 Binary files /dev/null and b/docs/2023/slides/yedidia.pdf differ diff --git a/docs/2024/images/artha.jpg b/docs/2024/images/artha.jpg new file mode 100644 index 00000000..1bc34247 Binary files /dev/null and b/docs/2024/images/artha.jpg differ diff --git a/docs/2024/images/decard.png b/docs/2024/images/decard.png new file mode 100644 index 00000000..764b5b90 Binary files /dev/null and b/docs/2024/images/decard.png differ diff --git a/docs/2024/images/dutu.jpg b/docs/2024/images/dutu.jpg new file mode 100644 index 00000000..12ac71a6 Binary files /dev/null and b/docs/2024/images/dutu.jpg differ diff --git a/docs/2024/images/gehr.jpg b/docs/2024/images/gehr.jpg new file mode 100644 index 00000000..2ae867b8 Binary files /dev/null and b/docs/2024/images/gehr.jpg differ diff --git a/docs/2024/images/logo-512.png b/docs/2024/images/logo-512.png new file mode 100644 index 00000000..b313aa62 Binary files /dev/null and b/docs/2024/images/logo-512.png differ diff --git a/docs/2024/images/logo-og.jpg b/docs/2024/images/logo-og.jpg new file mode 100644 index 00000000..3ec6704d Binary files /dev/null and b/docs/2024/images/logo-og.jpg differ diff --git a/docs/2024/images/mancini.jpg b/docs/2024/images/mancini.jpg new file mode 100644 index 00000000..f57d9670 Binary files /dev/null and b/docs/2024/images/mancini.jpg differ diff --git a/docs/2024/images/miranda.jpg b/docs/2024/images/miranda.jpg new file mode 100644 index 00000000..ca8ee416 Binary files /dev/null and b/docs/2024/images/miranda.jpg differ diff --git a/docs/2024/images/nyarko.jpg b/docs/2024/images/nyarko.jpg new file mode 100644 index 00000000..ef1bd27e Binary files /dev/null and b/docs/2024/images/nyarko.jpg differ diff --git a/docs/2024/images/piolat.jpg b/docs/2024/images/piolat.jpg new file mode 100644 index 00000000..1bfa4c47 Binary files /dev/null and b/docs/2024/images/piolat.jpg differ diff --git a/docs/2024/images/riciu.jpg b/docs/2024/images/riciu.jpg new file mode 100644 index 00000000..5cc6a33b Binary files /dev/null and b/docs/2024/images/riciu.jpg differ diff --git a/docs/2024/images/sechet.jpg b/docs/2024/images/sechet.jpg new file mode 100644 index 00000000..5f5e2a7f Binary files /dev/null and b/docs/2024/images/sechet.jpg differ diff --git a/docs/2024/images/symmetry.svg b/docs/2024/images/symmetry.svg new file mode 100644 index 00000000..153d66b3 --- /dev/null +++ b/docs/2024/images/symmetry.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/2024/images/vanderaa.jpg b/docs/2024/images/vanderaa.jpg new file mode 100644 index 00000000..80cd2b72 Binary files /dev/null and b/docs/2024/images/vanderaa.jpg differ diff --git a/docs/2024/images/weka.png b/docs/2024/images/weka.png new file mode 100644 index 00000000..07e68c2e Binary files /dev/null and b/docs/2024/images/weka.png differ diff --git a/docs/2024/images/wilson.jpg b/docs/2024/images/wilson.jpg new file mode 100644 index 00000000..71e15175 Binary files /dev/null and b/docs/2024/images/wilson.jpg differ diff --git a/docs/2024/includes/w3.css b/docs/2024/includes/w3.css new file mode 100644 index 00000000..a10a4a6d --- /dev/null +++ b/docs/2024/includes/w3.css @@ -0,0 +1,147 @@ +/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent}a:active,a:hover{outline-width:0} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} +.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:1205px){.w3-auto{max-width:95%}} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:whitesmoke!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} \ No newline at end of file diff --git a/docs/2024/index.html b/docs/2024/index.html new file mode 100644 index 00000000..ccdfb75e --- /dev/null +++ b/docs/2024/index.html @@ -0,0 +1,1014 @@ + + + + + + + + + + + + + + + +The D Programming Language Conference 2024 + + + + +
    +
    + +
    +
    + + +
    +
    +

    September 17–20, 2024

    +

    + Symmetry Investments and the D Language Foundation are thrilled to invite you to the D Programming Language Conference 2024 in London, from September 17–20. With help once more from our friends at Brightspace Events, we’re excited to return to our favorite venue, CodeNode. +

    +

    + DConf is more than a conference; it’s a community celebration. It’s where DLang enthusiasts and experts from across the globe converge for four days of knowledge sharing, collaboration, and fun. Though our regular online meetups are valuable, they can’t replicate the connection and energy of in-person interactions, be it during engaging sessions, casual chats, or our nightly BeerConf. +

    +

    + Whether you’re a seasoned DConf veteran or joining us for the first time, we can’t wait to welcome you to London! +

    +

    Keynote Speakers

    +
    +
    + +

    + Walter Bright
    + Creator and Co-maintainer of the D Programming Language +

    +
    +
    + +

    + Robert Schadek
    + Programmer at Symmetry Investments and D Core Team Member +

    +
    +
    + +

    + Timon Gehr
    + Researcher at ETH Zürich and D Core Team Member +

    +
    +
    +
    +
    + + +
    +
    +

    Schedule

    +

    Notably absent from the schedule this year is the Ask Us Anything session, a DConf tradition. We decided to drop it this year in order to make room for an additional talk. However, we aren’t dispensing with it entirely. We’ll be hosting an online AUA live stream at some point close to the DConf dates. We’ll update the schedule with the information once it’s sorted, so stay tuned!

    +

    Click [Show Details] next to a speaker’s name below for information about a talk, panel, or speaker.

    +

    Note that all times are in UTC + 1.

    + +
    +
      +
    • Tuesday September 17th

    • +
    • 08:00 Breakfast Snacks
    • +
    • 08:55 Introduction
    • + + +
    • 09:00 Day One Keynote
      + by Walter Bright +
      +
      + +
      + Duration: 45 Minutes
      + + Slides (PDF) +
      +
      +

      TBA

      +
      +
      +

      Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages. He’s an expert in all areas of compiler technology, including front ends, optimizers, code generation, interpreter engines, and runtime libraries. Walter regularly writes articles about compilers and programming, is known for engaging and informative presentations, and provides training in compiler development techniques. Many are surprised to discover that Walter is also the creator of the wargame Empire, which is still popular today over 40 years after its debut.

      +
      +
    + + + +
  • 10:00 Redub: Configuring, Building, and Iterating
    + by Marcelo Mancini +
    +
    + +
    + Audience: All
    + Duration: 40 Minutes
    + + Slides (PDF) +
    +
    +

    Dub is an amazing tool, but due to its features not being segregated enough, it can be difficult to contribute to the project and to identify bottlenecks. Redub is a tool focused mainly on building. It brings compatibility with dub, faster build times, and rewards good project structure.

    +

    In this talk, I introduce the new tool and various aspects of its usage, including but not limiited to the motivation behind it, the base development plan, comparisons with dub and reggae, and more. My goal is to help D users discover new best practices that could benefit the entire D ecosystem, and to thing more about public and private dependencies.

    +
    +
    +

    Marcelo Mancini is a game developer who works with web games. Web programming has always been all about compatibility, which motivated him to create Hipreme Engine, one of the biggest game engines made in D. He is also the developer of Redub, based on his experiences with Hipreme Engine, dub and other build tools outside of D. Redub was used to solve a problem with slow iteration inside Hipreme Engine.

    +
    +
  • + + + +
  • 11:00 Software as Investment
    + by Guillaume Piolat +
    +
    + +
    + Audience: Advanced
    + Duration: 40 Minutes
    + +
    +

    We’ll devise together a tautologic, all-encompassing, theory of software that posits a composable economic value to every piece of software, however small.



    +

    Through this lens, we’ll see in equations:

    +
    +

    * why core libraries tends to be so valuable
    + * how we could define software debt and assets
    + * what “ownership” means and for whom
    + * if you should fix that bug or take that dependency

    +
    +

    This theory has no predictive power without a cost heuristic (else you would need to see the future), but the hope is that it’s useful nonetheless, or at least entertaining.

    +
    +
    +

    Guillaume Piolat is an ex-C++ salaryman turned D software vendor. Struck by baldness at an early age, he created Auburn Sounds 10 years ago to enjoy the possibility of trickling down value directly from the user and get revenge from everyone that wronged him. Now established as one of the pitch-shifting world champions, he found out the hard way that few people enjoy talking about time-frequency.

    +
    +
    +
  • + +
  • 12:00 Lunch
  • + + +
  • 13:30 Avoid the Garbage Collector in 80 Lines
    + by Dennis Korpel +
    +
    + +
    + Audience: Intermediate
    + Duration: 40 Minutes
    + +
    +

    After an epiphany, I finally found it: the perfect memory allocator. Last year, I talked about stack memory and its limitations, but I've found a way around them. Now I have a scheme that combines the best parts of the Garbage Collector and manual memory management. It’s @safe, it’s @nogc, and it’s implemented in only 80 lines of code. The gist of it is that pointers to arenas are passed to return scope function parameters with default arguments. How it works exactly will be explained in the talk.

    +
    +
    +

    Dennis Korpel is a recent CS graduate from Delft University of Technology. D became his language of choice after discovering it in 2018, and he is currently Pull Request manager for the D Language Foundation.

    +
    +
    +
  • + + +
  • 14:30 std-compatible Task Parallelism on FreeRTOS
    + by Tom Vander Aa +
    +
    + +
    + Audience: Beginner/Intermediate
    + Duration: 30 Minutes
    + + Slides (PDF) +
    +
    +

    In this talk, we show the key role of the D programming language in the development of a task-based parallel programming framework for a novel compute-accelerator platform. The platform consists of a set of compute accelerators (like GPGPUs) and a management processor. The management processor’s role is to orchestrate the parallel execution of kernels on the accelerators. Using the D language for the code running on the management processor allowed us to write high-level, size-efficient code.

    + +

    The key features of D to achieve this are extensive use of templates, interoperability with the underlying FreeRTOS written in C, and BetterC. Since this is our first large project in D, we will also share some concrete highs and lows of using the language. Next to that, we discuss the generic user experience of D and lessons learned.

    + +

    This work has been carried out in the ExaScience Lab of the CSA division at imec. Special thanks to Robbert Gurdeep Singh, Geert Vanmeerbeeck, Wilfried Verachtert, and Roel Wuyts

    +
    +
    +

    Tom Vander Aa is a researcher in the ExaScience Lab at imec. This lab uses novel high-performance computing architectures and programming models to generate breakthroughs in life sciences and biotechnology. The ExaScience lab has a profound interest in the interplay between the programming model, the programming language, the computer architecture and the user application, experimenting with languages like Go, LuaJit, Julia, Nim, and Lisp. This is the lab’s first big project using D. Tom himself obtained a PhD in 2005, in the domain of embedded computer architectures. After his PhD Tom spent most of his time writing compilers in C++ and optimizing applications code in C and C++. This is Tom’s first experience using D.

    +
    + +
  • + + +
  • 15:30 Replacing DRuntime Hooks with Templates Across Three SAoCs
    + by Teodor Dutu +
    +
    + +
    + Audience: Advanced
    + Duration: 45 Minutes
    + +
    +

    In D, certain high-level constructs are replaced with calls to lower-level functions from DRuntime, called hooks, that provide the same functionality. This makes the compiler’s job easier by saving it from having to generate code for complex expressions itself. This process takes place in the compiler’s intermediate representation generator. This has the following disadvantages:

    +
    +

    1. The hook arguments are mostly void[] and require the TypeInfo hierarchy to extract type information at runtime. This is unnecessarily slow because all type information is available at compile-time.

    +

    2. All hooks are linked into one large runtime library that all D programs link, regardless of which hooks they use. This makes DRuntime unnecessarily large for use cases where a subset of the hooks is used.

    +
    +

    This project eliminates these disadvantages by converting DRuntime hooks to templates and moving the lowering logic to the semantic phase. Thus, all new hooks are verified to respect the restrictions imposed by attributes, type information is leveraged at compile-time, and D executables will only contain code for the hooks they use. This brings performance benefits since runtime checks are moved to compile time.

    +
    +
    +

    Teodor Dutu is a PhD student at the National University of Science and Technology POLITEHNICA Bucharest where he teaches computer architecture, compilers, and operating systems labs. His research is on compilers for advanced architectures, such as hardware accelerators. In addition, he is interested in compilers, programming language analysis, operating systems, security, and computer architecture, and he is passionate about open source. He is also a contributor to the D programming language and participated in three consecutive Symmetry Autumn of Code programs, winning the first two.

    +
    +
    +
  • + + +
  • 16:30 The Future of Phobos: Version 3 and Beyond
    + by Adam Wilson +
    +
    + +
    + Audience: All
    + Duration: 45 Minutes
    + + Slides (PPTX) +
    +
    +

    As time goes by, best practices evolve, needs change, and better ideas have appeared. What began as idle conversation in late 2023 has become a full-scale effort to forge the future of Phobos. Today, Phobos 3 has been under active development for 6 months and the ground-work for the future has been laid. But what does this mean for Phobos 2? What will be included in Phobos 3 and what will be cut? What comes after Phobos 3?

    + +

    In this talk we will discuss where Phobos 3 stands today, what work still remains to be completed, and finally where we want to take Phobos in the future. The goal of this talk is to provide a roadmap for all D engineers as they begin planning for the transition to Phobos 3.

    +
    +
    +

    Adam is an independent contractor with over 22 years of software development experience specializing in libraries and tooling for high performance web services. Adam’s resume includes start-ups, consulting, and even a stint at Microsoft. He is currently using D to create tooling that supports the development and deployment of a SQL based web-service.

    +
    + +
  • + +
  • 18:00 End of Day One
  • + + + + +
    +
    + + +
  • 12:00 Lunch
  • + + +
  • 13:30 The Search for Artificial Life in D
    + by Murilo Miranda +
    +
    + +
    + Audience: All
    + Duration: 45 Minutes
    + + Slides (ODP) +
    +
    +

    Have you ever tried to create life? Of course not! You’re not a god. But you could try to simulate life in a computer as many scientists have done. I’ve been doing that in D for months.

    +

    I’ve ventured into the world of biology simulation, I’ve created a simulator where you can set up an environment in which you can watch organisms interact and evolve. This could be used for research, educational purposes, and fun. It was written purely in D. I’m striving to make it the best biology simulator in the world. Come watch my talk to learn more. I will talk about some evolutionary concepts such as RNA, DNA, natural selection, and biophysics, and I will be demonstrating the software as I explain in detail how it all works. Before the conference, feel free to watch this video that includes a demonstration.

    +
    +
    +

    Murilo Miranda is a computer scientist from the University of Brasília (UnB). He works as a programmer, computer technician, and teacher of computer programming. He is also an indie game developer, overclocker, and casemodder in his free time. He maintains a blog about CS, and he recently started a Youtube channel (@256SecondsOfComputerScience).

    +
    + +
  • + + +
  • 14:30 Exploring Declarative Programming Capabilities of D
    + by Artha +
    +
    + +
    + Audience: Intermediate
    + Duration: 40 Minutes
    + + Slides (PDF) +
    +
    +

    Fluid is a library for building general purpose graphical interfaces. To communicate the desired layout and style to the program, a common language has to be used. I will compare solutions used in different frameworks, explain D's advantages in declarative API design, and its significance for user interface programming.

    +
    +
    +

    I am a hobbyist programmer with strong interest in user interface design, especially in regards to BBS, social media and multiplayer games. Since around 2015 I’ve been exploring various solutions, most importantly Android UI, web apps, and Godot Engine, in order to find the most suitable for my use cases. I started using D around 2021, which is when I initially created Fluid.

    +
    + +
  • + + +
  • 15:30 The State of C++ Interoperability in D
    + by Emmanuel Nyarko +
    +
    + +
    + Audience: Intermediate
    + Duration: 35 Minutes
    + + Slides (PDF) +
    +
    +

    One of D’s goals in its interoperability with C++ is to be able to use some of the major C++ Standard Template Library from D. In this talk, I will reveal where we are in this process as a language. I will also cover real-life usage with their design philosophies, limitations, and the way forward in reaching seamless C++ integration.

    +
    +
    +

    Emmanuel is a recent computer science bachelors graduate from the Kwame Nkrumah University of Science and Technology from Ghana. He started his experiential programming Journey contributing to D through the 2023 Symmmetry Autumn of Code where he worked on C++ STL interoperability. He has a keen interest in programming languages and operating systems development and is looking to contribute more to D and to other major systems in the world.

    +
    + +
  • + + +
  • 16:30 Reworking the Range API for Phobos v3
    + by Jonathan M. Davis +
    +
    + +
    + Audience: Intermediate
    + Duration: 40 Minutes
    + +
    +

    A new version of D’s standard library, Phobos, is currently under development. We would like to fix some of the mistakes that have been made over the years which we haven’t been able to fix without breaking code, and we want to update Phobos according to the current best practices for D. Ranges are a big part of Phobos, and they are are being reworked as part of the update.

    + +

    Overall, ranges have worked very well for us since they were first introduced in Phobos v2. We would like that continue, but there are some issues with their current design which have come up over the years. We’re taking advantage of the opportunity Phobos gives us to implmeent otherwise breaking changes by improving upon the existing range design and fixing mistakes. This talk will go over the changes and why we’re making them.

    +
    +
    +

    Jonathan M. Davis is the primary author of std.datetime and one of Phobos’s core contributors. He is a professional developer and has experience in a number of programming languages, including C++, Haskell, Java, and D. For better or worse, he’s well known in the D community for answering questions and being long-winded. He currently resides in Utah.

    +
    +
    +
  • + +
  • 18:00 End of Day Two
  • + + + + +
    +
    + + + +
  • 11:00 Integrating the New GC
    + by Steven Schveighoffer and Amaury Séchet +
    +
    +
    + + +
    +
    + Audience: Advanced
    + Duration: 40 Minutes
    + + Slides (PDF) +
    +
    +

    Just when you thought we were done with GC talks, we have more for you!

    + +

    In this continued presentation about the new GC, we will talk about how we organize small allocations to reduce fragmentation, how we avoid lock contention when allocating, and how we optimize collections to take as little time away from your code as possible. We will also talk about integration with DRuntime and planned future improvements that can bring this new allocator further into the realm of modern GCs.

    + +

    D deserves to have a GC with few pauses and high multi-core performance. We hope to bring you that experience.

    +
    +
    +

    Steve has been using D for 23 years professionally, and has written or helped write significant parts of DRuntime, including the array runtime, moduleinfo cycle detection, and AA static initialization. He has also written several prominent D libraries, including iopipe, and dcollections.

    +
    + +
  • + +
  • 12:00 Lunch
  • + + +
  • 13:30 Lightning Talks
    + by Various +
    +
    + +
    + Audience: All
    + Duration: 45 Minutes
    + +
    +

    Got something interesting to tell the D community, but not interested in presenting a full talk? We’ll give you five minutes to tell the world!

    + +

    Lightning Talks are presentations restricted to five minutes or less. Speakers plug in their laptops and get started immediately. When their time is up, the emcee pulls them off stage and the next speaker gets going. The Lightning Talks session from DConf ‘23 serves as an excellent example of the format. It even included a stand-up comedy routine—a DConf first!

    + +

    Any DConf attendee can sign up to present a Lightning Talk. We’ll have up to nine slots available this year, and we’ll fill them on a first-come, first-serve basis. Email social@dlang.org anytime before the conference to reserve your spot (after you’ve registered), or let Mike Parker know at any point during the conference prior to the start of the Lightning Talks session.

    +
    +
    +
  • + + +
  • 14:30 The Case for Graphics Programming in D Part 2: Tech Demo
    + by Mike Shah +
    +
    + +
    + Audience: Intermediate
    + Duration: 30 Minutes
    + +
    +

    The D programming language and ecosystem provide many modern features which can help give developers a competitive advantage during the software development lifecycle. In this talk, I will discuss how D provides a competitive advantage for graphics application development (e.g., games, rendering), where any reduction in iteration time can improve outcomes. As an example, when creating an art style, having systems allowing rapid iteration can help improve visual fidelity, both in aesthetics and correctness of the application.

    + +

    Throughout the talk I will showcase visual examples, developed in a summer, that show off a graphics engine built completely in the D ecosystem. Topics will include: a hot reload system, a job system (using concurrency), and showcasing the architecture of a small graphics engine. This talk follows up a previous Dconf Online 2024 talk in which I make a case for using D for graphics programming—this time showing you the results (attendees need not have watched the previous talk).

    +
    +
    +

    Mike discovered computer science at the age of 13 when googling “how do I make games”. Since that fateful Google search, Mike has worked as a freelance game developer, worked in industry for Intel, Sony PlayStation, Oblong, and a few other roles as a contracting 3D Senior Graphics Programmer. Mike also consults as a 3D Senior Graphics Engineer. In Michael’s spare time, he goes for long runs, plays video games while on his exercise bike, learns guitar, and considers himself an amateur pizza and wine maker. Mike YouTube channel covers various graphics and programming, including D!

    +
    +
    +
  • + + +
  • 15:30 D-scanner: Migrating from libdparse to DMD-as-a-library
    + by Vlăduț-Ștefan Riciu +
    +
    + +
    + Audience: Beginner/Intermediate
    + Duration: 30 Minutes
    + + Slides (PPTX) +
    +
    +

    D-Scanner is one of the most widely used static code analysis tools for D. It relies on libdparse, a third-party D parser implementation. As a consequence, every time the D frontend is modified, both libdparse and D-Scanner need to be updated. Given that D can be built as a compiler library, replacing libdparse with DMD-as-a-library will make it easier to tackle compiler updates.

    + +

    Over the past year, I have embarked on a transformative journey within D-Scanner, tasked with migrating from libdparse to DMD-as-a-library. In this talk, we will explore the migration process and address the challenges of keeping up with DMD-as-a-library, integrating with upstream, and maintaining trustworthy tests.

    +
    +
    +

    My passion for programming started as a child, playing with Arduino. It continued by following an informatics high school and then a computer science university. Currently, I’m working as a Software Engineer at Adobe, and I’m finishing up my Bachelor’s Degree in computer science at University Politehnica of Bucharest. My main programming experience lies in the JVM world—Java and Kotlin. I’m interested in distributed systems, and recently I’ve been intrigued by the world of compilers and static code analysis.

    +
    + +
  • + + +
  • 16:30 A Case Study of D’s Compiler Internals: When complexity impedes development
    + by Razvan Nitu +
    +
    + +
    + Audience: Intermediate
    + Duration: 35 Minutes
    + +
    +

    D has historically been open to the addition of new features. While some of have been net benefits to the language, others simply offer some sort of convenience while either increasing the codebase complexity or enabling patterns which are hard to maintain. This talk will present a series of such language features, exhibit the impact of their implmentations on the D codebase, and explore the alternative of removing them.

    +
    +
    +

    Razvan Nitu has a PhD in computer science. He is also one of the Pull Request and Issue Managers for the D Language Foundation. His experience with D lies mostly in compiler development, but he occasionally contributes to DRuntime and Phobos. Razvan has been organizing D summer schools at his hometown university and mentoring students to work on D-related projects (such as integrating DMD-as-a-library in D-Scanner, pay-as-you-go DRuntime, D Google APIs, using D to write linux kernel drivers, etc.) for the past 6 years.

    +
    +
    +
  • + +
  • 18:00 End of Day Three
  • + + + + + + + +
    +
    +

    Registration

    +

    + Every year, we offer a 15% Early-Bird discount for a limited window. This year, we were scheduled to open General registration at a rate of $450 starting from June 18th. But thanks to support from WEKA, we are able to keep the Early-Bird rate locked in. So the discounted rate of $382.50 is now the General rate for the remainder of the registration period. Thanks, WEKA! +

    +

    + GBP rates are based on the HMRC Exchange Rate for the current month. Note that this rate is static for the month and will most likely differ from the rate used by PayPal or your credit card company. You may find the USD PayPal link to result in a lower or higher charge on your GBP credit card than the GBP link. +

    +

    A 20% VAT is added to the base registration rates.

    +
    +

    General Registration Base Rate: $382.50 (£293.49)

    +

    + At a base rate of $382.50, with 20% VAT, the total for General registration is $459 (£352.18). Register below! +

    +
    +
    +

    Student Registration Base Rate: $100 (£76.73)

    +

    + The student rate is a fixed $100 + 20% VAT, or $120 (£92.07), until General Registration closes. If you qualify, please contact social@dlang.org for details on how to take advantage of this discounted rate. +

    +
    +
    +

    Major Open Source Contributor Registration Base Rate: $200 (£153.46)

    +

    + The rate for major open source contributors is a fixed $200 + 20% VAT, or $240 (£184.15), until General Registration closes. Eligibility for this discount is determined on a case-by-case basis. If you think you qualify, please contact social@dlang.org for more information. +

    +
    +
    +

    Hardship Rate

    +

    + If you would like to attend DConf but cannot afford any of the above rates, we are willing to offer you a special hardship rate. This is only a discount on registration. We cannot assist you with transportation or lodging. Please contact social@dlang.org to explain your situation, and we’ll provide you with more details. +

    +
    +
    +

    Register General USD: $382.50 + 20% VAT ($459)

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

    Register General GBP: £293.49 + 20% VAT (£352.18)

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

    + Please be aware that by attending the conference, you acknowledge that you are responsible for any property that you bring to the venue and that neither the D Language Foundation nor its sponsors can assume any responsibility for damaged, stolen or lost property belonging to the attendees. +

    +
    +
    + + +
    +
    +

    Venue

    +

    + Our DConf ’24 venue is CodeNode, a space in Central London specifically designed for tech conferences. It’s conveniently located close between Moorgate and Liverpool Street stations and is a 10–15 minute walk from Old Street Station to the north. +

    +
    + +
    +

    + Our presentations will happen on the ground floor in the CTRL room, and we’ll have the entirety of the ESC area downstairs to ourselves, where attendees can relax, chat, or play table tennis or foosball between talks. +

    +

    Accommodations

    +

    + There are several budget hotels in easy walking distance. The following are some options that, according to Google Maps, are less than a 20-minute walk from the venue. Some of them are near an underground station that is one stop away from Moorgate or Liverpool Street stations. Click a link to see the walking route(s) between a hotel and the venue. On the map, you’ll find links to reserve a room. Note that most attendees generally stay at the Travelodge London Central City Road. +

    + +

    BeerConf

    +

    Every evening during the first three nights of DConf means only one thing: BeerConf! Ethan Watson coined the term in 2016 as a name for what happens at the designated evening gathering spot at every DConf. In 2019 and 2022, we were able to hire space at pubs for BeerConf. Unfortunately, last year and again this year, pub hire rates have been well beyond our budget.

    +

    Even so, we’re fortunate this year in that an anonymous donor has sponsored one night of BeerConf at a pub! We’ll be at The Trinity Bell on Mitre Street, roughly 15 minutes southeast of the venue on foot. On the first night of the conference, September 17, drinks are on the house for all conference attendees from 18:00 until the tab runs out. When you get there, be sure to raise a glass in honor of our anonymous benefactor.

    +

    We’re hoping to find more sponsors for the other two nights. In the event we’re unable to, we’ll designate a meetup spot. Unless and until we update this space with that information, the default location is the lobby bar of the Travelodge Central City Road.

    +
    +
    + + +
    +
    +

    Sponsors

    +
    + Symmetry Investments +
    +

    + DConf ’24 is sponsored by our friends at Symmetry Investments. With offices in Hong Kong, Singapore, London, Jersey, and the Cayman Islands, Symmetry employs D in their investment management mission. This is the fourth time they’ve sponsored DConf, and we are thankful for their continued support. They are also the sponsors of the Symmetry Autumn of Code, an annual event that, since 2018, has provided experience to emerging programmers while enhancing the D ecosystem. We couldn’t be more excited to bring DConf to London once again with Symmetry’s support. +

    + +
    + WEKA +
    +

    + DConf ’24 is supported by our friends at WEKA. WEKA is a fast-growing company that is building a cloud and AI-native data platform that helps to solve complex data challenges for the world’s leading enterprises and preeminent research organizations. WEKA is a great place to work for developers looking to sharpen their D coding skills and work on really interesting use cases. +

    + +
    + Decard +
    +

    + Additional funding for DConf ’24 has been provided by our friends at Decard. Decard harnesses the power of decentralization, security, and scalability to build robust, asset agnostic financial products and services. Co-founder and CEO Theis Simonsen says, “D is not just a programming language; it is a development shift towards efficiency, safety, and expressiveness without forcing specific programming paradigms.” +

    +
    +
    + + + + + \ No newline at end of file diff --git a/docs/2024/online/images/logo-512.png b/docs/2024/online/images/logo-512.png new file mode 100644 index 00000000..453765c4 Binary files /dev/null and b/docs/2024/online/images/logo-512.png differ diff --git a/docs/2024/online/images/logo-og.jpg b/docs/2024/online/images/logo-og.jpg new file mode 100644 index 00000000..5765460d Binary files /dev/null and b/docs/2024/online/images/logo-og.jpg differ diff --git a/docs/2024/online/includes/w3.css b/docs/2024/online/includes/w3.css new file mode 100644 index 00000000..a10a4a6d --- /dev/null +++ b/docs/2024/online/includes/w3.css @@ -0,0 +1,147 @@ +/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent}a:active,a:hover{outline-width:0} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.w3-wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc} +.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1} +.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1} +.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center} +.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px} +.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none} +.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none} +.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%} +.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none} +.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block} +.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s} +.w3-input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.w3-select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.w3-dropdown-hover:hover .w3-dropdown-content{display:block} +.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000} +.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000} +.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px} +.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%} +.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%} +.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px} +.w3-main,#main{transition:margin-left .4s} +.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto} +.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left} +.w3-bar .w3-button{white-space:normal} +.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%} +.w3-responsive{display:block;overflow-x:auto} +.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before, +.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both} +.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%} +.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%} +.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%} +.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%} +@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%} +.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%} +.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}} +@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%} +.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%} +.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}} +.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px} +.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px} +.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell} +.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom} +.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important} +@media (max-width:1205px){.w3-auto{max-width:95%}} +@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px} +.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative} +.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center} +.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}} +@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}} +@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}} +@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}} +.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0} +.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0} +.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0} +.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none} +.w3-display-position{position:absolute} +.w3-circle{border-radius:50%} +.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px} +.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px} +.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px} +.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px} +.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important} +.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1} +.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75} +.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)} +.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)} +.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)} +.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important} +.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important} +.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important} +.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important} +.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important} +.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important} +.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important} +.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important} +.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important} +.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important} +.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important} +.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important} +.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important} +.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important} +.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important} +.w3-left{float:left!important}.w3-right{float:right!important} +.w3-button:hover{color:#000!important;background-color:whitesmoke!important} +.w3-transparent,.w3-hover-none:hover{background-color:transparent!important} +.w3-hover-none:hover{box-shadow:none!important} \ No newline at end of file diff --git a/docs/2024/online/index.html b/docs/2024/online/index.html new file mode 100644 index 00000000..d50227df --- /dev/null +++ b/docs/2024/online/index.html @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + +The D Programming Language Conference Online 2024 + + + +
    + +
    + +
    +
    + + +
    +
    +

    DConf Online Round 4

    +

    + The D Language Foundation invites you to join us for the fourth edition of DConf Online on March 16th, 2024! Spend the day with us on the D Language Foundation’s YouTube channel. It’s completely free. No registration is required; all you need is a web browser or the YouTube app, an internet connection, and a YouTube account if you wish to participate in the live chats. +

    +

    + In past editions of DConf Online, we ran the livestream and the talks separately. This year, everything is happening in one place: +

    +

    + The DConf Online ‘24 Livestream. +

    +

    + Each talk will go like this: + +

      +
    1. The speaker will join Mike Parker in the livestream for a 10-minute chat about the talk.
    2. +
    3. At 10 minutes past the hour, Mike will launch the talk in the livestream. Viewers will not need to switch away to watch it.
    4. +
    5. The speaker will monitor the livechat while the talk plays and may type out short answers to any questions that come up or defer answering until after the talk.
    6. +
    7. As soon as the talk ends, the speaker will stick around for 10 or 15 minutes to answer questions.
    8. +
    9. When the Q&A session is finished, Mike will announce a break until the top of the hour, when we goto 1.
    10. +
    +

    +

    As with past editions, everyone who has a question answered during the Q&A session will be entered into a drawing to win a swag item. They'll also be entered into a drawing at the end of the day to win a $100 Amazon eGift Card. So be sure to stick around to the end! The livestream link will be posted here and in the D Announce forum one week prior to the event.

    + +

    Mike will open The DConf Online ‘24 livestream at 14:55 UTC. Note that all times in the below schedule are in UTC.

    +
    +
    + + +
    +
    +

    Saturday March 16

    + + +
    +
    +
    + © 2024 The D Language Foundation +
    + + + + diff --git a/docs/2024/online/slides/bright.pdf b/docs/2024/online/slides/bright.pdf new file mode 100644 index 00000000..5cd7c7d3 Binary files /dev/null and b/docs/2024/online/slides/bright.pdf differ diff --git a/docs/2024/online/slides/gehr.pdf b/docs/2024/online/slides/gehr.pdf new file mode 100644 index 00000000..b0b8728c Binary files /dev/null and b/docs/2024/online/slides/gehr.pdf differ diff --git a/docs/2024/online/slides/neves.pdf b/docs/2024/online/slides/neves.pdf new file mode 100644 index 00000000..8ac0d0a3 Binary files /dev/null and b/docs/2024/online/slides/neves.pdf differ diff --git a/docs/2024/online/slides/schadek.pdf b/docs/2024/online/slides/schadek.pdf new file mode 100644 index 00000000..2993c8e2 Binary files /dev/null and b/docs/2024/online/slides/schadek.pdf differ diff --git a/docs/2024/online/slides/shah.pdf b/docs/2024/online/slides/shah.pdf new file mode 100644 index 00000000..30d8d436 Binary files /dev/null and b/docs/2024/online/slides/shah.pdf differ diff --git a/docs/2024/reg_success.html b/docs/2024/reg_success.html new file mode 100644 index 00000000..0f711111 --- /dev/null +++ b/docs/2024/reg_success.html @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + +The D Programming Language Conference 2022 + + + + + + +
    +
    +

    + Thank you for signing up for DConf ‘24! You should receive an email from Mike Parker within the next few days containing all the details you'll need to know about the conference. If you forgot to include a nickname/forum handle or to list any special dietary requirements on the registration form, that's okay. The incoming email will explain how to proceed. +

    +

    + If you do not receive your email within 48 hours after registration, please check your spam folder. If you do not find it there, you can email social@dlang.org and let us know. Feel free to also use that address for any questions or concerns you'd like to bring up. +

    +

    + See you in London! +

    +
    +
    + +
    + © 2024 The D Language Foundation +
    + + + \ No newline at end of file diff --git a/docs/2024/slides/artha.pdf b/docs/2024/slides/artha.pdf new file mode 100644 index 00000000..b4717229 Binary files /dev/null and b/docs/2024/slides/artha.pdf differ diff --git a/docs/2024/slides/beer.html b/docs/2024/slides/beer.html new file mode 100644 index 00000000..6d5944f6 --- /dev/null +++ b/docs/2024/slides/beer.html @@ -0,0 +1,406 @@ + + + + + + + Using Dustmite to Make Good Testcases + + + +
    +

    Using Dustmite to Make Good Testcases

    +
    +

    Effective Dustmite

    +

    Dustmite is a tool written by CyberShadow that ships with the stock +DMD download. It is a bug reducer.

    +

    Have you ever run into a compiler bug? Or some error message that you +didn’t understand, because it involved too much source code? Have you +formed a theory about what was its cause, only for your simple testcase +to end up unable to reproduce it? How does everybody else make those +nice, simple testcases anyways? The answer is Dustmite.

    +

    How does that work? In fully general terms, Dustmite takes two +things: a test folder, and a tester. The tester demonstrates the +presence of the bug. In other words, the tester is some form of +executable, a D file, a Bash script, a bat file, that is executed in the +test folder and succeeds if and only if the bug is present.

    +

    How do I do this?

    +

    Let’s step through a basic reduction. This is the workflow I use, +born from experience:

    +
      +
    1. Make a new folder for the repro.
    2. +
    3. Copy your project to ./src1/ in the repro folder.
    4. +
    5. Create your repro script in repro1.sh. Note that this +should run from ./src1/, but it should be +placed in the repro folder itself. Remember to make it +executable with chmod +x!
    6. +
    7. Run dustmite: dustmite src1 ../repro1.sh. This will +create src1.reduced.
    8. +
    9. Don’t even look at that folder! First, copy the +output folder to src2 and the repro script to +repro2.sh.
    10. +
    11. Look at the source and decide what follow-up steps to take.
    12. +
    13. Repeat 4-7 until your output is sufficiently minimal.
    14. +
    +

    So you end up with this structure:

    +
    /test
    +/test/src1/
    +/test/src1.reduced/
    +/test/repro1.sh
    +/test/src2/
    +/test/src2.reduced/
    +/test/repro2.sh
    +/test/src3/
    +/test/repro3.sh
    +

    Why all the copying? It is very easy to look at the output +and go “oh, I understand the issue now, I’ll simplify it a bit more and +then file the bug.” It’s often not what you think! The +src.reduced folder is the product of hours +of compute. Keep it pristine. If you mess up your src2, you +can just delete it and restart from src1.reduced.

    +

    That’s it. However, the devil is in the details.

    +

    How does Dustmite actually +work?

    +

    To understand the following sections, it’s important to have a good +model for the actual thing that Dustmite does.

    +

    Dustmite internally:

    + +

    Writing a good repro script

    +

    In other tools, you may have different workflows for debugging a +compiler crash, an application crash, or a miscompilation. Dustmite +doesn’t care. The tester may use any means to ascertain the +presence of the bug. In technical terms, Dustmite looks at the exit +status of the tester. This can mess you up: if you are testing for a +compiler crash, you have to invert the exit status:

    +
    #!/bin/bash
    +dmd test.d
    +# segfault
    +[ $? = 139 ]
    +

    Or to test the produced binary:

    +
    #!/bin/bash
    +dmd test.d -oftest
    +./test
    +[ $? = 139 ]
    +

    However, this is still not a very good repro. Why?

    +

    As a rule, we want to test for as much relevant details as +possible while excluding as many irrelevant details as we can. +For instance, when debugging a segfault, it is common for Dustmite to +replace one segfault with another, totally unrelated segfault. It turns +out that when removing code, it’s easy to arrive at code that segfaults. +:)

    +

    When at all possible, you should replace a generic segfault with +something like an assertion at a specific line. Debug the segfault, +replace it with a null check that asserts out, then:

    +
    (./program && exit) 2>&1 |grep 'Error Message Goes Here'
    +

    Similarly, you can test for DMD error messages in the same way.

    +

    However, how do you avoid Dustmite optimizing out the assignment of +the field that becomes null, then? One easy trick is to hide the error +message in a file that is outside your source folder, then compile it in +with dmd ../error1.d. In fact, this is exactly why we keep +the tester outside the source folder: otherwise, Dustmite would +correctly notice that the easiest way to make the tester pass is to +delete all lines of code inside it!

    +

    In other words, you can always protect a piece of code or script from +being reduced by putting it outside the source folder. Also, you can +pull source into the source folder to trace it.

    +

    Important Safety Warning

    +

    D reductions can end up with infinite loops and unlimited memory +leaks! Gauge the RAM your compilation takes, then set memory and CPU +limits in your repro script:

    +
    # limit DMD to 10 seconds
    +ulimit -t 10
    +# limit DMD to 4 GB
    +ulimit -v $((4096*1024))
    +

    You can use timeout under Windows, but I’m afraid there +is no simple equivalent for the memory limit.

    +

    Getting the +source folder ready for the initial run

    +

    So how do you go about things? First of all, whatever build tool you +use, dub, jinja, reggae, you can keep using it, but usually you +want to get down to a DMD command line. This puts the minimal distance +between you and the actual run, and lets you easily inspect the exit +code and error.

    +

    As the second step, you should clean up all built binaries in your +source folder. Dustmite can do this for you, by noticing they +don’t affect the error, but it’s awkward because it has to load the +whole binary into memory. Also if you start with only source code, you +don’t have to worry that you’re accidentally testing the wrong +binary.

    +

    Note that the source code being reduced does not have to be D, or any +known programming language at all. Dustmite will try to parse all files +in its directory as D, but it has other strategies: for instance, you +can configure it to split files by line:

    +
    dustmite --split *.csv:lines
    +

    And it will try to remove lines from CSV files.

    +

    First run

    +

    So now you have a source folder src1, you manually run +your repro script and it exits with success. It’s time to start your +first dustmite run:

    +
    $ dustmite src1 ../repro1.sh
    +

    Now dustmite will tell you if your repro script has an issue, but if +everything is well it will begin its run.

    +

    At this point, I recommend going home for the weekend. :-) DMD is not +the fastest compiler (depends on source), and Dustmite will now +potentially kick off tens of thousands of DMD runs. When you come back, +you should have a new directory: src1.reduced, containing +the minimal source code that still passes the test.

    +

    At this point, again, immediately copy this folder to +src2. It represents the outcome of potentially multiple +days of compute time, and must be protected. In src2, you +can look around and edit as much as you want.

    +

    What now?

    +

    If you’re lucky, you will be done. However, this is unlikely, because +there are many patterns that Dustmite cannot reduce:

    + +

    However, the first thing you should do is rerun your repro command +and double-check that you’ve ended up with the same bug as you +started out with. It’s possible to look at the source code and go “oh +duh, of course this crashes now.” This is usually because Dustmite +removed some code that turned an incidental crash into an obvious crash, +for instance removing a variable assignment to a pointer. In that case, +you’ve sadly wasted your time, and have to go back and find a better +setup for your initial source and repro script.

    +

    Assuming your reproduction is good, but you want to reduce it +further, there are several strategies that can be used:

    +

    Inlining libraries or +Phobos modules

    +

    Often at this point you find that most of the problem is in a Dub or +Phobos library. The easiest way to handle this is to just copy the +entire library into your project.

    +

    The dub sources are at +$HOME/.dub/packages/{name}/{version}/{repo}. The Phobos +sources are at {DMDDIR}/src/ in your install folder, or +/usr/lib/ldc/x86_64-linux-gnu/include/d for Ubuntu LDC.

    +

    Now, copy the module in question into your project, and immediately +change the name to something else! This is important, because it means +that Dustmite can’t just remove the entire file and go back to importing +the existing file. Make sure it still runs, by deleting everything that +doesn’t - this usually isn’t much. Change package to +public where required. Mass-replace all your imports and +references over to the new name. Then just rerun Dustmite with the new +folder:

    +
    $ dustmite src2 ../repro2.sh
    +

    Specializing templates

    +

    Often issues hide inside templates that are instantiated with +multiple different types in your remaining source, split into different +static ifs or different code paths. This can make it hard +to see what the actual necessary code is.

    +

    For instance, if you descended into std.typecons, you +may now have Nullable!int and Nullable!string +remaining in your repro code.

    +

    You can break this template open by simply making two copies:

    +
    struct Nullable_int(T) { ... }
    +struct Nullable_string(T) { ... }
    +

    And referencing each separately. This will allow Dustmite to strip +out the parts that the int version doesn’t need, and the +parts that the string version doesn’t need, making each +case easier to follow.

    +

    You can also try replacing all uses of T in each with +int or string directly, though that may not +work.

    +

    Wild flailing

    +

    Honestly, at this stage your code is probably small enough that you +can just file a bug directly. However, if you want to have some fun, +form a theory about what the issue is and try it out: for instance, +replace type parameters with int, or parameters with +0 and see if it still breaks.

    +

    Often, the final reproduction is distressingly simple. From +a user level, it’s common to think of bugs in terms of a domain problem, +but from the perspective of the compiler it’s usually something like +“three particular features were used in an order that nobody has tried +before”. Even staring directly at the final reduction, it can be hard to +understand what the actual problem even is.

    +

    Remember that if you went the wrong way in your reduction, you can +always go back to a previous state.

    +

    If your final repro contains +__traits(compiles, <expr>), take a drink. You’ve +joined the club of speculative semantic pass bugs. About half my bugs +contain this line.

    +

    And of course, thanks to CyberShadow for his excellent tool.

    +

    That’s it. Have fun!

    + + diff --git a/docs/2024/slides/bright.pdf b/docs/2024/slides/bright.pdf new file mode 100644 index 00000000..c412a940 Binary files /dev/null and b/docs/2024/slides/bright.pdf differ diff --git a/docs/2024/slides/davis.pdf b/docs/2024/slides/davis.pdf new file mode 100644 index 00000000..1fcab8ff Binary files /dev/null and b/docs/2024/slides/davis.pdf differ diff --git a/docs/2024/slides/dutu.pdf b/docs/2024/slides/dutu.pdf new file mode 100644 index 00000000..cf7efff9 Binary files /dev/null and b/docs/2024/slides/dutu.pdf differ diff --git a/docs/2024/slides/korpel.pdf b/docs/2024/slides/korpel.pdf new file mode 100644 index 00000000..553ea99d Binary files /dev/null and b/docs/2024/slides/korpel.pdf differ diff --git a/docs/2024/slides/mancini.pdf b/docs/2024/slides/mancini.pdf new file mode 100644 index 00000000..50b56ab8 Binary files /dev/null and b/docs/2024/slides/mancini.pdf differ diff --git a/docs/2024/slides/nitu.pdf b/docs/2024/slides/nitu.pdf new file mode 100644 index 00000000..578d80f4 Binary files /dev/null and b/docs/2024/slides/nitu.pdf differ diff --git a/docs/2024/slides/nyarko.pdf b/docs/2024/slides/nyarko.pdf new file mode 100644 index 00000000..66554b47 Binary files /dev/null and b/docs/2024/slides/nyarko.pdf differ diff --git a/docs/2024/slides/piolat.pdf b/docs/2024/slides/piolat.pdf new file mode 100644 index 00000000..9c24b6d0 Binary files /dev/null and b/docs/2024/slides/piolat.pdf differ diff --git a/docs/2024/slides/riciu.pptx b/docs/2024/slides/riciu.pptx new file mode 100644 index 00000000..0f8b0d39 Binary files /dev/null and b/docs/2024/slides/riciu.pptx differ diff --git a/docs/2024/slides/schadek.pdf b/docs/2024/slides/schadek.pdf new file mode 100644 index 00000000..c3f3fcf6 Binary files /dev/null and b/docs/2024/slides/schadek.pdf differ diff --git a/docs/2024/slides/schveighoffer-sechet.pdf b/docs/2024/slides/schveighoffer-sechet.pdf new file mode 100644 index 00000000..a93c6181 Binary files /dev/null and b/docs/2024/slides/schveighoffer-sechet.pdf differ diff --git a/docs/2024/slides/shah.pdf b/docs/2024/slides/shah.pdf new file mode 100644 index 00000000..7a8ae530 Binary files /dev/null and b/docs/2024/slides/shah.pdf differ diff --git a/docs/2024/slides/vander-aa.pdf b/docs/2024/slides/vander-aa.pdf new file mode 100644 index 00000000..8c06c9e3 Binary files /dev/null and b/docs/2024/slides/vander-aa.pdf differ diff --git a/docs/2024/slides/wilson.pptx b/docs/2024/slides/wilson.pptx new file mode 100644 index 00000000..5e29a086 Binary files /dev/null and b/docs/2024/slides/wilson.pptx differ diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 00000000..6ee21906 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +dconf.org \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100755 index 00000000..347a7bdb --- /dev/null +++ b/docs/index.html @@ -0,0 +1,3 @@ + + +