Benjamin Mako Hill: Unhappy Birthday Suspended

Planet Debian - Thu, 2016-02-11 19:07

More than 10 years ago, I launched Unhappy Birthday in a fit of copyrighteous exuberance. In the last decade, I have been interviewed on the CBC show WireTap and have received an unrelenting stream of hate mail from random strangers.

With a recently announced settlement suggesting that “Happy Birthday” is on its way into the public domain, it’s not possible for even the highest-protectionist in me to justify the continuation of the campaign in its original form. As a result, I’ve suspended the campaign while I plan my next move. Here’s the full text of the notice I posted on the Unhappy Birthday website:

Unfortunately, a series of recent legal rulings have forced us to suspend our campaign. In 2015, Time Warner’s copyright claim to “Happy Birthday” was declared invalid. In 2016, a settlement was announced that calls for a judge to officially declare that the song is in the public domain.

This is horrible news for the future of music. It is horrible news for anybody who cares that creators, their heirs, etc., are fairly remunerated when their work is performed. What incentive will there be for anybody to pen the next “Happy Birthday” knowing that less than a century after their deaths — their estates and the large multinational companies that buy their estates — might not be able to reap the financial rewards from their hard work and creativity?

We are currently planning a campaign to push for a retroactive extension of copyright law to place “Happy Birthday,” and other works, back into the private domain where they belong! We believe this is a winnable fight. After all, copyright has been retroactively extended before! Stay tuned! In the meantime, we’ll keep this page here for historical purposes.

—“Copyrighteous“ Benjamin Mako Hill (2016-02-11)

Categories: FLOSS Project Planets

Bryan Pendleton: Stuff I'm reading, President's Day edition

Planet Apache - Thu, 2016-02-11 18:39

El Nino is apparently over, as the rain has completely stopped. Sigh.

  • Gas leak at Porter Ranch well is stopped -- at least temporarilyThe leaking well is one of 115 injection wells at the 80-year-old, 3,600-acre Aliso Canyon facility, which stores 86 billion cubic feet of gas that serves 11 million people in the Los Angeles basin. Many of those wells are corroded and mechanically damaged, the gas company said.

    Yet it is the only field in a distribution area stretching from Porter Ranch 60 miles south to Santa Ana that can ensure reliability in both winter, when homes and businesses use significant amounts of natural gas for heating, and summer, when gas-fired generators supply power to air conditioners.

    Efforts to kill the well are being conducted under new orders imposed by the Safety and Enforcement Division of the California Public Utilities Commission in consultation with the state Department of Conservation's Division of Oil, Gas and Geothermal Resources.

  • The Princeton Bitcoin textbook is now freely availableIf you’re looking to truly understand how Bitcoin works at a technical level and have a basic familiarity with computer science and programming, this book is for you. Researchers and advanced students will find the book useful as well — starting around Chapter 5, most chapters have novel intellectual contributions.
  • Transitioning from SPDY to HTTP/2 HTTP/2 is the next-generation protocol for transferring information on the web, improving upon HTTP/1.1 with more features leading to better performance. Since then we've seen huge adoption of HTTP/2 from both web servers and browsers, with most now supporting HTTP/2. Over 25% of resources in Chrome are currently served over HTTP/2, compared to less than 5% over SPDY. Based on such strong adoption, starting on May 15th — the anniversary of the HTTP/2 RFC — Chrome will no longer support SPDY.
  • The Malware MuseumThe Malware Museum is a collection of malware programs, usually viruses, that were distributed in the 1980s and 1990s on home computers. Once they infected a system, they would sometimes show animation or messages that you had been infected. Through the use of emulations, and additionally removing any destructive routines within the viruses, this collection allows you to experience virus infection of decades ago with safety.
  • Planning for DisasterI’m not optimistic that, as a group, computer scientists and computing professionals can prevent this disaster from happening: the economic forces driving automation and system integration are too strong. But of course we should try. We also need to think about what we’re going to do if, all of a sudden, a lot of people suddenly expect us to start producing computer systems that actually work, and perhaps hold us accountable when we fail to do so.
  • The Moral Hazard of Complexity-Theoretic AssumptionsComputational-complexity theory focuses on classifying computational problems according to their inherent difficulty. The theory relies on some fundamental abstractions, including that it is useful to classify algorithms according to their worst-case complexity, as it gives us a universal performance guarantee, and that polynomial functions display moderate growth.
  • Jepsen: RethinkDB 2.2.3 reconfigurationI offered the team a more aggressive failure model: we’d dynamically reconfigure the cluster membership during the test. This is a harder problem than consensus with fixed membership: both old and new nodes must gracefully agree on the membership change, ensure that both sets of nodes will agree on any operations performed during the handover, and finally transition to normal consensus on the new set of nodes. The delicate handoff of operations from old nodes to new provides ample opportunities for mistakes.
  • Einstein's gravitational waves 'seen' from black holesExpected signals are extremely subtle, and disturb the machines, known as interferometers, by just fractions of the width of an atom.

    But the black hole merger was picked up by two widely separated LIGO facilities in the US.

    The merger radiated three times the mass of the sun in pure gravitational energy.

  • Top 5 Targets of a Gravity Wave Observatory an instrument called LIGO (the Laser Interferometer Gravitational-Wave Observatory) had apparently observed a “spectacular” direct gravitational wave signal, minute ripples in the fabric of spacetime created by distant and very massive objects—in this case, the collision and merger of two black holes, one 36 times the mass of our Sun, the other 29 times. Einstein first theorized that gravitational waves should exist in 1915, but evidence for them has been indirect so far. LIGO may be the first instrument to ever see them directly, by measuring the slight contraction and expansion of the distance separating distant mirrors.

    We asked physicists what they’d be most excited to observe with a fully functioning gravitational wave observatory. Here are their top 5 favorite targets.

  • The Resetting of the Startup IndustryThe startup industry may be “resetting,” which doesn’t mean a “crash” but rather just a resetting of valuations, timescales, winners/losers, capital sources and the relative emphasis of growth rates vs. burn rates.
  • Was Black Friday A DiSaaSter Or Simply Reversion To The Mean?Last Friday, LinkedIn, Salesforce and Workday lost $18B in market capitalization. To put that in perspective, these three SaaS companies lost more in market cap on Friday than 15 current SaaS leaders are worth…combined.

    How can this be possible? LinkedIn, Salesforce and Workday are growing revenue with sticky customers and they are targeting large addressable markets. Are they now suddenly undesirable companies?

  • Founders – Use Your Down Round To Clean Up Your Cap TableI learned this lesson 127 times between 2000 and 2005. I started investing in 1994 and while there was some bumpiness in 1997 and again in 1999, the real pain happened between 2000 and 2005. I watched, participated, and suffered through every type of creative financing as companies were struggling to raise capital in this time frame. I’ve seen every imaginable type of liquidation preference structure, pay-to-play dynamic, preferred return, ratchet, share/option bonus, option repricing, and carveout. I suffered through the next financing after implementing a complex structure, or a sale of the company, or a liquidation. I’ve spent way too much time with lawyers, rights offerings, liquidation waterfalls, and angry/frustrated people who are calculating share ownership by class to see if they can exert pressure on an outcome that they really can’t impact anyway, and certainly haven’t been constructively contributing to.
  • Why Commons Should Not Have Ideological Litmus Tests The final point I want to bring up here is how codes of conduct should be used. These are not things which should be seen as pseudo-legal or process-oriented documents. If you go this way, people will abuse the system. It is better in my experience to vest responsibility with the maintainers in keeping the peace, not dispensing out justice, and to have codes of conduct aimed at the former, not the latter. Justice is a thorny issue, one philosophers around the world have been arguing about for millennia with no clear resolution.
