Difference between revisions of "BarnCamp 2017 workshop proposals"

From HacktionLab: A UK-wide network tech-activists providing meet-ups, events, workshops, national skillshare gatherings and hacklabs
Jump to navigation Jump to search
Line 56: Line 56:
 
* what to do when you get in a mess
 
* what to do when you get in a mess
  
==Keeping your code clean==
+
==How I Learned to Stop Worrying and Love Legacy Code==
  
 
;Proposed by: adelayde
 
;Proposed by: adelayde
;Time:3-4 hours
+
;Time:45 minutes
;Level: experience of programming at a intermediate to advanced level, or beginners who are keen to get into coding.
+
;Level: experience of programming at a intermediate to advanced level - nerd gag warning!!
;Resources: projector, sound, laptop (have one), this may be suitable for active workshop in the second part.
+
;Resources: projector, laptop (have one)
;Number: up to 30 with people working in pairs or mobs for Part II
+
;Number: any
  
Part I (talk/discussion): No matter if you're new to coding, or a seasoned coder, applying the principals of Clean Code can help you maintain and understand your own code, especially when you come back to it six months laterApplying Clean Code principals to code makes modularisation and reusability easier, aids other programmers who may want to work on your code, aids with self-documentation, and sets the foundation for adopting test driven development. In the workshop we'll address how:
+
Legacy Code.  I never wrote it; everybody else did!  How many times have you waded through an ageing, decaying, tangled forrest of code and wished it would just die?  How many times have you heard someone say that what really needs to happen is a complete rewrite?  I have heard this many times, and, have uttered that fatal sentence myselfBut shouldn’t we love our legacy code?  Doesn’t it represent our investment and the hard work of ourselves and our predecessors?  
  
* small is beautiful
+
Throwing it away is dangerous, because, before we do, we’ll need to work out exactly what it does, and we’ll need to tweeze out that critical business logic nestled in a deeply entangled knot of IF statements.  It could take us years to do, and we’ll have to maintain two systems whilst we do it, inevitably adding new features to them both.  Yes we get to reimplement using the latest, coolest programming language, instead of an old behemoth, but how long will our new cool language be around, and who will maintain that code, when it itself inevitably turns to legacy?
* simple is best
 
* comments suck
 
* reusability is king
 
* code should be crafted not thrown at the screen
 
* readability trumps cleverness and complexity
 
  
Part II (practical workshop): But what about that horrible code you're having to work on that somebody else, or even you, wrote?  We'll also have a look at how to tackle nasty, unreadable, spaghetti, untestable legacy code; how we can gradually improve it in small, iterative steps; and ultimately how we can get it into shape, rather than just throwing our arms in the air and re-coding the whole lot.  We'll cover:
+
We can throw our arms in the air, complaining and grumbling about how we didn’t write the code, how we would never have written it the way it is, how those that wrote it were lesser programmers, possibly lesser humans themselves, but the code still remains, staring us in the face and hanging around for longer that we could possibly imagine.  We can sort it out, we can improve it, we can make it testable, and we can learn to love our legacy code.
 
 
* identifying ways in to legacy code
 
* performing minuscule iterative improvements
 
* how we can use test driven development to make this process safer.
 
 
 
Programming language: undecided but will try to cover a number of different ones in the examples, and for the practical will look at something everyone can get up and running, hopefully in a web browser, but popular, such as Python, Ruby or JavaScript.
 
  
 
= System Administration =
 
= System Administration =

Revision as of 15:12, 7 April 2017

Workshop Ideas

Example Entry

Proposed by
Exampley Mc Exampleface
Time
3-4 years
Level
Some experience of using a wiki required
Resources
Laptop and 10 mice, USB hub (10 port)
Number
up to 10 people all huddled round a laptop and USB hub with 10 mice in it

You will learn how to make generic fictional entries into wiki pages, demostrating the format of the page expected, together with some humour. You will also use bullet points to:

  • show how bullet points are used in Mediawiki
  • add some much needed recursive self reference
  • make friends

You'll then finish off your description with how exciting workshop will be, or with an uncomfortable orphan sentence type paragraph.

This is the end of the example.

Coding

Life's a Git, and then you use it

Proposed by
adelayde
Time
45 mins (talk/demo) to 2 hours (interactive workshop)
Level
experience of using the Linux, Windows or OS X command line.
Resources
projector, laptop, people can bring their own laptops (or use BW laptop suite if it still exists).

How to use Git in essence. How to keep it simple.

  • what Git is and what uses can it be put to
  • how does it work (branches, commits and repositories)
  • how to set one up for your file system
  • how to add files and commit them
  • how to delete files and commit them
  • how to roll-back and move the HEAD about
  • how to clone a repository
  • what GitHub is and how to set up a remote bare bones master repository
  • how to push and pull
  • what to do when you get in a mess

How I Learned to Stop Worrying and Love Legacy Code

Proposed by
adelayde
Time
45 minutes
Level
experience of programming at a intermediate to advanced level - nerd gag warning!!
Resources
projector, laptop (have one)
Number
any

