Language Selection

English French German Italian Portuguese Spanish

Development

Sonic Pi and Raspberry Pi for Pet Rodents

Filed under
Development
  • Compose music as code using Sonic Pi

    Maybe you're like me, and you learned a musical instrument when you were in school. For me, it was the piano, and later, the viola. However, I've always held that, as my childhood interests shifted towards computers and coding, I subsequently neglected my music practice. I do wonder what I would have done if I'd had something like Sonic Pi when I was younger. Sonic Pi is an open source program that lets you compose and perform music through code itself. It's the perfect marriage of those two worlds.

  • Make a hamster feeder with Raspberry Pi Zero

    People make marvellous things for their pets with Raspberry Pi. Here’s a splendid hamster feeder tutorial from Christopher Barnatt of Explaining Computers, just perfect if you’re after a small project for this weekend.

Python: Talk Python to Me, PyCon Still on and More

Filed under
Development
  • Talk Python to Me Episode #254: A Python mentorship story

    How do you go from poking around at Python code to actually solving real problems, the right way?

    There are many paths. The longest one probably is to get a 4-year CS degree. Maybe faster, but pricy as well, is a solid in-person developer bootcamp.

    Have you considered reaching out to the community to find a mentor? Many Python meetups have project nights where folks who could help will be attending. If you're up for giving back, maybe you could become a mentor too.

    That's what this episode is about. We'll hear from two former guests of Talk Python, Rusti Gregory and Doug Farrell. They teamed up and are back to share their mentorship story!

  • [PyCon] March 2 Update on COVID-19

    The coronavirus (also known as COVID-19) is a new virus that causes respiratory illness in people and can spread from person-to-person. Since PyCon US 2020 is scheduled in April, we want to give our community an update on our status and more information about our policy for attendees pertaining to COVID-19.

    As of March 2, PyCon 2020 in Pittsburgh, PA is scheduled to happen.

    The staff and board directors are actively watching the situation closely, as it continues to change rapidly. We plan to reassess the situation weekly and more frequently as we get closer to the event. This includes checking in with our Pittsburgh team for updates including from vendors and local authorities.

  • March 6 Update on COVID-19

    PyCon continues to closely monitor the Coronavirus (also known as COVID-19) situation.

    As of March 6, PyCon 2020 in Pittsburgh, Pennsylvania is scheduled to take place.

    As of this morning, there have been two presumptive positive cases of COVID-19 in Pennsylvania. These cases are in Wayne and Delaware Counties, in eastern Pennsylvania. They are not near Pittsburgh, which is in western Pennsylvania, some 300 miles (480km) away.

  • Using Python Functions As Classes

    In Python, you can use functions as classes. In py, everything is an object. How? I'm no py expert. Here's how we do it!

  • The Zen Of Python Is A Joke And Here Is Why

    The Zen of Python inspires programmers all over the world, but, it is not to be taken too literally.

  • Using __getattr__ for nicer configuration API

    Typically, you'll read configuration from files (such as YAML) and get them as a dictionary. However in Python you'd like to write config.httpd.port and not config['httpd']['port']

  • Implementing the Clean Architecture with Python – my book is here!

    It is my pleasure to announce that my book is finally available to buy.

Programming Leftovers

