FLOSS Project Planets

Clint Adams: Banana Pi is a real thing

Planet Debian - Sun, 2014-09-28 14:13

Now that I've almost caught up with life after an extended stint on the West Coast, it's time to play.

Like Gunnar, I acquired a Banana Pi courtesy of LeMaker.

My GuruPlug (courtesy me) and my Excito B3 (courtesy the lovely people at Tor) are giving me a bit of trouble in different ways, so my intent is to decommission and give away the GuruPlug and Excito B3, leaving my DreamPlug and the Banana Pi to provide the services currently performed by the GuruPlug, Excito B3, and DreamPlug.

The Banana Pi is presently running Bananian on a 32G SDHC (Class 10) card. This is close to wheezy, and appears to have a mostly-sane default configuration, but I am not going to trust some random software downloaded off the Internet on my home network, so I need to be able to run Debian on it instead.

My preliminary belief is that the two main obstacles are Linux and U-Boot. Bananian 14.09 comes with Linux 3.4.90+ #1 SMP PREEMPT Fri Sep 12 18:13:45 CEST 2014 armv7l GNU/Linux, whatever that is, and U-Boot SPL 2014.04-10694-g2ae8b32 (Sep 03 2014 - 20:53:14). I don't yet know what the status of mainline/Debian support is.

Someone gave me a wooden cigar box to use as a case, which is not working out quite as hoped. I also found that my hack to power a 3.5" SATA drive does not work, so I'll either need to hammer on that some more or resolve to use a 2.5" drive instead.

memory:

Mem: 993700 36632 957068 0 2248 11136 -/+ buffers/cache: 23248 970452 Swap: 524284 1336 522948

cpu:

Processor : ARMv7 Processor rev 4 (v7l) processor : 0 BogoMIPS : 1192.96 processor : 1 BogoMIPS : 1197.05 Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 4 Hardware : sun7i Revision : 0000 Serial : 03c32de75055484880485278165166c9
Categories: FLOSS Project Planets

Experimenting with keyboard shortcuts

Planet KDE - Sun, 2014-09-28 14:09

A few weeks ago, I decided to make an experiment and completely rework the global shortcuts of my KDE desktop. I wanted them to make a bit more sense instead of being the agglomerated result of inspirations from other systems, and was ready to pay the cost of brain retraining.

My current shortcut setup relies on a few "design" decisions:

  • All workspace-level shortcuts must use the Windows (also known as Meta) modifier key, application shortcuts are not allowed to use this modifier.

  • There is a logical link between a shortcut and its meaning. For example, the shortcut to maximize a window is Win + M.

  • The Shift modifier is used to provide a variant of a shortcut. For example the shortcut to minimize a window is Win + Shift + M.

I am still playing with it, but it is stabilizing these days, so I thought I'd write a summary of what I came up with:

Window management
  • Maximize: Win + M.

  • Minimize: Win + Shift + M.

  • Close: Win + Escape. This is somehow consistent with the current Win + Shift + Escape to kill a window.

  • Always on top: Win + T.

  • Shade: Win + S.

  • Switch between windows: Win + Tab and Win + Shift + Tab (yes, this took some work to retrain myself, and yes, it means I no longer have shortcuts to switch between activities).

  • Maximize left, Maximize right: Win + :, Win + !. This is very localized: ':' and '!' are the keys under 'M' on my French keyboard. Definitely not a reusable solution. I used to use Win + '(' and Win + ')' but it made more sense to me to have the maximize variants close to the full Maximize shortcut.

  • Inner window modifier key: Win. I actually changed this from Alt a long time ago: it is necessary to be able to use Inkscape, as it uses Alt + Click to select shapes under others.

Virtual desktop
  • Win + Left, Win + Right: Go to previous desktop, go to next desktop.

  • Win + Shift + Left, Win + Shift + Right: Bring the current window to the previous desktop, bring the current window to the next desktop.

  • Win + F1, Win + F2, Win + F3: Switch to desktop 1, 2 or 3.

Application launch
  • Win + Space: KRunner.

  • Win + Shift + Space: Homerun.

Misc
  • Win + L: Lock desktop.
How does it feel?

I was a bit worried about the muscle-memory retraining, but it went quite well. Of course I am a bit lost nowadays whenever I use another computer, but that was to be expected.

One nice side-effect I did not foresee is that this change turned the Win modifier into a sort of quasimode: all global workspace operations are done by holding the Win key. I said "sort of" because some operations requires you to release the Win key before they are done, for example when switching from one window to another, no shortcuts work as long as the window switcher is visible, so one needs to release the Win key after switching and press it again to do something else. I notice this most often when maximizing left or right.

