Article
0 comment

Agility in different domains

Agility

Working with agile processes is a best practice approach by now for the software development industry. It allows for small but fast steps towards a greater goal of a project or product vision. You could also apply agile thinking to research projects. Classical research is not that different from an agile process, nay? You take some small step, test a hypothesis, evaluate the result and continue with a next step.

Agility in science

But there is a fundamental difference in the concept of these processes: research allows to dismiss one or even several of the previous steps. In software development you normally don’t throw away the artifacts you built to move where you are now. For research to be agile it needs to be allowed to discard previous steps, or as Alfred North Whitehead said in “Adventures of ideas”:

A science that hesitates to forget its founders is lost.

It’s part of changing paradigms in the classical sense of Thomas S. Kuhn’s ideas in “The structure of scientific revolutions”.

There and back again

Having broadened the view on agility for research, let’s look back at software development. In agile sprints your teams makes decisions that will influence the path of the whole product. So you eventually make fast paced decisions whose effects will stay for a long time. Most software development teams are prepared to make quick technological decisions based on the problem at hand. They are normally not prepared to make estimates on the long term feasability of said decisions.

Take away

So you may accumulate technological debt even if you try to avoid. Take some pressure out of the technological decision making process by allowing for revision of architectural decisions. And last but not least establish a culture allowing to make errors. Because being under pressure to avoid errors and increase velocity makes developers susceptible for making errors. But this is a topic for another post.

Article
1 comment

Podcast Roll

Some time ago I was asked which podcasts I like and hear. There are a lot of them and I’m only listening to a few on a regular basis. This has something to do with my preferences when hearing. I don’t like long podcasts (more than 1 hour). So there are a lot podcasts of high quality that I listen to from time to time.

I tried to sort them roughly by topic and add small flags for the language of the podcast (german  or english  (I apologize for not being able to list an american and a british flag ;) ), so here we go.

