The Gathering Technical blog

WE HAZ NET!

08 Apr 2017, by Kristian Lyngstøl from Tech:Net

It's Saturday. On Wednesday 5000 people storm the fort. Or in our case, the Viking Ship.

And the good news is, I can now sit in the NOC and enjoy moving pictures of cute animals.

On a slightly more serious note:

We've got the internet uplink up (a week ago).

We've got net in the NOC.

Jocke and Lasse hard at work

The ring is up.

Tech:Net chief cheering packets on along the ring

We're setting up a distro-switch to test a potential issue we might have to work around.

Distro testing...

Our server rack is mostly up.

A couple of servers

And we've delivered the first few access nets to the various crews that need it to get work done.

We still have quite a bit of stuff to do, but we're (slightly) ahead of schedule. To get an idea of what's left, here are some (!) of our access switches, still in their boxes.

EX2200

A few meters worth of fiber cable.

Fiber cable.

And with one last image, I'm signing off and going back to my cat picture. I mean back to work.

See you soon!

TGTGTGTGTG

Labels: Tech TG17

"Maintenance" on gathering.org etc

05 Apr 2017, by Kristian Lyngstøl from Tech:Net

Some of you might have noticed some instability on https://gathering.org tonight (Wednesday April 5th, 2017).

Ok, that was me. My bad.

It all started innocently enough. "Why don't you set up SSL on gathering.org? It'll only take 20 minutes!". Ah, well, no, as it turns out, it didn't take 20 minutes. As I knew it wouldn't.

We put up SSL weeks (months?) ago, using let's encrypt and whatnot. It was reasonably straight forward, but it revealed a whole lot of issues that has taken us great deal of time to find and fix. At its core most of the issues are simple: Hard-coded links to paths using http. But finding these hard-coded references hasn't always been easy. Gathering.org isn't just a plain CMS, it is a django (python) site that also has static content hosted by apache, a php-component to control the front page (hosted on a different domain), a node.js component to control locking on said php-component (...) and god knows what. And it integrates with wannabe for authentication.

But that was weeks ago. So what happened tonight?

In front of gathering.org there's a proxy, Varnish Cache, that caches content and makes sure that you spamming F5 doesn't bring the site down. Yours truly happen to be a varnish developer, but Varnish was in use long before I arrived.

Varnish, however, does not deal with SSL, it just does HTTP caching. So to get SSL we do:

Client --[ssl]--> Apache --[http]--> Varnish --> Apache --> (gunicorn/files/etc)

But I managed to mess it up moths ago, and we ended up with:

Client --[ssl]--> Apache --> (gunicorn/files/etc)

Which works. Until you get traffic. And we predict some traffic spikes next week. So I went about fixing it.

But alas, the gathering.org site is a steaming pile of legacy shit (this is a technical term). And I met resistance every step along the way. So what I ended up doing was quite literally saying "fuck it" out loud, then delete the entire Varnish configuration, rebuild it from scratch, then bypass apache when possible, delete most of the apache config, then establish an archive site for old content. This was not how I had planned it, but it meant some quick improvising. Normally, this is a process you plan out for weeks. I did it in ... err. a couple of hours. Hooray?

So now we have:

Client --[ssl]--> Apache --[http]--> Varnish --> Gunicorn

and

Client --[ssl]--> Apache --[http]--> Varnish --> Apache (Static files, etc)

And archive.gathering.org - which I also had to do some quick fixes on.

This meant fixing stuff in Apache, in Varnish, in DNS (bind - setting up archive.gathering.org), debugging cross-site-request-forgery modules in django, cache invalidation issues for editorial staff, running a regular expression over 10GB of archived websites reaching back to 1996, etc etc. Probably lots more too.

By the time I was done, someone was ready to put an awesome "work in progress" graphic on the site.

Reminder: Tech meetup during The Gathering

04 Apr 2017, by Kristian Lyngstøl from Tech:Net

The Tech-crew meetup planned during The Gathering 2017 is starting to take shape.

A brief summary of what it is: a social event for people who do tech-related work at computer parties. See the original invite for details.