Categories: FLOSS Project Planets

Moto 360 Generation 2 Smartwatch Review

LinuxPlanet - Thu, 2016-02-11 16:13

In the next episode of Bad Voltage, I’ll be reviewing the Motorola Moto 360 Generation 2 (2015 edition). Tune in tomorrow to listen to the ensuing discussion and the rest of the show. In the interim, here’s the review:

While I’m both a watch aficionado and a huge tech enthusiast, I’ve not traditionally been super impressed with smart watches. Sure, I backed the original pebble but the first few generations of devices in this category just didn’t impress me. Sub par displays, laggy unintuitive interfaces and terrible battery life weren’t the only issues. They just weren’t aesthetically pleasing. Shortly before our trip to Germany for Bad Voltage Live, friend of the show Tarus Balog mentioned the translation feature on his original Moto 360. I was intrigued as I unfortunately don’t speak any German. After taking a look at the Moto 360 generation two (or 2015 version as it’s sometimes called), I saw a watch that actually appealed to me. Evidently it’s not just me, as I’ve gotten several comments on how nice the device looks from random enthusiasts since my purchase.

The first thing you’ll notice when you start to build your watch using Moto Maker is that there are quite a few options. You can choose from 42mm or 46mm faces designed in men’s style, or a 42mm women’s style. There are multiple bezel choices, the case is available in a variety of colors based on which style you choose and there are myriad bands in both leather and metal. The price ranges from $299 – $449, depending on which options you choose, but given the large number of variables there should be something for everyone.

Moving on to specs, all models have gorilla glass, wireless charging, an ambient light sensor, heart rate sensor, Gyroscope, Accelerometer, are IP67* dust and water resistant, and have both wifi and bluetooth connectivity. The smaller style has a 300mAH battery that should last a little over one day, while the 46mm style has a 400mAH battery that should last almost two. In my experience, that estimate is pretty accurate but does depend on whether you utilize ambient mode. The wireless charger is a little stand that turns the watch into a small clock while charging, which is a nice touch. The watch does work with both Android and iOS. It appears Motorola plans to be a good Android citizen on the upgrade side, as I literally got the Marshmallow upgrade notification as I was writing this review.

With specs out of the way, let’s move on to using and wearing the watch. I’ve already mentioned that I like the look of the watch, but I should mention that it’s also well built and comfortable to wear. Getting notifications on your wrist does come in handy at times, and not having to reach for your phone to check your calendar is nice. You can dictate text messages using the watch, but I just don’t *ever* see myself doing that. To be fair, I don’t do that with my phone either. The Google Now card implementation is both intuitive and useful. The translation feature that led me to first look into buying the watch works as advertised and came in handy on multiple occasions. The Google Fit and Moto Body functionality is also there for those who are interested, although keep in mind Motorola has a dedicated Sport Watch.  Overall I like the device more than I anticipated, but there are some downsides. I’ve only been using the marshmallow version of Wear for 15 minutes or so, but overall Wear is not quite where it needs to be. It is getting closer though, and that isn’t specific to the Moto 360. While battery life on the device is acceptable, I think for a watch to get mainstream adoption it will need to be able to last for “a weekend” and so far I’m not aware of a non e-ink one that does. I should note that while the original 360 was the first round smartwatch, both it and the generation 2 model have a small notch out of the bottom part of the display that has derisively been nicknamed the flat tire. While it doesn’t bother me much, it seems to drive some people absolutely bonkers. Competing round watches from LG, Samsung, Huawei and others do not have the tire.

So, what’s the Bad Voltage verdict? The Moto 360 generation 2 is a sleek, well built, reasonably priced device with enough customization options to appeal to traditional watch enthusiasts. If you’ve been holding out on getting a smartwatch, it may well be time to take another look.


