Veiligheid voorop

Voor de veiligheid van je eigen klanten is beveiliging geen keuze, maar een verplichting.
Daarom worden al onze sites tegenwoordig voorzien van een beveiligde verbinding.

Al onze websites zijn zojuist bijgewerkt, om bestendig te zijn tegen de nieuwste beveiligingsrisico's.

Controleer ook je eigen website op:

https://www.ssllabs.com/ssltest/

Verhuisd!

Vanaf April 2015 zijn we gevestigd in het Kantorenhuis Röntgen. Dit mooie historische pand bevind zich aan de rand van het centrum van Apeldoorn. 

Naast andere bedrijven nemen we plaats in dit pand.

De oorspong van Django

Onze websites ontwikkelen we met Django, een framework (raamwerk) waarbinnen snel en doeltreffend websites gemaakt worden. Wat maakt Django zo goed? Dat heeft vooral te maken met de historie.

Deadlines en noodzaak

Django is ontwikkeld bij de online Lawrence Journal-World krant in 2003-2004. Twee web-ontwikkelaars, Simon Willison en Adrian Holovaty, waren zeer ervaren in het vak, maar hekelden de toenmalige tools die beschikbaar waren. Bovendien waren ze gebonden aan de onwijze tijdsdruk van de journalistieke wereld.

Uit noodzaak zijn ze oplossingen gaan ontwikkelen die hun werk makkelijker maakten. Hun ervaring en eerdere pogingingen maakten het verschil - ze wisten heel goed wat ze wilden maken. Goed uitgedachte code en duidelijke scheidingen van ieders verantwoordelijkheid. Geen PHP meer, maar Python werd de ontwikkeltaal. Met dit CMS was het volgende mogelijk: de eerste programmeur bouwde snel datamoddelen, vervolgens kon de redacteur al gegevens invullen - terwijl de andere ontwikkelaar nog bezig was met de presentatie (templates/css) op de website en eventuele backend! Complete applicaties werden soms in dagen of zelfs uren gerealiseerd! Het bleek een gouden combinatie.

Open Source

Midden 2005 werd Django gebruikt op de meeste sites van The World Company. Mede door de populariteit van Ruby on Rails werd besloten om het framework voor iedereen beschikbaar te stellen als Open Source. Dat het team ontzettend geprofiteerd had van de beschikbare Open Source code droeg hier ook aan bij.

Tegenwoordig wordt Django gebruikt op toonaangevende sites, zoals Disqus, Instagram, The Guardian, Mozilla, National Geographic, Pinterest, the Onion en de NASA. Jaarlijks komen ontwikkelaars bij elkaar op de DjangoCon om hun ervaringen te delen, en van elkaar te leren.

Webshops op snelheid

In ons werkveld heb je kant en klare pakketten, en je hebtbouwpakketten. Soms kun je een webshop makkelijk maken met een klant-en-klaar product, maar voor complexere e-commerce vraagstukken wordt dat alleen maar lastig. Dan is zo'n kant-en-klaar oplossing een blok aan het been.

Daarom maken we graag gebruik van Oscar. Een relatief nieuw software pakket met een aantal voordelen:

  • Het werkt veel sneller dan Magento!
  • Alles is aan te passen aan je wensen
  • Productvariaties en andere uitbreidingen zijn in te passen.
  • Goed te koppelen aan de systemen van leveranciers.

Dit is nu toegepast in de websites van WakaWaka, Solar for Syria en Solar for Philippines.
Daarmee werd het mogelijk om aan de eisen te voldoen, o.a.:

  • Meertaligheid
  • Meerdere valuta
  • Producten op meerdere websites tonen.
  • Orders van alle websites centraal verwerken.
  • Orders automatisch doorsturen naar distributeurs.
  • Verzendkosten op regio en gewicht.
  • Selectie van distributeur op regio.

Ofwel, aanrader om iets mee te doen!

Meertaligheid alom

Meertaligheid in een website. Een lastig punt. Tenminste, als je CMS dat nog niet ondersteund. Hier liepen we vorig jaar ook tegenaan. We hadden het al op de planning staan en vroegen onze klanten er ook om.

Een kort onderzoek leerde dat in de Django wereld al diverse pogingen gedaan zijn om meertaligheid te realiseren. Op de DjangoCon Europe 2011 in Amsterdam zei een spreker (Jonas Obrist) ook heel mooi: ik heb X ontwikkeld, maar dat moet je niet meer gebruiken. Vervolgens heb ik met Y een volgende poging gedaan, maar dat moet je niet gebruiken. Ik ben nu met poging 3 bezig om een vertalingen op een fatsoenlijke manier te bouwen, en hopelijk wordt dat wat. Het tekende de complexiteit.

Helaas bleek in 2013 dat ook deze poging (nu genaamd django-hvad) niet toepasbaar was in bestaande systemen. Dat heeft ons er toe gezet om zelf met de ervaringen van onze voorgangers iets nieuws te realiseren. Heel simpel beginnen, en vooral geen complexe technieken gebruiken die integratie konden dwarsbomen. Dit bleek een succes!