Another good point of this approach is that, almost no shortcuts use function keys. This is a good thing because: a) it can be quite a stretch for small hands to hold both the Win or Alt modifier together with a function key and b) many laptops these days come with the function keys mapped to multimedia controls and need another modifier to be held to become real function keys, some other laptops do not even come with any function keys at all! (heresy I know, but such is the world we live in...)

What about you, do you have unusual shortcut setups?

Categories: FLOSS Project Planets

Jonathan Dowland: What have I been up to?

Planet Debian - Sun, 2014-09-28 13:59

It's been a little while since I've written about what I've been up to. The truth is I've been busy with moving house - and I'll write a bit more about that at another time. But asides from that there have been some bits and bobs.

I use a little tool called archivemail to tidy up old listmail (my policy is to retain 30 days of listmail for most lists). If I unsubscribe to a list, then eventually I end up with an empty mail folder corresponding to that list. I decided it would be nice to extend archivemail to delete mailboxes if, after the archiving has taken place, the mailbox is empty. Doing this properly means adding delete routines to Python's "mailbox" library, which is part of the Python standard library. I've therefore started work on a patch for Python.

Since this is an enhancement, Python would only accept a patch for Python 3. Therefore, eventually, I would also have to port archivemail from Python 2 to 3. "archivemail" is basically abandonware at the moment, and the principal Debian maintainer is MIA. There was a release critical bug filed against it, so I joined the Debian Python team to co-maintain archivemail in Debian. I've worked around the RC bug but a proper fix is still to come.

In other Debian news, I've been mostly quiet. A small patch for squishyball to get it to build on Hurd, and a temporary fix patch for lhasa to get it to build on the build daemons for all architectures (problems with the test suite). All three of lhasa, squishyball and archivemail need a little bit of love to get them into shape before the jessie freeze.

I've had plans to write up some of the more interesting technical things I've been up to at work, but with the huge successes of the School we've been so busy I haven't had time. Hopefully you can soon look forward to some of our further adventures with puppet, including evaluating Shibboleth modules, some stuff about handling user directories, bind mounts and LVM volumes and actually publishing some of our more useful internal modules; I hope we will also (soon) have some useful data to go with our experiments with Linux LXC containers versus KVM-powered virtual machines in some of our use-cases. I've also got a few bits and pieces on Systemd to write up.

Categories: FLOSS Project Planets

Don't Panic: A blog about Drupal: First day of DrupalCon Amsterdam

Planet Drupal - Sun, 2014-09-28 13:51

My first day of DrupalCon Amsterdam comes to an end, and behind me are a visit to the wonderful sprint venue Berlage, which is located near the train station in the center of Amsterdam, and a loooong walk to Vondelpark (no, not Wunderkraut-sponsored Wunderpark, which many suggested). My global aim for this DrupalCon is to dive into the code of Drupal, becoming more custom to the code behind Drupal. Normally I classify me as a Drupal user, I use modules and tune them to make Drupal do the stuff I want Drupal to do. But I want to evolve, to learn something more than just using Drupal. So when my co-workers are going home on Thursday, I will stay for the sprints on Friday and Saturday to hopefully learn something about coding for Drupal.