Note, I’ve heard good things about the latest Huawei Watch but don’t currently have one. If I get one, I’ll certainly review it here as well as post a comparison to the Moto 360 2. If you think there’s another watch I should be looking at, let me know.

  • IP67 – Withstands immersion in up to 3 feet of fresh water for up to 30 minutes. Not designed to work while submerged underwater. Do not use while swimming, or subject it to pressurized streams of water. Avoid exposure of leather band to water. Not dust proof.


Categories: FLOSS Project Planets

Lullabot: Drupal 8 Contrib Module Development with Dave Reid, Juampy NR, & Andrew Berry

Planet Drupal - Thu, 2016-02-11 16:00
Matt & Mike discuss Drupal 8 module development with Dave Reid, Juampy NR, and Andrew Berry onsite at the Lullabot retreat in Palm Springs, CA.
Categories: FLOSS Project Planets

Drupal core announcements: 8.1.0 will be released April 20; beta begins March 2

Planet Drupal - Thu, 2016-02-11 15:58

Drupal 8.1.0, the next planned minor release of Drupal 8, is scheduled for Wednesday, April 20, 2016. Minor releases include new features, usability improvements, and backwards-compatible API improvements. Here's what this means for core patches.

Drupal 8.1.0-beta1 will be released March 2
  • In preparation for the minor release, Drupal 8.1.x will enter a beta phase on March 2.
  • Developers and site owners can begin testing the beta.
  • The 8.2.x branch of core will be created, and future feature and API additions will be targeted against that branch instead of 8.1.x.
  • All outstanding issues filed against 8.1.x will be automatically migrated to 8.2.x once it is opened.
  • During the beta phase, core issues will be committed according to the following policy:
    1. Issues that are allowed for patch releases will be committed to all three minor branches (8.0.x, 8.1.x, and 8.2.x).
    2. Issues specific to added 8.1.x functionality, or disruptive changes that have a positive impact outweighing their disruption, will be committed to both 8.1.x and 8.2.x. (Such issues can be moved back to the 8.1.x branch after the automatic migration.)
    3. Most issues that are only allowed in minor releases will be committed to 8.2.x only.
Drupal 8.1.0-rc1 will be released April 6
  • The release candidate phase for the minor release begins on April 6, and starting on that date, the 8.1.x branch will be subject to release candidate restrictions, with only critical fixes and certain other limited changes allowed.
  • April 6 is also the final scheduled patch release window for 8.0.x, and it will not receive further development or support after that date aside from its final security release window on April 20.
  • All outstanding issues filed against 8.0.x will be automatically migrated to 8.1.x after the final 8.0.x patch release. Future bug reports should be targeted against the 8.1.x branch.
  • Minor versions may include changes to user interfaces, translatable strings, themes, internal APIs like render arrays and controllers, etc. (See the Drupal 8 backwards compatibility and internal API policy for details.) Developers and site owners should test the release candidate to prepare for these changes.
  • 8.2.x will remain open for new development during the 8.1.x release candidate phase.

See the Drupal core release cycle overview, Allowed changes during the Drupal 8 release cycle, and Drupal 8 backwards compatibility and internal API policy for more information.

As a reminder, we have until the start of the beta to add great new features to Drupal 8.1.x, and migrate, usability, and bugfixes are all priorities for 8.1.0.

Categories: FLOSS Project Planets

Import Python: ImportPython Issue 61

Planet Python - Thu, 2016-02-11 14:40

Word From Our Sponsor

Python Programmers let companies apply to you, not the other way around. Receive interview offers which include salary and equity information. Companies see each other's offers, and compete for your attention. Engage only with the companies you like. REGISTER

Worthy Read
Coverage.py with Ned Batchelder - InterviewpodcastIn this episode I interview Ned Batchelder. I know that coverage.py is very important to a lot of people to understand how much of their code is being covered by their test suites. Since I’m far from an expert on coverage, I asked Ned to discuss it on the show.

Announcing Zappa - Serverless Python Web Applications - Gun.ioToday, I'm pleased to announce the first major release of Zappa - a system for running "serverless" Python web applications using AWS Lambda and AWS API Gateway. Zappa handles all of the configuration and deployment automatically - now, you can deploy an infinitely scalable application to the cloud with a single command - all for a minute fraction of the cost of a traditional web server.

Announcing the PyCon 2016 Talks SchedulepyconThe Talks committee has been hard at work since the Call For Proposals closed 5 weeks ago, and today we are thrilled to present the result — here are the talks that the committee has chosen for PyCon 2016 in Portland, Oregon!

Django Rest Framework and React.jsdjangoI think we can all agree that React and Django Rest Framework are both awesome. But hooking React into your Django app can really be a nightmare, especially if you’re unfamiliar with webpack, npm, and babel. I’m going to walk you through how to get Django Rest Framework (DRF) to work with React.

Python 101 Screencast ReleasedThe Python 101 Screencast has been finished for a little over a month now and I am now releasing it for general consumption. The Python 101 Screencast is based on my book, Python 101. I went through all 44 chapters of the book and turned each of them into a standalone screencast.

Do Your Slides At The Last Minute: 8 Steps To Writing Your PyCon TalkpyconPyCon accepted my talk "Write an Excellent Programming Blog". If you got in, too, congratulations! Now we have to write our talks. Steps Plan your time, Inspire, Outline, Rehearse immediately, Make room for new insights, Put off making slides, Rehearse with friends, Get a coach, Excel.

Free Webinar: Pandas and MatplotlibwebcastIt’s time for another free hour-long Webinar! This time, I’ll be talking about the increasingly popular tools for data science in Python, namely Pandas and Matplotlib. How can you read data into Pandas, manipulate it, and then plot it? I’ll show you a large number of examples and use cases, and we’ll also have lots of time for Q&A.