Science and Science Communication

  • 2Scientists  Curious about the cosmos? Intrigued by evolution? Two scientists put their heads together to help answer your questions.
  • ABCoholics  Vier Themen aus Wisschenschaft und Gesellschaft. Innerhalb von 10 Minuten bringen wir’s auf den Punkt, den Blick immer auf das Wichtigste gerichtet. Einziges Kriterium für die Themenwahl: Der richtige Anfangsbuchstabe.
  • Ada Lovelace Day Podcast  Ada Lovelace Day is an international celebration of the achievements of women in science, technology engineering and maths which aims to increase the profile of women in STEM and create new role models for both girls and women studying or working in STEM.
  • Anekdotisch Evident  Katrin Rönicke und Alexandra Tobor färben graue Theorie mit persönlichen Erfahrungen ein. In jeder Folge unterhalten sie sich über ein Thema, das ihnen am Herzen liegt – so finden Anekdoten und wissenschaftliche Evidenz auf unterhaltsame Art zueinander.
  • Base Pairs  Cold Spring Harbor Laboratory’s Base Pairs podcast ​tells​ stories that ​convey​ the power of genetic information – past and present. Named among the 2018 Webby Awards’ “five best podcasts in the world” for the subjects of science and education.
  • Bold Signals  Behind every scientific innovation and discovery are the efforts of a diverse group of hard-working, dedicated people. Beneath every conversation about the structure, function, laws, and theories of science are people using their skill, knowledge, and creativity to make incremental advances to human knowledge. Between the lines of every scientific article, snippet of science reporting, and all scientific nonfiction are people boldly working against frustration, and uncertainty. From students, teachers, and professors of science, to technicians, administrators, and research assistants, to science researchers, communicators, and educators, to people who produce, consume, or apply science outside the laboratory- Bold Signals features interviews with the people involved in this wonderful, messy, awe-inspiring thing we call science.
  • Brain Science with Ginger Campbell  Brain Science was launched in 2006 by Dr. Ginger Campbell, an experienced emergency physician with a passion for exploring how recent discoveries in neuroscience are revealing how our brains make us who we are. This podcast is for non-scientists, scientists, and everyone in between. We interview scientists and discuss the latest books about the brain. Monthy episodes resume in June 2017, but all episodes posted since January 2013 are available for FREE in iTunes. Please visit our website for more episodes and transcripts.
  • Chemical Dependence  A podcast about the incredible chemistry that surrounds you. Weekly episodes featuring a new chemical compound each week.
  • Die 3 Formeltiere  Ungefähr einmal im Monat ziehen Florian (Astronom), Franzi (Bioinformatikerin) und Jojo (Informatiker) aus Jena ihre Lieblings-Onesies an und diskutieren ausschweifend-wissenschaftlich über ihre Lieblingsformeln und -strukturen.
  • ExploreAStory  A podcast about museums, science and storytelling, hosted by Emily Graslie. ExploreAStory is supported by the Field Museum in Chicago, Illinois.
  • Forschergeist  Moderator Tim Pritlove spricht mit Wissenschaftlern und anderen Aktiven des Wissenschaftssystems über aktuelle und zukünftige Trends und Praktiken für die Bildung, der Forschung und der Organisation und Kommunikation der Wissenschaft. Die ausführlichen Interviews wenden sich vor allem an junge und angehende Wissenschaftler, die nach Möglichkeiten suchen, ihre Forschung und Lehre den neuen Bedürfnissen der Zeit anzupassen und weiter zu entwickeln. Forschergeist ist ein Projekt des Stifterverbands für die Deutsche Wissenschaft und erscheint im Schnitt alle drei Wochen neu.
  • Good Night Stories for Rebel Girls  A fairy tale podcast about the extraordinary women who inspire us. This show is based on Good Night Stories for Rebel Girls, the global best-selling book series written by Elena Favilli and Francesca Cavallo, inspiring millions of girls and women around the world to dream bigger, aim higher and fight harder.
  • Open Science Radio  Das Open Science Radio ist ein unregelmäßig erscheinender Podcast von Matthias Fromm, der sich mit dem Thema Open Science in seinen vielseitigen und -schichtigen Aspekten beschäftigt – von Open Access über Citizen Science und Open Data bis hin zu Öffentlicher Wissenschaft und Open Education. Dieser Podcast soll ein grundlegendes Verständnis schaffen, vor allem aber auch über aktuelle Entwicklungen informieren.
  • People Behind the Science Podcast  Dr. Marie McNeely, featuring top scientists speaking about their life and career in science! Featuring experts in neuroscience, physics, chemistry, biology, life sciences, natural sciences, science, science policy, science communication, open journals, and more! Inspired by other scietists, Bill Nye, StarTalk, Neil deGrasse Tyson, Brain Science, Radiolab, Science Friday, Carl Sagan, grad student, post doc, Ted, Tedx, cosmos, and more.
  • Publish, Perish or Podcast  Take a look behind the scenes of science. Join three researchers as they discuss the issues and topics behind modern research and share funny stories from their lives as scientists.
  • Science Communication with Dr. Mike  Hi everyone and welcome to SciComm, your number one stop for science communication. Join me, Dr. Mike, every week where I’ll be talking to a new guest about their experiences in the scientific world. This may include PhD students, science communicators, industrial scientists or those simply interested in discussing the latest scientific news.
  • Science for Societal Progress  academia, the sciences, and their intersections with society, and governance.
  • Science Friday  Brain fun for curious people.
  • Sternengeschichten  Das Universum ist voll mit Sternen, Galaxien, Planeten und jeder Menge anderer cooler Dinge. Jedes davon hat seine Geschichten und die Sternengeschichten erzählen sie. Der Podcast zum Blog “Astrodicticum Simplex”.
  • The Collapsed Wavefunction  The Collapsed Wavefunction is a podcast to talk about chemistry and demystify the scientific process. Hosted by Chad Jones (PhD candidate, Physical Chemistry), Sam Matthews, (MSc Organic Chemistry), and Dorea Reeser (PhD, Environmental Chemistry). New episodes every other week.
  • The GeekGirlWeb Show  The GeekGirlWeb Show is tech meets creativity, entrepreneurship and passion. We breakdown the barriers to learning and self-development. This is life as version control. Hosted by Rebecca Garcia, self-taught developer, speaker and STEM education advocate. Her purpose is to empower people through technology.
  • The Life Scientific  Professor Jim Al-Khalili talks to leading scientists about their life and work, finding out what inspires and motivates them and asking what their discoveries might do for mankind.
  • Transistor  Transistor is podcast of scientific curiosities and current events, featuring guest hosts, scientists, and story-driven reporters. Presented by radio and podcast powerhouse PRX, with support from the Sloan Foundation.
  • Undiscovered  A podcast about the left turns, missteps, and lucky breaks that make science happen.
  • WRINT: Wissenschaft  Worin Holger Klein und Florian Freistetter ohne wissenschaftlichen Anspruch über Wissenschaft plaudern.
  • ZellKultur  @_adora_belle_ und @moepern erklären euch die Biologie. Vom Einzeller bis zum Homo Sapiens.