My visit to Berlage was a small step in that direction, to see if I can help out and learn something. It turns out I came just when people were leaving to welcome the people coming to DrupalCamp Amsterdam by bike (!). I knew some of these people, so naturally I came along to Vondelpark to welcome the cyclists. A barbecue was firing up, beers were cooling and people were nice to talk to. I met a whole bunch of new people, and some old acquaintances as well (which was surprising since I don't consider myself a Drupal-globetrotter). 

The local Drupal Community really showed off a good time, arranging this barbecue, and they also talked about what will happen during the following couple of days, which really looks promising. There are around 15 persons in the local community, and it seems they have done a good job! It's going to be nice seeing what will become of this.

Categories: FLOSS Project Planets

Drupal Association News: Drupal.org User Research Results: User Personas

Planet Drupal - Sun, 2014-09-28 13:16

Back in May the Drupal Assocation with the help of the Drupal.org Content Working Group kicked off user research project for Drupal.org. Our goal was to understand who are our users, how do they use the website, what is their ideal user experience. We wanted to understand what are the main segments of our audience and define their priority so we could focus our development efforts. This user research is a first step on the path to a complete Drupal.org redesign. For the redesign to be successful, we wanted to have a complete picture of everyone who uses Drupal.org.

This user research was conducted with the help of Whitney Hess, user experience coach. We are thankful to Whitney for her time and experience she shared with us. It was a great pleasure working with her.

Now to the results we want to share.

The Process

We kicked of the project with a workshop during DrupalCon Amsterdam. Participants included members of the Drupal.org Working Groups (Content, Software and Infrastructure), members of the DSWG Leadership teams (Developer and Community Tools), and the Drupal Association staff members.

Findings from this first workshop you can find in the blog post.

Our next step was user interviews. During DrupalCon Austin and in the weeks following the event we’ve conducted 30 user interviews with various people: new to Drupal, long-term community members, ex-Drupalistas; developers, site builders, designers, content strategists, PMs, etc.; located in North and South America and Europe. Interviews were conducted by Whitney Hess, Joshua Mitchell, Roy Scholten and Tatiana Ugriumova (myself).

Once we had completed several interviews, Whitney and I started synthesizing them and developing personas.

In the middle of July, during our annual all-staff onsite week at the Drupal Association, we had the second workshop of this project. Drupal Association staff and Whitney Hess took a look at the work-in-progress personas and our original objectives, to make sure they still made sense and to prepare them for review by the working groups and board.

The Results

Objectives for a new Drupal.org:

  1. Be the home of the Drupal community. Central source of relevant info/answers, collaboration, education and talent.
  2. Provide learnable, efficient tools to help coordinate the advancement of Drupal ecosystem.
  3. Encourage people to develop themselves, their Drupal proficiency, their careers & build human connections over time.

Based on the insights we learned in our research we decided to center our personas around competency in Drupal and the Drupal ecosystem.

We modified Dreyfus's model of skill acquisition as a basis for our persona structure. This model suggests 5 levels of competency, which for our purposes we call:

  • Newcomer
  • Learner
  • Skilled
  • Expert
  • Master

For further clarity and focus, we determined primary and secondary personas. Primary personas are who we design for first. Each primary persona requires their own set of features and content, and the needs of a primary persona will not be met if we do not design for them explicitly. The needs of secondary personas can mostly be met by focusing on the primary personas. However, there are a few needs specific to them that we will need to accommodate for.

Based on the goal of growing the community and the usage of Drupal, we determined the primary personas to be: Learner and Skilled. Our secondary persona is Expert. Newcomer and Master are our tertiary personas.

This is a very short summary of the research results. More information and an actual personas can be found in the full report below.

Get the full Drupal.org User Personas report: Google Doc | Pdf

We'd like again to say thanks to Whitney for helping us during this process.

As I mentioned above, user research is the first step of a greater project. Our next step is content strategy work for Drupal.org. We'll be posting RFP for it shortly, watch this blog.

Categories: FLOSS Project Planets

Ned Batchelder: Coverage.py v4.0a1

Planet Python - Sun, 2014-09-28 10:36

The first alpha of the next major version of coverage.py is available: coverage.py v4.0a1.

The big new feature is support for the gevent, greenlet, and eventlet concurrency libraries. Previously, these libraries' behind-the-scenes stack swapping would confuse coverage.py. Now coverage adapts to give accurate coverage measurement. To enable it, use the "concurrency" setting to specify which library you are using.

Huge thanks to Peter Portante for getting the concurrency support started, and Joe Jevnik for the last final push.

Also new is that coverage.py will read its configuration from setup.cfg if there is no .coveragerc file. This lets you keep more of your project configuration in one place.

Lastly, the textual summary report now shows missing branches if you are using branch coverage.

One warning: I'm moving around lots of internals. People have a tendency to use what they need to to get their plugin or tool to work, so some of those third-party packages may now be broken. Let me know what you find.

Full details of other changes are in the CHANGES.txt file.

Categories: FLOSS Project Planets

Netstudio.gr Blog: You own an e-shop? Automate your shipments

Planet Drupal - Sun, 2014-09-28 09:45

The problem

If you own an e-shop, you know the process:: Orders come, you write the shipping vouchers by hand or through the software that your courier service has given to you, you print them, and you stick them on the packages. This has to be done quickly and with no mistakes.

The solution

Recently, we developed for a client the automation of this process. When an order is received, it automatically gets assigned a voucher ID. The client receives an email, SMS or both with a link to the tracking page. This page resides inside the e-shop, so the prestige of the site is increased. Alternatively, before the voucher creation, the shop owner checks the address for possible extra charges and informs the client. This automation reduces the time it needs to prepare the shipments to one third and keeps the client happy as he may check his shipment progress through the tracking page without having to call the e-shop. Finally, mistakes are gone, as the voucher gets printed with the data that the client has entered himself. For more info call us at +30 2108004447 or fill in the contact form.

Categories: FLOSS Project Planets

Verbosity: Migrating Drupal 8 in Europe

Planet Drupal - Sun, 2014-09-28 07:40

This week we're in Europe for DrupalCon Amsterdam! This is starting to feel suspiciously close to a beta so it is time to dive into Migrate again so you can start working on your new sites with real-world data. Let's begin!

What's up with migrate?

Migrate in the Drupal context means running a migration from the new Drupal 8 site and pulling data from an existing site. It replaces the old upgrade-in-place system that was used in prior versoins of Drupal. So do a fresh install of Drupal 8 and have an old Drupal 6 site on the same host. After you've logged into Drupal 8 you can connect to your Drupal 6 site.

How is Drupal 8 migrate different from Drupal 7 migrate (and migrate_d2d)?

In the older versions of Migrate the process invovled defining your field mappings and manually creating the new content types in the D7 system. This is no longer necessary.

Drupal 8 migrations will automatically create the needed content types and establish the mappings between the old and new fields by default. Therefore much less configuration is needed.

For times when it is necessary to customizae your migration you can use the included hooks or you can use the configuration schema to use the included plugins with your custom data set. The hooks go further than in D7, allowing you to alter data in the prepareRow stage without having to create a custom migration to deal with the data.

Migrate from Drupal 6? What about from Drupal 7?

Migrate frees us from the need to update each sequential version. You can leafrog versions! With Drupal 6 being close to end-of-life it is important to have a pathway for these users. For this reason, the D6 to D8 path was built first.

For Drupal 7: soon. This is now in-progress now that we are finalizing the Drupal 6 code.

Requirements
  • Drush! The UI is still in a contrib sandbox, so for now you must use Drush. The latest version - from Github.
  • Composer. It is needed to install Drush. Go into the drush folder and run "composer install". Already installed? "composer update"
  • D6 Database. Have it on the same host as the new Drupal 8 install.
  • D6 Files. Probably a good idea to be on the same host. Can be file path or http(s) address.
  • D8 Database. A new, empty database. Use the old Creating the database howto if new to this.
  • D8 Files. Check out the git repo... unless of course a beta becomes available. Then use that.
Using Drupal Tools

If you do not currently have a Drupal 8 install one route to get there is to use the Drupal Tools for your platform. It includes all the software you need and the correct versions. It is available for Linux, Mac, and Windows.

If you install the Drupal Tools package it is not necessary to install Git, Drush, or Composer.

The installation should be current as it includes a version of Drush which must be up-to-date. So if you had installed Tools before, double check the version if you have any trouble.

Install Drupal8

Using the database credentials you created, install your new Drupal 8 site.

If you need to rebuild your site remember to delete your ENTIRE files folder and old settings.php. Reinstalling without doing this step will cause problems.

Install Composer / Drush

Make sure you have run the Composer installer. You should be able to type which composer and get a result in your terminal.

Check out the latest Drush. Go into the Drush folder and run composer install.

Next time you git pull (or git fetch) in the Drush folder, make sure to run composer update.

Find an isuse to test
  • Go to the Drupal project issue queue and filter down by Component: migration system, Version: 8.x.
  • Pick an issue that is not already fixed.
  • If you are sprinting with lots of people, pick something further down the list so you are not working on the same thing as someone else.
  • Read the posts. If it is easy enough you think you can handle it, post a comment to say you are doing some work on it.
  • Post the results of your tests.
Time to Migrate

Put the manifest.yml file with the migrations you wish to run in your D8 site root. Then go there on the command line and run the following command, using your D6 database credentials.

You can install Drupal 8 at this stage. If you do, be sure to enable all of the necessary modules. For example, if you use the Book module, it is not enabled by default, so you should enable it now or your book nodes will simply become a regular content type.

When Drupal 8 is no longer in beta the manifest.yml file will not be necessary unless you are doing some custom work. In most cases all that will be necessary is to put in the database credentials and the system will run all the migrations that the system knows about by default.

You will find a manifest.yml file attached to many Migrate issues that will enable you to begin the migration. Here is a sample of what I am using... I have added together many different issues and I run them all at the same time:

# user
- d6_user
- d6_user_profile_field
- d6_user_profile_field_instance
- d6_user_profile_entity_display
- d6_user_profile_entity_form_display
- d6_profile_values:user
- d6_filter_format
- d6_user_role
- d6_user_picture_entity_display
- d6_user_picture_entity_form_display
- d6_user_picture_file
- d6_user_picture_field
- d6_user_picture_field_instance
# taxonomy
- d6_taxonomy_vocabulary
- d6_taxonomy_settings
- d6_taxonomy_term
# nodes
- d6_node
- d6_node_revision
- d6_node_type
- d6_view_modes
- d6_filter_format
- d6_field_instance_per_form_display
- d6_field_instance_widget_settings
- d6_field_formatter_settings
- d6_field_instance
- d6_field
- d6_field_settings
- d6_node_settings
- d6_cck_field_values:*
- d6_cck_field_revision:*
# taxonomy fields
- d6_term_node_revision
- d6_term_node
- d6_vocabulary_entity_display
- d6_vocabulary_entity_form_display
- d6_vocabulary_field_instance
- d6_vocabulary_field
# blocks
- d6_block
- d6_menu
# custom blocks
- d6_custom_block
- d6_filter_format
# book
- d6_book
- d6_book_settings

Now that you have created a manifest.yml file in the Drupal 8 root directory you can run the migration.

drush migrate-manifest --legacy-db-url=mysql://d6user:d6pass@localhost/d6 manifest.yml

If you are using Drupal Tools (Acquia Dev Desktop), and if you have also put your D6 site into Dev Desktop, you will need to specify the port number. You can find your database settings by creating an AcquiaDevDesktop terminal and typing drush status to get the exact settings for your D6 site. The result should look something like this:

drush migrate-manifest --legacy-db-url=mysql://drupaluser:@127.0.0.1:33067/drupal_6 manifest.yml

Note that the database user for D6 is called "drupaluser" and it uses the local IP address and port number rather than the host name. Again, run drush status if you are having trouble connecting to verify these values.

Results

After you have run the migration check your work. Did things do what you expected? Post the results of your findings to the issue queue you of the item you were working on.

Was the result successful? If so, post the result.

Did something fail? Post the result.

Post your results! Don't be afraid to comment on Drupal.org. If you provide examples of your tests you will help the migration path improve.

Rolling back (starting over)
  • It is possible to re-run the migration. This can be helpful if you forgot to run a component, or if you have new items in the source site that you would like to add to the Drpual8 site.
  • To completely "roll-back" you really need to reinstall Drupal 8. To do this you must do three things: (1) empty your database, (2) delete settings.php, (3) remove the files folder completely.
Going further Category: DrupalDrupal 8Drupal Planet
Categories: FLOSS Project Planets

Deeson: Data visualisation of who's making Drupal 8

Planet Drupal - Sun, 2014-09-28 04:15

I've been having fun for the last few weeks building an interactive data visualisation tool, The Drupal8r, to show how the Drupal community is coming together to develop the next release, Drupal 8.

What is Drupal?

Drupal is a free open-source web development platform which is designed to support online content, community and commerce. We've been using it since 2007.

Because it is open-source and built, developed and maintained by a huge global community who constantly update it as technology evolves.

Drupal 8, the latest release, is coming soon.

There are more than half a million people in the Drupal community, all working to make it the best platform around and usually in their spare time. 

We wanted to celebrate the community's collaboration and show who is making some of the biggest contributions and commitments in getting Drupal 8 ready for launch. And so the idea for The Drupal8r was born.

The Drupal community

There are hundreds of people in the Drupal community who write the platform's core code as their community contribution (called the contributors). This code is tested and reviewed by a handful of people who then commit it to the core (known as the committers).

D3 data visualisation

I used the d3.js JavaScript library for manipulating documents based on data and Drupal git-log data to build a chart which displays the names of code contributors and committers with their corresponding Drupal 8 modules. At the moment you can view data from the latest 5000 commits to Drupal 8.

Have a go!

Have a play with The Drupal8r, our fun and interactive data visualisation tool to see who has committed and contributed to modules for the next release of Drupal 8. 

Come and play with The Drupal8r now.

For mobile users

The text is small for mobile users and our human eyes haven't quite caught up with technology yet. So, have a look at this short video to see how it works instead.

The Drupal8r data visualisation tool Keep in mind

When using it for just committers or contributors, the width of the connection represents the number of commits. When you are viewing both,  the width of the connection has no meaning. 

The Drupal8r can only show a certain amount of items on the page, by default The Drupal8r shows 100 items. It shows all the modules and committers, but the number of contributors are capped and grouped together under 'other'.

Four things The Drupal8r shows
  1. A lot of people contribute - getting Drupal 8 ready is a massive team effort. It isn't just one person contributing to each module, but many people. Thanks everyone!
  2. In terms of pure numbers, Alex Pott, Webchick, and Nathaniel Catchpole have been the most prolific contributors to the Drupal 8 project. Impressive stuff.
  3. But the number of commits isn't necessarily a reasonable measure of an individual's contribution. Dries Buytaert and Jennifer Hodgdon may have been focusing on the bigger issues. The core team have reviewed and tested more than 5000 bug patches and bring us close to Drupal 8's launch - what a feat.
  4. For those in the Drupal community, see if you can spot the person who is in there twice under different names...
Coming soon...

Next month I'm going to write another blog post over here on Labs about how I made The Drupal8r and the technologies used.

I'll be enhancing The Drupal8r over the next few months. I'm going to add an option to download more data to include in the chart and a contributor filter, so you'll be able to link to a particular contributor's commits.

Don't miss out on our development of the chart, so sign up to our newsletter below to keep in the loop.

Categories: FLOSS Project Planets

Mats Kindahl: Pythonic Database API: Now with Launchpad

Planet Python - Sun, 2014-09-28 03:11
In a previous post, I demonstrated a simple Python database API with a syntax similar to jQuery. The goal was to provide a simple API that would allow Python programmers to use a database without having to resort to SQL, nor having to use any of the good, but quite heavy, ORM implementations that exist. The code was just an experimental implementation, and I was considering putting it up on Launchpad.
I did some basic cleaning of the code, turned it into a Python package, and pushed it to Launchpad. I also added some minor changes, such as introducing a define function to define new tables instead of automatically creating one when an insert was executed. Automatically constructing a table from values seems neat, but in reality it is quite difficult to ensure that it has the right types for the application. Here is a small code example demonstrating how to use the define function together with some other operations.
import mysql.api.simple as api server = api.Server(host="example.com") server.test_api.tbl.define( { 'name': 'more', 'type': int }, { 'name': 'magic', 'type': str }, ) items = [ {'more': 3, 'magic': 'just a test'}, {'more': 3, 'magic': 'just another test'}, {'more': 4, 'magic': 'quadrant'}, {'more': 5, 'magic': 'even more magic'}, ] for item in items: server.test_api.tbl.insert(item) The table is defined by providing a dictionary for each row that you want in the table. The two most important fields in the dictionary is name and type. The name field is used to supply a name for the field, and the type field is used to provide a type of the column. The type is denoted using a basic Python type constructor, which then maps internally to a SQL type. So, for example, int map to the SQL INT type, and bool map to the SQL type BIT(1). This choice of deciding to use Python types are simply because it is more natural for a Python programmer to define the tables from the data that the programmer want to store in the database. I this case, I would be less concerned with how the types are mapped, just assuming that it is mapped in a way that works. It is currently not possible to register your own mappings, but that is easy to add.So, why provide the type object and not just a string with the type name? The idea I had here is that since Python has introspection (it is a dynamic language after all), it would be possible to add code that read the provided type objects and do things with them, such as figuring out what fields there are in the type. It's not that I plan to implement this, but even though this is intended to be a simple database interface, there is no reason to tie ones hands from start, so this simple approach will provide some flexibility if needed in the future.
LinksSome additional links that you might find useful:
Connector/Python
You need to have Connector/Python installed to be able to use this package.
Sequalize
This is a JavaScript library that provide a similar interface to a database. It claims to be an ORM layer, but is not really. It is more similar to what I have written above.
Roland's MQL to SQL and Presentation on SlideShare is also some inspiration for alternatives.

Categories: FLOSS Project Planets

Unimity Solutions Drupal Blog: DrupalCon Amsterdam - Diary - Saturday 27th Sep

Planet Drupal - Sun, 2014-09-28 02:53

I am proud to receive a Grant from the Drupal Association to attend DrupalCon Amsterdam. As a note of thanking the community, I started Day 1 here, Saturday, 27th September Volunteering to help Tote Bag and Badge Stuffing activity at Onyx Lounge at Amsterdam Rai. 

Categories: FLOSS Project Planets

Benjamin Mako Hill: Community Data Science Workshops Post-Mortem

Planet Debian - Sun, 2014-09-28 01:02

Earlier this year, I helped plan and run the Community Data Science Workshops: a series of three (and a half) day-long workshops designed to help people learn basic programming and tools for data science tools in order to ask and answer questions about online communities like Wikipedia and Twitter. You can read our initial announcement for more about the vision.

The workshops were organized by myself, Jonathan Morgan from the Wikimedia Foundation, long-time Software Carpentry teacher Tommy Guy, and a group of 15 volunteer “mentors” who taught project-based afternoon sessions and worked one-on-one with more than 50 participants. With overwhelming interest, we were ultimately constrained by the number of mentors who volunteered. Unfortunately, this meant that we had to turn away most of the people who applied. Although it was not emphasized in recruiting or used as a selection criteria, a majority of the participants were women.

The workshops were all free of charge and sponsored by the UW Department of Communication, who provided space, and the eScience Institute, who provided food.

The curriculum for all four session session is online:

The workshops were designed for people with no previous programming experience. Although most our participants were from the University of Washington, we had non-UW participants from as far away as Vancouver, BC.

Feedback we collected suggests that the sessions were a huge success, that participants learned enormously, and that the workshops filled a real need in the Seattle community. Between workshops, participants organized meet-ups to practice their programming skills.

Most excitingly, just as we based our curriculum for the first session on the Boston Python Workshop’s, others have been building off our curriculum. Elana Hashman, who was a mentor at the CDSW, is coordinating a set of Python Workshops for Beginners with a group at the University of Waterloo and with sponsorship from the Python Software Foundation using curriculum based on ours. I also know of two university classes that are tentatively being planned around the curriculum.

Because a growing number of groups have been contacting us about running their own events based on the CDSW — and because we are currently making plans to run another round of workshops in Seattle late this fall — I coordinated with a number of other mentors to go over participant feedback and to put together a long write-up of our reflections in the form of a post-mortem. Although our emphasis is on things we might do differently, we provide a broad range of information that might be useful to people running a CDSW (e.g., our budget). Please let me know if you are planning to run an event so we can coordinate going forward.

Categories: FLOSS Project Planets

Justin Mason: Links for 2014-09-27

Planet Apache - Sat, 2014-09-27 19:58
  • La Maison des Amis

    Paul Hickey’s gite near Toulouse, available for rent! ‘a beautifully converted barn on 5 acres, wonderfully located in the French countryside. 4 Bedrooms, sleeps 2-10, Large Pool, Tennis Court, Large Trampoline, Broadband Internet, 30 Mins Toulouse/Albi, 65 Mins Carcassonne, 90 Mins Rodez’

    (tags: ex-iona gites france holidays vacation-rentals vacation hotels)

  • waxpancake on Ello

    The Ello founders are positioning it as an alternative to other social networks — they won’t sell your data or show you ads. “You are not the product.” If they were independently-funded and run as some sort of co-op, bootstrapped until profitable, maybe that’s plausible. Hard, but possible. But VCs don’t give money out of goodwill, and taking VC funding — even seed funding — creates outside pressures that shape the inevitable direction of a company.

    (tags: advertising money vc ello waxy funding series-a)

  • Inviso: Visualizing Hadoop Performance

    With the increasing size and complexity of Hadoop deployments, being able to locate and understand performance is key to running an efficient platform.  Inviso provides a convenient view of the inner workings of jobs and platform.  By simply overlaying a new view on existing infrastructure, Inviso can operate inside any Hadoop environment with a small footprint and provide easy access and insight.   This sounds pretty useful.

    (tags: inviso netflix hadoop emr performance ops tools)

  • The End of Linux

    ‘Linux is becoming the thing that we adopted Linux to get away from.’ Great post on the horrible complexity of systemd. It reminds me of nothing more than mid-90s AIX, which I had the displeasure of opsing for a while — the Linux distros have taken a very wrong turn here.

    (tags: linux unix complexity compatibility ops rant systemd bloat aix)

Categories: FLOSS Project Planets

Nick Kew: Forever war

Planet Apache - Sat, 2014-09-27 19:17

Once again, we’re going to war against an ill-defined enemy.  But this time it’s clear: this is the enemy’s own agenda, and our Headless Chickens are merrily dancing to “Jihadi John”‘s tune.  As ever, we’ll take a bad situation and make it vastly worse.

When it’s demagogues like Galloway and Farage consistently talking the most sense on the subject of policy towards the world’s trouble spots, one can but shake the head and redouble one’s efforts to reduce complicity.

Oh, erm, and am I the only one to see the irony in all the Islamic State horror coming in this centenary year of 1914, as we look back at “Germans eat your babies”?


Categories: FLOSS Project Planets

Ram Rachum: Another silly Python riddle

Planet Python - Sat, 2014-09-27 18:08

Do you think of yourself as an experienced Python developer? Do you think you know Python’s quirks inside and out? Here’s a silly riddle to test your skills.

Observe the following Python code:

def f(x): return x == not x f(None)

The question is: What will the call f(None) return?

Think carefully and try to come up with an answer without running the code. Then check yourself :)