Docker - Full Stack PythondockerDocker is an open source infrastructure management platform for running and deploying software. The Docker platform is constantly evolving so an exact definition is currently a moving target. Docker can package up applications along with their necessary operating system dependencies for easier deployment across environments. In the long run it has the potential to be the abstraction layer that easily manages containers running on top of any type of server, regardless of whether that server is on Amazon Web Services, Google Compute Engine, Linode, Rackspace or elsewhere.

Python testing sprint June 20th-26th 2016testingThe pytest core group is heading towards the biggest sprint in its history, to take place in the black forest town Freiburg in Germany. As of February 2016 we have started a funding campaign on Indiegogo to cover expenses The page also mentions some preliminary topics. Here is the campaign URL https://www.indiegogo.com/projects/python-testing-sprint-mid-2016#/

Your Django Story: Meet Aisha BellointerviewAisha Bello is a current student at Cardiff Metropolitan University, where she’s finishing up a MSc in Information Technology. Her final project is centered on open source data mining technologies for small and medium-sized hospitality organizations. Aisha co-organized and coached at Django Girls Windhoek in January 2016, and is also organizing a Django Girls workshop in Lagos, Nigeria in February 2016.

PEP 513 — A Platform Tag for Portable Linux Built DistributionsPEPThis PEP proposes the creation of a new platform tag for Python package built distributions, such as wheels, called manylinux1_{x86_64,i686} with external dependencies limited to a standardized, restricted subset of the Linux kernel and core userspace ABI. It proposes that PyPI support uploading and distributing wheels with this platform tag, and that pip support downloading and installing these packages on compatible platforms.

Podcast.__init__: SymPy With Aaron MeurerpodcastLooking for an open source alternative to Mathematica or MatLab for solving algebraic equations? Look no further than the excellent SymPy project. It is a well built and easy to use Computer Algebra System (CAS) and in this episode we spoke with the current project maintainer Aaron Meurer about its capabilities and when you might want to use it.

Why Python ?core pythonWhy are you recommending Python? That's the question a colleague of mine asked when I was pitching Python for data science work. It is a fair question, and I tried to answer with facts and not opinions.

The registries pattern | entrys | eliotberriot | StreamdjangoI've been using this pattern for many years in my applications, and I always found strange nobody ever mentioned it. Since it has prove useful to me in many different projects, I think it's a perfect occasion to put some life again in my blog.

luthor - A simple library to parse XMLLuthor utilizes all efficient tricks from pholcidae to make XML parsing as simple as never before. Luthor uses lxml's iterable parsing mechanism to parse files of any size.