Technology, Data Science, Computers and Software Development

  • audiodump  Malik, Johnny, Axel und Flowinho reden über Macs, Hacks und anderes Techzeug.
  • CaSE  CaSE is an interview podcast for software developers and architects about Software Engineering and related topics. We release a new episode every three weeks.
  • Coding History  Eine Softwareentdeckungsreise zu Anfang und Gegenwart digitaler Kultur. Weltaneignung ohne Software ist mittlerweile unvorstellbar – aber wie ist sie entstanden und wie hat sie sich seither verändert? In Gesprächen und Reportagen versucht sich dieser Podcast an der Ent-Mystifizierung digitaler Artefakte.
  • Data Crunch  Whether you like it or not, your world is shaped by data. We explore how it impacts people, society, and llamas perched high on Peruvian mountain peaks—through interviews, inquest, and inference. We talk to interesting people doing intriguing things with data, artificial intelligence, machine learning, data science, and all things revolving around them.
  • Data Science Imposters Podcast  Explore data science, analytics, big data, machine learning as we discuss these topics. Join us on our journey.
  • Developer Tea  Developer Tea exists to help driven developers connect to their ultimate purpose and excel at their work so that they can positively impact the people they influence. With over 7 million downloads to date, Developer Tea is a short podcast hosted by Jonathan Cutrell (@jcutrell), CTO at Whiteboard. We hope you’ll take the topics from this podcast and continue the conversation, either online or in person with your peers.
  • Greater Than Code  A podcast about humans and technology. Brought to you by @therubyrep.
  • import this  Ein Podcast über die Programmiersprache Python, ihre Community, ihre beigelegten Batterien, Erweiterungen, ihre Frameworks und das ganze PyUniversum.
  • Mastermind.fm  Join James Laws from WP Ninjas and Jean Galea from WP Mayor as they discuss the trials and tribulations on building a WordPress business. Learn how to go from freelancing to building a business, managing employees, growth hacking and more.
  • Mein Scrum ist kaputt  Scrum kann doch inzwischen eh jeder? Von wegen! Denn – ganz unter uns: genug falsch machen kann man ohne Probleme. Daher möchten wir über Stolpersteine sprechen, über Smells und unsere Erfahrungen mitteilen. Wir, das sind Sebastian Bauer und Dominik Ehrenberg.
  • PHPUgly  The podcast your mother warned you about. Ramblings of a few overworked PHP Developers. Hosted By @shocm, @realrideout, and @johncongdon.
  • Python Bytes  Python Bytes is a weekly podcast hosted by Michael Kennedy and Brian Okken. The show is a short discussion on the headlines and noteworthy news in the Python, developer, and data science space.
  • Self-hosted Web  The podcast showcasing and discussing software to host on your own server or webspace, including interviews with creators and maintainers, tips and tricks and other fascinating tidbits.
  • Syntax – Tasty Web Development Treats  Full Stack Developers Wes Bos and Scott Tolinski dive deep into web development topics, explaining how they work and talking about their own experiences. They cover from JavaScript frameworks like React, to the latest advancements in CSS to simplifying web tooling.
  • t3n Podcast  m t3n Podcast sprechen die t3n-Chefredakteure Luca Caracciolo und Stephan Dörner in kompakten Episoden von 30 bis 45 Minuten Länge mit wechselnden Gästen über New-Work, E-Commerce, digitales Marketing, die Startup-Szene und die digitale Transformation in Wirtschaft und Gesellschaft.
  • Talk Python To Me  Talk Python to Me is a weekly podcast hosted by Michael Kennedy. The show covers a wide array of Python topics as well as many related topics (e.g. MongoDB, AngularJS, DevOps).The format is a casual 45 minute conversation with industry experts.
  • The Bike Shed  On The Bike Shed, hosts Derek Prior, Sean Griffin, and guests discuss their development experience and challenges with Ruby, Rails, JavaScript, and whatever else is drawing their attention, admiration, or ire this week.
  • TWiML&AI (This Week in Machine Learning & Artificial Intelligence)  This Week in Machine Learning & AI is the most popular podcast of its kind. TWiML & AI caters to a highly-targeted audience of machine learning & AI enthusiasts. They are data scientists, developers, founders, CTOs, engineers, architects, IT & product leaders, as well as tech-savvy business leaders. These creators, builders, makers and influencers value TWiML as an authentic, trusted and insightful guide to all that’s interesting and important in the world of machine learning and AI. Technologies covered include: machine learning, artificial intelligence, deep learning, natural language processing, neural networks, analytics, deep learning and more.
  • Toolsday  Toolsday is a 20-ish-minute podcast hosted by Una Kravets & Chris Dhanaraj. Toolsday is about the latest in tech tools, tips, and tricks on Tuesdays at 2! (Our alliteration game is so strong).