Filed under
Development
  • Performance when using QPainter with QSceneGraph

    When using a profiler to look into your programs, sometimes it feels like looking behind the stage of magician and suddenly grasping the trick behind the magic… Quite recently, I had an application in front of me, which demanded surprisingly much CPU time. In a nutshell, this application has some heavy computational operations in its core and (primarily) produces a rectangular 2D output image, which is rendered by QPainter to display the results. This output is updated once every few milliseconds and is embedded inside a QtQuick window. The handover of the rendered QImage is done by a harmless looking Q_PROPERTY.

    So, I wondered: How big can the impact of handing over a QImage to the QSG renderer be? In particular — as we all know — copying a big chunk of memory is a CPU expensive operation which should be avoided if possible. For getting proper profiling results, I created a simple test application. This application just creates a QtQuick scene with a QQuickPaintedItem derived render object, which updates its output every millisecond (thus renders whenever the render-loop iterates). I use a big output rectangle of 640×640, because I want to focus on the memory copying effect, which is more obvious with bigger outputs.

  • LLVM 10.0-RC3 Released With The Final Expected Soon For This Big Compiler Update

    LLVM 10.0 was supposed to be released at the end of February but is running slightly behind schedule and now there is a third and unscheduled final release candidate.

    LLVM 10.0-RC3 was unexpectedly released this week due to the time that has passed since RC2 in mid-February with there having been more commits than anticipated late in the cycle. LLVM 10.0-RC3 has just under one hundred commits/fixes since RC2, but nothing appears to be too dramatic.

  • Why is agile so much more successful than waterfall?

    Agile continues to take the world by the storm. The latest report from the Standish Group Chaos Study presents interesting findings: Projects based on agile principles have significantly higher success rates than traditional projects based on the waterfall methodology.

  • Make Git easy with Git Cola

    Git is a Linux command to help you manage versions of your work. It's been ported to BSD, macOS, Windows, and more. It serves as the basis for popular code-hosting services, including open source services like GitLab and NotABug, and even to popular proprietary services. In short, Git has taken software development (and a few other industries) by storm.

  • PyCharm: PyCharm 2020.1 EAP 6

    We have a new Early Access Program (EAP) version of PyCharm that can be now downloaded from our website.

    In PyCharm 2020.1 EAP 6, we have been working out some of the kinks to make this release cleaner and more reliable for all our PyCharm users.

  •                

  • “Let’s use Kubernetes!” Now you have 8 problems

                     

                       

    If you’re using Docker, the next natural step seems to be Kubernetes, aka K8s: that’s how you run things in production, right?

                       

    Well, maybe. Solutions designed for 500 software engineers working on the same application are quite different than solutions for 50 software engineers. And both will be different from solutions designed for a team of 5.

                       

    If you’re part of a small team, Kubernetes probably isn’t for you: it’s a lot of pain with very little benefits.

                       

    Let’s see why.

  •                
               

Audiocasts/Shows: LHS, Django, and TechSNAP

Filed under
Development
GNU
Linux
Moz/FF
  • LHS Episode #330: The Weekender XLIII

    It's time once again for The Weekender. This is our bi-weekly departure into the world of amateur radio contests, open source conventions, special events, listener challenges, hedonism and just plain fun. Thanks for listening and, if you happen to get a chance, feel free to call us or e-mail and send us some feedback. Tell us how we're doing. We'd love to hear from you.

  • Episode 3 - Views On Django

    On this episode, we look at views, a major component within Django and a primary place where your code will run.

  • AMD Inside | TechSNAP 424

    Cloudflare recently embarked on an epic quest to choose a CPU for its next-generation server build, so we explore the importance of requests per watt, the benefits of full memory encryption, and why AMD won.

    Plus Mozilla’s rollout of DNS over HTTPS has begun, a big milestone for Let’s Encrypt, and more.

Programming: Qt, Julia, Perl and Rust