Full-Stack Python Developer at GorgiasParis, FranceAt Gorgias (Techstars NYC '15), we’re making customer support software to easily handle big volumes of customer requests. We’re using machine-learning to automatically group requests, suggest the right responses and show only the relevant information for the customer support agent to take swift action on repetitive tasks.

Python/Django Backend Developer at SpringboardBangalore, Karnataka, IndiaSpringboard is an online education startup with a big vision for transforming education using open online learning. We believe we are in the early days of a revolution that will not only increase access to great education, but also transform the way people learn.

Python Developer at Headforwards Solutions LtdCornwall, United KingdomHeadforwards are looking for a Python developer to join their team on an existing project. Some front end experience with web technologies such as HTML / CSS / JQuery / AJAX / JavaScript / HTML5 would be useful additional knowledge.

BinaryNet - 76 Stars, 5 ForkTraining Deep Neural Networks with Weights and Activations Constrained to +1 or -1
pip-check - 54 Stars, 1 ForkGives you a quick overview of all installed packages and their update status. Very much like pip list -o but with colors. Inspired by npm-check though lacks most of its features (yet).
bigchaindb - 47 Stars, 6 ForkA scalable blockchain database
pyq - 45 Stars, 1 ForkA tool to search for Python code using jQuery-like selectors
Dynamic-memory-networks-in-Theano - 26 Stars, 5 ForkImplementation of Dynamic memory networks by Kumar et al. http://arxiv.org/abs/1506.07285
grabbySub2 - 15 Stars, 1 ForkGrab movie/tv subtitles, hand crafted for you!
models - 9 Stars, 3 ForkModels built with TensorFlow
django_simpleCrud - 8 Stars, 1 ForkThis is django simple crud featuring Bootstrap CSS + jQuery
kaggle-homesite - 7 Stars, 1 ForkTop15 Model for Kaggle-Competition "Homesite Quote Conversion"
AWSInventoryLambda - 6 Stars, 3 ForkSave AWS inventory as CSV on S3 and trigger emails
modpack-helper - 6 Stars, 0 ForkEase the deployement of modded Minecraft servers
pkgquiz - 4 Stars, 3 ForkMatch debian package names to their descriptions
pygraph - 4 Stars, 0 ForkCLI interface to python graphviz
erandom - 4 Stars, 0 ForkLike /dev/random but with emojis!
bin_analyzer - 4 Stars, 0 ForkToy project for static analysis of ELF binaries
animated-win-background - 4 Stars, 1 ForkAnimated backgrounds on Windows (GIF frames)
django-auth-adfs - 3 Stars, 0 ForkA Django authentication backend for ADFS
Categories: FLOSS Project Planets

Mike Driscoll: Python Partials

Planet Python - Thu, 2016-02-11 13:15

Python comes with a fun module called functools. One of its classes is the partial class. You can use it create a new function with partial application of the arguments and keywords that you pass to it. You can use partial to “freeze” a portion of your function’s arguments and/or keywords which results in a new object. Another way to put it is that partial creates a new function with some defaults. Let’s look at an example!

>>> from functools import partial >>> def add(x, y): ... return x + y ... >>> p_add = partial(add, 2) >>> p_add(4) 6

Here we create a simple adding function that returns the result of adding its arguments, x and y. Next we create a new callable by creating an instance of partial and passing it our function and an argument for that function. In other words, we are basically defaulting the x parameter of our add function to the number 2. Finally we call our new callable, p_add, with the argument of the number 4 which results in 6 because 2 + 4 = 6.

One handy use case for partials is to pass arguments to callbacks. Let’s take a look using wxPython:

import wx   from functools import partial     ######################################################################## class MainFrame(wx.Frame): """ This app shows a group of buttons """   #---------------------------------------------------------------------- def __init__(self, *args, **kwargs): """Constructor""" super(MainFrame, self).__init__(parent=None, title='Partial') panel = wx.Panel(self)   sizer = wx.BoxSizer(wx.VERTICAL) btn_labels = ['one', 'two', 'three'] for label in btn_labels: btn = wx.Button(panel, label=label) btn.Bind(wx.EVT_BUTTON, partial(self.onButton, label=label)) sizer.Add(btn, 0, wx.ALL, 5)   panel.SetSizer(sizer) self.Show()   #---------------------------------------------------------------------- def onButton(self, event, label): """ Event handler called when a button is pressed """ print 'You pressed: ', label     if __name__ == '__main__': app = wx.App(False) frame = MainFrame() app.MainLoop()

Here we use partial to call the onButton event handler with an extra argument, which happens to be the button’s label. This might not seem all that useful to you, but if you do much GUI programming, you’ll see a lot of people asking how to do this sort of thing. Of course, you could also use a lambda instead for passing arguments to callbacks.

One use case that we’ve used at work was for our automated test framework. We test a UI with Python and we wanted to be able to pass a function along to dismiss certain dialogs. Basically you would pass a function along with the name of the dialog to dismiss, but it would need to be called at a certain point in the process to work correctly. Since I can’t show that code, here’s a really basic example of passing a partial function around:

from functools import partial   #---------------------------------------------------------------------- def add(x, y): """""" return x + y   #---------------------------------------------------------------------- def multiply(x, y): """""" return x * y   #---------------------------------------------------------------------- def run(func): """""" print func()   #---------------------------------------------------------------------- def main(): """""" a1 = partial(add, 1, 2) m1 = partial(multiply, 5, 8) run(a1) run(m1)   if __name__ == "__main__": main()

Here we create a couple of partial functions in our main function. Next we pass those partials to our run function, call it and then print out the result of the function that was called.

Wrapping Up

At this point, you should know how to use functools partial to create your own “frozen” callables. Partials have many uses, but they’re not always obvious. I recommend that you just start experimenting with them and you might start seeing uses for your own code. Have fun!

Related Reading

Categories: FLOSS Project Planets

Jose M. Calhariz: Preview of amanda 3.3.8-1, second try.

Planet Debian - Thu, 2016-02-11 13:13

I found a bug in amanda-3.3.8 that was quickly fixed by upstream. Please upgrade to this version.

The updates will go to collab-maint.The debs files for jessie are here:




Here comes the changelog:

amanda (1:3.3.8-1~cal1) unstable; urgency=low * New Upstream version * Changes for 3.3.8 * s3 devices New NEARLINE S3-STORAGE-CLASS for Google storage. New AWS4 STORAGE-API * amcryptsimple Works with newer gpg2. * amgtar Default SPARSE value is NO if tar < 1.28. Because a bug in tar with some filesystem. * amstar support include in backup mode. * ampgsql Add FULL-WAL property. * Many bugs fix. * Changes for 3.3.7p1 * Fix build in 3.3.7 * Changes for 3.3.7 * amvault new --no-interactivity argument. new --src-labelstr argument. * amdump compute crc32 of the streams and write them to the debug files. * chg-robot Add a BROKEN-DRIVE-LOADED-SLOT property. * Many bugs fix. * Refreshed patches. * Dropped patches that were applied by the upstream: fix-misc-typos, automake-add-missing, fix-amcheck-M.patch, fix-device-src_rait-device.c, fix-amreport-perl_Amanda_Report_human.pm * Change the email of the maintainer. * "wrap-and-sort -at" all control files. * swig is a new build depend. * Bump standard version to 3.9.6, no changes needed. * Replace deprecated dependency perl5 by perl, (Closes: #808209), thank you Gregor Herrmann for the NMU. * New patch fix-amgtar-exclude to fix amgtar when the exclude file don't exist. -- Jose M Calhariz <jose@calhariz.com> Thu, 11 Feb 2016 17:52:08 +0000
Categories: FLOSS Project Planets

HollyIT: Windows+Vagrant+WinNFSD Without File Update Problems

Planet Drupal - Thu, 2016-02-11 13:07
Categories: DrupalPlanet Drupal

I have used Windows to develop on for years. I have been through WAMP, XAMPP and EasyPHP, plus also going my own route to handle my web development. Last year I switched to Vagrant so that I could mimic the varying servers I work with from all my clients. Of course I was quickly plagued with the problem most Windows vagrant users face - extremely slow page loads.

Categories: FLOSS Project Planets

Nikola: Nikola v7.7.5 is out!

Planet Python - Thu, 2016-02-11 12:55

On behalf of the Nikola team, I am pleased to announce the immediate availability of Nikola v7.7.5. It fixes some bugs and adds new features.

What is Nikola?

Nikola is a static site and blog generator, written in Python. It can use Mako and Jinja2 templates, and input in many popular markup formats, such as reStructuredText and Markdown — and can even turn Jupyter (IPython) Notebooks into blog posts! It also supports image galleries, and is multilingual. Nikola is flexible, and page builds are extremely fast, courtesy of doit (which is rebuilding only what has been changed).

Find out more at the website: https://getnikola.com/


Install using pip install Nikola or download tarballs on GitHub and PyPI.

Changes Features
  • Add nikola theme --new command for creating new themes (Issue #2231)
  • Add nikola theme --copy-template command for copying templates to customize them (Issue #2231)
  • Add nikola theme --uninstall command for deleting themes (Issue #2231)
  • Replace nikola install_theme with more capable nikola theme command (Issue #2231)
  • Allow for customizing github_deploy commit messages with -m (Issue #2198)
  • Commit to source branch automatically in github_deploy if GITHUB_COMMIT_SOURCE is set to True (Issue #2186)
  • Hugo-like shortcodes (Issue #1707)
  • New Galician translation
  • New facilities for data persistence and data caching (Issues #2209 and #2009)
  • (internal) allow scripts/jinjify.py usage with scripts (Issue #2240)
  • Fix some rebuilds with indexes and galleries
  • Make state files work on Python 3
  • Don’t attempt to create redirects for URLs with query strings in WordPress imports if the site is in a subdirectory (Issue #2224)
  • Avoid some random file rebuilds (Issue #2220)
  • Honor MATHJAX_CONFIG setting
  • Display tags and archives in a unified format, with the date on the left, instead of a misplaced dash in tags (Issue #2212)
  • Decide is_mathjax based on current language tags (Issue #2205)
  • Don't duplicate images in flowr when resizing page (Issue #2202)
Categories: FLOSS Project Planets

Darren Mothersele: Build Your Own PHP Framework

Planet Drupal - Thu, 2016-02-11 12:00

I'm excited to announce that I'll be back running training at this year's Drupal Camp in London. This will be the 3rd year in a row that I've offered training at the camp. I'm doing something a bit different this time...

Build Your Own PHP Framework

In this training you will build your own PHP framework.

But, why reinvent the wheel?

Building your own framework is a great way to learn the fundamentals of modern PHP. Regardless of your choice of framework, this will make you a better developer. A similar foundation of components underlies Drupal, Symfony, Silex, and Lavavel.

If you are a developer going from Drupal 7 to Drupal 8 then you need to adopt an object-oriented mindset.

Drupal doesn't always get it right. If you understand the basic principles you know when and why you're breaking them. You can make pragmatic choices as a programmer, without embodying bad practices.

"Build Your Own Framework" is a fun training to learn modern PHP. You will learn the "SOLID" principles of PHP package design. The training will demystify dependency injection, hexagonal architecture and other design patterns. We will look at HTTP Foundation and the other Symfony components.

Come armed with a basic knowledge of PHP, a laptop that can run PHP, and an open mind. Leave with a better understanding of the principles behind modern PHP and Drupal 8.

Tickets available here.

The training will be held on Friday March 4, 2016 at City University London.

Categories: FLOSS Project Planets

IXIS: Building websites for the blind

Planet Drupal - Thu, 2016-02-11 11:15

This months Northwest Drupal User Group (NWDUG) in Manchester had a lovely visit from a non developer to talk about how the Internet has changed his life and the challenges of using the Internet as a blind person.

Being blind since he was a child has meant that some activities weren't possible before the Internet became accessible to everyday people - such as reading the news or magazine articles. Now Sunil works with the Internet everyday at his job in the British Red Cross.

read more

Categories: FLOSS Project Planets

Drupal Association News: Global Training Days - February 2016 Summary

Planet Drupal - Thu, 2016-02-11 10:05

We kicked off the 2016 Global Training Days on February 5th. Twenty-two sites held a training in 11 countries, making it a great start to all things training in 2016.

Training events were held all over the globe in a variety of spaces. From offices to the public library and spaces where public university and governmental institutions collaborated with private organizations, Drupal was brought to a wide audience. Trainers gave introductory lessons with demos and hands-on site building exercises to attendees. Thank you to everyone who participated!

Here are just a few of the tweets we received about the first of the 2016 Global Training Days.

#DrupalGTD #Drupal training in progress at @valuebound in association with @drupalbangalore @BangaloreDrupal pic.twitter.com/IbzpiOobJf

— Neeraj Kumar (@neerajskydiver) February 6, 2016

Awesome #DrupalGTD in #Lviv! Thanks everyone! https://t.co/O1eYCMN8Dg #learndrupal with @lemberg_co_uk pic.twitter.com/gkoDQRnGMe

— Lemberg Solutions (@lemberg_co_uk) February 8, 2016

And in the end...thank you for this beautiful #DrupalGTD !!!!@bonsaimeme @SparkFabrik @SapienzaRoma #Drupal pic.twitter.com/rA4RPkD86j

— Bmeme (@bonsaimeme) February 5, 2016

All smiles at our #Drupal Training Day @SunSoftCity w/ @consultndesign. #DrupalGTD pic.twitter.com/GCxA7VLzAw

— Drupal Hub (@thedrupalhub) February 5, 2016

See more photos and updates at #DrupalGTD on Twitter. The full list of participants is on the 2016 page.

Learn more about the program at drupal.org or sign up to provide training at the next event.

Personal blog tags: Drupal Global Training DayGTD
Categories: FLOSS Project Planets

David Reid: Webpack: sass &amp; import, names

Planet Apache - Thu, 2016-02-11 10:03

Having started moving to sass for my project and including the required bits in my webpack configuration (blog post), the next issue I ran into was that importing didn’t seem to work as expected.

Require not Import?

One of the additions I made to my webpack config was to add a resolve section, allowing me to use more convenient and simpler require lines in my javascript.

resolve: { modulesDirectories: ['node_modules', 'components', 'css', 'fonts'], extensions: ['', '.js', '.jsx', '.css', '.scss'] },

This worked exactly as expected wherever I used a require statement, so I had expected that this would transfer to import statements in css and sass files – but it didn’t. As it seems such an obvious thing to do, I had another look at the README for the sass-loader and found what I was looking for.

~, but not as you know it

For my testing I had created as simple a file as I could think of, test.scss.

@import ('../components/_component.scss')

This very simple file just imports another file (which happens to be sass) that belongs to a component I have in the ‘components’ directory. Nothing special, but why do I need the full import path? This was what I needed to get things working, but after looking at the sass-loader again I realised that using the ‘~’ would use the webpack resolve routines – which is what I was hoping. A small change to the file,

@import ('~_component.scss')

resulted in things working as I wanted.

NB the README cautions against using ~ as you may expect (if you’re a command line groupie) as using ~/ implies the home directory and probably isn’t what you want.

Multiple Outputs?

Having decided that I don’t want css to be included in the javascript output, I added the ExtractText plugin which allowed me to bundle all css into a single css file. This is fine, but what if I wanted to have different css bundles? What if I wanted to have different javascript bundles? My current configuration didn’t seem to allow this.

entry: { 'webpack-dev-server/client?', // WebpackDevServer host and port 'webpack/hot/only-dev-server', path.resolve(__dirname, 'components/App.js'), }

Thankfully, webpack has this covered. Instead of having a single entry you can have multiple, each of which you can supply a name. Additionally I realised that the entry point doesn’t *need* to be a javascript file as long as it’s a file that can be processed. So I changed the entry section to this.

entry: { bundle: [ 'webpack-dev-server/client?', // WebpackDevServer host and port 'webpack/hot/only-dev-server', path.resolve(__dirname, 'components/App.js'), ], test: [ path.resolve(__dirname, 'css/app.scss'), ] },

Running webpack didn’t give me what I expected as I also needed to change the output definition.

output: { path: path.resolve(__dirname, 'html'), filename: '[name].js' },

Using the [name] simply replaces the name I used in the entry definition with that text, which offers additional possibilities. With the changes made, running webpack produces

html/ bundle.js bundle.css test.js test.css

The test.js file is a little annoying and in an ideal world it wouldn’t be created, but so far I can’t find any way of preventing it from being created.

To control the output location even more, simply changing the definitiion is all that’s required for simple changes. Updating it to

entry: { ... 'css/test': [ path.resolve(__dirname, 'css/app.scss'), ] },

results in the files being created in html/css, ie

html/ bundle.js bundle.css css/ test.js test.css

NB when using a path the name needs to be in quotes.

Using this setup, component css is still included in the bundle.css and the only things appearing in test.css are those that I have specifically included in the entry file, which opens up a lot of possibilities for splitting things up. As I’m using bootstrap for the project one possibility is to use this to output a customised bootstrap file.

Hot Reload

At present hot reloading of css doesn’t seem to be working. I changed my configuration to this

entry: { 'webpack-dev-server/client?', // WebpackDevServer host and port 'webpack/hot/only-dev-server', bundle: [ path.resolve(__dirname, 'components/App.js'), ], test: [ path.resolve(__dirname, 'css/app.scss'), ] },

which still provides hot reloading of the javascript, but the css files don’t seem to work. This seems to be a common issue, but as it’s not a serious one for me at present I’m not going to spend too much time looking for solutions. If anyone knows, then I’d love to hear from you.

Categories: FLOSS Project Planets

Reuven Lerner: All 50 “Practice Makes Python” screencasts are complete!

Planet Python - Thu, 2016-02-11 09:50

I’m delighted to announce that I’ve completed a screencast for every single one of the 50 exercises in my ebook, “Practice Makes Python.”  This is more than 300 minutes (5 hours!) of Python instruction, helping you to become a more expert Python programmer.

Each screencast consists of me solving one of the exercises in real-time, describing what I’m doing and what I’m doing it.   They range in length from 4 to 10 minutes.  The idea is that you’ll do the exercise, and then watch my video to compare your answer (and approach) with mine.

If you enjoy my Webinars or in-person courses, then I think you’ll also enjoy these videos.

The screencasts, available with the two higher-tier “Practice Makes Python” packages,  can be streamed in HD video quality, or can be downloaded (DRM-free) to your computer for more convenient viewing.

To celebrate finally finishing these videos, I’m offering the two higher-end packages at 20% off for the coming week, until February 18th. Just use the offer code “videodone” with either the “consultant” or “developer” package, and enjoy a huge amount of Python video.

You can explore these packages at the “Practice Makes Python” Web site.

Not interested in my book, but still want to improve your Python skills?  You can always take one of my two free e-mail courses, on Python variable scoping and working with files. Those are and will remain free forever. And of course, there’s my free Webinar on Python and data science next week.

The post All 50 “Practice Makes Python” screencasts are complete! appeared first on Lerner Consulting Blog.

Categories: FLOSS Project Planets

roomify.us: Manage meeting room availability and take bookings with BAT for Drupal

Planet Drupal - Thu, 2016-02-11 09:45
We put together extensive documentation on how to use BAT, using a meeting room availability and booking example throughout. This is one of the most often requested features - especially from libraries and educational institutions - so we hope you will find it useful. We hope this will help and would love to hear your thoughts - get in touch.
Categories: FLOSS Project Planets

Pronovix: Publishing a code sample book from Stackoverflow to LeanPub using Drupal and GitLab

Planet Drupal - Thu, 2016-02-11 09:09

In this blogpost we want to share how Bruno Lowagie (the original developer of iText) designed a workflow that allows him to publish questions and answers from Stackoverflow on the iText Drupal site and then export them to LeanPub (utilizing a custom Drupal module).

Categories: FLOSS Project Planets

PyCharm: PyCharm 5.1 EAP is Open

Planet Python - Thu, 2016-02-11 09:04

Today we’re extremely glad to announce that the first PyCharm 5.1 Early Access Preview (EAP) build 144.3891.17 is finally available for download! Head on over to the PyCharm Early Access Preview (EAP) page and have a look at the download section where you can get it for your platform right now.

What is the Early Access Program (EAP)?
We at JetBrains believe that making tools for developers should greatly involve listening to developers. Early Access Programs allow you to try pre-release versions of our software to evaluate features that will be added to the next release, closely participate in discussions about PyCharm, and influence the release from early stages onwards.

Once you’ve downloaded the latest EAP build (from its official page), you’ll start getting updates with new features and improvements every week (to receive notifications about updates, make sure to set “Early Access Program” in your update settings). Your feedback is welcome and very much appreciated in our issue tracker or in the comments section of this blog post.

PyCharm 5.1 EAP build # 144.3891.17 introduces a lot of new features, bug-fixes and improvements. There are a number of recently added features that are unique to PyCharm, as well as additional features and improvements from the Web and IntelliJ Platform sides.

Python Related Improvements

Tox support

We’re pleased to announce that PyCharm 5.1 EAP now supports Tox, the virtualenv management and testing tool. Simply right-click the tox.ini file in the project view and choose Run “Tox” or press Ctrl (Cmd) + Shift + F10. See the tests running and results nicely represented in the graphical test runner:

Devpi and Optional PyPI repositories support

Take full control over package repositories and PyPI mirroring solutions with support for optional repositories in PyCharm. To specify a custom repository (including devpi repos):

  1. Go to Settings (Preferences) | Project | Project Interpreter and click the “+” icon:

2. In the Available Packages dialog box, click “Manage Repositories”.
3. In the Manage Repositories dialog box, add, delete or edit the URLs of any repositories:

Folding for Python code blocks, collection literals, and multi-line comments

In addition to the existing code folding functionality in PyCharm’s code editor, we’ve implemented code folding for other code structure elements such as multi-line dictionaries, lists and comments, and if-else, for/while and try-except-finally code blocks in case a code block contains more than one statement:

You can find additional options in Settings (Preferences) | Editor | General | Code folding (“Long string literals”, “Long collection literals”, “Sequential comments”). Read more about code folding options in PyCharm help.

Stepping over yield from and await

A small but neat improvement for developers who use Python 3, PyCharm’s debugger is now able to step over yield from and await expressions. Put a breakpoint before a yield from or an await expression and press the Step over button (F8). The debugger will step to the next line after the expression:

Debugger performance improvements

In addition to stepping over yield from and await expressions as described above, PyCharm’s debugger receives a number of performance improvements that we hope you’ll enjoy. One year before we released PyCharm 4, we joined efforts with Fabio Zadrozny, a PyDev maintainer, and merged our debugger code with that from the original PyDev repository. Now the work on the debugger continues from both sides (PyCharm and PyDev) in one place. As a result of the unification and the work done since then, the debugger in PyCharm has grown more powerful.

The very recent improvement that you can now see in PyCharm 5.1 EAP is that the debugger became much faster and now has optional Cython modules for even additional speedups. The debugger is reported to be now overall 40% faster without Cython and 138% faster with Cython in the benchmarks created. In real world cases, even better gains are expected as the benchmarks were done for the cases where the debugger has more overhead than usual. You can read more about the performance improvements and see some detailed benchmark statistics in the original blog post written by Fabio.

Web Development Improvements

As usual, PyCharm 5.1 will have all features of the upcoming WebStorm 12 release. WebStorm 12 preview builds are already available (read more in the WebStorm blog), so here is just a short summary of what’s new and available in the PyCharm 5.1 preview build 144.3891.17 from the Web side:

  • Better coding assistance for JavaScript, ECMAScript and TypeScript
  • Unused imports warning and сode folding for ES6 imports
  • Remote run and debug for Node.js apps
  • Code assistance in tsconfig.json, .babelrc and .eslintrc
  • Inline rename for TypeScript
  • Debugging JS async code
  • Improved support for React, Angular 1.5 and 2
  • npm support improvements and Webpack support
  • and more…

Some of these features are already bundled with PyCharm 5.1 EAP, while others are available for installation from the JetBrains plugin repository.

Platform Improvements

In addition to the new features and improvements from the Web side, PyCharm 5.1 receives a lot of changes from the underlying IntelliJ Platform. The most noteworthy changes include:

  • Support for RTL languages (Arabic and Hebrew).
  • Easier merging with Git and other VCS thanks to the added by-word difference highlighting.
  • Two new actions to help you work with Git branches, available via the Branches popup (VCS | Git | Branches): Checkout with Rebase and Rename.
  • Git worktree support and updated look and feel of Git Log.
  • Improved speed-search in the show usages popup (Ctrl(Cmd)+Alt+7).

PyCharm 5.1 runs on Java 8

Another important announcement is that the whole IntelliJ Platform has migrated to Java 8. That means that now you can not launch PyCharm under a JDK older than Java 8. This change affects all the EAP builds (144.*) and further major releases this upcoming spring.

Download PyCharm 5.1 preview build 144.3891.17 for your platform right from the project EAP page, and please report any bugs and feature request to our Issue Tracker.

Note: The PyCharm 5.1 preview build is available in two editions – free/open source PyCharm Community Edition and full-fledged PyCharm Professional Edition. While both of them are available for download and use at no charge, PyCharm Professional Edition has a 30-day time-limited evaluation period.

PyCharm Team
The Drive to Develop

Categories: FLOSS Project Planets

Vote for Presentations - OpenStack Summit Austin 2016

Planet KDE - Thu, 2016-02-11 08:50
The first OpenStack Summit this year will take place in Austin (TX, US) from April 25-29, 2016. The "Call for Speakers" period ended some days ago and now the community voting for presentation started and will end 17th February, 11:59 PST (18th February 7:59 UTC / 08:59 CEST). 
I've submitted this time one talk this time:
  • "From Hardware to Application - NFV@OpenStack and Ceph" - This talk will provide insight into NFV cloud specific hardware and data center design, preferred setup and requirements to OpenStack and Ceph and also important design implications and requirements for applications and developers on this platform. 

You can vote, if you are interested to see my talk at the summit, every vote is highly welcome. The full abstract can be found at the voting page.
There is a long list of interesting Ceph related talks, simply use the search field on the voting page. I may provide a list in an additional post later as last time.
Categories: FLOSS Project Planets
Syndicate content