Business

  • Freelancer Podcast  Interviews, Stories & praktische Tipps für deinen Freelancer Alltag. Yannick und Lukas sprechen mit Freelancern über ihre Anfänge, Kundenakquise, Erfolge, Niederlagen und den ganz normalen Wahnsinn des Freelancer Alltags.
  • FRICTION with Bob Sutton  Part organizational design. Part therapy. Organizational psychologist and Stanford Professor Bob Sutton is back to tackle friction, the phenomenon that frustrates employees, fatigues teams and causes organizations to flounder and fail. Loaded with raw stories of time pressure, courage under ridiculous odds and emotional processing, FRICTION distills research insights and practical tactics to improve the way we work. Listen up as we take you into the friction and velocity of producing made-for-TV movies, scaling up design thinking, leading through crisis and more. Guests include Harvard Business School historian Nancy Koehn, Eric Ries of Lean Startup fame, and restaurateurs Craig and Annie Stoll; as well as academic leaders from Stanford University and beyond. FRICTION is a Stanford eCorner original series.
  • Führung auf den Punkt gebracht  In Bernd Geropp‘s Podcast dreht sich alles um Führung: Unternehmensführung, Mitarbeitermotivation, Leadership und Strategie auf den Punkt gebracht. Kein Beraterdeutsch oder Konzerngeschwätz sondern Inspiration, Tipps und Impulse für Führungskräfte, Manager und Unternehmer. Der Geschäftsführercoach spricht Klartext über Unternehmensstrategie, nachhaltige Führung, Zeitmanagement, Delegieren, Vision und Ziele. Wie bekommen Sie ein engagiertes Team und motivierte Mitarbeiter? Wie bringen Sie Ihre Unternehmensvision und Ihr operatives Tagesgeschäft in Einklang?
  • Leben – Führen  Führen. Die wohl wichtigste Tätigkeit in unserer heutigen Berufswelt. In diesem Podcast geht es um führen, Führung, um Wirksamkeit, um Ergebnisse. Und um Spaß dabei zu haben denn all das ist nur Teil von etwas größerem: Von Ihrem Leben, liebe Führungskraft! Wie das zusammen passt? Hören Sie doch einfach rein.
  • Indiedotes Podcast  Stories of indie creators
  • Pursuit Podcast  The Pursuit Podcast offers advice and new perspectives on getting things done in tech through half hour conversations with tech’s great thinkers each week. Want to learn to code? Land that great new job? Learn about how to manage your new reports? We’ve got you covered. This weekly podcast and carefully curated resources aims to leave you inspired and prepared to tackle that cool new thing.
  • Work in Progress  Behind every working human, there’s a story. Work in Progress is a new show about the meaning and identity we find in work. Each week, hear stories of personal ambition and debilitating insecurities, great successes and abject failures, the plans we make and the luck that…happens. Hosted by Dan Misener, produced by Slack. Follow along @slackstories or slack.com/podcast