Filed under
Development
  • QML Type Registration in Qt 5.15

    Qt 5.15 provides a much improved way of exposing C++ types to QML. You can now specify your module name and version in a central place and there is no need to specify minor versions or revisions anymore. Furthermore, the specifics of the QML type registration can now be declared in the C++ class declaration.

    The common way to make C++ types available in QML so far was using the registration functions provided in the qqml.h header: qmlRegisterType(), qmlRegisterSingletonType(), qmlRegisterUncreatableType() etc. There are downsides to this approach:

    You always need to keep your type registrations in sync with the actual types. This is especially bothersome if you use revisions to make properties available in different versions of an import. Even if not, the fact that you need to specify the registration separately from the type is a burden as you can easily lose track of how you registered which types into which modules.

    Furthermore, as you register your types procedurally, any QML tooling cannot automatically tell which types are available in which import. Qt Creator indeed has some heuristics that try to detect common registration patterns in C++ code, but this is necessarily incomplete. Figuring out whether a specific registration will be executed by the program is equivalent to solving the halting problem. Simpler tools like qmllint or qmlformat have no information about the C++ code and need to analyze your QML code in isolation. Therefore, they won't have any information about types registered from C++. In order to (partially) solve this problem the "qmltypes" files were introduced. When developing a QML plugin, you are encouraged to put a file called "plugins.qmltypes" next to the plugin binary. The qmltypes file contains meta-information about the types registered by the plugin. Qt Creator and other tools can then refer to this information in order to provide you
    with better analysis of your code. This works, but only for plugins. If you register your types directly from the main program, you're still facing the same problem. Also, you end up specifying your types twice, once in C++ and once in qmltypes format. In order to (partially) solve the problem of redundant type specification, a tool called "qmlplugindump" is available. This tool will load your plugin in the same way the QML engine would load it. It will then extract information about all the types contained in it in order to produce a plugins.qmltypes file. This, however, will also execute unrelated code in your plugin, and it will only work if you are compiling your plugin for the same platform as qmlplugindump runs on. In practice, it does not work for cross-compiled builds.

  • Excellent Free Tutorials to Learn Julia

    Julia is a high-level, high-performance dynamic programming language for technical computing by Alan Edelman, Stefan Karpinski, Jeff Bezanson, and Viral Shah. Julia aims to create an unprecedented combination of ease-of-use, power, and efficiency in a single language.

    It’s a homoiconic functional language focused on technical computing. While having the full power of homoiconic macros, first-class functions, and low-level control, Julia is as easy to learn and use as Python.

    Although Julia is a new language, first appearing in 2012, its roots are in Lisp, so it comes with mature features like macros and support for other metaprogramming techniques like code generation. Julia’s expressive grammar lets you write easy-to-read and easier-to-debug code, and its speed gets you through more work in less time. It’s a great choice whether you’re designing a machine learning system, crunching statistical data, or writing system utilities.

    Distinctive aspects of Julia’s design include a type system with parametric polymorphism and types in a fully dynamic programming language and multiple dispatch as its core programming paradigm. It allows concurrent, parallel and distributed computing, and direct calling of C and Fortran libraries without glue code.

  • Perl Weekly Challenge 050: Merge Intervals and Noble Integer
  • k-Means k-Means-er

    As we take another lap around the k-Means race trace, the Porsche 914-2 and Volvo 142E are still neck and neck. This time we'll try a straight-forward normalisation that linearly scales all values to the range [0,1] and see if they still end up in the same cluster.

    Curiosity finally got the better of me, so I looked up both of those models and they are actually quite similar cars from the early 1970s. Would I have dug so deep if I hadn't has that misconception about what I thought the clustering should have produced? Probably not.

  • This Week in Rust 328 [Ed: No, it cannot be openly developed on proprietary software platform of Microsoft]

    This Week in Rust is openly developed on GitHub.

Python Programming