So far this is what I know:

Time: Friday, 18:00, location disclosed to those who are invited (which is anyone who drop me an e-mail).

I've gotten 9 signups, totaling 16+ people, not counting myself or whoever from Tech:Net at TG is available. All together more than 10 different parties are represented, spanning all sizes.

And there's still room for lots and lots more. So if you volunteer at a computer party or similar event in a technical capacity and want to hangout, drop me an e-mail at kly@gathering.org and I'll add you to the list (Please let me know what party(or parties) and roughly size, and if it's just you or if you bring a friend (or friends)).

The agenda is pretty hazy. I figure this is what we do:

  1. I say hello I suppose.

  2. Go around the room, everyone presents them self and tell us a little bit about what party (or parties) they volunteer for. Nice things to include is size, where you get your stuff from (rent? borrow? steal? "bring your own device"?), what you do for internet, special considerations, or really whatever comes to mind.

  3. ????

  4. ????

What I want to avoid is that this becomes a "Tech:Net at The Gathering tells you how to do stuff"-thing. We're represented, and we'll obviously talk about whatever, but we're all there as equal participants. Many of the challenges we have with 5000 participants is irrelevant to most of you, yet smaller parties have challenges and opportunities that are just as interesting to discuss.

If you want to do a small presentation, or want to talk about a specific topic, then let me know and we'll make room for it.

Topics I might suggest to get things started:

(X) Do you do end-user support? How much/little?

(X) How do you get a deal with an ISP? Do you have someone you can call if the uplink goes down at 2AM?

(X) Do you use subnetting at all? If so: What was the breaking point where it became necessary?

(X) Where do you get equipment from?

(X) Firewalling? Either voluntary or involuntary (e.g.: getting internet through filtered school network)

(X) Public addresses or NAT?

(X) Do you provide IPv6? Do you care? Do you want to?

(X) ?????

We have the room until we're done basically. and there'll be some type of food. If there aren't too many of us, there might be time for a unique guided tour too, but I'm not making any promises (remember: I'm lazy).

Update: We're now up to 23 "confirmed" signups representing at least 13 different events. And we've secured food, courtesy of KANDU.

Labels: Meetup

Preparing the wireless

02 Apr 2017, by Martin Karlsen from Tech:Net

All your base are belong to us!

We will have a slightly higher access point density this year compared to TG16. While it might make sense on paper to introduce more APs we seem to forget how much work it actually is to prepare them in such large quantities...

Earlier today we unboxed 276(!) base stations/access points and prepared them for for their journey to Vikingskipet, Hamar.

A big thank you to Avantis for lending us their facilities!







Labels: Tech TG17, Wireless

We are online!

02 Apr 2017, by Martin Karlsen from Tech:Net

The beacons are lit!

We are happy to report that the internet connection for TG17 is up and running.

Tech:Net decided to take the "pre-TG" preparations one step further this year by building our backbone network and installing our DHCP/DNS servers a week before schedule! This gives us the opportunity to tweak and polish all the nuts and bolts of our most critical infrastructure without being on site.

What does this mean for us? It means that we're able to deploy and provision our edge switches from day 1 without waiting for internet access or the DHCP/DNS-servers to be installed on the first day.

Pretty sweet!

core firewall

Stay tuned - we will post details about our network design later on..

Labels: Tech TG17

Invitation: Tech meetup at The Gathering 2017!

21 Mar 2017, by Kristian Lyngstøl from Tech:Net

Do you do Tech-stuff at a computer party? Any computer party? Then this is for you.

We are looking to put together an informal "Tech-meetup" during The Gathering 2017. The exact program is yet to be decided, the only thing we know is who we want there: Anyone who are part of a tech crew at a computer part or similar event.

This is the result of seeing just how many great people there are out there. And to be more open about what we do at The Gathering, or any other computer party.

The idea is simple: We meet up during the event. Most likely some time during Friday (daytime), but that's subject to change. We perhaps do a small presentation of TG tech crew with a twist of some sort, Q&A, and then open the floor to discussion about whatever. There's no super-hard agenda. We can talk about TCP checksum mechanics, DHCP lease times, cable termination, how to best store switches, what candy makes for the best NOC-candy, pros and cons of renting equipment versus buying it. Or just exchange "war stories".

Does this sound interesting? Then drop me a mail at kly@gathering.org and let me know. This isn't an application, just a "I want in! I've been setting up the network at this local party with 40 participants for the last few years and this would be fun!" thing.

I'm sure we should've put together a better sign-up process, but we're lazy.

Well, I'm lazy anyway. If my mail-box explodes due to this, we might have to rethink this.

From "our" side you can expect me and whoever I manage to kidnap. I know several people in the NOC have expressed an interest. We'll also obviously provide some sort of room.

Labels: Meetup, Tech TG17

A sign of life...

17 Mar 2017, by Marius Fylling from Core:Systems

Hello!

This year, the Info:System has had some major changes. The structure of The Gathering has been changed, and in that process the Info:Systems crew has been renamed Core:Systems (read more about the change here, in Norwegian..). Oh, and another thing, no one from the old Info:Systems crew is participating this year. That means the entire Systems crew is new blood. Of course, this is not without some challenges.

Christian, aka lizter, has been so nice to help with the transition. He has been with the old Info:Systems crew for many years and has a lot of information and experience that we in Core:Systems really appreciate. Together with reading code, understanding documentation and sorting through config files, we have managed to somewhat get control over the potentially messy situation. I mean, everyone with some programming and/or IT-background knows it can be a messy thing to take over the work of a group of people.

We are pretty sure TG17 will be a really nice experience for all of us new bloods, and we really hope that the transition has not been too obvious. Well... Apart from closing down the forum. And did you notice the front page has SSL now? More on that later!

Labels: Blog, Systems TG17

Hello World 2.0

05 Apr 2015, by Tri Nguyen from

Welcome to the whole new Technical Blog by the crews behind The Gathering.

This is an unofficial rambling place and playground for the Info:Systems, Tech:Net and Tech:Server crews from The Gathering. The teams will share their thoughts, ideas and frustration from their work behind the scenes.

Read more about the new gathering.org

The Drawing Board

Well, it is not all that new. Tech:Net was already running a blog over at technet.gathering.org posting their findings and thoughts on network design for The Gathering, and in general everything network.

We were midway in TG15 when the idea of having a joint collaboration between the three technical crews, for us to dribble down our thoughts, frustration and knowledge, got serious. Our chiefs were talking, and we were whispering. Suddenly it became true.

It all started out from scratch not using any old work. The drawing board was empty, and the backend was non-existing. The first lines were drawn and the first Python/Django code was written, nearly at the same pace. The design was converted into beautiful markup and stylesheets, connected to the backed and, here it is. A whole new blog!

Data Migration

The process on migrating from the former Wordpress blog to our new solutions started out as a headache. While wishing for one well structured document containing only the posts, we got a huge XML containing, well, every related element on the site.

The idea of only migrating the latest post was scrapped. If we were going to spend time on understanding the exported data format, we might as well transfer all of it.. A script was thrown together to withdraw all 130 posts and its related information, and structured to reflect the new data model. The content was converted to markdown, the images from each post was fetched by their inline url, and every image reference inside any post was updated to reflect the new paths. Old authors is kept from the Tech:Net blog.

A littled snippet from the data dump:

<link>http://technet.gathering.org</link>
</image>
<item>
  <title>We are getting close.</title>
  <link>
    http://technet.gathering.org/2009/03/16/vi-narmar-oss/
  </link>
  <pubDate>Mon, 16 Mar 2009 21:41:11 +0000</pubDate>
  <dc:creator>ior1</dc:creator>
  <guid isPermaLink="false">http://technet.gathering.org/?p=6</guid>
  <description/>
  <content:encoded>
  <![CDATA[
    ....
   <img class="alignnone size-medium wp-image-5" title="ciscos" src="http://tgtechnet.files.wordpress.com/2013/03/16032009059-300x225.jpg" alt="ciscos" width="300" height="225" />
  ]]>
  </content:encoded>
  <excerpt:encoded>
    <![CDATA[ ]]>
  </excerpt:encoded>
  <wp:post_id>20</wp:post_id>
  <wp:post_date>2009-03-16 22:41:11</wp:post_date>
  <wp:post_date_gmt>2009-03-16 21:41:11</wp:post_date_gmt>
  <wp:comment_status>open</wp:comment_status>
  <wp:ping_status>open</wp:ping_status>
  <wp:post_name>vi-narmar-oss</wp:post_name>
  <wp:status>publish</wp:status>
  <wp:post_parent>0</wp:post_parent>
  <wp:menu_order>0</wp:menu_order>
  <wp:post_type>post</wp:post_type>
  <wp:post_password/>
  <wp:is_sticky>0</wp:is_sticky>
  <category domain="category" nicename="status-updates">
    <![CDATA[ status updates ]]>

Was turned into:

[
  {
    "fields": {
      "title": "TG15 wireless design - with Meru networks :)",
      "author": 1,
      "tags": [
        1
      ],
      "created": "2015-03-28 09:09:09",
      "published": true,
      "text": "# **Simplifying and making WiFi less complex and ready to adopt the user needs ...
  }
]

By using this little bash one-liner. The content was up running on the new page in seconds.

  find oldposts/ -name "*.json" -type f -print | awk '{ print $1"\ "$2 }' | xargs python manage.py loaddata
Labels: Blog

The new gathering.org

05 Apr 2015, by Christian Strand Young from

Apart from the new graphical design, have you noticed any other changes to the website this year? Well, you are right. For The Gathering 2015, we decided to rewrite the entire site from scratch. The result is what you see on gathering.org today.

The old gathering.org website was based on CMSMS, a PHP-based content management system that for several years have shown its limitations in what we can do with the site. Last year, the decision was thus made to create a new site from scratch. The concept for the new site was finalized in late 2014 by Info:Content, Info:Graphics and Info:Systems. It was implemented during January and February this year, and launched on March 1st. The front-end, back-end and CMS functionality is built with much help from our beloved Django Web Framework. This allows us to customize the site to our hearts' desire for the content-producing crews, enabling them to do their job as smoothly as possible.

The site is built with Django 1.7.7 as the back-end, with a fine soup of HTML5 and some nifty Javascript and LESS libraries on the front-end side. Although we use a MySQL database as our data store, we don't see much of it —Django abstracts away the database as much as possible by giving us data access through an ORM. This means that instead of writing complicated queries in SQL, we can use code like this in our back-end logic to e.g. get all our articles:

Article.objects.filter(published=True)

How the stack works

So, let us move on the technical bits. At the bottom of the stack in the production environment is our Django application with all its Python code, such as models, views and templates. This is served locally on the server through a Gunicorn WSGI server. We then use Apache to ProxyPass to the Gunicorn app. On top of this we have a Varnish cache that caches almost every page on the website so that the end users experience fast loading times—even when the server has a lot of concurrent requests.

Caching

Using the Varnish cache means that when a user hits a warm cache when viewing e.g. an article, no database queries, Gunicorn or Apache requests will take up any resources; the response comes directly from Varnish without going through the underlying layers of the stack. When something on the site gets updated, we invalidate the cache. This means that the first user to request the page will hit a cold cache. Varnish then forwards the request to Apache which in turn forwards it to Gunicorn. The response is then again stored in Varnish, and the cache is warm again for users to browse the content swiftly. :)

We hope you are as happy as we are with the new solution! It is a joy for us to code with a framework as fully-featured as Django.

This was Info:Systems' first post on the brand-new The Gathering: Technical Blog. In Info:Systems we have a ton of other cool and/or quirky systems that we would like to tell you about, so stick around to hear more about the technology that makes TG tick!

more

About

TG - Technical Blog is the unofficial rambling place of the Info:Systems, Tech:Net and Tech:Server crews from The Gathering.

Filter posts by crew

Related sites

Collaborators