Categories: FLOSS Project Planets

pspp @ Savannah: PSPP 0.8.4 has been released.

GNU Planet! - Sat, 2014-09-27 18:06

I'm very pleased to announce the release of a new version of GNU PSPP. PSPP is a program for statistical analysis of sampled data. It is a free replacement for the proprietary program SPSS.

Changes from 0.8.3 to 0.8.4:

  • Formatting of SYSFILE INFO output was made easier to read.
  • Bug fixes, including the following notable ones:
    • FREQUENCIES works properly for string variables. (This bug was introduced in 0.8.2.)
    • CROSSTABS now correctly computes all of the measures that it offers. Some measures have been removed because they were not computed correctly.
    • The NPAR TESTS calculation of significance for the RUNS subcommand has been corrected.
    • Planned comparisons in ONEWAY ANOVA now correctly handle negative T-values.
    • Conformance fixes to Open Document output format.

Please send PSPP bug reports to bug-gnu-pspp@gnu.org.

Categories: FLOSS Project Planets

Plasma 5.1 release parties!

Planet KDE - Sat, 2014-09-27 17:59

Plasma 5.1 is coming up in less than a month, we have already two release parties in the planning, but i'm sure you have some fellow KDE users around you want to meet and have a beer with, so hop onto your local LUG, meetup, or something, organize a party and add it to https://community.kde.org/Promo/Events/Release_Parties/Plasma5.1