Filed under
Development
  • Removing Stop Words from Strings in Python

    In this article, you are going to see different techniques for removing stop words from strings in Python. Stop words are those words in natural language that have a very little meaning, such as "is", "an", "the", etc. Search engines and other enterprise indexing platforms often filter the stop words while fetching results from the database against the user queries.

    Stop words are often removed from the text before training deep learning and machine learning models since stop words occur in abundance, hence providing little to no unique information that can be used for classification or clustering.

  • How To Style Sign Up - Building SaaS #47

    In this episode, I added styling to the Sign Up page of the site. We chatted about CSS tools and frameworks, the benefit of feature flags to control what UI is displayed to users, and how to use Tailwind CSS to modify a design quickly.

    In the first portion of the stream, we focused on CSS frameworks. We compared Bootstrap, Semantic UI, and Tailwind CSS.

    After that discussion, I talked about feature flags. The project uses a feature flag to protect the sign up page and only displays the page when I turn on a flag. This control will be useful for me to gate which new users I would like to allow into my project as I open it up to others.

    Once the feature flag was on locally, we worked to style the signup form that was provided by django-allauth. I kept the form very basic with a plan to expand it in the future. We also talked about JS frameworks and my plans for which framework to use.

    We finished the development for the stream by fixing the notification messages. While testing the sign up flow, I noticed that multiple notifications appeared from django-allauth and my UI stacked them in a way that looked off. We used flexbox to fix the issues so that multiple notifications could display well together.

  • Python Anywhere: System updates on 3 and 5 March

    On 3 March we upgraded our EU-based system at eu.pythonanywhere.com to the latest version of our code, and this morning (5 March) we upgraded our US-based system at www.pythonanywhere.com to the same version.

  • Learn Python Set/Frozenset Data Structure – Part 4

    In this Part 4 of Python Data Structure series, we will be discussing what is a set, how it differs from other data structure in python, how to create set objects, delete set objects and methods of set objects.

  • Rotterdam python meetup

    In radiology, people take a long time to become experienced. Medical school, MD, certified radiologist... And when they're 68 they're off to a pension. What they did at Quantib was to try and "scale radiology experience with AI".

    Detection and classification of prostate lesions. Same with breast MRIs. Brain shrinkage. They hope it increases the amount of MRI scans that can be processed. And also the quality of the analysis.

    He demoed the application. There's detection of brain regions in the software, for instance. When you compare two MRI scans at different points in time, you can see the difference and compare that difference with what you would see in a healthy person.

    Hospital practice often means downloading radiology RMI images from a central hospital image storage server ("PACS"), taking them to a separate workstation for analysis and then going back with reports. This takes time, so it is sometimes omitted due to time pressure...

    What they're working on now is to run their AI software on a server and connect it to the image storage service. They designed their software as a bunch of microservices. Storage service, import, dispatch, workflow service, processing.

  • Using __getattr__ for nicer configuration API

    __getattr__ is a hook method that's called by Python when regular attribute lookup fails (not to be confused with the lower level __getattribute__, which is much harder to work with). You can use it to wrap the configuration dictionary. Here's a small example.

Programming: GCC, LLVM, RcppSimdJson, Qt, R, Python and Java