History and Culture

  • 2debate  12 minute Oxford style debating – engaging, fun and interesting short form arguments on contemporary issues…
  • Anerzählt  Ein täglicher 5-10 minuten langer Beitrag zum Staunen und Wundern. Teil-experimentell.
  • Breitband – Medien und digitale Kultur  Magazin für Medien und digitale Kultur, immer samstags 13:05 im Deutschlandfunk Kultur
  • Dan Snow’s HISTORY HIT  History! The most exciting and important things that have ever happened on the planet! Featuring reports from the weird and wonderful places around the world where history has been made and interviews with some of the best historians writing today. Dan also covers some of the major anniversaries as they pass by and explores the deep history behind today’s headlines – giving you the context to understand what is going on today. Join the conversation on twitter: @HistoryHit
  • Das geheime Kabinett  In geheimen Kabinetten landete früher alles, was man in Museen der Öffentlichkeit vorenthalten wollte, weil man es für zu anstößig hielt. Dieser Podcast erzählt Skurriles, Witziges und Unglaubliches, was es nicht in die regulären Geschichtsbücher geschafft hat.
  • Die kleine schwarze Chaospraxis  Ein prozessorientierter Podcast. Ninia LaGrande und Denise M’Baye lassen es fließen, im perfekten Imperfektionismus. Ninia LaGrande ist Autorin, Slam-Poetin und Moderatorin und lebt im Internet und in Hannover. Sie ist Teil der Lesebühne „Nachtbarden“ und wurde mehrfach ausgezeichnet, u.a. mit dem Kabarett-Nachwuchspreis „Fohlen von Niedersachsen“ und als „Kreativpionierin Niedersachsens“. Ihr Buch „… Und ganz, ganz viele Doofe!“ erschien im August 2014. http://www.ninialagrande.de/ Denise M’Baye ist Schauspielerin und Sängerin. Sie hat zwei Soloalben veröffentlich und war Gastsängerin u.a. bei “Pee Wee Ellis“ und der „Jazzkantine”. Seit vielen Jahren ist sie mit dem Worldmusikprojekt „Mo’Horizons” weltweit live unterwegs. Als Schauspielerin ist sie seit 2009 im Cast in der erfolgreichen deutschen Serie “Um Himmels Willen“ und in anderen Film und Fernsehproduktionen zu sehen. Sie arbeitet auch als Sprecherin und Moderatorin. http://www.denisembaye.de
  • Durch die Gegend  Interviews mit Musikern, Schriftstellern, Künstlern und Philosophen finden viel zu oft in sterilen Hotellobbys oder öden Büros statt. Man sitzt sich den Hintern platt und knabbert trockene Kekse. Also sagt sich der Kölner Radiojournalist Christian Möller: Rausgehen! Rumlaufen! Reden! An Orten, die mit den Interviewpartnern zu tun haben: Wohnviertel, Geburtsstadt, Lieblingsplatz. Denn die guten Gedanken kommen im Gehen.
  • In trockenen Büchern  Sachbücher gelten als trockene, oft schwer zu bewältigende Lektüre. Zu Unrecht! Autorin Alexandra Tobor pickt die Rosinen aus den Wissensbuchregalen und fasst deren Inhalt aus ihrem persönlichen Blickwinkel in 20-minütigen Podcast-Episoden zusammen.
  • Kiezrekorder  Wer ist der Mann, der jeden Tag an der nächsten Straßenecke sitzt? Wohnt neben mir eine berühmte Künstlerin? Und welchen Zugang hat der blinde Musiker von nebenan zu seinem Schaffen? Im “Kiezrekorder” porträtieren Nicolas Semak und Christoph Michael Menschen der Großstadt, die ihnen auffallen und die alle etwas Besonderes tun. Ganz alltäglich. Der Kiezrekorder bietet noch eine Besonderheit: Zu jeder Folge gibt es zusätzlich eine Audio-Slideshow mit Fotografien.
  • Systemfehler  In dem Podcast “Systemfehler” geht Christian Conradi dem Defekt auf den Grund. Wieviel Platz haben Fehler, Defekte und Abweichungen in einer Gesellschaft, die in sämtlichen Bereichen nach Perfektion strebt? Projizieren wir die vermeintliche Plan- und Steuerbarkeit, die wir mit Technologie erreichen, zunehmend auch auf uns? Wie gehen wir mit Fehlern um? “Ich will die Vielfalt des Zufalls untersuchen und die Abweichung vom Normalwert erforschen. Kurz gesagt: Ich will Geschichten über den Defekt erzählen”, verspricht Christian. Unterhaltsam, lehrreich, akustisch bunt und kurzweilig.
  • Young in the 80s  Young in the 80s ist ein Audio-Podcast über die Zeit, in der die heute 30-jährigen groß geworden sind: die 80er-Jahre. Die Brüder Christian und Peter Schmidt gehen auf Erinnerungsreise zu den Fernsehsendungen, Filmen, der Musik und Mode, dem Spielzeug und den Alltagsthemen, die das Wesen dieser Generation geprägt haben. Warum war Knight Rider die beste Fernsehserie der Welt? Warum hören Zigtausende auch heute noch „Die drei Fragezeichen“, aber niemand mehr „Arborex und der Geheimbund KIM“? Wie kann es sein, dass irgendwer jemals Modern Talking gut gefunden hat? Wer in den 80ern aufgewachsen ist, muss diesen Podcast hören – und wer nicht, der lernt durch uns ein Jahrzehnt kennen, das von den Massenmedien geprägt wurde wie kein zweites.
  • Zeitsprung  Zeitsprung ist ein Podcast, in dem vergessene Ereignisse, überraschende Anekdoten und Zusammenhänge der Geschichte in kurzen Episoden erzählt werden. Häufig mit ein ganz bisschen Augenzwinkern – aber immer kompetent, knallhart und quellennah recherchiert.

