From 800a59b98842bf29a9e0356d1fb263500b0212a1 Mon Sep 17 00:00:00 2001 From: left23 Date: Sat, 13 Jul 2024 16:34:02 +0200 Subject: [PATCH] update --- index.html | 2 +- js/app.5816e330.js | 2 ++ js/app.5816e330.js.map | 1 + js/app.8dcc2330.js | 2 -- js/app.8dcc2330.js.map | 1 - 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 js/app.5816e330.js create mode 100644 js/app.5816e330.js.map delete mode 100644 js/app.8dcc2330.js delete mode 100644 js/app.8dcc2330.js.map diff --git a/index.html b/index.html index a85e845..c63b8c3 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Stocker Corcoran Design & Development
+Stocker Corcoran Design & Development
diff --git a/js/app.5816e330.js b/js/app.5816e330.js new file mode 100644 index 0000000..5a5d1d2 --- /dev/null +++ b/js/app.5816e330.js @@ -0,0 +1,2 @@ +(function(){"use strict";var i={745:function(i,t,o){var e=o(5130),r=o(6768);const n=(0,r.Lk)("section",{class:"header grey","aria-label":"Stocker Corcoran"},[(0,r.Lk)("header",{class:"wrapper"},[(0,r.Lk)("h1",null,"Stocker Corcoran"),(0,r.Lk)("span",{class:"subtitle"},"Design & Development"),(0,r.Lk)("span",{class:"desc"},"with Drupal and Javascript")])],-1),l={id:"porfolio",class:"portfolio","aria-label":"Our work"},a=(0,r.Lk)("h2",{class:"visually-hidden"},"Our work",-1),s={class:"container grid"},p=(0,r.Fv)('

What we do

  • Frontend and backend implementations, variety of server and client side architectures (PHP, Javascript, OOP, MVC) and Content Management Systems
  • Component design and frontend design systems
  • Accessibility and performance audits and remediation
  • Test and behaviour-driven development
  • Coordination between technical teams, design teams, stakeholders, as needed

What we contribute

  • Project experience and proactive involvement in all steps from ideation to production and beyond
  • Technical team leadership
  • Technical project management
  • Technical strategy and project planning
  • Partake in, or help establish, proactive documentation and communication processes to foster effective remote teams

What we value

  • Remote-first
  • Accessibility and inclusivity
  • Life, and all living beings and systems
  • Testing and data-driven design approaches
  • Community and mutual aid
  • Transparency
  • Documentation (did we say that already?!)
  • DIY and life-long learning
  • Artistic expression, play, and imagination
',2),c=(0,r.Lk)("section",{class:"github"},[(0,r.Lk)("div",{class:"wrapper"},[(0,r.Lk)("nav",{role:"navigation",class:"footer--social"},[(0,r.Lk)("h2",null,"On Github"),(0,r.Lk)("ul",{class:"menu"},[(0,r.Lk)("li",{class:"menu-item"},[(0,r.Lk)("a",{href:"https://github.com/Techbot"},[(0,r.Lk)("img",{src:"https://avatars.githubusercontent.com/u/548643?v=4",width:"100",height:"100",alt:"@Techbot"}),(0,r.Lk)("p",null,"Rob's Github")])]),(0,r.Lk)("li",{class:"menu-item"},[(0,r.Lk)("a",{href:"https://github.com/left23"},[(0,r.Lk)("img",{src:"https://avatars.githubusercontent.com/u/1835923?v=4",width:"100",height:"100",alt:"@left23"}),(0,r.Lk)("p",null,"Lisa's Github")])]),(0,r.Lk)("li",{class:"menu-item"},[(0,r.Lk)("a",{href:"https://github.com/EMC23"},[(0,r.Lk)("img",{src:"https://avatars.githubusercontent.com/u/6142164?s=200&v=4",width:"100",height:"100",alt:"@EMC23"}),(0,r.Lk)("p",null,"EMC23's Github")])])])])])],-1);function f(i,t,o,e,f,u){const d=(0,r.g2)("PortfolioItem");return(0,r.uX)(),(0,r.CE)(r.FK,null,[n,(0,r.Lk)("section",l,[a,(0,r.Lk)("div",s,[(0,r.bF)(d)])]),p,c],64)}var u=o(4232);const d=["src"],m={class:"description"},h={key:0},g=["href"],b={key:1},w={key:2},k=["href"],v={key:3},L=["href"],S=(0,r.Lk)("span",{class:"icon"},null,-1);function y(i,t,o,e,n,l){return(0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(n.items,(i=>((0,r.uX)(),(0,r.CE)("div",{class:(0,u.C4)(["grid-item",i.portfolioSpecial?"special":""])},[(0,r.Lk)("img",{src:i.portfolioImg},null,8,d),(0,r.Lk)("div",m,[i.portfolioTitleLink?((0,r.uX)(),(0,r.CE)("h2",h,[(0,r.Lk)("a",{href:i.portfolioTitleLink,target:"_blank"},(0,u.v_)(i.portfolioTitle),9,g)])):((0,r.uX)(),(0,r.CE)("h2",b,(0,u.v_)(i.portfolioTitle),1)),i.portfolioSubtitleLink?((0,r.uX)(),(0,r.CE)("h3",w,[(0,r.Lk)("a",{href:i.portfolioSubtitleLink,target:"_blank"},(0,u.v_)(i.portfolioSubtitle),9,k)])):((0,r.uX)(),(0,r.CE)("h3",v,(0,u.v_)(i.portfolioSubtitle),1)),i.portfolioLink?((0,r.uX)(),(0,r.CE)("a",{key:4,href:i.portfolioLink,target:"_blank",class:"btn btn-demo"},[S,(0,r.eW)(" "+(0,u.v_)(i.portfolioLinkText),1)],8,L)):(0,r.Q3)("",!0),(0,r.Lk)("p",null,(0,u.v_)(i.portfolioDescription),1)])],2)))),256)}var T={name:"PortfolioItem",props:{portfolioImg:String,portfolioTitle:String,portfolioTitleLink:String,portfolioSubtitle:String,portfolioSubtitleLink:String,portfolioDescription:String,portfolioLink:String,portfolioLinkText:String,portfolioArticleLink:String,portfolioSpecial:Boolean},data(){return{items:[{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/commondesign.png",portfolioTitle:"Design system for suite of Humanitarian websites",portfolioTitleLink:"",portfolioSubtitle:"",portfolioSubtitleLink:"",portfolioDescription:"Drupal base theme and sub theme with single directory components, and Wordpress theme providing visual, UI and code consistency across a range of websites.",portfolioLink:"https://web.brand.unocha.org/demo",portfolioLinkText:"View demo",portfolioArticleLink:"",portfolioSpecial:1},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/unocha.png",portfolioTitle:"Drupal site builds for UNOCHA",portfolioSubtitle:"",portfolioDescription:"Drupal 9 and 10 site builds and upgrades for UNOCHA, Reliefweb and others. Theming from designs, project planning, documentation and training, testing, deployment, code reviews, maintenance, and ongoing feature development.",portfolioLink:"https://unocha.org",portfolioLinkText:"View website",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/audits.png",portfolioTitle:"Accessibility and Performance Advocacy",portfolioSubtitle:"",portfolioDescription:"Testing, data gathering, reporting and remediation. Data-driven performance and accessibility improvements.",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/whd2022.png",portfolioTitle:"Site build and theme for UNOCHA World Humanitarian Day 2022",portfolioSubtitle:"",portfolioDescription:"",portfolioLink:"https://2022.worldhumanitarianday.org",portfolioLinkText:"View website",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/itext.png",portfolioTitle:"Drupal site builds, frontend development, and ecommerce",portfolioSubtitle:"",portfolioDescription:"",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/game-with-map.png",portfolioTitle:"JiGS Interactive Game System",portfolioTitleLink:"https://github.com/Techbot/JiGS",portfolioSubtitle:"Read more on our blog",portfolioSubtitleLink:"https://www.emc23.com/eclectic-meme-conspiracy",portfolioDescription:"The Eclectic Meme Conspiracy (EMC) Online is an online, persistent, 2D, tiled, RPG, multiplayer, virtual world. JiGS is an integrated gaming system (client and server) built for and in tandem with EMC Online, using Drupal, PhaserJs and VueJs.",portfolioLink:"",portfolioLinkText:"",portfolioSpecial:1},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/plates/consumer.gif",portfolioTitle:"PhaserJs Game Design and Development",portfolioSubtitle:"",portfolioDescription:"",portfolioLink:"http://techbot.github.io/projects",portfolioLinkText:"View games",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/umami-ember-homepage.png",portfolioTitle:"Umami Headless Drupal with Contenta CMS, EmberJs",portfolioSubtitle:"",portfolioDescription:"The task was to create the Umami Drupal OOTB designs using ContentaCMS as the data enpoint, in whatever consumer flavour takes your fancy. We chose EmberJs.",portfolioLink:"https://github.com/contentacms/contenta_ember",portfolioLinkText:"View repo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/feu-concept-speakers.png",portfolioTitle:"Web design ideas for Frontend United 2018",portfolioSubtitle:"",portfolioDescription:"Web design ideas delivered in HTML/CSS for implementation in Drupal 8 by other volunteers for Frontend United 2018 in Utrecht.",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/cmc-concepts.png",portfolioTitle:"Design process",portfolioSubtitle:"",portfolioDescription:"Lo-fi wireframes, navigation design, component style tile, high fidelity graphic page design, and Drupal 7 theme",portfolioLink:"http://cmc.ie/",portfolioLinkText:"View website",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/patternlab.png",portfolioTitle:"Design-in-the-browser",portfolioSubtitle:"",portfolioDescription:" Patternlab integration, Drupal 8 implementation for website redesign",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/living-styleguide.png",portfolioTitle:"Living Styleguide",portfolioSubtitle:"",portfolioDescription:"KSSnode styleguide and Drupal 8 OpenSocial integration",portfolioLink:"https://www.getopensocial.com/blog/open-source-technology/creating-living-style-guide-open-social",portfolioLinkText:"View blog",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/hospital-wayfinder.png",portfolioTitle:"Design concepts",portfolioSubtitle:"",portfolioDescription:"High fidelity graphic mock ups for Hospital website tender, intended to be built in Drupal 7. Desktop and mobile homepage, and wayfinder app concept",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0}]}}},D=o(1241);const C=(0,D.A)(T,[["render",y]]);var O=C,x={name:"App",components:{PortfolioItem:O},data(){return{}}};const I=(0,D.A)(x,[["render",f]]);var E=I;(0,e.Ef)(E).mount("#app")}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var n=t[e]={exports:{}};return i[e].call(n.exports,n,n.exports,o),n.exports}o.m=i,function(){var i=[];o.O=function(t,e,r,n){if(!e){var l=1/0;for(c=0;c=n)&&Object.keys(o.O).every((function(i){return o.O[i](e[s])}))?e.splice(s--,1):(a=!1,n0&&i[c-1][2]>n;c--)i[c]=i[c-1];i[c]=[e,r,n]}}(),function(){o.n=function(i){var t=i&&i.__esModule?function(){return i["default"]}:function(){return i};return o.d(t,{a:t}),t}}(),function(){o.d=function(i,t){for(var e in t)o.o(t,e)&&!o.o(i,e)&&Object.defineProperty(i,e,{enumerable:!0,get:t[e]})}}(),function(){o.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(i){if("object"===typeof window)return window}}()}(),function(){o.o=function(i,t){return Object.prototype.hasOwnProperty.call(i,t)}}(),function(){var i={524:0};o.O.j=function(t){return 0===i[t]};var t=function(t,e){var r,n,l=e[0],a=e[1],s=e[2],p=0;if(l.some((function(t){return 0!==i[t]}))){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(s)var c=s(o)}for(t&&t(e);p\n
\n
\n

Stocker Corcoran

\n Design & Development\n with Drupal and Javascript\n
\n
\n\n
\n

Our work

\n
\n \n
\n
\n\n
\n
\n

What we do

\n
    \n
  • Frontend and backend implementations, variety of server\n and client side architectures (PHP, Javascript, OOP, MVC) and Content\n Management Systems
  • \n
  • Component design and frontend design systems
  • \n
  • Accessibility and performance audits and remediation
  • \n
  • Test and behaviour-driven development
  • \n
  • Coordination between technical teams, design teams,\n stakeholders, as needed
  • \n
\n

What we contribute

\n
    \n
  • Project experience and proactive involvement in all steps\n from ideation to production and beyond
  • \n
  • Technical team leadership
  • \n
  • Technical project management
  • \n
  • Technical strategy and project planning
  • \n
  • Partake in, or help establish, proactive documentation and\n communication processes to foster effective remote teams
  • \n
\n

What we value

\n
    \n
  • Remote-first
  • \n
  • Accessibility and inclusivity
  • \n
  • Life, and all living beings and systems
  • \n
  • Testing and data-driven design approaches
  • \n
  • Community and mutual aid
  • \n
  • Transparency
  • \n
  • Documentation (did we say that already?!)
  • \n
  • DIY and life-long learning
  • \n
  • Artistic expression, play, and imagination
  • \n
\n
\n
\n\n
\n
\n

\n Download\n CV\n

\n
\n
\n\n
\n
\n \n
\n
\n\n \n\n\n\n\n\n\n","\n\n\n","import { render } from \"./PortfolioItem.vue?vue&type=template&id=9b886c66\"\nimport script from \"./PortfolioItem.vue?vue&type=script&lang=js\"\nexport * from \"./PortfolioItem.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./App.vue?vue&type=template&id=981fb942\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=981fb942&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\nimport App from './App.vue'\n\ncreateApp(App).mount('#app')\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkportfolio\"] = self[\"webpackChunkportfolio\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(745); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_createElementVNode","class","id","_createStaticVNode","role","href","src","width","height","alt","_createElementBlock","_Fragment","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createVNode","_component_PortfolioItem","_hoisted_5","_hoisted_7","key","_renderList","$data","items","item","_normalizeClass","portfolioSpecial","portfolioImg","portfolioTitleLink","target","portfolioTitle","_toDisplayString","portfolioSubtitleLink","_hoisted_6","portfolioSubtitle","_hoisted_8","portfolioLink","_hoisted_10","_createTextVNode","portfolioLinkText","_hoisted_9","_createCommentVNode","portfolioDescription","name","props","String","portfolioArticleLink","Boolean","data","__exports__","components","PortfolioItem","render","createApp","App","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","window","obj","prop","prototype","hasOwnProperty","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.8dcc2330.js b/js/app.8dcc2330.js deleted file mode 100644 index b3545ac..0000000 --- a/js/app.8dcc2330.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";var i={5038:function(i,t,o){var e=o(5130),r=o(6768);const n=(0,r.Lk)("section",{class:"header grey","aria-label":"Stocker Corcoran"},[(0,r.Lk)("header",{class:"wrapper"},[(0,r.Lk)("h1",null,"Stocker Corcoran"),(0,r.Lk)("span",{class:"subtitle"},"Design & Development"),(0,r.Lk)("span",{class:"desc"},"with Drupal and Javascript")])],-1),l={id:"porfolio",class:"portfolio","aria-label":"Our work"},a=(0,r.Lk)("h2",{class:"visually-hidden"},"Our work",-1),s={class:"container grid"},p=(0,r.Fv)('

What we do

  • Frontend and backend implementations, variety of server and client side architectures (PHP, Javascript, OOP, MVC) and Content Management Systems
  • Component design and frontend design systems
  • Accessibility and performance audits and remediation
  • Test and behaviour-driven development
  • Coordination between technical teams, design teams, stakeholders, as needed

What we contribute

  • Project experience and proactive involvement in all steps from ideation to production and beyond
  • Technical team leadership
  • Technical project management
  • Technical strategy and project planning
  • Partake in, or help establish, proactive documentation and communication processes to foster effective remote teams

What we value

  • Remote-first
  • Accessibility and inclusivity
  • Life, and all living beings and systems
  • Testing and data-driven design approaches
  • Community and mutual aid
  • Transparency
  • Documentation (did we say that already?!)
  • DIY and life-long learning
  • Artistic expression, play, and imagination
',2),c=(0,r.Lk)("section",{class:"github"},[(0,r.Lk)("div",{class:"wrapper"},[(0,r.Lk)("nav",{role:"navigation",class:"footer--social"},[(0,r.Lk)("h2",null,"On Github"),(0,r.Lk)("ul",{class:"menu"},[(0,r.Lk)("li",{class:"menu-item"},[(0,r.Lk)("a",{href:"https://github.com/Techbot"},[(0,r.Lk)("img",{src:"https://avatars.githubusercontent.com/u/548643?v=4",width:"100",height:"100",alt:"@Techbot"}),(0,r.Lk)("p",null,"Rob's Github")])]),(0,r.Lk)("li",{class:"menu-item"},[(0,r.Lk)("a",{href:"https://github.com/left23"},[(0,r.Lk)("img",{src:"https://avatars.githubusercontent.com/u/1835923?v=4",width:"100",height:"100",alt:"@left23"}),(0,r.Lk)("p",null,"Lisa's Github")])]),(0,r.Lk)("li",{class:"menu-item"},[(0,r.Lk)("a",{href:"https://github.com/EMC23"},[(0,r.Lk)("img",{src:"https://avatars.githubusercontent.com/u/6142164?s=200&v=4",width:"100",height:"100",alt:"@EMC23"}),(0,r.Lk)("p",null,"EMC23's Github")])])])])])],-1);function f(i,t,o,e,f,d){const u=(0,r.g2)("PortfolioItem");return(0,r.uX)(),(0,r.CE)(r.FK,null,[n,(0,r.Lk)("section",l,[a,(0,r.Lk)("div",s,[(0,r.bF)(u)])]),p,c],64)}var d=o(4232);const u=["src"],m={class:"description"},h={key:0},g=["href"],b={key:1},w={key:2},k=["href"],v={key:3},L=["href"],S=(0,r.Lk)("span",{class:"icon"},null,-1);function y(i,t,o,e,n,l){return(0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(n.items,(i=>((0,r.uX)(),(0,r.CE)("div",{class:(0,d.C4)(["grid-item",i.portfolioSpecial?"special":""])},[(0,r.Lk)("img",{src:i.portfolioImg},null,8,u),(0,r.Lk)("div",m,[i.portfolioTitleLink?((0,r.uX)(),(0,r.CE)("h2",h,[(0,r.Lk)("a",{href:i.portfolioTitleLink,target:"_blank"},(0,d.v_)(i.portfolioTitle),9,g)])):((0,r.uX)(),(0,r.CE)("h2",b,(0,d.v_)(i.portfolioTitle),1)),i.portfolioSubtitleLink?((0,r.uX)(),(0,r.CE)("h3",w,[(0,r.Lk)("a",{href:i.portfolioSubtitleLink,target:"_blank"},(0,d.v_)(i.portfolioSubtitle),9,k)])):((0,r.uX)(),(0,r.CE)("h3",v,(0,d.v_)(i.portfolioSubtitle),1)),i.portfolioLink?((0,r.uX)(),(0,r.CE)("a",{key:4,href:i.portfolioLink,target:"_blank",class:"btn btn-demo"},[S,(0,r.eW)(" "+(0,d.v_)(i.portfolioLinkText),1)],8,L)):(0,r.Q3)("",!0),(0,r.Lk)("p",null,(0,d.v_)(i.portfolioDescription),1)])],2)))),256)}var T={name:"PortfolioItem",props:{portfolioImg:String,portfolioTitle:String,portfolioTitleLink:String,portfolioSubtitle:String,portfolioSubtitleLink:String,portfolioDescription:String,portfolioLink:String,portfolioLinkText:String,portfolioArticleLink:String,portfolioSpecial:Boolean},data(){return{items:[{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/commondesign.png",portfolioTitle:"Design system for suite of Humanitarian websites",portfolioTitleLink:"",portfolioSubtitle:"",portfolioSubtitleLink:"",portfolioDescription:"Drupal base theme and sub theme with single directory components, and Wordpress theme providing visual, UI and code consistency across a range of websites.",portfolioLink:"https://web.brand.unocha.org/demo",portfolioLinkText:"View demo",portfolioArticleLink:"",portfolioSpecial:1},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/unocha.png",portfolioTitle:"Drupal site builds for UNOCHA",portfolioSubtitle:"",portfolioDescription:"Drupal 9 and 10 site builds and upgrades for UNOCHA, Reliefweb and others. Theming from designs, project planning, documentation and training, testing, deployment, code reviews, maintenance, and ongoing feature development.",portfolioLink:"https://unocha.org",portfolioLinkText:"View website",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/audits.png",portfolioTitle:"Accessibility and Performance Advocacy",portfolioSubtitle:"",portfolioDescription:"Testing, data gathering, reporting and remediation. Data-driven performance and accessibility improvements.",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/whd2022.png",portfolioTitle:"Site build and theme for UNOCHA World Humanitarian Day 2022",portfolioSubtitle:"",portfolioDescription:"",portfolioLink:"https://2022.worldhumanitarianday.org",portfolioLinkText:"View website",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/itext.png",portfolioTitle:"Drupal site builds, frontend development, and ecommerce",portfolioSubtitle:"",portfolioDescription:"",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/game.png",portfolioTitle:"JiGS Interactive Game System",portfolioTitleLink:"https://github.com/Techbot/JiGS",portfolioSubtitle:"The Drupal MMORPG and Trading Game engine",portfolioSubtitleLink:"https://www.emc23.com/taxonomy/term/25",portfolioDescription:"The Eclectic Meme Conspiracy Online (EMC Online) is an online, persistent, 2d, tiled, RPG, multiplayer, virtual world. JiGS is an integrated gaming system (client and server) built for and in tandem with EMC Online.",portfolioLink:"https://www.eclecticmeme.com",portfolioLinkText:"View demo",portfolioSpecial:1},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/plates/consumer.gif",portfolioTitle:"PhaserJs Game Design and Development",portfolioSubtitle:"",portfolioDescription:"",portfolioLink:"http://techbot.github.io/projects",portfolioLinkText:"View games",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/umami-ember-homepage.png",portfolioTitle:"Umami Headless Drupal with Contenta CMS, EmberJs",portfolioSubtitle:"",portfolioDescription:"The task was to create the Umami Drupal OOTB designs using ContentaCMS as the data enpoint, in whatever consumer flavour takes your fancy. We chose EmberJs.",portfolioLink:"https://github.com/contentacms/contenta_ember",portfolioLinkText:"View repo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/feu-concept-speakers.png",portfolioTitle:"Web design ideas for Frontend United 2018",portfolioSubtitle:"",portfolioDescription:"Web design ideas delivered in HTML/CSS for implementation in Drupal 8 by other volunteers for Frontend United 2018 in Utrecht.",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/cmc-concepts.png",portfolioTitle:"Design process",portfolioSubtitle:"",portfolioDescription:"Lo-fi wireframes, navigation design, component style tile, high fidelity graphic page design, and Drupal 7 theme",portfolioLink:"http://cmc.ie/",portfolioLinkText:"View website",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/patternlab.png",portfolioTitle:"Design-in-the-browser",portfolioSubtitle:"",portfolioDescription:" Patternlab integration, Drupal 8 implementation for website redesign",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/living-styleguide.png",portfolioTitle:"Living Styleguide",portfolioSubtitle:"",portfolioDescription:"KSSnode styleguide and Drupal 8 OpenSocial integration",portfolioLink:"https://www.getopensocial.com/blog/open-source-technology/creating-living-style-guide-open-social",portfolioLinkText:"View blog",portfolioSpecial:0},{portfolioImg:"https://www.emc23.com/sites/default/files/images/techbot.io/hospital-wayfinder.png",portfolioTitle:"Design concepts",portfolioSubtitle:"",portfolioDescription:"High fidelity graphic mock ups for Hospital website tender, intended to be built in Drupal 7. Desktop and mobile homepage, and wayfinder app concept",portfolioLink:"",portfolioLinkText:"View demo",portfolioSpecial:0}]}}},D=o(1241);const C=(0,D.A)(T,[["render",y]]);var O=C,x={name:"App",components:{PortfolioItem:O},data(){return{}}};const I=(0,D.A)(x,[["render",f]]);var E=I;(0,e.Ef)(E).mount("#app")}},t={};function o(e){var r=t[e];if(void 0!==r)return r.exports;var n=t[e]={exports:{}};return i[e].call(n.exports,n,n.exports,o),n.exports}o.m=i,function(){var i=[];o.O=function(t,e,r,n){if(!e){var l=1/0;for(c=0;c=n)&&Object.keys(o.O).every((function(i){return o.O[i](e[s])}))?e.splice(s--,1):(a=!1,n0&&i[c-1][2]>n;c--)i[c]=i[c-1];i[c]=[e,r,n]}}(),function(){o.n=function(i){var t=i&&i.__esModule?function(){return i["default"]}:function(){return i};return o.d(t,{a:t}),t}}(),function(){o.d=function(i,t){for(var e in t)o.o(t,e)&&!o.o(i,e)&&Object.defineProperty(i,e,{enumerable:!0,get:t[e]})}}(),function(){o.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(i){if("object"===typeof window)return window}}()}(),function(){o.o=function(i,t){return Object.prototype.hasOwnProperty.call(i,t)}}(),function(){var i={524:0};o.O.j=function(t){return 0===i[t]};var t=function(t,e){var r,n,l=e[0],a=e[1],s=e[2],p=0;if(l.some((function(t){return 0!==i[t]}))){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);if(s)var c=s(o)}for(t&&t(e);p\n
\n
\n

Stocker Corcoran

\n Design & Development\n with Drupal and Javascript\n
\n
\n\n
\n

Our work

\n
\n \n
\n
\n\n
\n
\n

What we do

\n
    \n
  • Frontend and backend implementations, variety of server\n and client side architectures (PHP, Javascript, OOP, MVC) and Content\n Management Systems
  • \n
  • Component design and frontend design systems
  • \n
  • Accessibility and performance audits and remediation
  • \n
  • Test and behaviour-driven development
  • \n
  • Coordination between technical teams, design teams,\n stakeholders, as needed
  • \n
\n

What we contribute

\n
    \n
  • Project experience and proactive involvement in all steps\n from ideation to production and beyond
  • \n
  • Technical team leadership
  • \n
  • Technical project management
  • \n
  • Technical strategy and project planning
  • \n
  • Partake in, or help establish, proactive documentation and\n communication processes to foster effective remote teams
  • \n
\n

What we value

\n
    \n
  • Remote-first
  • \n
  • Accessibility and inclusivity
  • \n
  • Life, and all living beings and systems
  • \n
  • Testing and data-driven design approaches
  • \n
  • Community and mutual aid
  • \n
  • Transparency
  • \n
  • Documentation (did we say that already?!)
  • \n
  • DIY and life-long learning
  • \n
  • Artistic expression, play, and imagination
  • \n
\n
\n
\n\n
\n
\n

\n Download\n CV\n

\n
\n
\n\n
\n
\n \n
\n
\n\n \n\n\n\n\n\n\n","\n\n\n","import { render } from \"./PortfolioItem.vue?vue&type=template&id=4d80f967\"\nimport script from \"./PortfolioItem.vue?vue&type=script&lang=js\"\nexport * from \"./PortfolioItem.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./App.vue?vue&type=template&id=981fb942\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=981fb942&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\nimport App from './App.vue'\n\ncreateApp(App).mount('#app')\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkportfolio\"] = self[\"webpackChunkportfolio\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(5038); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_createElementVNode","class","id","_createStaticVNode","role","href","src","width","height","alt","_createElementBlock","_Fragment","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createVNode","_component_PortfolioItem","_hoisted_5","_hoisted_7","key","_renderList","$data","items","item","_normalizeClass","portfolioSpecial","portfolioImg","portfolioTitleLink","target","portfolioTitle","_toDisplayString","portfolioSubtitleLink","_hoisted_6","portfolioSubtitle","_hoisted_8","portfolioLink","_hoisted_10","_createTextVNode","portfolioLinkText","_hoisted_9","_createCommentVNode","portfolioDescription","name","props","String","portfolioArticleLink","Boolean","data","__exports__","components","PortfolioItem","render","createApp","App","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","this","Function","e","window","obj","prop","prototype","hasOwnProperty","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file