Categories: FLOSS Project Planets

Sour Dough

LinuxPlanet - Sat, 2014-09-27 17:39
I've tried baking sour dough before and it wasn't very successful. Without a doubt it came down to not know how to build a good starter. Recently I started listening to the Stella Culinary School Podcast and following his instructions to make sour dough bread.
All I can say is that:
My first loaf
  1. Sour Dough requires more knowledge than most cooking techniques and can't just be done with a recipe.
  2. Once you understand some of the science it isn't all that hard though.
  3. It is super rewarding to make home made sour dough from local wild yeast.


With an Egg Wash
Categories: FLOSS Project Planets

Ned Batchelder: How should I distribute coverage.py alphas?

Planet Python - Sat, 2014-09-27 16:20

I thought today was going to be a good day. I was going to release the first alpha version of coverage.py 4.0. I finally finished the support for gevent and other concurrency libraries like it, and I wanted to get the code out for people to try it.

So I made the kits and pushed them to PyPI. I used to not do that, because people would get the betas by accident. But pip now understands about pre-releases and real releases, and won't install an alpha version by default. Only if you explicitly use --pre will you get an alpha.

About 10 minutes after I pushed the kits, someone I was chatting with on IRC said, "Did you just release a new version of coverage?" Turns out his Travis build was failing.

