Blog

  • Celery Worker wide configuration

    Celery is a distributed task execution environment for Python. While the emphasis is on distributed in this software, the concept of having workers allows for settings beyond the individual task. While the first rule of optimisation is “don’t”, sharing database connections is a low hanging fruit in most cases. And this can be configured per worker with Celery provided signals. To create a database connection for individual worker instances, leverage these signals to create the connection when the worker starts.

    This can be achieved leveraging the worker_process_init signal, and the corresponding worker_process_shutdown signal to clean up when the worker shuts down.

    The code should obviously be picked up at worker start, hence the tasks.py file will be a good location to keep these settings.

    Example tasks.py:

    from celery.signals import worker_process_init
    from celery.signals import worker_process_shutdown
    
    app = Celery('tasks', broker=CELERY_BROKER_URL)
    db = None
    
    @worker_process_init.connect
    def init_worker(**kwargs):
      global db
      log.debug('Initializing database connection for worker.')
      db = sqlite3.connect("urls.sqlite")
    
    @worker_process_shutdown.connect
    def shutdown_worker(**kwargs):
      global db
      if db:
        log.debug('Closing database connectionn for worker.')
        db.close()
    

    The example above opens a connection to a sqlite3 database, which in itself has other issues, but is only meant as an example. This connection is established for each individual worker at startup.

  • Digitalisierung – Die den Code der Welt von morgen schreiben

    Welche Verantwortung tragen Softwareentwickler für die gesellschaftlichen Veränderungen, die sie vorantreiben? Die Antwort ist komplexer, als es der Mythos vom Programmierer als Rockstar erscheinen lässt.

    Auch die Süddeutsche greift das Thema der moralischen Verantwortung von Programmierern auf. Teil des Problems ist, dass die Profession – der Wahrnehmung des Authors nach jedenfalls – als rein technische Tätigkeit wahrgenommen wird. Vergleichbar des Berufs eines Maurers und weniger der eines Architekten oder Bauingenieurs.

    Tatsächlich versetzt die Digitalisierung aber jeden in die Position, mit äusserst abstrahierten Programmiersprachen, die teilweise mehr schon menschlicher Sprache ähneln, einen Beitrag zur weiteren Digitalisierung zu leisten. Webservices oder Chatbots zu programmieren ist mit detaillierten Anleitungen einfach zu erlernen und Schritt für Schritt auch dem Laien nachvollziehbar. Viele der zu Betrieb notwendigen Services sind kostenfrei erhältlich.

    Es gibt gewissermaßen keine Einstiegs-Hürde. Weder in der Ausbildung noch finanziell. Diese technische Ermächtigung der Gesellschaft und die Lücke in der Wahrnehmung ist zu einem erheblichen Teil auch der Demographie geschuldet, so finden sich unter Digital Natives kaum über 40-Jährige.  Genauso wie sich unter Konzernlenkern kaum unter 40-Jährige finden.

    Und so ist die Tätigkeit des Programmierens nicht länger dem Programmierer – mit einem Diplom von 1995 – vorbehalten, sondern in der Breite der Gesellschaft angekommen. Phänomene wie 4Chan oder Anonymous entstehen aus dieser technischen Möglichkeit, entkoppelt von moralischen Richtlinien. Dort werden Beiträge erzeugt, die tatsächlich ethische und moralische Fragestellungen aufwerfen.

    Es werden nicht Regeln von heute sein, die das Zusammenspiel der Gesellschaft in Zukunft regelt, die kommende Generation wird im Internet neue Regeln für den Umgang miteinander finden.

    Source: Digitalisierung – Die den Code der Welt von morgen schreiben

  • New Years Resolution

    New Years resolutions follow the same procedure as every year.

    It’s “write more” this year again. Things noteworthy today include my appointment to the IEEE R8 Committee, in particular to the “Action for Industry” committee.

    A similar position existed until two years back, when it was still called the “Industry Relations Subcommittee”. Outreach to industry is of particular focus for IEEE for a while already, while the committees recruit themselves from volunteers. One of the reasons this exists is that IEEE has a (felt?) dominance of academia in it’s membership, or at least in the active volunteer base.

    And in 2017 it will be my honor to contribute in this role and change the world toward the better.

     

  • Python Release Python 3.6.0 

    Oh, Python 3.6 was released one day before Christmas. New features include:

    • PEP 468, Preserving Keyword Argument Order
    • PEP 487, Simpler customization of class creation
    • PEP 495, Local Time Disambiguation
    • PEP 498, Literal String Formatting
    • PEP 506, Adding A Secrets Module To The Standard Library
    • PEP 509, Add a private version to dict
    • PEP 515, Underscores in Numeric Literals
    • PEP 519, Adding a file system path protocol
    • PEP 520, Preserving Class Attribute Definition Order
    • PEP 523, Adding a frame evaluation API to CPython
    • PEP 524, Make os.urandom() blocking on Linux (during system startup)
    • PEP 525, Asynchronous Generators (provisional)
    • PEP 526, Syntax for Variable Annotations (provisional)
    • PEP 528, Change Windows console encoding to UTF-8
    • PEP 529, Change Windows filesystem encoding to UTF-8
    • PEP 530, Asynchronous Comprehensions
     Merry Christmas everyone!

    Source: Python Release Python 3.6.0 | Python.org

  • Offenbar ist der Grund für den gestrigen und heutigen Ausfall der Telekom: ein bekannter Bug in TR069. Es gibt offenbar auch ein Metasploit Modul dafür.

    Source: Port 7547 SOAP Remote Code Execution Attack Against DSL Modems – SANS Internet Storm Center

  • The Practical Dev auf Twitter: "Chapter 1: Databases with cool-sounding names https://t.co/b2JInDApCn"

    There is always that one guy in the development department, that knows that one database that’s the coolest|smartest|sexiest technology on planet earth. It scales, has best read and write performance and lowest latency and whatever. For an use case of 2000 rows.

    The practical dev nails it:


    Update: Apache Cassandra – WAT – Cassandra: Row level consistency #$@&%*!

  • The code I’m still ashamed of

    The following came through my timelines a few days back. A guy feels guilty for what he did – as a programmer – when he was young. Basically he built a promotional website for a questionable medicaments. Apparently the drug has side effects of depression and suicidal thoughts. Only after his sister was prescribed the same medicaments, his conscience made him quit what he was doing.

    If you write code for a living, there’s a chance that at some point in your career, someone will ask you to code something a little…

    Source: The code I’m still ashamed of

    Also, the author writes the following:

    As developers, we are often one of the last lines of defense against potentially dangerous and unethical practices.

    It’s a pretty sure bet everybody long enough in the Internet Business has had moments like this before. For myself, there were a few moments, where I saw an ethical border that I didn’t want to cross. As a student, this was porn. As a professional, it was weapons manufacturers.

    Interestingly enough, I even quit two companies for their ambition in IT security. The first pushed datacenter-grade firewalls to small businesses that basically only needed a DSL modem. Through a sales method borrowed from insurance brokers.

    The other one at least had a solid technology, but developed a solid sales pitch relying on the same FUD, that crosses that ethical border.

    Just like with medication, people shouldn’t buy security out of fear, or any other product for that matter. And any technical person should strive for educating customers and not helping sales people create that fear.

  • Symantec will Sicherheitsanbieter Lifelock übernehmen

    Digitalisierung verlagert vieles Alltägliche ins Internet, und die Unsicherheit um den Umgang mit dieser neuen Situation wird von Sicherheitsfirmen schon lange ausgenutzt. Nun will Symantec offenbar Schutz vor Identitätsdiebstahl anbieten und dazu einen umstrittenen Anbieter übernehmen:

    2,3 Milliarden US-Dollar will Symantec zahlen, um sich mit einem Anbieter für Schutz vor Identitätsdiebstahl zu verstärken. Die Firma namens Lifelock musste aber schon zwei Millionenstrafen wegen nicht gehaltener Werbeversprechen zahlen.

    via: Symantec will umstrittenen Sicherheitsanbieter Lifelock schlucken | heise online

  • Kundenwünsche

    Wenn die Rede von Digitalisierung ist, wird häufig betont, wie wichtig die Fokussierung auf den Kunden und seine Wünsche ist. Schlimm genug, dass dafür erst eine Digitalisierung stattfinden muss, wird das Credo auch meistens missverstanden.

    Digitalisierung erlaubt es, ein Angebot zu schaffen, das so flexibel ist, sich den Kundenwünschen anzupassen. Es ist die Aufgabe des Unternehmens, vornehmlich mittels Marketing, Kommunikation und Vertrieb, den Kunden mitzuteilen, welche Wünsche es mit seinem Angebot befriedigen kann.

    Und tatsächlich wir der Kunde dann stolz mit Informationen zu Neuerungen im Portfolio überschüttet – und erzeugt damit vorrangig Verwirrung beim potentiellen Käufer.

    “Tut mir Leid, ohne weitere Angaben kann ich Ihnen kein Angebot machen.” ist in dieser Situation die schlechteste Antwort, die ein Vetriebs-Mitarbeiter geben kann. Dem Kunden ist mit einem konstruktiven Ansatz besser geholfen, ein Hinweis auf die fehlenden Angaben bringt beide Seiten weiter. Eine Gegenfrage “Können Sie mir noch sagen, wieviele Server Sie managen wollen?”, oder “Wieviele Daten möchten Sie mit unserer Software verarbeiten?” schließt ein Geschäft ab.

    Das ist auch ausserhalb der IT so, im allgemeinen bei allen erklärungsbedürftigen Produkten. Der Anlass zu diesem Gedanken ist eine Erfahrung aus dem Fintech Sektor. Dort bestehen Produkte nahezu vollständig aus veränderbaren Parametern.

    Mit Digitalisierung hat das alles nichts zu tun, die Digitalisierung kann ein Produkt dem Kunden lediglich einfacher machen und dem Vetrieb die Kundenorientierung zurückbringen.