Filed under
Development
  • Multi-Threading Compilers

    For the last few months since the GCC Cauldron I've been researching/helping out plan for multi-threading GCC.

  • LLVM's MLIR Will Allow More Multi-Threading Within Compilers

    One of the developers involved with the GCC efforts around more parallelization / multi-threading within the compiler itself has offered his skills to the LLVM team. Though as part of LLVM's growing embrace of the MLIR intermediate representation will also be better multi-threading within compilers like Clang.

    Developer Nicholas Krause started a discussion about multi-threading compilers within the LLVM scope following his involvement on the GCC side.

  • RcppSimdJson 0.0.3: Second Update!

    Following up on both the initial RcppSimdJson release and the first update, the second update release 0.0.3 arrived on CRAN yesterday.

    RcppSimdJson wraps the fantastic simdjson library by Daniel Lemire which is truly impressive. Via some very clever algorithmic engineering to obtain largely branch-free code, coupled with modern C++ and newer compiler instructions, it results in persing gigabytes of JSON parsed per second which is quite mindboggling. For illustration, I highly recommend the video of the recent talk by Daniel Lemire at QCon (which was also voted best talk). The best-case performance is ‘faster than CPU speed’ as use of parallel SIMD instructions and careful branch avoidance can lead to less than one cpu cycle use per byte parsed.

  • CLI Tools

    I spend a lot of time on terminal. I prefer using CLI Tools. Even when I like using Goland or Visual Studio Code (IDEs) for coding (instead of vim/emacs), I prefer to do my non-coding activities from a terminal using CLI tools.

    I am quite happy with my zsh and its various plugins (git, kubernetes, docker, etc). Since in $DAYJOB I work with kubernetes a lot, I heavily use kubectl, kubectx, kubens etc. in combination with grep, jq, pipes, etc. and prefer these CLI tools always over clicking buttons or scrolling long pages in browser.

  • Getting rid of “volatile” in (some of) Qt

    The upcoming version of the C++ Standard (C++2a) is proposing to deprecate certain usages of the volatile keyword, by adopting the P1152 proposal (Deprecating volatile).

    Despite the somewhat “flamboyant” title, the actual deprecated parts are very limited and indeed the paper limits the deprecation to somehow language/library corner cases and/or dangerous antipatterns.

    [...]

    To conclude, let’s celebrate the longevity of this problem in all the codebases in the world. In perfect security-drama design: the most important part of an issue is its logo.

  • R data.table symbols and operators you should know

    R data.table code becomes more efficient — and elegant — when you take advantage of its special symbols and functions. With that in mind, we’ll look at some special ways to subset, count, and create new columns.

  • An Update PyPI Funded Work

    After launching a request for information and subsequent request for proposal in the second half of 2019, contractors were selected and work commenced on Milestone 2 of the project in December 2019 and was completed in February 2020.
    The result is that PyPI now has tooling in place to implement automated checks that run in response to events such as Project or Release creation or File uploads as well as on schedules. In addition to documentation example checks were also implemented that demonstrate event based and scheduled checks.
    Results from checks are made available for PyPI moderators and administrators to review, but will not have any automated responses put in place. As a check suite is developed and refined we hope that these will help to identify malicious uploads and spam that PyPI regularly contends with.

  • Python 3.7.7rc1 is now available for testing

    Python 3.7.7rc1, the release preview of the next maintenance release of Python 3.7, is now available for testing. Assuming no critical problems are found prior to 2020-02-10, no code changes are planned between this release candidate and the final release. The release candidate is intended to give you the opportunity to test the new security and bug fixes in 3.7.7. While we strive to not introduce any incompatibilities in new maintenance releases, we encourage you to test your projects and report issues found to bugs.python.org as soon as possible. Please keep in mind that, since this is a preview release, its use is not recommended for production environments.

  • Python 3.6.9 : My colab tutorials - part 002.
  • Shenandoah GC in JDK 14, Part 1: Self-fixing barriers

    The development of the Shenandoah Garbage Collector (GC) in the upcoming JDK 14 has seen significant improvements. The first one covered here (self-fixing barriers) aims to reduce local latencies that are spent in barrier mid- and slow paths. The second will cover concurrent root processing and concurrent class unloading.

Programming: CURL, PHP, Simple Systems, Fuchsia and Python