He was using coveralls to report his coverage statistics, and it was failing. Turns out coveralls uses internals from coverage.py to do its work, and I've made big refactorings to the internals, so their code was broken. But how did the alpha get installed in the first place?

He was using tox, and it turns out that when tox installs dependencies, it defaults to using the --pre switch! Why? I don't know.

OK, I figured I would just hide the new version on PyPI. That way, if people wanted to try it, they could use "pip install coverage==4.0a1", and no one else would be bothered with it. Nope: pip will find the newer version even if it is hidden on PyPI. Why? I don't know.

In my opinion:

  • Coveralls shouldn't have used coverage.py internals.
  • Tox shouldn't use the --pre switch by default.
  • Pip shouldn't install hidden versions when there is no version information specified.

So now the kit is removed entirely from PyPI while I figure out a new approach. Some possibilities, none of them great:

  1. Distribute the kit the way I used to, with a download on my site. This sucks because I don't know if there's a way to do this so that pip will find it, and I don't know if it can handle pre-built binary kits like that.
  2. Do whatever I need to do to coverage.py so that coveralls will continue to work. This sucks because I don't know how much I will have to add back, and I don't want to establish a precedent, and it doesn't solve the problem that people really don't expect to be using alphas of their testing tools on Travis.
  3. Make a new package on PyPI: coverage-prerelease, and instruct people to install from there. This sucks because tools like coveralls won't refer to it, so either you can't ever use it with coveralls, or if you install it alongside, then you have two versions of coverage fighting with each other? I think?
  4. Make a pull request against coveralls to fix their use of the now-missing coverage.py internals. This sucks (but not much) because I don't want to have to understand their code, and I don't have a simple way to run it, and I wish they had tried to stick to supported methods in the first place.
  5. Leave it broken, and let people fix it by overriding their tox.ini settings to not use --pre, or wait until people complain to coveralls and they fix their code. This sucks because there will be lots of people with broken builds.

Software is hard, yo.

Categories: FLOSS Project Planets
Syndicate content