Cooking and Eating

  • genusscast  Ein Podcast über den Genuss
  • WDR 2 Jetzt Gote!  Er ist der universelle Küchenhelfer: WDR 2 Feinschmecker Helmut Gote gibt wertvolle Tipps rund ums Kochen – von praktischen Hilfsmitteln bis zu exotischen Zutaten.
  • WDR 5 Alles in Butter  Alltagsrezepte und Luxustipps zum Genießen: Helmut Gote und Uwe Schulz nehmen kulinarische Zeitschriften unter die Lupe. – Im Studio: Moderator Uwe Schulz und Genussexperte Helmut Gote.
Article
7 comments

How to install dependencies from a requirements.txt file with conda

Just a little reminder: pip has this very useful option to install a bunch of packages from a single text file mostly called requirements.txt. Anaconda’s command line tool conda doesn’t support this option directly. It does support reading the package names from a file using the –yes and –file option

conda install --yes --file requirements.txt

but that does not automatically install all the dependencies. To do this, we need to iterate over the file and install each package in “single package mode”:

while read requirement; do conda install --yes $requirement; done < requirements.txt

Thanks to Luis Capelo for this snippet which I use to install dependencies in a dockerized instance of Anaconda / Jupyter (more on that in a later post).

Article
0 comment

Docker automation for PHP Developers using Python

Introduction

This posting will deal with using Docker on the developer desktop. I will not talk about deploying these containers to other stages of the track to production. Maybe this is a topic for a follow-up by me or by someone who is more apt with all things devops.

All this started when I realized, that docker-compose.yml needs an absolute path on the host for its shared volumes. This is OK but when you would like to have multiple development setups for multiple projects. What I wanted was a single config file to rule a complete set of Dockerfile and docker-compose.yml files. And a comandline tool to manage that environment without the need to juggle around with several other tools and numerous options and flags.

An intermediary state consisted of a Makefile with several shell scripts for all the stuff that was hard to do in Makefiles. It worked but was a bunch of files. I wanted something cleaner with more possibilities for the future and fewer helper files.

So here it is: a Python file to rule them all (sorry for the pun …) and build Dockerfile and docker-compose.yml from templates and a config.yml file when booting up the environment. The repository is here: https://github.com/vgoebbels/docker-php7

What you get

  • An Apache running PHP7.1 on http://localhost with document root (/var/www/html) as a shared volume in the www subdirectory
  • A MySQL database connected to that PHP container
  • A PHPMyAdmin listening on http://localhost:8080

Usage

  1. Check out from the Github repo above. Don’t mind the actual path to your environment. This will be determined and inserted into the docker-compose.yml file by the Python script.
  2. Install the required Python modules with
    pip install -r requirements.txt
  3. Have a look at the templates in the templates subfolder
  4. Edit the configuration options in config.yml
  5. Boot the setup using
    ./dockshell up
  6. Have a look at the running containers with
    ./dockshell status

What doesn’t work yet

Using ./dockshell sshweb and ./dockshell sshsql to log into the running containers. Was not able to enter interactive mode. You will have to use:

docker container exec -it <CONTAINERNAME_HERE> /bin/bash

Caveats

  • ./dockshell clean removes all containers and images. And I mean all of them. This needs to be fixed!

 

Article
1 comment

Note to self: bash path hashing /o\

Did you ever stumble across something like this:

Yes, this is strange, isn’t it? The PATH variable is set in the correct order (this is why ‘which’ finds the local Python). Googling about this behavior at first didn’t bring up any solution. But then I came across this now closed question on Stackoverflow.

So once you know what you are looking for Google reveals lots and lots of people having trouble with path hashing. Now, my solution was quite simple:

~ $ type python
python is hashed (/usr/bin/python)
~ $ hash -t python
/usr/bin/python
~ $ hash -d python
~ $ hash -t python
-bash: hash: python: not found
~ $ which python
/usr/local/bin/python
~ $ python --version
Python 3.5.3

PS: To clear the complete bash path cache just use “hash -r”.

Article
0 comment

Assholes and code of conduct manifests