Filed under
Development
  • CURL 7.69.0 SSH++ AND TLS–

    There has been 56 days since the previous release. As always, download the latest version over at curl.haxx.se.

    Perhaps the best news this time is the complete lack of any reported (or fixed) security issues?

  • 12 Best Udemy Courses for PHP Beginners in 2020

    PHP is a general-purpose, open-source scripting language that is so popular it almost never needs an introduction. Its name, PHP, was an acronym for Personal Home Pages but now stands for PHP: Hypertext Preprocessor, and it is designed for creating interactive and dynamic web pages with its running environment being a server.

    Following in the tradition of bringing you the highest-rated tutorial courses from Udemy, a category under which we last published 18 Best Udemy Courses for Python Beginners in 2020, here is a list of courses designed for PHP.

  • Simple Systems Have Less Downtime

    Complex ideas lead to complex implementations. If it takes too long to explain or grasp an idea, then its implementation will be complex, and it will take too long to fix when something inevitably breaks. For example, a proposed sales process that requires an hour-long presentation will be a nightmare to maintain, regardless of how clever it seems.

  • Approved Programming Languages for Google Fuchsia

    Google, for their upcoming Fuchsia operating system, has reviewed several programming languages. A summary was posted as a markdown document on their GoogleSource Git. It outlines how C, C++, Dart, Rust, Go, and Python will (or will not) be supported in the new operating system.

    Usage is broken down into two components: “Fuchsia Platform Source Tree” and “End-developers”. If a programming language is supported for the Fuchsia Platform Source Tree, then it can be integrated into fuchsia.googlesource.com. If it is supported for end-developers, then the SDK contains tools that enable it. Google has more control over code that enters their source tree, so they can introduce other languages without worrying about supporting it as a first-class citizen with their public SDK.

  • Spatial Data with Python - Operations!

    We did it. We’ve taken the first step towards our data analysis project. We know the fundamental concepts of geographical data and how to load, inspect and visualize data in our Python project.

    Let’s keep going. Remember the vector files we worked on in the first post? We have the limits of every country in the world (world_gdf) and the position of 1,509 volcanoes around the planet (volcanoes_gdf). In this post, we’ll be working with a shapefile containing 7,343 cities all over the world (cities_gdf), which you can download from Natural Earth (the simple version will suffice for this project).

    Let’s load the shapefiles into GeoDataFrames and take a quick look at the first rows to remember what they were about.

  • Alexa Python Development: Build and Deploy an Alexa Skill

    Smart home speakers were a novel idea just a couple of years ago. Today, they’ve become a central part of many people’s homes and offices and their adoption is only expected to grow. Among the most popular of these devices are those controlled by Amazon Alexa. In this tutorial, you’ll become an Alexa Python developer by deploying your own Alexa skill, an application that users will interact with using voice commands to Amazon Alexa devices.

  • Django security releases issued: 3.0.4, 2.2.11, and 1.11.29

    In accordance with our security release policy, the Django team is issuing Django 3.0.4, Django 2.2.11 and Django 1.11.29. These releases address the security issue detailed below. We encourage all users of Django to upgrade as soon as possible.

GCC 8 Release Series (GCC 8.4 is Out)

Filed under
Development
GNU

The GNU project and the GCC developers are pleased to announce the release of GCC 8.4.

This release is a bug-fix release, containing fixes for regressions in GCC 8.3 relative to previous releases of GCC.

Read more

Also: GCC 8.4 Released With A Year Worth Of Bug Fixes

Programming: Vala, AWK, Python and Perl

Filed under
Development
  • Vala and Custom Widgets

    There is a case when you wish to use a custom widget, when you use the same set of widgets to handle data. When you create a Gtk.ListBoxRow you have to attach to it a Gtk.Widget, in that case, should be easiest if you just do

    var w = new MyWidget ();
    w.data = data;

    Second line, sets your data to the widget’s data property, so the class initialize the UI with the provided data.

    In other case, you have a Widget you can re-use in different parts of the UI, maybe showed up in a popup window. This is the process you can use to create such a widget.

  • Moving averages with AWK

    Moving averages can be used to smooth out some of the variation in a data series. The chart below shows the monthly average prices of West Texas intermediate crude oil over a 5-year period. The black line connects raw data points, and the (smoother) red line connects averages of every 5-month period, plotted at the middle month of the 5.

  • Views On Views

    A view is a chunk of code that receives an HTTP request and returns an HTTP response. Views describe Django’s entire purpose: to respond to requests made to an application on the internet.

    You might notice that I’m a bit vague about “chunk of code.” That was deliberate. The reason is because views come in multiple forms. To call views functions would only be part of the story. To call them classes would be a different chapter in the story.

    Even if I attempted to call views callables, I still would not portray them accurately because of the ways that certain types of views get plugged into a Django app.

    Let’s start with functions since I think they are the gentlest introduction to views.

  • How to Convert a Pandas DataFrame to a NumPy Array

    In this short Python Pandas tutorial, we will learn how to convert a Pandas dataframe to a NumPy array. Specifically, we will learn how easy it is to transform a dataframe to an array using the two methods values and to_numpy, respectively. Furthermore, we will also learn how to import data from an Excel file and change this data to an array.

    Now, if we want to carry out some high-level mathematical functions using the NumPy package, we may need to change the dataframe to a 2-d NumPy array.

  • PyCoder’s Weekly: Issue #410 (March 3, 2020)
  • PAWS Almost

    I think in my last post I said this is going to be a very short series well I think I am wrong on that count.

    When I last posted on the Kinesis 'SubscribeToShard' action I discovered that it is returning a 'application/vnd.amazon.eventstream' and that lead me down a very deep rabbit hole that got me well sidetracked.

    Well to start out I had to figure out what AWS was returning when it was sending 'vnd.amason.eventstream' I eventually found that here Event Stream Encoding

    Ok time to take the way-back machine to my first play-dates with computers, assembling GIS data from an Amdahl mainframe that was spooling a 9inch tape directly to my Unitron 2000