Het zou alleen bedoeld zijn voor ons CMS, maar het bleek veel breder inzetbaar te zijn. Inmiddels is dit uitgegroeid tot een eigen Open Source project, django-parler, en wordt dat op diverse plekken gebruikt.

Zo ook voor onze klanten:

En hun reactie? Ze zijn enthousiast! "1 CMS waarin je een overzicht hebt alle talen. Dat heeft Cola-Cola niet eens", aldus Tjebbe Tjebbes van WakaWaka. "Ik heb toen onderzoek gedaan, en zij hebben per land een andere website, en een ander systeem". Als we willen, kunnen we zo een site voor een nieuwe taal realiseren!

Technisch geneuzel, e-mail overzetten

Hoe zet je email over van 1 Gmail account naar een andere? Dat lijkt een onmogelijke opgave. Toch is het best goed te doen, alleen moet je het even weten:

De eindgebruiker versie

  • Je activeert bij Gmail de optie voor IMAP.
  • Je voegt beide e-mail accounts toe aan een ouderwetse desktop email client. (bijvoorbeeld Mozilla Thunderbird)
  • Je sleept de inhoud per map naar de andere account.

Wel nu, wat doe je als je veel mappen hebt, en meerdere accounts wilt samenvoegen?

De techneuten versie

Er is ook een tooltje, die dat heel slim aanpakt. Het kan zelfs vertalingen omzetten (Bijvoorbeeld "Trash" wat in de andere account "Prullenbak" heet). Het kost even wat uitzoekwerk, maar als techneut kun je daar toch wat mee. Hierbij het commando om de email over te zetten van een Nederlandse naar Engelse GMail account:

imapsync --host1 imap.gmail.com --host2 imap.gmail.com --port1 993 --port2 993 --ssl1 --ssl2 --user1 EMAIL1 --user2 EMAIL2 --password1 PASS1 --password2 PASS2  --exclude 'Gmail' --regextrans2 's/Verzonden berichten$/Sent Mail/g' --regextrans2 's/Prullenbak$/Trash/' --regextrans2 's/Concepten$/Drafts/g' --exclude='\[Gmail\]$' --exclude 'Alle berichten' --exclude 'Belangrijk' --exclude 'Met ster'

sim-pel. Nouja, bijna dan. :-)
Deze tool heeft ons in ieder geval een hoop tijd bespaart!

DjangoCon EU 2013

Deze week wordt op DjangoCon Europe 2013 in Warschau gehouden. Er zijn 3 dagen met presentaties gehouden, en daarna 2 dagen samen werken aan het verbeteren van ons geliefde web framework. DjangoCon heeft dit jaar een bijzondere locatie waarop de conferentie plaatsvond:

 

We hebben zelf een korte presentatie gegeven van django-fluent CMS; het CMS wat we gebruiken voor projecten en ook op deze site gebruikt is.

Hier zijn de slides:

Vanaf vandaag is de documentatie van het CMS ook beschikbaar op django-fluent.org!

Goede backups

Backups, misschien wel het meest gehekelde punt in de IT. Dat roept ook een paar vragen op:

  • Is er een backup?
  • Kan je de backup terugzetten?
  • Hoe maak je die backup?

Vraag 2 lijkt een beetje gek om te stellen, maar sta er maar bij stil: als je niets kunt terugzetten, wat heb je dan? Een hoop willekeurige data. Maar geen backup.

Gelukkig bestaan hiervoor een paar handige oplossingen, die ook verschillende zaken kunnen backuppen. De database moet immers los een backup hebben, en alle bestanden van de website ook. Ons doel is simpel:

  • Databases voor iedere dag in de week kunnen terugzetten.
  • De gehele server compleet iedere dag backuppen.
  • Losse bestanden makkelijk uit een backup kunnen halen.

De gehele server zeg je? Ja. Als Apple ons 1 ding geleerd heeft met TimeMachine, is het wel dat je maar beter alles kunt backuppen, in plaats van een beetje. Je weet maar nooit waarvoor je het nodig hebt. Dankzij rsnapshot kan dit ook efficient; zo zijn van iedere dag wijzigingen van de server opgeslagen.

Afsluitend voor de techneuten onder ons, zijn er een paar zaken waar je je in kunt verdiepen: rsyncrsnapshotrdiff-backupduplicity, automysqlbackup en autopostgresqlbackup. Mocht je nog andere oplossingen kennen, dan horen we dat graag!

Django sprint in Utrecht

Er was een Django sprint in Utrecht. Hier waren we ook bij! Wat gebeurt er op zo'n sprint? Techneuten gaan samenwerken om allerlei vervelende bugs op te lossen in het framework waar ze allemaal graag mee werken: Django.

En wat levert dat op? Dat de nieuwe versie van Django het makkelijker maakt om websites te bouwen. Het was een leuke dag, en een mooie manier om kennis te maken met andere programmeurs! Volgende keer weer?