Legacy Code. I never wrote it; everybody else did! How many times have you waded through an ageing, decaying, tangled forrest of code and wished it would just die? How many times have you heard someone say that what really needs to happen is a complete rewrite? I have heard this many times, and, have uttered that fatal sentence myself. But shouldn’t we love our legacy code? Doesn’t it represent our investment and the hard work of ourselves and our predecessors?

Throwing it away is dangerous, because, before we do, we’ll need to work out exactly what it does, and we’ll need to tweeze out that critical business logic nestled in a deeply entangled knot of IF statements. It could take us years to do, and we’ll have to maintain two systems whilst we do it, inevitably adding new features to them both. Yes we get to reimplement using the latest, coolest programming language, instead of an old behemoth, but how long will our new cool language be around, and who will maintain that code, when it itself inevitably turns to legacy?

We can throw our arms in the air, complaining and grumbling about how we didn’t write the code, how we would never have written it the way it is, how those that wrote it were lesser programmers, possibly lesser humans themselves, but the code still remains, staring us in the face and hanging around for longer that we could possibly imagine. We can sort it out, we can improve it, we can make it testable, and we can learn to love our legacy code.

System Administration

Introduction to CiviCRM

Proposed by
Cassidy McGurk
Time
1 to 2 hours
Level
No experience necessary
Resources
Projector, fast laptop, internet access for attendees
Number
up to 15?

CiviCRM is an Open Source project to produce better than commercial CRM for campaigns and not-for-profit organisations | More on CiviCRM

Basic introduction for newbies with hands-on examples of basic administration tasks

Communities Skill Swap

Proposed by
Cassidy McGurk
Time
2 hours
Level
None
Resources
None
Number

Many barn campers are active members of different community-based projects, whether that is an Open Source project on the net or a local tech collective or a housing co-op. I'd like to lead an open discussion on what our project's structures, processes, successes and failures can learn from each other

Media Applications

GIMP 2.10 prospective new features demo

Proposed by
Ben Green
Time
0.5 to 1 hour depending on takers.
Level
No experience of gimp necessary.
Resources
Projector, fast laptop.
Number
any number of people

GIMP has come a long way since 2.8, but hardly anyone has seem the results. The hugely long development cycle leaves us punters mostly in the dark. This talk seeks to inspire GIMP users, and potential GIMP users about what's happened, why, and the implications artists, developers, and for the nature of the universe.

Scribus

Proposed by
Ben Green
Time
2 hours
Level
No experience of Scribus needed.
Resources
Projector, fast laptop.
Number
Max 10 or so

Scribus is one of the best publishing packages available. I'll show you how to use it to get documents together quickly. We'll be using the latest 1.5 development release.

Each person will need a copy installed, I'll post details, it's an easy package to install as there are Windows builds and an AppImage for Linux.

Command Line Guru Conversion Course Parts 1 and 2

Proposed by
Ben Green
Time
.5 - 2 hours
Level
No experience needed
Resources
Some computer of some sort
Number
up to 20

Taking beginner and intermediate users through command line use of a linux computer. For those with windows, we'll take you through first connecting to a linux computer. Part 2 will be for those who's thirst for knowledge was not sated by Part 1.

Greener Tech / Energy Descent

(Still) re-using computers in our communities

Proposed by
MaRk
Time
1 - 2 hours depending on number of people
Level
Some experience of keeping old computers in use
Resources
Nothing special
Number
up to 20

At the last BarnCamp, we had a discussion about personal computer re-use, and how this could be linked to community education and different kinds of organisation/business. Many BarnCampers are involved with these kind of activities. Let's catch up with how we've been developing our re-use practices (e.g. lessons learned from setting up http://re-pute.it/), take stock of current challenges and resources available, and talk about how we can support each other as a network of practitioners.

Practical activities

activism

Proposed by
xyz
Time
.5 - 2 hours
Level
No experience needed
Resources
a modicum of enthusiasm
Number
up to 20

how to make a difference. Discussions on applying tech skills to aiding activism. How to get involved. How to explore and expand interests. Current topics of interest. Where are efforts best aimed?

12/240 volt electrics for a campervan refit

Proposed by
Adelayde
Time
1 hour
Level
No previous experience, but if you know some DC electric stuff, it'd help me!
Resources
Project for inside bit (possibly), but otherwise outside at van
Number
As many as can practically see

I've recently done up my third van for use as a camper. I've installed a secondary battery supply to provide both 12volt DC and 240volt AC supplies. Thought I'd show folks around how it fits together and what kit you need. Will try to cover:

  • batteries one can use
  • cables and connectors
  • split charge relays
  • fuses
  • 12 volt lighting
  • 240 volt cabling and inverters
  • RCD protection of 240volt circuits
  • Earthing
  • Some basic theory if there's time

The workshop should be pretty exciting. We can look at some theory, before or after, having a look at the van wiring and discussing how I did it, and how you could do it.