Syndicate content

More in Tux Machines

LibreOffice 6.4.3 Release Candidate Version 1 Released Today!

LibreOffice 6.4.3 RC1 Released: LibreOffice is one of the best open-source text editors. LibreOffice comes as default application release of Linux OS. LibreOffice is developed by Team Document Foundation. Today they announced that the LibreOffice 6.4.3 RC1 version has been released. As per their calendar, LibreOffice 6.4.3 RC1 has been released exactly on today!. This RC1 version has many bugs fixes and tweaks in essential features. Read more

Unifont 13.0.01 Released

Unifont 13.0.01 is now available. This is a major release. Significant changes in this version include the addition of these new scripts in Unicode 13.0.0: U+10E80..U+10EBF: Yezidi, by Johnnie Weaver U+10FB0..U+10FDF: Chorasmian, by Johnnie Weaver U+11900..U+1195F: Dives Akuru, by David Corbett U+18B00..U+18CFF: Khitan Small Script, by Johnnie Weaver U+1FB00..U+1FBFF: Symbols for Legacy Computing, by Rebecca Bettencourt Read more

Programming: micro.sth, RProtoBuf, Perl and Python

  • Introducing micro.sth

    Many developers turn their noses up at PHP, but I have a soft spot for it. For me, it's the most approachable programming language by far. It feels intuitive in a way no other languages do, and it makes it possible to cobble together a working application with just a handful of lines of code. So whenever I can't find a tool for a specific job, I try to build one myself. The latest project of mine is a case in point. I was looking for a simple application for keeping a photographic diary, and I was sure that I'd be able to find an open-source tool for that. I searched high and low, but I came back empty-handed. Sure, there are plenty of static website generators, but I'd prefer something that doesn't require me to perform the write-generate-upload dance every time I want to post a quick update. And I need something that I can use not only to maintain a simple diary, but also store notes, manage tasks, and draft articles -- all this without getting bogged down by configuring templates, defining categories, and tweaking settings. And because I want most of my content to be private, I should be able to protect access to it with a password.

  • Dirk Eddelbuettel: RProtoBuf 0.4.17: Robustified

    A new release 0.4.17 of RProtoBuf is now on CRAN. RProtoBuf provides R with bindings for the Google Protocol Buffers (“ProtoBuf”) data encoding and serialization library used and released by Google, and deployed very widely in numerous projects as a language and operating-system agnostic protocol. This release contains small polishes related to the release 0.4.16 which added JSON support for messages, and switched to ByteSizeLong. This release now makes sure JSON functionality is only tested where available (on version 3 of the Protocol Buffers library), and that ByteSizeLong is only called where available (version 3.6.0 or later). Of course, older versions build as before and remain fully supported.

  • Perl Weekly Challenge 53: Rotate Matrix and Vowel Strings

    These are some answers to the Week 53 of the Perl Weekly Challenge organized by Mohammad S. Anwar.

  • Weekly Python StackOverflow Report: (ccxxi) stackoverflow python report
  • Python: Is And ==

    In Python, == compares the value of two variables and returns True as long as the values are equal.

today's howtos