Recently someone pointed out, that the perceived number of assholes is rising. This means, that anti-social behavior can be encountered more often. I responded that there seems to be some sort of sociological mechanism leading to anti-social behavior being more accepted than before.
Someone else asked what that mechanism might be, so here is my amateurish point of view.
Social interaction often is accomplished by communication. So examining forms of anti-social or disruptive communicational behavior might help to clarify some points. One form of disruptive communication is the so called “interactive vandalism” (Anthony Giddens, Sociology). Giddens points out, that effective communication or interaction is based on a cooperative behavior of the participants. If one party of an interaction deliberately behaves in a non-cooperative way, this often is encountered as a aggressive attitude by the other participants. But this is a stylistic device, not an explanation.
Another perspective is that of Erving Goffman‘s “The Presentation of Self in Everyday Life“: people behave as if they were acting. And like in a theater there is a stage and a backstage area. In the front region (stage) they act mostly according to common sense rules. In the back region (backstage) they can “give vent to feelings and styles of behavior they keep in check when on stage”. So acting more anti-social might mean transferring behavioral patterns from back to front.
In traditional social settings this would in general have been a completely unacceptable behavior, but why is it not judged that way now? There is a general process at work transferring the private into the public. Reality shows on TV, social media, liberalization of professional situations. Don’t get me wrong: I don’t judge those processes, but if not backed by a so called “good education” things can go wrong unnoticed. If this happens and some sort of “invisible control” doesn’t come into effect, openly visible regulation is a way to prevent unwanted situations.
An area where this currently happens are public conferences. More and more conference hosts issue code of conduct manifests. I got into some serious discussions because I objected that these rules are pretty obvious and stating them so explicitly might be sort of embarrassing for “well-behaved visitors”. Conference organizers assured me that these rules are not so obvious anymore. Maybe in the future we’ll see explicitly stated rules for human interaction more often. While being liberated from unnecessarily rigid forms of social behavior is a good thing, this feels like a cultural loss to me. But than again I just might be getting old.

Article
0 comment

How to read in a statistic whatever you want

Professor at chalkboardIt’s a common place that you can read nearly any result you want from a statistic. You just have to optimize your mathematical model or cut short the reasoning about the data. There is currently a JAMA publication from the American Medical Society which is cited in many magazines and newspapers (even in German Spiegel) as “22% less risk of colorectal cancer for vegetarians”. No ordinary reader of these reviews will have a look at the original numbers in the publication since it is not freely available (yet another reason for open Publication …). But here they are:

  • Vegetarian participants: 40367
    Cancer cases: 252
  • Nonvegetarian participants: 37292
    Cancer cases: 238

This makes for the following relative case numbers:

  • Vegetarian: 0,624 / 100 participants
  • Nonvegetarian: 0,638 / 100 participants

Or a difference of 0,014 cases per 100 people. This means, if you eat meat your risk to come down with a form of colorectal cancer increases by 0,014 percent. This reads quite different, doesn’t it?

Article
0 comment

Sense and Sensibility of enterprise IT policies

From time to time I come across a sort of dispute or even sometimes war at companies of every size: the central IT department tries to impose a certain hardware or software policy on the coworkers they are entitled to take care of.

Every time this happens there are discussions of BYOD vs. company owned devices. The IT departments claim that they can’t guarantee a certain service level, when they don’t have access to the resources used by the coworkers. The supporters of BYOD argument that using their own chosen hard- and software augments productivity and satisfaction.

I have to confess that I’m a strong campaigner for using my own devices and software at work. But to get some insight into this topic we need to separate different requirements determined by the type of job the employees do:

  1. Office workers need to get things done. With standard tools. They often are happe to have someone to call if things don’t work like expected or needed.
  2. Software engineers use their (mostly) laptops to build software. They need some control over the environment they work in. Libraries, databases, IDEs, operating systems. They choose the tools hat get the job done. When things don’t work they are able to fix problems by themselves.

These two roughly separated requirement profiles are opposed by two sorts of enterprise environment:

  1. Proprietary systems and protocols chosen by the IT departments because they know these systems very well and know how to get support from the provider. Things in this category may contain: Microsoft products (Windows, Exchange, …) or enterprise groupware systems like Novell Groupwise, Lotus Notes etc.
  2. Open protocols and services offer similar options but with a different type of maintenance.

Both approaches require nearly the same amount of maintenance but of different types. Proprietary systems often offer poor support to clients offside of the mainstream. For example have you ever tried to connect an Apple laptop to a Novell file share? Don’t try. You’ll get mad about getting the right client tools, software incompatibilities and stuff like that.

So there is a natural match for BOYD environments: use standardized protocols and services like NFS, SMB (which both have their origin in proprietary systems …) or mail protocols like SMTP and IMAP.

If your users would like to work without tinkering with software or services: use a centralized management system. This doesn’t naturally contain closed source and proprietary tools. But often it does.

For a company with technologically apt users it’s better to adopt the BOYD way to maximize productivity and user satisfaction. The latter often is no valid point with IT service departments. Then it’s the job of the people whose job it is to provide a suitable working environment for happy colleagues to make the service departments to work they way they are supposed to work.

This seems to be a particular problem in Germany where I often enjoy contact to IT service departments featuring a very self-centric philosophy. The notion of being a service department to help others do their job is not very popular.

