From c23f17f0ea9972ed803a91fd2030c52f1c675aab Mon Sep 17 00:00:00 2001 From: Cian Butler Date: Sun, 22 Jan 2017 22:09:47 +0000 Subject: [PATCH] Enhancement/template generator (#59) * add template generator * change events.json to config.json and make script more configurable --- 2015/events.json | 297 ------------------------------------------- 2015/index.html | 60 --------- 2016/events.json | 255 ------------------------------------- 2016/index.html | 62 --------- README.md | 21 ++-- bin/generate.js | 42 +++++++ config.json | 24 ++++ css/main.scss | 2 +- css/variables.scss | 2 +- events.json | 183 --------------------------- events/2014.json | 193 ++++++++++++++++++++++++++++ events/2015.json | 301 ++++++++++++++++++++++++++++++++++++++++++++ events/2016.json | 265 ++++++++++++++++++++++++++++++++++++++ events/2017.json | 175 ++++++++++++++++++++++++++ gulpfile.js | 50 ++++---- index.html | 75 ----------- js/main.js | 65 ++-------- package.json | 16 +-- schema.json | 231 +++++++++++++++++++++++++--------- template.handlebars | 74 +++++++++++ 20 files changed, 1310 insertions(+), 1083 deletions(-) delete mode 100644 2015/events.json delete mode 100644 2015/index.html delete mode 100644 2016/events.json delete mode 100644 2016/index.html create mode 100644 bin/generate.js create mode 100644 config.json delete mode 100644 events.json create mode 100644 events/2014.json create mode 100644 events/2015.json create mode 100644 events/2016.json create mode 100644 events/2017.json delete mode 100644 index.html create mode 100644 template.handlebars diff --git a/2015/events.json b/2015/events.json deleted file mode 100644 index cbde953..0000000 --- a/2015/events.json +++ /dev/null @@ -1,297 +0,0 @@ -[{ - "day": "Monday", - "description": "Amazon", - "events": [{ - "name": "Opening Event", - "by": "Richard Walsh, Jeff Caselden, Rory O'Connor", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "We will be opening #TechWeekDCU 2015 with an opening address from our Chairperson Richard Walsh, the General Manager of Amazon Data Services Ireland Ltd Jeff Caselden and the Head of the School of Computing in DCU Rory O' Connor. " - }, { - "name": "Cloud Watching with AWS CloudWatch", - "by": "John O'Shea - Amazon", - "time": "12:15", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Amazon CloudWatch is a monitoring service for AWS cloud resources and the applications you run on AWS. You can use Amazon CloudWatch to collect and track metrics, collect and monitor log files, and set alarms.You can use Amazon CloudWatch to gain system-wide visibility into resource utilization, application performance, and operational health. You can use these insights to react and keep your application running smoothly. We'll have some Amazon Engineers taking us through how it works, and the importance that monitoring plays in Amazon-Scale computing." - }, { - "name": "Talking Things: Internet of Things", - "by": "Ronan Guilfoyle - Amazon", - "time": "13:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Description to come." - }, { - "name": "Lunch", - "by": "Food", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Time for food to keep all the #TechWeekDCU enthusiasts going!" - }, { - "name": "Project Workshops with Amazon SDEs", - "by": "Amazon Engineers", - "time": "15:00", - "place": { - "id": "LG26", - "map": "DCU" - }, - "description": "Amazon will be bringing in some of their very own SDE's who will be offering help to 3rd & 4th year students with their 3rd Year Projects and 4th Year Projects respectively. Come along for advice on anything from, optimisation, cloud deployment, website architecture, version control, frameworks. This will be a great time to get advice from people who are actually working in industry, and hopefully maximise your marks as a result." - }, { - "name": "Managing the Pace of Innovation: Behind the Scenes at AWS", - "by": "Colin Whittaker - grimnar@redbrick - Amazon", - "time": "16:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "AWS launched in 2006, and since then we have released more than 1,000 services, features, and major announcements. Every year, AWS outpace the previous year in launches and are continuously accelerating the pace of innovation across the organization.\n Network Engineer at Amazon Dublin, long-time redbrick favourite, and holder of many patents Colin Whittaker returns again to share some Internet related knowledge. Colin has presented to redbrick many times over the years and is returning to share how teams in AWS are able to formulate customer-centric ideas, turn them into features and services, and get them to market quickly. This session dives deep into how an idea becomes a service at AWS and how we continue to evolve the service after release through innovation at every level. We will then walk through some real-world examples of how we applied these concepts to launch a new AWS service. Come learn about the rapid pace of innovation at AWS, and the culture that formulates magic behind the scenes." - }, { - "name": "Networking", - "by": "Redbrick & Amazon", - "time": "17:00", - "place": { - "id": "NuBar", - "map": "DCU" - }, - "description": "We'll be having a networking session where you'll get to chat to the amazon engineers and recruitment team about jobs, life at amazon and some of the cool projects they're working on." - }] -}, { - "day": "Tuesday", - "description": "RB & Intercom", - "events": [{ - "name": "The Anatomy of a 'Medium Data' Tech Company", - "by": "Charlie von Metzradt - Hosted Graphite -phaxx@redbrick", - "time": "13:30", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "No description available." - }, - - { - "name": "Admin Tales of Fail", - "by": "Rob Devereux, Lorcan Boyle, Richard Walsh : kylar, zergless, koffee @redbrick", - "time": "14:30", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "How Redbrick was broken, and everything that admins both past and present did to fix it." - }, { - "name": "Hacking Radio", - "by": "Conor Farrell - lithium@redbrick", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "We're all familiar with listening to music on our favourite radio station, but did you know you can grab radio signals from aircraft and make your own desktop radar system? Or that you can turn a Raspberry Pi into a transmitter with a little bit of code? Conor Farrell will demonstrate and explain some radio hacks to give you some cool ideas for your own projects." - }, { - "name": "How We Build Software at Intercom", - "by": "Gavin Joyce - Intercom", - "time": "16:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Shipping software is the heartbeat of Intercom. In this talk, we'll describe how our simple set of core values shape how we ship new Intercom features and how we continuously seek to raise our own engineering bar." - }, { - "name": "How We Built Our In-App Messenger", - "by": "Eoin Hennessy - Intercom", - "time": "16:30", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Intercom is used by thousands of web and mobile businesses to talk to their customers. One of the ways in which you can talk to your customers is via our in-app messenger. A few months ago we set about building the next version of our in-app messenger for the web. We’ll talk about the challenges we encountered while building a client-side Javascript application built to run inside thousands of our customers sites." - } - ] -}, { - "day": "Wednesday", - "description": "Openet & Symantec", - "events": [{ - "name": "Billion Dollar Botnets", - "by": "Cathal Mullaney - nemo@redbrick - Symantec", - "time": "13:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "One of the main motivations behind malware is revenue generation. Depending on the variant of the malware this can be accomplished in a number of different ways including sending spam emails, theft of personal information and extortion. When this type of malware is coupled with a distributed network of infected devices the revenue accumulated can quickly add up to millions of dollars. In this presentation we examine a piece of malware designed exclusively for mobile phones that formed part of a Billion Dollar, Mobile, Botnet." - }, - - { - "name": "Cybercrime, espionage and sabotage:A look at the threat landscape for 2014", - "by": "Alan Neville - anev@redbrick - Symantec", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Malware continuies to menace computer networks around the world - from home users to enterprise. As cybercrimninals and nation states behind these attacks use mixed approaches and advanced malware to routinely by-pass traditional security defenses, security experts need to look ahead and attempt to predict the evolution of threats to better protect their customers. We take a look over the past year and highlight the trends in attacks and assoicated malware used in sabotage." - }, { - "name": "IRC Bots - Useful Utilities, Entertainment, and Insults!", - "by": "Craig Gavagan Mac Entee - creadak@redbrick", - "time": "14:30", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": " Internet Relay Chat is a nice way to communicate with other Redbrick members, but did you know there are also programs to provide Dublin bus info, play card games, and even get a randomised insult for laughs, all from your IRC client? Craig will take us through some live examples of these bots and hopefully kickstart some ideas for new ones." - }, { - "name": "Openet", - "by": "Openet", - "time": "15:30", - "place": { - "id": "L101", - "map": "DCU" - }, - "description": "Openet are Irelands largest indigenous software company. They provide software to telecommunications service providers to commercialize and analyze activity on their networks." - }, { - "name": "Coding Competition", - "by": "Openet", - "time": "16:00", - "place": { - "id": "L101", - "map": "DCU" - }, - "description": "Open to all registered students of DCU. Openet will be running their annual coding competition. With cash prizes as well as the opportunity to prove yourself to a company that hire a lot of DCU graduates, this competition is not one to be missed. Not only will there be prizes for 1st place and runners up, there will be some other ones in there too. It's all about partiipation. Prove your skills http://openetcash4code.com/ ." - }, { - "name": "Networking & Food", - "by": "Redbrick & Openet", - "time": "17:30", - "place": { - "id": "NuBar", - "map": "DCU" - }, - "description": "Lets go to the NuBar for some food and networking with the guys from Openet." - }, { - "name": "Prizegiving", - "by": "Openet", - "time": "18:30", - "place": { - "id": "NuBar", - "map": "DCU" - }, - "description": "Openet will be presenting us with their prizes for the competition." - } - ] -}, { - "day": "Thursday", - "description": "Google", - "events": [{ - "name": "Building Reliable Large-Scale Distributed Systems", - "by": "Laura Nolan - Google", - "time": "13:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Exactly what it says on the tin. Google opperates at a massive scale and this brings with it some interesting and difficult challenges. Come listen to some engineers from Google walk us through as How-To of sorts on building Systems that operate at Google-Scale. " - }, { - "name": "Lunch", - "by": "Food", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Time again for some food to keep all the #TechWeekDCU enthusiasts going!" - }, { - "name": "Internet of Things", - "by": "Tommie Gannert - Google", - "time": "14:30", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Details to follow.." - }, { - "name": "Linear Algebra", - "by": "Magnus Deininger - Google", - "time": "15:30", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Linear Algebra is at the heart of everything that we do in computing. Come and hear a unique take on this subject from some Google Engineers who push it to the limit on a daily basis in order to make the worlds information universally accessible." - }, { - "name": "Expecting the Unexpected", - "by": "Gareth Eason - Google", - "time": "16:30", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "One of our most anticipated talks of #TechWeekDCU 2015. Engineers from Google will be talking to us about their culture of expecting the unexpected. They'll be speaking about DiRT (Disater Recovery Training), a mix of roleplay and systems/network operations and design/infrastructure testing in a contriolled environment, which enables them to respond fast in the face of unexpected problems at scale." - }, { - "name": "Close Networking Session", - "by": "Redbrick & Google", - "time": "17:30", - "place": { - "id": "NuBar", - "map": "DCU" - }, - "description": "We'll have a networking session where you'll get to talk to the guys from Google about anything and everything that their NDA's will allow." - }] -}, { - "day": "Friday", - "description": "AOL", - "events": [{ - "name": "The Architecture of Online Ad Delivery", - "by": "Ken Wilson - AOL", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Ad Delivery technology provides software to web sites and advertisers to serve ads, count them, choose the ads that will make the website or advertiser most money, and monitor progress of different advertising campaigns or Real-time auctions. " - }, { - "name": "Introduction to Erlang in the context of a Real Time Advertising Auction", - "by": "Philip Clarke - AOL", - "time": "13:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Live coding to show the basics of recursing, pattern matching, message passing and concurrency in Erlang. Demonstrate a how to write an advertising exchange where a seller (SSP) and a buyer (DSP) interact via an auction. We can then spawn multiple exchanges which talk to multiple DSPs and show many thousands of these auctions running concurrently." - }, { - "name": "Introduction to Microserver - Aol's new open source project that makes creating Rest webservices in Java easy and fun! ", - "by": "John McClean - AOL", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "Introduction to Microserver - Aol's new open source project that makes creating Rest webservices in Java easy and fun! " - }, { - "name": "Clean Code - Join the Revolution!", - "by": "Michael Pierce - AOL", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "What is Clean Code? An introduction to coding practices at AOL. For a programmer, writing clean code is a must to ensure that it is maintainable, easy to follow and you can understand its intent. " - }, { - "name": "Continuous Integration/Continuous Deployment (CI/CD)", - "by": "Jose Martinez - AOL", - "time": "16:00", - "place": { - "id": "The Mezz", - "map": "DCU" - }, - "description": "From your command line to production environment just hitting a key. How can this be achieved? A brief introduction to CI/CD, some tools and an example on how this could be done promoting your package from one environment to the other until it reaches production. Tools: git, maven, Jenkins and shell script." - }] -}] diff --git a/2015/index.html b/2015/index.html deleted file mode 100644 index 813ac2c..0000000 --- a/2015/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - TechWeek 2015 | Dublin City University - - - - - - - -
-
-
-

TechWeek

-

Dublin City University 9th - 13th March 2015

- -
-
-
- -
-
-
- -
-
    -
    -
    - - - - diff --git a/2016/events.json b/2016/events.json deleted file mode 100644 index b9a69ef..0000000 --- a/2016/events.json +++ /dev/null @@ -1,255 +0,0 @@ -[{ - "day": "Monday", - "description": "Associates", - "events": [{ - "name": "Opening Event", - "by": "Redbrick DCU's Computer Networking Society", - "time": "13:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Opening of TechWeek 2016" - }, { - "name": "Lunch", - "by": "Somewhere in DCU", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Lunch Time!" - }, { - "name": "Competitive Programming = Money", - "by": "Cian Ruane & Noah Donnelly", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Where do you picture yourself in 5 years? How’s your relationship with your parents? Do you feel a longing for meaning and direction in your life? In this talk Cian Ruane and Noah Donnelly will introduce you to the world of competitive programming." - }, { - "name": "Fergus O'Dea (NDRC)", - "by": "Fergus O'Dea", - "time": "16:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "A session on what's involved in a tech startup raising an initial round of funding given by Fergus O'Dea from NDRC (National Digital Research Centre), a leading investor in early-stage digital startups." - }, { - "name": "OpenStack - an Intro", - "by": "Graham Hayes - Openstack Designate Project Team Leader", - "time": "17:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "An over of what OpenStack is, and how you can use it, I will cover the main projects available in OpenStack, what they do, and how they link together. I will also cover how you can get involved. https://graham.hayes.ie" - }] -}, { - "day": "Tuesday", - "description": "Associates", - "events": [{ - "name": "Citrix Workspace Cloud", - "by": "Nicholas Connolly - Citrix", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Citrix Workspace Cloud (CWC) is a serviced-based product to deliver workspaces. Citrix describes this as “a cloud-based control plane that enables partners and customers to unify, secure and deliver workspace services" - }, { - "name": "Prometheus: A Next Generation Monitoring System", - "by": "Brian Brazil - Robust Perception", - "time": "13:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Prometheus is a scalable, reliabile, easy to use and powerful monitoring system. This talk will look at the ideas behind it and how you can take advantage of them. Since publicly launching the open source project, over a year ago, over 100 companies have now rely on it and to date there are over 250 contributers to the codebase." - }, { - "name": "Lunch", - "by": "Somewhere in DCU", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Lunch Time!" - }, { - "name": "Hackers in the Movies", - "by": "Damian Gordoni - DIT Universal Design RG", - "time": "17:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Damian's talk will look at the portrayal of computer hackers in the movies, how they are represented in terms of the age, gender, profession, etc. and how this portrayal has evolved over the decades, and it will also will look at the depiction of the types of things hackers can do in the movies as opposed to real life" - }] -}, { - "day": "Wednesday", - "description": "HEAnet", - "events": [{ - "name": "Admins, Tales of Progress - With live demo", - "by": "Terry Bolt & Cian Butler", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Progress has been made to Redbrick 2.0 but how will it work. Terry and Cian have a live demo to show you how." - }, { - "name": "MiRo Advisory", - "by": "Ben A crawford", - "time": "13:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "WhiteHack: Smart Meter Security in 56 million homes" - }, { - "name": "Lunch", - "by": "Somewhere in DCU", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Lunch" - }, { - "name": "Imprecise Network Monitoring Tools", - "by": "Brian Nisbet - HEAnet (Network Operations Manager)", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Any problem can have multiple causes and a vital part of troubleshooting is to gather as much data as possible. However not all problems (or solutions) are evident from deployed monitoring tools. Substantial data can be gleaned from social networking sites such as Twitter and Facebook and crowdsourcing your info can really help when local contacts can't be reached. This talk is liberally dosed with caveats and searching Instagram for pictures of dug up fibre should never be used in preference to well configured network monitoring tools! " - }, { - "name": "Intro To GoLang", - "by": "Voy", - "time": "16:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "GO" - }, { - "name": "Working Together: Le and Private Sector Botnet Takedowns", - "by": "Alan Neville (anev) - Symantec, Threat Intelligence Analyst", - "time": "17:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Computer criminals regularly construct large distributed attack networks known as botnets.These networks are comprised of hijacked computers that an attacker can use to send spam, commit financial fraud or launch cyber - attacks.This talk aims to describe the approaches of botnet takedowns from the perspective of law enforcement agencies and the AV industry using examples from recent take - downs and discusses success stories when private and public sect Anev will go through case study of take down effort for zeroaccess botnet which was done by symantec and give an example of the gameoverzeus botnet takedown we conducted in conjunction with the FBI and the UK cyber crime unit and show the difference it made working with LE." - }] -}, { - "day": "Thursday", - "description": "Google", - "events": [{ - "name": "The Challenges of Machine Learning at Scale", - "by": "Graham Poulter", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Aoife wants to predict how likely you are to click on an ad, to help Google decide whether to show it. With the machine learning mathematics all done, shouldn't it be easy: just train the model and make predictions? Not so fast. We'll see how Aoife overcomes the obstacles that stand between her machine learning model and the world. For starters: she has to train it on petabytes of data, continually arriving, and have it serve millions of predictions a second. Graham Poulter is a Site Reliability Engineer on Google's machine learning pipelines for ads, having moved here from South Africa three years ago. He's done some machine learning before, but was amazed to see that scaling up machine learning is a whole lot harder than one might imagine." - }, { - "name": "Designing Large Scale Distributed Systems", - "by": "Remigiusz Modrzejewski", - "time": "12:40", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "This talk will cover some very high-level principles for distributed system design." - }, { - "name": "An evolution of Automation", - "by": "John Looney", - "time": "13:20", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": " In software engineering, it is rare for the final version of a solution to be decided before implementation starts.Everything changes;engineers, experience, problems faced, and lessons learned from failure.This talk will explore why it 's important to try many different avenues, to fully understand the problem space, before being sure that a solution is optimal." - }, { - "name": "Lunch", - "by": "Somewhere in DCU", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Eat" - }, { - "name": "Expecting the Unexpected", - "by": "Ryan Thomas", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Things break - all the time. At Google scale we're statistically certain that at any given time, somewhere, something is broken. We still have deliver a great service to users. By deliberately breaking things in a controlled fashion, Google's Disaster Readiness Testing is one of the methods we use to objectively test our ability to handle failure." - }, { - "name": "10 Practical Tips for Writing an Attention-Getting CV \n Interviewing at Google", - "by": "Rebecca O'Farrell/Anam Acktar, Ryan Thomas and Graham Poulter", - "time": "15:40", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Learn tips from members of Google's recruiting team about how to put together a memorable CV. Two of our Site Reliability Engineers will also do a demo coding interview and will provide tips on how to approach the process." - }, { - "name": "Google Intern Panel", - "by": "Google", - "time": "16:20", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Hear from past and future Google interns currently studying at DCU about their experiences in this panel discussion." - }] -}, { - "day": "Friday", - "description": "Irish Tech Community & HubSpot", - "events": [{ - "name": " 'N' things we learned about deploying cloud applications", - "by": "Tony Ayres - Senior Architect@DCU", - "time": "12:00pm", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "The trials and tribulations of building and deploying software on a cloud platform(AWS).A discussion of the silly, simple mistakes that cause you to have to work the weekend...and how to avoid them." - }, { - "name": "Distributed Computing at Scale", - "by": "Anton Whalley - Solutions Architect - Strongloop@IBM \n Aman Kohli - Lead Mobile Architect@Citi", - "time": "1:00pm", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Distributed Computing on a Massive Scale: \n Living with Decentralization, P2P and the new Web. In this talk we discuss the forces pulling towards a new web, moving from overly centralised infrastructures to scalable decentralisation and distribution." - }, { - "name": "How to Build a Web App in ReactJS", - "by": "Cian McMahon & Rob Campion - Hubspot", - "time": "2:00pm", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "You’ll get an intro to what React is, how to get started with it, and also learn about React Router and Redux" - }, { - "name": "Lunch & Networking", - "by": "Somewhere in DCU", - "time": "3:00pm", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Somewhere in DCU" - }] -}] diff --git a/2016/index.html b/2016/index.html deleted file mode 100644 index 281a871..0000000 --- a/2016/index.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - TechWeek 2016 | Dublin City University - - - - - - - -
    -
    -
    -

    TechWeek

    -

    Dublin City University 15th - 19th Febuary 2015

    - -
    -
    -
    - -
    -
    -
    - -
    -
      -
      -
      - - - - diff --git a/README.md b/README.md index dd1071c..74be4e2 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,37 @@ -# TechWeek Website [![Build Status](https://travis-ci.org/redbrick/techweek.dcu.ie.svg?branch=master)](https://travis-ci.org/redbrick/techweek.dcu.ie) +# TechWeek Website [![CircleCI](https://circleci.com/gh/redbrick/techweek.dcu.ie/tree/master.svg?style=svg)](https://circleci.com/gh/redbrick/techweek.dcu.ie/tree/master) This repository contains the Techweek website The website was written to have the Google Material Design look and feel. MaterializeCSS was used to speed up the process. ## Deployment -To deploy to a server just run from the parent of of the folder you want to deploy too. -_ example writen assuming folder deployed is techweek_ +To deploy to a server just run from the parent of of the folder you want to deploy too. +_example writen assuming folder deployed is techweek/dist_ ``` git clone https://github.com/redbrick/techweek.dcu.ie.git techweek cd techweek npm install -gulp + ``` ## How it works -The events.json contains a JSON object containing all events (duh). The schema was just made up on the spot and seemed most appropiate. `js/main.js` is it main JavaScript file that is responsible for loading the content. -It uses jQuery (because I don't like XHR) to load the events from the JSON. It then gets populated to appropriate tables. +The events.json contains a JSON object containing all events pages. +All the pages themselves are stored in events folder. Each page is a json file with all the details about that years talks. +The Json is used to fill a mustache template since all the pages are the same format and layout and output to dist. The page called Home in the `events.json` will be set as the main page. + -The `main.js` file is also responsible for displaying the countdown and loading the video feed. Also, it changes colour of the header and individual days, depending on the amount of times you have visited the page. +The `main.js` file is responsible for displaying the countdown and loading the video feed. Also, it changes colour of the header and individual days, depending on the amount of times you have visited the page. It also handles the #Day so a specific day can be linked to. +Gulp concats this with materilize and minifies it to `dist/js` --- ## Development ### Local Development -* When running the files locally, run it using a web server or you will have problems with Same-origin policy. +* When running the files locally, run it using a web server or you will have problems with Same-origin policy. _no longer true as site is regenerated_ A simple solution is to run `gulp dev` which will compile the less, watch it and start a webserver at techweek.dev:8000 ### CSS All the css is compiled from less in the less directory. Run `gulp dev` to have gulp watch the less directory and compile all the less in to `dist/css`. -Run `gulp` to compile the less to css in `dist/css` +Run `gulp` to compile the sass to css in `dist/css` diff --git a/bin/generate.js b/bin/generate.js new file mode 100644 index 0000000..c5fb884 --- /dev/null +++ b/bin/generate.js @@ -0,0 +1,42 @@ +const Handlebars = require('handlebars'); +const fs = require('fs'); +const path = require('path'); +const config = require(__dirname + '/../config.json'); +const template = fs.readFileSync(__dirname + '/../template.handlebars', "utf-8"); + +let pages = path.join(__dirname, '..', 'pages'); +if(config.folder) { + pages = path.join(__dirname, '..', config.folder); +} + +let outputDir = path.join(__dirname, '..', 'dist') +if (config.output) { + outputDir = path.join(__dirname, '..', config.output); +} + +function render (template, page, url) { + let output = (Handlebars.compile(template))(page); + if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir); } + let dir = outputDir + if (url) { + dir = path.join(dir, url); + if (!fs.existsSync(dir)){ + fs.mkdirSync(dir); + } + } + fs.writeFile(path.join(dir, 'index.html'), output, 'utf8', (err) => { if (err) throw err; }); +} + +Handlebars.registerHelper('splitTitle', function(title) { + let middle = Math.floor(title.length / 2); + let s1 = title.substr(0, middle); + let s2 = title.substr(middle); + return s1 + "" + s2; +}); + +for (let page of config.pages) { + let json = require(path.join(pages, page.file)); + json.pages = config.pages; + json.title = config.title; + render(template, json, page.url); +} diff --git a/config.json b/config.json new file mode 100644 index 0000000..1afe98a --- /dev/null +++ b/config.json @@ -0,0 +1,24 @@ +{ + "title": "TechWeek", + "folder": "events", + "output": "dist", + "pages": [ + { + "title": "Home", + "file": "2017.json", + "url": "" + }, { + "title": "2016", + "file": "2016.json", + "url": "2016" + }, { + "title": "2015", + "file": "2015.json", + "url": "2015" + }, { + "title": "2014", + "file": "2014.json", + "url": "2014" + } + ] +} diff --git a/css/main.scss b/css/main.scss index c155497..f95d320 100644 --- a/css/main.scss +++ b/css/main.scss @@ -135,7 +135,7 @@ ul { .livestream { display: none; - width: 100%; + width: 80%; } .playlist { diff --git a/css/variables.scss b/css/variables.scss index f89e8c2..f2957f2 100644 --- a/css/variables.scss +++ b/css/variables.scss @@ -26,4 +26,4 @@ $event-time-margin: 0 1em 0 0; $ul-margin: 0 0 2vh 0; $popout-element-margin: 0 16px; $popout-element-margin-active: 0 8px; -$collapsible-body-border: 1px solid $color-lightish-grey; \ No newline at end of file +$collapsible-body-border: 1px solid $color-lightish-grey; diff --git a/events.json b/events.json deleted file mode 100644 index 26c7f64..0000000 --- a/events.json +++ /dev/null @@ -1,183 +0,0 @@ -[{ - "day": "Monday", - "description": "Data", - "events": [{ - "name": "Opening Event", - "by": "Redbrick DCU's Computer Networking Society", - "time": "11:45", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Opening of TechWeek 2016, October edition" - },{ - "name": "TBA", - "by": "TBA", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - }, { - "name": "Lunch", - "by": "Food", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Lunch Time!" - },{ - "name": "TBA", - "by": "TBA", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - }] -}, { - "day": "Tuesday", - "description": "Mobile Development", - "events": [{ - "name": "TBA", - "by": "TBA", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - }, { - "name": "Lunch", - "by": "Food", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Lunch Time!" - },{ - "name": "TBA", - "by": "TBA", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - }] -}, { - "day": "Wednesday", - "description": "Networks and IoT", - "events": [{ - "name": "TBA", - "by": "TBA", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - }, { - "name": "Lunch", - "by": "Food", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Lunch Time!" - },{ - "name": "TBA", - "by": "TBA", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - },{ - "name":"Practical concerns when building (μ)Services", - "by": "CircleCI", - "time":"17:30", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Conor McDermottroe talks about what you should really worry about when building and deploying Services." - }] -}, { - "day": "Thursday", - "description": "STEM", - "events": [{ - "name": "TBA", - "by": "TBA", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - }, { - "name": "Lunch", - "by": "Food", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Lunch Time!" - },{ - "name": "TBA", - "by": "TBA", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - }] -}, { - "day": "Friday", - "description": "Lightning Talks", - "events": [{ - "name": "TBA", - "by": "TBA", - "time": "12:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - }, { - "name": "Lunch", - "by": "Food", - "time": "14:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "Lunch Time!" - }, { - "name": "Self Hosted IFTTT", - "by": "creadak - Craig Gavagan Mac Entee", - "time": "15:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "IFTTT. If This Then That. Five simple little words that help you automate your web applications. NodeRED is basically IFTTT. But on steroids. Craig'll show you how to wire some boxes together to do cool things" - },{ - "name": "TBA", - "by": "TBA", - "time": "16:00", - "place": { - "id": "The Mezz", - "map": "Somewhere in DCU" - }, - "description": "TBA" - }] -}] diff --git a/events/2014.json b/events/2014.json new file mode 100644 index 0000000..ee4e050 --- /dev/null +++ b/events/2014.json @@ -0,0 +1,193 @@ +{ + "location": "Dublin City University", + "start": 3, + "end": 7, + "month": "March", + "year": 2014, + "live": "2014-03-03T12:00:00", + "archive": "true", + "video": "https://www.youtube.com/embed/4pHZQyMXdCk", + "days": [{ + "day": "Monday", + "description": "Design", + "events": [{ + "name": "Tech Week: Activate", + "by": "Redbrick DCU's Computer Networking Society", + "time": "12:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Get ready to have your circuits fried as we press the GO button! Launching the DCU Tech week into your minds, networks and hearts. This week is a celebration of all thing Technology and we have lots of inspirational events lined up for you tech addicts! #TechWeekDCU" + }, { + "name": "3D Modelling - Blender for Beginners", + "by": "Dave Larkan", + "time": "15:00", + "place": { + "id": "LG26", + "map": "Somewhere in DCU" + }, + "description": "Dave Larkan is a previous chairperson of redbrick and is a very talented individual, he has run some very successful workshops on similar topics before. This will be an introductory workshop to the fantastic free and open source 3D modelling tool that is Blender. You will be amazed at how quickly you can learn to build graphical 3D objects under Dave's guidance. This workshop/lab normally fills up quite quickly, bring a laptop with blender installed just to be sure you can take part. This is open to all and requires no previous knowledge of blender or 3D Modelling!" + }, { + "name": "Web Development 101", + "by": "Max Hoffman", + "time": "17:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Max Hoffman is a wise and greatly experienced web developer with a keen eye for smart design. He will be taking us through the ins and outs of web design, focusing on techniques and tricks that help your site stand out above the rest. This is a very useful talk for those new to web design or development or even those familiar with it but looking for helpful tips from an expert." + }] + }, { + "day": "Tuesday", + "description": "Mobile and ARM", + "events": [{ + "name": "Intro to Mobile Development (iOS and Android)", + "by": "Dan Malone and Robert Lis", + "time": "13:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Dan Malone and Robert Lis are two extremely smart and talented Software developers. They are also 4th year CA students. They will be taking us through the very basics of mobile development on different platforms, comparing the two and possibly arguing about which is the better platform. Could you make the next flappy bird?" + }, { + "name": "Awesome Raspberry Pi Projects", + "by": "Everyone", + "time": "15:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "We have some Awesome, smart and resourceful people lined up to show off Raspberry pi projects they have worked on. Ranging from Industrial monitoring equipment to Car dashboard hacking. You are guaranteed to see something inspirational or interesting here. If you have a cool project of your own, bring it along! This is an opportunity to show it to the world." + }, { + "name": "Screening", + "by": "Movies", + "time": "17:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "If you haven't already seen We are Legion: How hackers changed the world you are in for a treat. Plenty of treats/pizzas to go along with this documentary movie! Don't forget your Guy Fawkes masks :)" + }] + }, { + "day": "Wednesday", + "description": "OpenNet", + "events": [{ + "name": "Virtulisation", + "by": "OpenNet", + "time": "14:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Director of Engineering at Openet Niall O'Connell comes in to talk about Virtualisation answering questions such as \"Why you would want to virtualise network systems in the first place?\", \"What advantages you can expect from doing that?\". With the role virtualisation plays in the modern computing industry, this talk is a must for any student of computing or engineering. This talk is the first of a series that Openet are providing DCU in the coming weeks." + }, { + "name": "Coding Competition", + "by": "OpenNet", + "time": "15:00", + "place": { + "id": "L101", + "map": "Somewhere in DCU" + }, + "description": "Last year's Openet Coding Competition saw five of the sixteen competitors receiving job offers following the event. This time around, Openet are offering a cash prize of €1,000 for the winner, and €500 for the runners up. This event is a must for anyone looking into a career in computing. You can find more information and sign up here." + }, { + "name": "Coding Competition Results", + "by": "OpenNet", + "time": "17:00", + "place": { + "id": "NuBar", + "map": "Somewhere in DCU" + }, + "description": "Openet are offering free drinks and food in NuBar after the competition to all taking part. Joe Hogan, founder of Openet and graduate of DCU will be there to announce the winners of the competition." + }] + }, { + "day": "Thursday", + "description": "Amazon", + "events": [{ + "name": "Hazelcast: An Open Source In-memory Data Grid for Java", + "by": "Adrian", + "time": "14:00", + "place": { + "id": "The Old bar", + "map": "Somewhere in DCU" + }, + "description": "The speaker: Adrian is a Technical Architect and has worked for Acenture for over 11 years. He has a degree in Computer Engineering from TCD. This promises to be a highly interesting technical talk on cutting edge industry technology implemented by Accenture on client sites. " + }, { + "name": "Building AWS Cloudfront", + "by": "AWS", + "time": "15:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "The epic tale of how one young software engineer from Wicklow and another not-quite-so-young systems engineer from Wicklow ended up building the request routing system for the AWS content delivery network, Amazon Cloudfront." + }, { + "name": "Test Driven Development", + "by": "AWS", + "time": "16:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Amazon talks to us about Test Driven Development, a highly sought after skill in graduates seeking a career in the field of software engineering. These are the techniques employed to guarantee you create higher quality software and code." + }, { + "name": "How does your broadband actually work?", + "by": "Colin Whittaker", + "time": "17:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Redbrick Associate Colin Whittaker joins us again this year after his excellent talk last year: \"How the Internet Works\". What really happens to your packets once they leave your house? In this \"choose your own adventure\" style talk we will investigate how ISP access networks are really built! This is sure to be an interesting and informative discussion, regardless of your experience in computing." + }, { + "name": "Meet with Amazon Engineers and Recruitment", + "by": "AWS", + "time": "18:00", + "place": { + "id": "The NuBar", + "map": "Somewhere in DCU" + }, + "description": "To round off the day, some of Amazon's engineers will be over in in NuBar after the talks. This is a great opportunity to rub-shoulders with some industry professionals. Bring your CVs, they're hiring!" + }] + }, { + "day": "Friday", + "description": "Security", + "events": [{ + "name": "Web Security Attactics", + "by": "Ciaran McNally", + "time": "14:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Ciaran McNally is a current Redbrick Administrator, he has uncovered security bugs in products such as Moodle and to companies such as Yahoo. This talk will take you through the basics of common web security attacks, how they occur, how to exploit them, the risks, dangers and why you should be aware of them. All with real-world \"grey-hat\" examples. This is an introductory talk, essential for web developers or anyone interested in how websites get attacked and compromised." + }, { + "name": "Log analysis & Intrusion Detection", + "by": "Richard Dalton", + "time": "14:30", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Richard Dalton is a talented security consultant with Rits security group. He will be taking us through some defensive security measures you could employ to prevent or alert yourself of intrusions or hack attempts.These are essential skills in protecting yourself or your digital assets. This talk is very useful for system administrators, developers and web site owners." + }, { + "name": "Challenges in malware reverse engineering", + "by": "Andrea Lelli", + "time": "15:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Andrea Lelli is a Senior Reverse engineer and Malware expert working with Symantec. This talk will explain how computer threats are analyzed, The challenges that are faced, what the folk in Symantec do on a daily basis. These topics will all be explained using some recent examples. This talk is amateur friendly, it's an introductory talk about reverse engineering." + }, { + "name": "E-Crime, Cyber Espionage and War", + "by": "Alan Neville", + "time": "16:00", + "place": { + "id": "The Old Bar", + "map": "Somewhere in DCU" + }, + "description": "Alan Neville is also a Senior Reverse Engineer and Malware expert working in Symantec. This talk will follow up on Andrea's with a higher level view of where reverse engineering fits into a malware attack response team. This will use real world case studies, Providing expert insight into threat analysis and some of the massive cyber attacks we would never otherwise hear about." + }] + }] +} diff --git a/events/2015.json b/events/2015.json new file mode 100644 index 0000000..2f00246 --- /dev/null +++ b/events/2015.json @@ -0,0 +1,301 @@ +{ + "location": "Dublin City University", + "start": 9, + "end": 13, + "month": "March", + "year": 2015, + "live": "2015-03-09T12:00:00", + "archive": "true", + "video": "https://www.youtube.com/embed/videoseries?list=PLPaLJSHTDMFgYNnnEOjuvdm6WqOFTSQ9z", + "days": [{ + "day": "Monday", + "description": "Amazon", + "events": [{ + "name": "Opening Event", + "by": "Richard Walsh, Jeff Caselden, Rory O'Connor", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "We will be opening #TechWeekDCU 2015 with an opening address from our Chairperson Richard Walsh, the General Manager of Amazon Data Services Ireland Ltd Jeff Caselden and the Head of the School of Computing in DCU Rory O' Connor. " + }, { + "name": "Cloud Watching with AWS CloudWatch", + "by": "John O'Shea - Amazon", + "time": "12:15", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Amazon CloudWatch is a monitoring service for AWS cloud resources and the applications you run on AWS. You can use Amazon CloudWatch to collect and track metrics, collect and monitor log files, and set alarms.You can use Amazon CloudWatch to gain system-wide visibility into resource utilization, application performance, and operational health. You can use these insights to react and keep your application running smoothly. We'll have some Amazon Engineers taking us through how it works, and the importance that monitoring plays in Amazon-Scale computing." + }, { + "name": "Talking Things: Internet of Things", + "by": "Ronan Guilfoyle - Amazon", + "time": "13:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Description to come." + }, { + "name": "Lunch", + "by": "Food", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Time for food to keep all the #TechWeekDCU enthusiasts going!" + }, { + "name": "Project Workshops with Amazon SDEs", + "by": "Amazon Engineers", + "time": "15:00", + "place": { + "id": "LG26", + "map": "DCU" + }, + "description": "Amazon will be bringing in some of their very own SDE's who will be offering help to 3rd & 4th year students with their 3rd Year Projects and 4th Year Projects respectively. Come along for advice on anything from, optimisation, cloud deployment, website architecture, version control, frameworks. This will be a great time to get advice from people who are actually working in industry, and hopefully maximise your marks as a result." + }, { + "name": "Managing the Pace of Innovation: Behind the Scenes at AWS", + "by": "Colin Whittaker - grimnar@redbrick - Amazon", + "time": "16:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "AWS launched in 2006, and since then we have released more than 1,000 services, features, and major announcements. Every year, AWS outpace the previous year in launches and are continuously accelerating the pace of innovation across the organization.\n Network Engineer at Amazon Dublin, long-time redbrick favourite, and holder of many patents Colin Whittaker returns again to share some Internet related knowledge. Colin has presented to redbrick many times over the years and is returning to share how teams in AWS are able to formulate customer-centric ideas, turn them into features and services, and get them to market quickly. This session dives deep into how an idea becomes a service at AWS and how we continue to evolve the service after release through innovation at every level. We will then walk through some real-world examples of how we applied these concepts to launch a new AWS service. Come learn about the rapid pace of innovation at AWS, and the culture that formulates magic behind the scenes." + }, { + "name": "Networking", + "by": "Redbrick & Amazon", + "time": "17:00", + "place": { + "id": "NuBar", + "map": "DCU" + }, + "description": "We'll be having a networking session where you'll get to chat to the amazon engineers and recruitment team about jobs, life at amazon and some of the cool projects they're working on." + }] + }, { + "day": "Tuesday", + "description": "RB & Intercom", + "events": [{ + "name": "The Anatomy of a 'Medium Data' Tech Company", + "by": "Charlie von Metzradt - Hosted Graphite -phaxx@redbrick", + "time": "13:30", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "No description available." + }, { + "name": "Admin Tales of Fail", + "by": "Rob Devereux, Lorcan Boyle, Richard Walsh : kylar, zergless, koffee @redbrick", + "time": "14:30", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "How Redbrick was broken, and everything that admins both past and present did to fix it." + }, { + "name": "Hacking Radio", + "by": "Conor Farrell - lithium@redbrick", + "time": "15:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "We're all familiar with listening to music on our favourite radio station, but did you know you can grab radio signals from aircraft and make your own desktop radar system? Or that you can turn a Raspberry Pi into a transmitter with a little bit of code? Conor Farrell will demonstrate and explain some radio hacks to give you some cool ideas for your own projects." + }, { + "name": "How We Build Software at Intercom", + "by": "Gavin Joyce - Intercom", + "time": "16:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Shipping software is the heartbeat of Intercom. In this talk, we'll describe how our simple set of core values shape how we ship new Intercom features and how we continuously seek to raise our own engineering bar." + }, { + "name": "How We Built Our In-App Messenger", + "by": "Eoin Hennessy - Intercom", + "time": "16:30", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Intercom is used by thousands of web and mobile businesses to talk to their customers. One of the ways in which you can talk to your customers is via our in-app messenger. A few months ago we set about building the next version of our in-app messenger for the web. We\u2019ll talk about the challenges we encountered while building a client-side Javascript application built to run inside thousands of our customers sites." + }] + }, { + "day": "Wednesday", + "description": "Openet & Symantec", + "events": [{ + "name": "Billion Dollar Botnets", + "by": "Cathal Mullaney - nemo@redbrick - Symantec", + "time": "13:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "One of the main motivations behind malware is revenue generation. Depending on the variant of the malware this can be accomplished in a number of different ways including sending spam emails, theft of personal information and extortion. When this type of malware is coupled with a distributed network of infected devices the revenue accumulated can quickly add up to millions of dollars. In this presentation we examine a piece of malware designed exclusively for mobile phones that formed part of a Billion Dollar, Mobile, Botnet." + }, { + "name": "Cybercrime, espionage and sabotage:A look at the threat landscape for 2014", + "by": "Alan Neville - anev@redbrick - Symantec", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Malware continuies to menace computer networks around the world - from home users to enterprise. As cybercrimninals and nation states behind these attacks use mixed approaches and advanced malware to routinely by-pass traditional security defenses, security experts need to look ahead and attempt to predict the evolution of threats to better protect their customers. We take a look over the past year and highlight the trends in attacks and assoicated malware used in sabotage." + }, { + "name": "IRC Bots - Useful Utilities, Entertainment, and Insults!", + "by": "Craig Gavagan Mac Entee - creadak@redbrick", + "time": "14:30", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": " Internet Relay Chat is a nice way to communicate with other Redbrick members, but did you know there are also programs to provide Dublin bus info, play card games, and even get a randomised insult for laughs, all from your IRC client? Craig will take us through some live examples of these bots and hopefully kickstart some ideas for new ones." + }, { + "name": "Openet", + "by": "Openet", + "time": "15:30", + "place": { + "id": "L101", + "map": "DCU" + }, + "description": "Openet are Irelands largest indigenous software company. They provide software to telecommunications service providers to commercialize and analyze activity on their networks." + }, { + "name": "Coding Competition", + "by": "Openet", + "time": "16:00", + "place": { + "id": "L101", + "map": "DCU" + }, + "description": "Open to all registered students of DCU. Openet will be running their annual coding competition. With cash prizes as well as the opportunity to prove yourself to a company that hire a lot of DCU graduates, this competition is not one to be missed. Not only will there be prizes for 1st place and runners up, there will be some other ones in there too. It's all about partiipation. Prove your skills http://openetcash4code.com/ ." + }, { + "name": "Networking & Food", + "by": "Redbrick & Openet", + "time": "17:30", + "place": { + "id": "NuBar", + "map": "DCU" + }, + "description": "Lets go to the NuBar for some food and networking with the guys from Openet." + }, { + "name": "Prizegiving", + "by": "Openet", + "time": "18:30", + "place": { + "id": "NuBar", + "map": "DCU" + }, + "description": "Openet will be presenting us with their prizes for the competition." + }] + }, { + "day": "Thursday", + "description": "Google", + "events": [{ + "name": "Building Reliable Large-Scale Distributed Systems", + "by": "Laura Nolan - Google", + "time": "13:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Exactly what it says on the tin. Google opperates at a massive scale and this brings with it some interesting and difficult challenges. Come listen to some engineers from Google walk us through as How-To of sorts on building Systems that operate at Google-Scale. " + }, { + "name": "Lunch", + "by": "Food", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Time again for some food to keep all the #TechWeekDCU enthusiasts going!" + }, { + "name": "Internet of Things", + "by": "Tommie Gannert - Google", + "time": "14:30", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Details to follow.." + }, { + "name": "Linear Algebra", + "by": "Magnus Deininger - Google", + "time": "15:30", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Linear Algebra is at the heart of everything that we do in computing. Come and hear a unique take on this subject from some Google Engineers who push it to the limit on a daily basis in order to make the worlds information universally accessible." + }, { + "name": "Expecting the Unexpected", + "by": "Gareth Eason - Google", + "time": "16:30", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "One of our most anticipated talks of #TechWeekDCU 2015. Engineers from Google will be talking to us about their culture of expecting the unexpected. They'll be speaking about DiRT (Disater Recovery Training), a mix of roleplay and systems/network operations and design/infrastructure testing in a contriolled environment, which enables them to respond fast in the face of unexpected problems at scale." + }, { + "name": "Close Networking Session", + "by": "Redbrick & Google", + "time": "17:30", + "place": { + "id": "NuBar", + "map": "DCU" + }, + "description": "We'll have a networking session where you'll get to talk to the guys from Google about anything and everything that their NDA's will allow." + }] + }, { + "day": "Friday", + "description": "AOL", + "events": [{ + "name": "The Architecture of Online Ad Delivery", + "by": "Ken Wilson - AOL", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Ad Delivery technology provides software to web sites and advertisers to serve ads, count them, choose the ads that will make the website or advertiser most money, and monitor progress of different advertising campaigns or Real-time auctions. " + }, { + "name": "Introduction to Erlang in the context of a Real Time Advertising Auction", + "by": "Philip Clarke - AOL", + "time": "13:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Live coding to show the basics of recursing, pattern matching, message passing and concurrency in Erlang. Demonstrate a how to write an advertising exchange where a seller (SSP) and a buyer (DSP) interact via an auction. We can then spawn multiple exchanges which talk to multiple DSPs and show many thousands of these auctions running concurrently." + }, { + "name": "Introduction to Microserver - Aol's new open source project that makes creating Rest webservices in Java easy and fun! ", + "by": "John McClean - AOL", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "Introduction to Microserver - Aol's new open source project that makes creating Rest webservices in Java easy and fun! " + }, { + "name": "Clean Code - Join the Revolution!", + "by": "Michael Pierce - AOL", + "time": "15:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "What is Clean Code? An introduction to coding practices at AOL. For a programmer, writing clean code is a must to ensure that it is maintainable, easy to follow and you can understand its intent. " + }, { + "name": "Continuous Integration/Continuous Deployment (CI/CD)", + "by": "Jose Martinez - AOL", + "time": "16:00", + "place": { + "id": "The Mezz", + "map": "DCU" + }, + "description": "From your command line to production environment just hitting a key. How can this be achieved? A brief introduction to CI/CD, some tools and an example on how this could be done promoting your package from one environment to the other until it reaches production. Tools: git, maven, Jenkins and shell script." + }] + }] +} diff --git a/events/2016.json b/events/2016.json new file mode 100644 index 0000000..3e6f519 --- /dev/null +++ b/events/2016.json @@ -0,0 +1,265 @@ +{ + "location": "Dublin City University", + "start": 15, + "end": 19, + "month": "Febuary", + "year": 2016, + "live": "2016-02-15T12:00:00", + "archive": "true", + "video": "https://www.youtube.com/embed/videoseries?list=PLPaLJSHTDMFgYNnnEOjuvdm6WqOFTSQ9z", + "days": [{ + "day": "Monday", + "description": "Associates", + "events": [{ + "name": "Opening Event", + "by": "Redbrick DCU's Computer Networking Society", + "time": "13:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Opening of TechWeek 2016" + }, { + "name": "Lunch", + "by": "Somewhere in DCU", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Lunch Time!" + }, { + "name": "Competitive Programming = Money", + "by": "Cian Ruane & Noah Donnelly", + "time": "15:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Where do you picture yourself in 5 years? How\u2019s your relationship with your parents? Do you feel a longing for meaning and direction in your life? In this talk Cian Ruane and Noah Donnelly will introduce you to the world of competitive programming." + }, { + "name": "Fergus O'Dea (NDRC)", + "by": "Fergus O'Dea", + "time": "16:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "A session on what's involved in a tech startup raising an initial round of funding given by Fergus O'Dea from NDRC (National Digital Research Centre), a leading investor in early-stage digital startups." + }, { + "name": "OpenStack - an Intro", + "by": "Graham Hayes - Openstack Designate Project Team Leader", + "time": "17:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "An over of what OpenStack is, and how you can use it, I will cover the main projects available in OpenStack, what they do, and how they link together. I will also cover how you can get involved. https://graham.hayes.ie" + }] + }, { + "day": "Tuesday", + "description": "Associates", + "events": [{ + "name": "Citrix Workspace Cloud", + "by": "Nicholas Connolly - Citrix", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Citrix Workspace Cloud (CWC) is a serviced-based product to deliver workspaces. Citrix describes this as \u201ca cloud-based control plane that enables partners and customers to unify, secure and deliver workspace services" + }, { + "name": "Prometheus: A Next Generation Monitoring System", + "by": "Brian Brazil - Robust Perception", + "time": "13:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Prometheus is a scalable, reliabile, easy to use and powerful monitoring system. This talk will look at the ideas behind it and how you can take advantage of them. Since publicly launching the open source project, over a year ago, over 100 companies have now rely on it and to date there are over 250 contributers to the codebase." + }, { + "name": "Lunch", + "by": "Somewhere in DCU", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Lunch Time!" + }, { + "name": "Hackers in the Movies", + "by": "Damian Gordoni - DIT Universal Design RG", + "time": "17:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Damian's talk will look at the portrayal of computer hackers in the movies, how they are represented in terms of the age, gender, profession, etc. and how this portrayal has evolved over the decades, and it will also will look at the depiction of the types of things hackers can do in the movies as opposed to real life" + }] + }, { + "day": "Wednesday", + "description": "HEAnet", + "events": [{ + "name": "Admins, Tales of Progress - With live demo", + "by": "Terry Bolt & Cian Butler", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Progress has been made to Redbrick 2.0 but how will it work. Terry and Cian have a live demo to show you how." + }, { + "name": "MiRo Advisory", + "by": "Ben A crawford", + "time": "13:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "WhiteHack: Smart Meter Security in 56 million homes" + }, { + "name": "Lunch", + "by": "Somewhere in DCU", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Lunch" + }, { + "name": "Imprecise Network Monitoring Tools", + "by": "Brian Nisbet - HEAnet (Network Operations Manager)", + "time": "15:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Any problem can have multiple causes and a vital part of troubleshooting is to gather as much data as possible. However not all problems (or solutions) are evident from deployed monitoring tools. Substantial data can be gleaned from social networking sites such as Twitter and Facebook and crowdsourcing your info can really help when local contacts can't be reached. This talk is liberally dosed with caveats and searching Instagram for pictures of dug up fibre should never be used in preference to well configured network monitoring tools! " + }, { + "name": "Intro To GoLang", + "by": "Voy", + "time": "16:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "GO" + }, { + "name": "Working Together: Le and Private Sector Botnet Takedowns", + "by": "Alan Neville (anev) - Symantec, Threat Intelligence Analyst", + "time": "17:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Computer criminals regularly construct large distributed attack networks known as botnets.These networks are comprised of hijacked computers that an attacker can use to send spam, commit financial fraud or launch cyber - attacks.This talk aims to describe the approaches of botnet takedowns from the perspective of law enforcement agencies and the AV industry using examples from recent take - downs and discusses success stories when private and public sect Anev will go through case study of take down effort for zeroaccess botnet which was done by symantec and give an example of the gameoverzeus botnet takedown we conducted in conjunction with the FBI and the UK cyber crime unit and show the difference it made working with LE." + }] + }, { + "day": "Thursday", + "description": "Google", + "events": [{ + "name": "The Challenges of Machine Learning at Scale", + "by": "Graham Poulter", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Aoife wants to predict how likely you are to click on an ad, to help Google decide whether to show it. With the machine learning mathematics all done, shouldn't it be easy: just train the model and make predictions? Not so fast. We'll see how Aoife overcomes the obstacles that stand between her machine learning model and the world. For starters: she has to train it on petabytes of data, continually arriving, and have it serve millions of predictions a second. Graham Poulter is a Site Reliability Engineer on Google's machine learning pipelines for ads, having moved here from South Africa three years ago. He's done some machine learning before, but was amazed to see that scaling up machine learning is a whole lot harder than one might imagine." + }, { + "name": "Designing Large Scale Distributed Systems", + "by": "Remigiusz Modrzejewski", + "time": "12:40", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "This talk will cover some very high-level principles for distributed system design." + }, { + "name": "An evolution of Automation", + "by": "John Looney", + "time": "13:20", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": " In software engineering, it is rare for the final version of a solution to be decided before implementation starts.Everything changes;engineers, experience, problems faced, and lessons learned from failure.This talk will explore why it 's important to try many different avenues, to fully understand the problem space, before being sure that a solution is optimal." + }, { + "name": "Lunch", + "by": "Somewhere in DCU", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Eat" + }, { + "name": "Expecting the Unexpected", + "by": "Ryan Thomas", + "time": "15:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Things break - all the time. At Google scale we're statistically certain that at any given time, somewhere, something is broken. We still have deliver a great service to users. By deliberately breaking things in a controlled fashion, Google's Disaster Readiness Testing is one of the methods we use to objectively test our ability to handle failure." + }, { + "name": "10 Practical Tips for Writing an Attention-Getting CV \n Interviewing at Google", + "by": "Rebecca O'Farrell/Anam Acktar, Ryan Thomas and Graham Poulter", + "time": "15:40", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Learn tips from members of Google's recruiting team about how to put together a memorable CV. Two of our Site Reliability Engineers will also do a demo coding interview and will provide tips on how to approach the process." + }, { + "name": "Google Intern Panel", + "by": "Google", + "time": "16:20", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Hear from past and future Google interns currently studying at DCU about their experiences in this panel discussion." + }] + }, { + "day": "Friday", + "description": "Irish Tech Community & HubSpot", + "events": [{ + "name": " 'N' things we learned about deploying cloud applications", + "by": "Tony Ayres - Senior Architect@DCU", + "time": "12:00pm", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "The trials and tribulations of building and deploying software on a cloud platform(AWS).A discussion of the silly, simple mistakes that cause you to have to work the weekend...and how to avoid them." + }, { + "name": "Distributed Computing at Scale", + "by": "Anton Whalley - Solutions Architect - Strongloop@IBM \n Aman Kohli - Lead Mobile Architect@Citi", + "time": "1:00pm", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Distributed Computing on a Massive Scale: \n Living with Decentralization, P2P and the new Web. In this talk we discuss the forces pulling towards a new web, moving from overly centralised infrastructures to scalable decentralisation and distribution." + }, { + "name": "How to Build a Web App in ReactJS", + "by": "Cian McMahon & Rob Campion - Hubspot", + "time": "2:00pm", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "You\u2019ll get an intro to what React is, how to get started with it, and also learn about React Router and Redux" + }, { + "name": "Lunch & Networking", + "by": "Somewhere in DCU", + "time": "3:00pm", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Somewhere in DCU" + }] + }] +} diff --git a/events/2017.json b/events/2017.json new file mode 100644 index 0000000..2b2a532 --- /dev/null +++ b/events/2017.json @@ -0,0 +1,175 @@ +{ + "location": "Dublin City University", + "start": 24, + "end": 28, + "month": "March", + "year": 2017, + "live": "2017-03-24T12:00:00", + "archive": "false", + "video": "https://www.youtube.com/embed/videoseries?list=PLPaLJSHTDMFhbDmyUeik6IHXmzVtWQQxu", + "days": [{ + "day": "Monday", + "description": "Data", + "events": [{ + "name": "Opening Event", + "by": "Redbrick DCU's Computer Networking Society", + "time": "11:45", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Opening of TechWeek 2017" + }, { + "name": "TBA", + "by": "TBA", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }, { + "name": "Lunch", + "by": "Food", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Lunch Time!" + }, { + "name": "TBA", + "by": "TBA", + "time": "15:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }] + }, { + "day": "Tuesday", + "description": "Mobile Development", + "events": [{ + "name": "TBA", + "by": "TBA", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }, { + "name": "Lunch", + "by": "Food", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Lunch Time!" + }, { + "name": "TBA", + "by": "TBA", + "time": "15:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }] + }, { + "day": "Wednesday", + "description": "Networks and IoT", + "events": [{ + "name": "TBA", + "by": "TBA", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }, { + "name": "Lunch", + "by": "Food", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Lunch Time!" + }, { + "name": "TBA", + "by": "TBA", + "time": "15:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }] + }, { + "day": "Thursday", + "description": "STEM", + "events": [{ + "name": "TBA", + "by": "TBA", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }, { + "name": "Lunch", + "by": "Food", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Lunch Time!" + }, { + "name": "TBA", + "by": "TBA", + "time": "15:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }] + }, { + "day": "Friday", + "description": "Lightning Talks", + "events": [{ + "name": "TBA", + "by": "TBA", + "time": "12:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }, { + "name": "Lunch", + "by": "Food", + "time": "14:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "Lunch Time!" + }, { + "name": "TBA", + "by": "TBA", + "time": "16:00", + "place": { + "id": "The Mezz", + "map": "Somewhere in DCU" + }, + "description": "TBA" + }] + }] +} diff --git a/gulpfile.js b/gulpfile.js index fd455bd..d629e91 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,15 +1,16 @@ -var gulp = require('gulp'); -var sass = require('gulp-sass'); -var concat = require('gulp-concat'); -var cleanCSS = require('gulp-clean-css'); -var minify = require('gulp-minify'); -var rename = require('gulp-rename'); -var connect = require('gulp-connect'); -var jsonSchema = require('gulp-json-schema'); -var babel = require('gulp-babel'); - -gulp.task('dev', ['compress', 'scss', 'fonts', 'webserver', 'validate'], function () { - gulp.watch(['./css/*.scss', './js/*.js', './**/*.html'], ['scss', 'compress', 'html']); +const gulp = require('gulp'); +const sass = require('gulp-sass'); +const concat = require('gulp-concat'); +const cleanCSS = require('gulp-clean-css'); +const minify = require('gulp-minify'); +const rename = require('gulp-rename'); +const connect = require('gulp-connect'); +const jsonSchema = require('gulp-json-schema'); +const babel = require('gulp-babel'); +const shell = require('gulp-shell') + +gulp.task('dev', ['webserver'], function () { + gulp.watch(['./css/*.scss', './js/*.js', './**/*.handlebars', './**/*.json'], ['scss', 'compress', 'generate', 'html']); }); gulp.task('compress', function() { @@ -17,12 +18,12 @@ gulp.task('compress', function() { .pipe(concat('main.js')) .pipe(babel()) .pipe(minify({ - ext:{ - min:'.min.js' - }, - exclude: ['tasks'], - noSource: true, - ignoreFiles: ['.combo.js', '*.min.js'] + ext:{ + min:'.min.js' + }, + exclude: ['tasks'], + noSource: true, + ignoreFiles: ['.combo.js', '*.min.js'] })) .pipe(gulp.dest('dist/js')); }); @@ -35,9 +36,10 @@ gulp.task('scss', function() { .pipe(gulp.dest('dist/css')); }); -gulp.task('webserver', function() { +gulp.task('webserver',['default'], function() { connect.server({ port: 8000, + root: 'dist', host: 'techweek.dev', livereload: true }); @@ -45,8 +47,8 @@ gulp.task('webserver', function() { gulp.task('fonts', function() { - return gulp.src('./node_modules/materialize-css/fonts/**') - .pipe(gulp.dest('dist/fonts')); + return gulp.src('./node_modules/materialize-css/fonts/**') + .pipe(gulp.dest('dist/fonts')); }); gulp.task('html', function() { @@ -55,8 +57,10 @@ gulp.task('html', function() { }); gulp.task('validate', function() { - return gulp.src(['./events.json', './2016/*.json', './2015/*.json']) + return gulp.src(['./events/*.json']) .pipe(jsonSchema('schema.json')); }); -gulp.task('default', ['compress', 'scss', 'fonts', 'validate']); +gulp.task('generate', ['validate'], shell.task("node bin/generate.js")); + +gulp.task('default', ['generate', 'compress', 'scss', 'fonts']); diff --git a/index.html b/index.html deleted file mode 100644 index 2f7c80e..0000000 --- a/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - TechWeek 2016 | Dublin City University - - - - - - - -
      -
      -
      -

      TechWeek

      -

      Dublin City University 24th - 28th October 2016

      - -
      - -
      -
      - TechWeek Starts in: -
      -   -   -   -   -
      -
      - -
      - -
      -
      -
      - -
      -
        -
        -
        - - - - diff --git a/js/main.js b/js/main.js index 51c5a7d..0f679fd 100644 --- a/js/main.js +++ b/js/main.js @@ -1,21 +1,20 @@ // We wait for the document to finish loading -$(document).ready( function(){ +$(document).ready( function() { const currHash = getHash(); - // Get the event list from JSON (because JSON is nice) and send data to loadEvents function. - // This call is anynchronous, meaning it will display the data once the JSON is loaded, - // but the code continues to execute in the background - $.getJSON('./events.json', function(data){ loadEvents(data); }).then( function () { - // Change the color of the header based on the amount of times you visited the page - $('header h1 span').css({color: colors[(v+3) % 5]}); + $('h5').each( function( c ) { + $(this).css({color: colors[(v+c) % 5]}); + }); + $('.collapsible').collapsible(); + // Change the color of the header based on the amount of times you visited the page + $('header h1 span').css({color: colors[(v+3) % 5]}); - if (typeof(currHash) !== 'boolean') { - $('li[data-hash="' + currHash + '"] > div').trigger('click'); - } + if (typeof(currHash) !== 'boolean') { + $('li[data-hash="' + currHash + '"] > div').trigger('click'); + } - $('.card-container__events > li').on('click', function () { - const hash = $(this).attr('data-hash'); - setHash(hash); - }); + $('.card-container__events > li').on('click', function () { + const hash = $(this).attr('data-hash'); + setHash(hash); }); }); @@ -42,7 +41,6 @@ const colors = ['#f44336', '#009688', '#4caf50', '#ffc107', '#e91e63']; // Get the current time and the time TechWeek starts at; let now = (new Date()).getTime(); -const start = (new Date('2016-10-24T12:00:00')); let liveActive = false; let liveShown = false; @@ -97,45 +95,8 @@ function showLive() { } } -// Load the events from the file and add them to the page -function loadEvents(days) { - const ce = $('.card-container__events'); - for(let i = 0; i < days.length; i++) { - const day = days[i]; - const ul = day.day + '-events'; - const de = $('
      • ' + day.day + ' - ' + day.description + '
          '); - de.appendTo(ce); - - for(let j = 0; j < day.events.length; j++) { - const event = day.events[j]; - const by = (event.by.length === 0) ? '' : 'By: ' + event.by + ''; - $('#'+ul).append( - '
        • '+ - '
          ' + - '
          '+ event.time + '
          ' + - '
          ' + event.name + '
          ' + - '
          ' + event.place.id + '
          ' + - '
          ' + - '
          ' + - '

          ' + by +''+ - '

          ' + event.description + '

          ' + - '
          ' + - '
        • ' - ); - } - } - - $('h5').each( function( c ) { - $(this).css({color: colors[(v+c) % 5]}); - }); - - $('.collapsible').collapsible(); - $('.tooltipped').tooltip({delay: 10}); -} - function getHash() { const currHash = window.location.hash; - return (currHash !== '') ? currHash : false; } diff --git a/package.json b/package.json index 968ad55..6354c82 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,9 @@ "main": "gulpfile.js", "scripts": { "test": "eslint js/main,js && bin/check-event-json && gulp", - "postinstall": "gulp" + "dev": "gulp dev", + "postinstall": "gulp", + "gulp": "gulp" }, "repository": { "type": "git", @@ -18,10 +20,6 @@ }, "homepage": "https://github.com/redbrick/techweek.dcu.ie#readme", "dependencies": { - "jquery": "^2.2.4", - "materialize-css": "^0.97.7" - }, - "devDependencies": { "babel-preset-es2015": "^6.16.0", "eslint": "^3.6.1", "eslint-plugin-json": "^1.2.0", @@ -34,7 +32,11 @@ "gulp-json-schema": "^1.0.0", "gulp-minify": "0.0.14", "gulp-rename": "^1.2.2", - "gulp-sass": "^2.3.2" + "gulp-sass": "^2.3.2", + "gulp-shell": "^0.5.2", + "handlebars": "^4.0.6", + "jquery": "^2.2.4", + "materialize-css": "^0.97.7" }, "eslintConfig": { "plugins": [ @@ -80,7 +82,7 @@ [ "es2015", { - "modules": false + "modules": false } ] ], diff --git a/schema.json b/schema.json index b272b9f..cd4cd00 100644 --- a/schema.json +++ b/schema.json @@ -1,72 +1,187 @@ { "$schema": "http://json-schema.org/draft-04/schema#", - "type": "array", - "uniqueItems": false, - "items": { - "type": "object", - "properties": { - "day": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "minLength": 1 - }, - "events": { - "type": "array", - "uniqueItems": false, - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "by": { - "type": "string", - "minLength": 1 - }, - "time": { - "type": "string", - "minLength": 1 - }, - "place": { + "type": "object", + "title": "Root schema.", + "description": "An explanation about the purpose of this instance.", + "properties": { + "location": { + "type": "string", + "minLength": 1, + "title": "Location schema.", + "description": "An explanation about the purpose of this instance.", + "default": "Dublin City University" + }, + "start": { + "type": "integer", + "multipleOf": 1, + "maximum": 10000, + "minimum": 1, + "exclusiveMaximum": false, + "exclusiveMinimum": false, + "title": "Start schema.", + "description": "An explanation about the purpose of this instance.", + "default": 24 + }, + "end": { + "type": "integer", + "multipleOf": 1, + "maximum": 10000, + "minimum": 1, + "exclusiveMaximum": false, + "exclusiveMinimum": false, + "title": "End schema.", + "description": "An explanation about the purpose of this instance.", + "default": 28 + }, + "month": { + "type": "string", + "minLength": 1, + "title": "Month schema.", + "description": "An explanation about the purpose of this instance.", + "default": "March" + }, + "year": { + "type": "integer", + "multipleOf": 1, + "maximum": 10000, + "minimum": 1, + "exclusiveMaximum": false, + "exclusiveMinimum": false, + "title": "Year schema.", + "description": "An explanation about the purpose of this instance.", + "default": 2017 + }, + "live": { + "type": "string", + "minLength": 1, + "title": "Live schema.", + "description": "An explanation about the purpose of this instance.", + "default": "2017-03-24T12:00:00" + }, + "archive": { + "type": "string", + "minLength": 1, + "title": "Archive schema.", + "description": "An explanation about the purpose of this instance.", + "default": "false" + }, + "video": { + "type": "string", + "minLength": 1, + "title": "Video schema.", + "description": "An explanation about the purpose of this instance.", + "default": "" + }, + "days": { + "type": "array", + "uniqueItems": false, + "title": "Days schema.", + "description": "An explanation about the purpose of this instance.", + "items": { + "type": "object", + "title": "4 schema.", + "description": "An explanation about the purpose of this instance.", + "properties": { + "day": { + "type": "string", + "minLength": 1, + "title": "Day schema.", + "description": "An explanation about the purpose of this instance.", + "default": "Friday" + }, + "description": { + "type": "string", + "title": "Description schema.", + "description": "An explanation about the purpose of this instance.", + "default": "Lightning Talks" + }, + "events": { + "type": "array", + "uniqueItems": false, + "title": "Events schema.", + "description": "An explanation about the purpose of this instance.", + "items": { "type": "object", + "title": "3 schema.", + "description": "An explanation about the purpose of this instance.", "properties": { - "id": { + "name": { + "type": "string", + "minLength": 1, + "title": "Name schema.", + "description": "An explanation about the purpose of this instance.", + "default": "TBA" + }, + "by": { + "type": "string", + "minLength": 1, + "title": "By schema.", + "description": "An explanation about the purpose of this instance.", + "default": "TBA" + }, + "time": { "type": "string", - "minLength": 1 + "minLength": 1, + "title": "Time schema.", + "description": "An explanation about the purpose of this instance.", + "default": "16:00" + }, + "place": { + "type": "object", + "title": "Place schema.", + "description": "An explanation about the purpose of this instance.", + "properties": { + "id": { + "type": "string", + "minLength": 1, + "title": "Id schema.", + "description": "An explanation about the purpose of this instance.", + "default": "The Mezz" + }, + "map": { + "type": "string", + "minLength": 1, + "title": "Map schema.", + "description": "An explanation about the purpose of this instance.", + "default": "Somewhere in DCU" + } + }, + "required": [ + "id", + "map" + ] }, - "map": { + "description": { "type": "string", - "minLength": 1 + "minLength": 1, + "title": "Description schema.", + "description": "An explanation about the purpose of this instance.", + "default": "TBA" } }, "required": [ - "id", - "map" + "name", + "by", + "time", + "place", + "description" ] - }, - "description": { - "type": "string", - "minLength": 1 } - }, - "required": [ - "name", - "by", - "time", - "place", - "description" - ] - } + } + }, + "required": [ + "day", + "events" + ] } - }, - "required": [ - "day", - "description", - "events" - ] - } + } + }, + "required": [ + "location", + "start", + "end", + "month", + "year", + "days" + ] } diff --git a/template.handlebars b/template.handlebars new file mode 100644 index 0000000..57083fe --- /dev/null +++ b/template.handlebars @@ -0,0 +1,74 @@ + + + + {{ title }} {{ year }}| {{ Location }} + + + + + +
          +
          +
          +

          {{{ splitTitle title }}}

          +

          {{ location }} {{ start }} - {{ end }} {{ month }} {{ year }}

          + +
          + +
          +
          + {{ title }} Starts in: +
          +   +   +   +   +
          +
          + +
          + +
          +
          +
          + +
          +
            {{#each days}} +
            +
              +
            • +
              +
              + {{ day }} - {{ description }} +
              +
              +
              +
                {{#each events}} +
              • +
                +
                {{ time }}
                +
                {{ name }}
                +
                {{ place.id }}
                +
                +
                +

                By: {{ by }}

                +

                {{ description }}

                +
                +
              • + {{/each}}
              +
              +
            • +
            +
            + {{/each}}
          +
          +
          + + + + +