Several studies show that companies are seen as more attractive to new employees when they allow BYOD policies.

On the other hand there are security considerations to be taken into account. But I don’t know of any company owned system that prevents willful or even lazy security breaches.

Article
3 comments

Adding a proxy to the Atom editor config on Windows

Atom-Logo Reading the user forum discussions about proxy configuration for atom can be a bit misleading for users on Windows. Suppose you’re running a recent Windows version. Suppose you’ve installed atom. Suppose you found out that the binary lives in

C:\Users\\AppData\Local\atom\app-1.0.2\atom.exe

(version number can be different …)
and suppose you are situated behind a corporate firewall/proxy which prevents you from installing packages and updates.
Looking around you can find postings specifying what to write into your .apmrc config file (which is the config of apm, the atom package manager). Now you look for that file and find it in

C:\Users\\.atom\.apm\.apmmrc

Every time you try to write some config to that file, it will be deleted, as it is autogenerated (just as the comment in the file says …).
The file, you are looking for probably is not existant yet. Just create one named

C:\Users\\.atom\.apmrc

and put in the following content:

https-proxy = http://:
http-proxy = http://:
strict-ssl = false

Replace and with your values. Save the file, restrt atom and you’re done. Seems hard to distibuish .atom.apmrc and .atom.apm.apmrc some times …

Article
0 comment

How to create OpenVPN config files for Witopia

I use a Dell laptop with Ubuntu 15.04 and the VPN NetworkManager seems to be sort of broken. So I guessed I just resort to plain old OpenVPN Config files. And since I’m a very lazy guy I wanted to have some sort of script generating all that stuff for me. First of all you need a prototype template for the config file. There is one that comes with the downloadable zip from Witopa and is called “SampleConfig.txt”. Copy that to “prototype.txt” and change the line

remote [REPLACE WITH SERVER NAME] 1194

to

remote SERVERNAME 1194

Our script will later on replace the “SERVERNAME” with the actual Witopia VPN server names. In the directory where “prototype.txt” lives, create a subdirectory and put the crypto files from the Witopia zip in. These are: ca.crt, ta.key, USERNAME.crt, USERNAME.key. “USERNAME” will be your username (think you guessed that :)
Now create in the prototype directory a file called “createConfigs.sh” with the following content:

#!/bin/bash

rm -f data/*.ovpn

serverlist=`curl -s https://www.witopia.net/?faq-item=openvpn-ssl-gateway-locations | sed -e "s/<[^>]*>//g" | egrep "^vpn"`

for server in $serverlist;
do 
  filename=data/`echo $server | cut -d . -f 2 - | sed 's/\([a-z]\)\([a-z]*\)/\U\1\L\2/g'`.ovpn;
  echo "Generating $filename";
  cat prototype.txt | sed "s/SERVERNAME/$server/g" > $filename
done

Line 3 cleans up the data directory for the files to come. Line 5 grabs the web page with the VPN server pages from Witopia.net, eliminates the HTML stuff via sed and greps lines starting with “vpn”. Then we loop through the server list and create an OpenVPN config file in data/ for each server, named “City.ovpn”. First we need to build the filename by grabbing the second field of the server name like “vpn.munich.witopia.net”. We cut the city name out and capitalize the first character. This is my personal preference, you can just leave it lower case if you like. Last part is replacing “SERVERNAME” with the actual server naame via sed and putting it in a file with the freshly created name. Thats it.

But if you are as lazy as me you also would like to have a start script which only needs the name of a city to connect you. Here we go:

#!/bin/bash

city=`echo $1 | sed "s/\.ovpn//g" | tr '[:upper:]' '[:lower:]' | sed 's/\([a-z]\)\([a-z]*\)/\U\1\L\2/g'`
filename="$city.ovpn"

if [ -e "$filename" ]
then
  echo "Starting OpenVPN with $city"
  sudo openvpn --client --config $filename --ca ca.crt
fi

This script called “start.sh” resides in the data/ directory takes one argument: the name of a city or of a *.ovpn config file. So valid start script calls are:

./start.sh munich
./start.sh Munich
./start.sh MUNICH
./start.sh munich.ovpn
./start.sh Munich.ovpn
./start.sh MUNICH.ovpn

As you can see line 3 of the script cuts out the city name, casts all characters to lower case and capitalizes the first character. Then we (re-)add the extension “.ovpn” in line 4 and if there is a config file with that name we start the openvpn client. We need to do that as root user so you problably will need to enter your root password when the openvpn is sudoed.

Thats it, folks. Happy networking :)