FLOSS Project Planets
For some time, Solr 3.x and Drupal 7 have been able to do geospatial search (using the location module, geofield, or other modules that stored latitude and longitude coordinates in Drupal that could be indexed by Apache Solr). Life was good—as long as you only had one location per node!
Sometimes, you may have a node (say a product, or a personality) affiliated with multiple locations. Perhaps you have a hammer that's available in three of your company's stores, or a speaker who is available to speak in two locations. When solr 3.x and Drupal 7 encountered this situation, you would either use a single location value in the index (so the second, third, etc. fields weren't indexed or searched), or if you put multiple values into solr's search index using the LatLonType, solr could throw out unexpected results (sometimes combining the closest latitude and closest longitude to a given point, meaning you get strange search results).
Hello! I'm back. I've not made any blog posts in over a year and a half due to the site where my blog was before, drupaler.co.uk, closing down. And while it took me some time to get round to writing a Migrate script to import my posts from the old site's database, it was actually getting round to setting up this new domain that took the longest.
So what have I been doing all this time? Especially as I still don't have a single Drupal 7 site out there to my name? Well, these days I work on a humongous web application which has kept me busy for the last 18 months; it's a large Drupal site (we hit a million of one of its several custom entity types recently), but to the general public it's just a login page. I may talk more about the development challenges in future posts.
Prior to that, I was building what would have been one of the earliest big Drupal Commerce sites to launch... except that very shortly before launch in October 2012, the whole project got canned.Tags: contributing codedrupal commercedevelopmentmaintaining projects
Arstechnica does a visual deep-dive into browser market shares through multiple charts and graphs — breaking down worldwide browser trends and adoption rates.
I just had a need to read two files that were line-delimited lists of domains, consolidate the data, and then output the domains sorted and all lowercased to a new file. It took me 10 lines of Python code and worked perfectly on the first try.
Out of curiosity and to make sure I keep learning Go (my team at work uses it whenever possible), I decided to re-implement the same functionality. That took 56 lines in Go. When I went back and refactored the Python code to match the abstractions I used in the Go code it grew to 17 lines.
And this productivity view of Python also ties into education. With Python now the most popular intro teaching language at the top U.S. universities, many people are learning how to program using Python. But exposure early on to a language does not guarantee future usage by someone; I for one did not use Scheme after my intro course. But because Python is such a productive language, the language becomes a staple in one’s toolkit of programming. If people learn Python first, then when they need to write a quick script like I did today they will most likely reach for Python than Java or Go or some other language they may be using for their work.
All of this is why I don’t worry about Python’s demise due to lack of users. People might switch to Go at work because the performance:productivity ratio is very good for their project or team. Or maybe people got frustrated with the Python 2/3 transition and didn’t want to base their project at work on Python anymore. It really doesn’t matter in terms of the number of users of Python because I’m willing to bet those people still reach for Python when they need a one-off script to solve a problem. And I bet these people still recommend Python when they are asked what people’s first programming language should be. In other words I don’t worry about our great-for-teaching, highly productive scripting language ever lacking users; Python will always be useful.
Design4Drupal 2014 is almost here, and Aten couldn't be more excited. This year, along with being the Design Partner for the event, members of Aten's Design & UX team will be presenting four different sessions.
This year's Design4Drupal (August 1-3) has been structured to give each day a specific focus. Friday kicks things off with a business summit, Saturday is chock full of sessions and Sunday wraps things up with sprints and trainings. Make sure you catch as many of Aten's sessions on Saturday as you can:Saturday, August 2, 10:15am Enhancing Design with Adaptive Content
Aten’s Joel Steidl, Lead Architect, and Christine Coughlan, Information Architect, will share practical tips for breaking down and organizing content for projects of any size. They’ll share case studies to reinforce the theory and practice behind adaptive content and best practices for implementing it in Drupal and other platforms.Layout Design Patterns
John Ferris, Aten's Lead Front-end Developer, presents reusable solutions to common layout problems. He'll begin with foundation CSS layout concepts and then build up to specific techniques for implementing complex layouts in Drupal.Saturday, August 2, 2:15pm Anti-Handoff: A better design & front-end relationship
Front-end Developers delivering on what's promised by Designers can make or break a project. Erin Holloway, Aten's Senior Designer, will walk through approaching this problem with clear communication, the right tools and mutual respect. If you're struggling with collaboration between your team members, this session can help.Saturday, August 2, 3:30pm Giving and Getting Great Feedback
Great feedback can be the lifeblood of a successful project. However, setting aside personal preference and giving objective feedback can be challenging. Responding to that feedback can be even harder. Aten’s Designer, Roxy Koranda, will give you the tools to both give and get great feedback.
With just 3 weeks until the event, there isn't a ton of time left to register. If you use Drupal and want to learn more about how best to approach Design, UX and Front-end Development, Design4Drupal is the place to be. We hope to see you there!
It has been a couple of months since my last GSoC update and a lot has happened since then.
In the weeks since my last blog post I have accomplished a lot. There is support for pull and push metrics. Pull metrics run on the debmetrics server and pull data from some source. Push metrics run on a remote server and push data to the debmetrics server via HTTP POST. There is flask code and the static interface portion uses a general route, so that the flask code does not need to be modified every time a metric is added. There is a makefile that runs manifest2index.py and manifest2orm.py to generate the index page of the web interface and the SQLAlchemy model code respectively. I have a config file that allows the user to set the location of the manifest, pull_scripts, and graph_scripts directories. I have a debmetrics.wsgi file for easy deployment of debmetrics.
There is a single layout.html that is the base layout for all the other pages.
Nosetests is used for tests. Sphinx and readthedocs are used for the documentation. I wrote a minified_grabber script that downloads all the JS and css files that are not included with debmetrics itself. That helps make deployment easy.
If you want to take a look at the code you can view the repository.
I still have more work to do before the end of GSoC, mostly with the dynamic web interface and packaging of debmetrics.
To keep up to date on my progress, you can either read this blog, or you can read the soc-corrdination mailing list.
This is installment three of our four-part blog post series that encapsulates the advice, tips and must-do elements of career building in the Drupal Community from the panel of experts collected for DrupalEasy’s DrupalCon Austin session; Drupal Career Trailhead; Embark on a Path to Success.-->
Since I got asked about this in email I'll post it here for the google-verse. Say you want to allow your developers to use RunSnakeRun running in a virtualenv on an Ubuntu distribution. You'll recall that normally to run RSR as a utility you do:$ sudo apt-get install python-wxgtk2.8 $ pip install --user SquareMap RunSnakeRun $ runsnake
That gets a bit more complex when you want to put RSR in a virtualenv (the question was actually how to make this work on many, many workstations using puppet, but you puppet peoples can figure that out). Building wxPython is not really a fun project, so I'm going to assume you likely want to use the binary package, but you want to make wx available to a virtualenv. You've got a few options:
- use the --system-site-packages flag when creating your virtualenv
- build wxPython yourself using a prefix, add the appropriate LIBRARY env variable to load it (again, not a really fun project and you're stuck mucking about with your environment)
- add the binary-package directory to your PYTHONPATH
- create a .whl or bdist_dumb from the binary package contents (there doesn't seem to be an "installed-directory-to-wheel" command I could fine)
- link the binary packages into your virtualenv
The one *I* normally use is the --system-site-packages flag, but the linking solution has the advantage of not pulling in *other* packages you don't want. It is accomplished like so:$ sudo apt-get install python-wxgtk2.8 $ virtualenv -p python2.7 wxsetup $ ln -s $(/usr/bin/python2.7 -c "import wx,os; print os.path.dirname(os.path.dirname(wx.__file__))")/* wxsetup/lib/python2.7/site-packages/ $ source wxsetup/bin/activate $ pip install SquareMap RunSnakeRun $ runsnake
Note: this depends on the wxPython binary on Ubuntu 12.04 being installed in a format where there is a directory which is added to the PYTHONPATH, in theory some other distribution might be adding the wx/wxPython directories directly to the site-packages/dist-packages path, in which case the above would link everything in site/dist packages into your virtualenv. You could make the code just print the wx and wxPython directories instead of their parent directory.
Note that wxPython Pheonix is apparently pip-installable. Yay for that, but I haven't actually tried it yet.
I just finished patching the Tags sidebar widget it now supports “No Tags“, As you can see here:
Wait that’s not all, Those features will be available in the next release of digiKam 4.2.0, and it’s so soon.
Ready to receive your feedback about it.
Brant Wynn, Acquia Solutions Architect, and I covered some interesting ground in our conversation preceding his jam's Drupal Camp session on selling Drupal to potential clients via beautiful, out-of-the-box demos. Listen to hear about working as a professional open source software developer, the potential wins from having migration tools built into Drupal 8, how Drupal 8 is bringing so many open source technologies and communities together, and more.
Yup.Subscribe to The Changelog Weekly - our free weekly email covering everything that hits our open source radar. The post The Command Line meets Karaoke appeared first on The Changelog.
On July 7th 2014 Peter Schaar (Head of the European Academy for Freedom of Information and Data Protection, former Bundesdatenschutzbeauftrager) gave a talk about technology, law and surveillance in German. You can find the video below.
The Mobile Friendly Navigation Toolbar is a replacement for the standard administration toolbar that comes with Drupal 7.
Here are some final information and reminders about conference logistics
1. Tickets for trainings
For logistic reasons (badge production) we had to close the training registration last week. For the remaining training seats you can request a training ticket for free at the conference desk if there are any remaining seats. However, we will not accept requests by email to be put on a waiting list. So if you are interested in participating in a training and don’t have a ticket yet: Please show up at the conference desk early and ask for remaining seats.
2. Become an Angel – Support EuroPython as a volunteer and make new contacts
EuroPython is organized and run by volunteers from the Python community. Everyone who is attending EuroPython is welcome, and all help is very much appreciated.
Want to get started? Read about the various opportunities to get involved below, and consider signing up for the EuroPython! It’s how our community stays informed throughout the year, and signing up doesn’t commit you to anything.
Spending some time as a volunteer is also an opportunity for making new contacts, getting in touch with the community, finding both other new community members as well as long-time Pythonistas. Every atteendee is invited to help us in order make this conference a pleasant and memorable experience.
3. EuroPython BarCamp and Sprint
On Saturday and Sunday of the conference you may attend the Python BarCamp and/or the EuroPython sprints. Please check the details below and register (for logistic reasons):
4. Tickets for partner programme and EuroPython Dinner
Tickets for the EuroPython Dinner on Wednsday and the partner programme can be bought until the conference or at the conference registration desk.
5. Guidebook App
The schedule and related information is directly available on your smartphone or mobile device through the Guidebook app.
6. Evaluation of talks and trainings
Training attendees can give feedback by filling out feedback forms that the trainers will hand out. We will use Guidebook for handling the feedback for talks. All talk entries within the Guidebook app will have a like to a feedback form where you can rate a talk and leave some optional feedback.
7. Follow-up conference updates
Do not miss conference update. We recommend to follow us on Twitter @europython and check for regular updated on blog.europython.eu (or subscribe to the RSS feed of the blog).
Please use #ep14 as official hashtag for postings on Twitter and other social media.
8. Code of Conduct
EuroPython 2014 is covered by a Code of Conduct. Please make sure that you read the Code of Conduct. If you have complaints about violations of the Code of Conduct then please contact the EuroPython staff members or give us a call at the given phone numbers. We want that EuroPython 2014 is a safe and enjoyable experience for everyone.
9. Call for Membership Applications to the EuroPython Society
Check out http://blog.europython.eu/post/91236006732/call-for-application-to-become-a-member-of-the for details.
10. Travel information
General travel information for getting to Berlin can be found here:
We are going to publish a more detailed Berlin guide before the conference.
11. Public transportation
Your EuroPython badge is also a free ticket for the publication transportation in the A+B zone during the conference. Seehttps://ep2014.europython.eu/en/venue/public-transportation/ for further information.
12. Occupancy tax in Berlin
There is a 5% occupancy tax in Berlin for all tourist travellers. Business travellers like all conference visitors do not need to pay the tax but you need to present an attestation (from your company or by yourself) to the hotel in order to avoid the 5% surcharge. See http://www.berlin.de/sen/finanzen/steuern/downloads/artikel.57924.php (English forms at the bottom of the page) for further information.
13. Meeting with other conference attendants
We plan to use a social media service where you can arrange meetings with others for eating & drinking, doing a morning run, taking a break and touring through Berlin or whatever. We will announce details shortly.
All information related to EuroPython 2014 can be found on our web site. Please let us know if you are missing anything or if you need further assistance. The best way to contact us is through email (email@example.com) or Twitter @europython. We check these communications channels regularly.
We hope that you will enjoy EuroPython 2014 and wish you a great week in Berlin with lots of interesting talks and trainings, meetings with even-minded people and of course fun and enjoyment.
Best regards and see you in Berlin!
Your EuroPython 2014 organiser team
If you have any questions please contact us!
Thank you very much!
The EuroPython 2014 team
Python Software Verband e.V.
15366 Neuenhagen bei Berlin, Germany
The eGenix.com mx Base Distribution for Python is a collection of professional quality software tools which enhance Python's usability in many important areas such as fast text searching, date/time processing and high speed data types.
The tools have a proven track record of being portable across many Unix and Windows platforms. You can write applications which use the tools on Windows and then run them on Unix platforms without change due to the consistent platform independent interfaces.
The distributions contains these open-source Python extensions, all grouped under the top-level mx Python package:
mxDateTime implements three new object types, DateTime, DateTimeDelta and RelativeDateTime and many tools based on these for doing easy conversion between and parsing of various date/time formats.
The main focus is on performance, usability and making sure that date/time values roundtrip safely. The types are also fully interoperable with Python's datetime module and often provide a much more intuitive approach to date/time calculations.
mxTextTools provides several useful functions and types that implement high-performance text parsing, processing and search algorithms.
It includes a Python-programmable very fast state machine, specifically designed for pattern matching and written in highly optimized C for both Unicode and char/byte strings.
mxProxy implements a new proxy type to provide low-level object access control, weak referencing and a cleanup protocol. It's ideal for use in restricted execution environments.
mxBeeBase is a high performance construction kit for disk based indexed databases. It offers components which you can plug together to easily build your own custom mid-sized databases and comes with ready to use on-disk dictionary implementations.
mxURL provides a new datatype for storing and manipulating URL values as well as a few helpers related to URL building, encoding and decoding.
mxUID implements a fast mechanism for generating universal identification strings (UIDs).
mxStack implements a fast and memory efficient stack object type.
mxQueue implements a fast and memory efficient queue object type.
mxTools provides a collection of handy functions and objects for every day Python programming. It includes many functions that you've often missed in Python.
The package also include a number of helpful smaller modules in the mx.Misc subpackage, such as mx.Misc.ConfigFile for config file parsing or mx.Misc.CommandLine to quickly write command line applications in Python.
All available packages have proven their stability and usefulness in many mission critical applications and various commercial settings all around the world.News
The 3.2.8 release of the eGenix mx Base Distribution is the latest release of our open-source Python extensions. It includes these fixes and enhancements:Installation Enhancements
- Added web installer support to mxSetup, the distutils extension module which drives all our product installations.
- Uploaded web installer package to PyPI which simplifies installation.
In addition to the usual ways of installing eGenix mx Base, we have uploaded a web installer to PyPI, so that it is now also possible to use one of these installation methods on all supported platforms (Windows, Linux, FreeBSD, Mac OS X):
- easy_install egenix-mx-base via PyPI
- pip install egenix-mx-base via PyPI
- egenix-mx-base egg reference in zc.buildout via PyPI
- running "python setup.py install" in the unzipped web installer archive directory
The web installer will automatically detect the platform and choose the right binary download package for you. All downloads are verified before installation.
- mxDateTime: Protected delta.strftime() against segfaults on Windows, which only allows day values <= 31 and segfaults for higher values. Thanks to Frank Boje for reporting this problem.
- mxTextTools: Fixed a double decref in the tagging engine that surfaced when using custom tag objects and appending the results to them. Thanks to Richard Moseley for the report.
- Prepared eGenix mx Base for two digit Python patch level numbers such as Python 2.7.10
eGenix mx Base Distribution 3.2.0 was release on 2012-08-28. Please see the announcement for new features in the 3.2 major release compared to earlier releases.
For a complete list of changes, please see eGenix mx Base change log page and the change logs of the included Python packages.Upgrading
We encourage all users to upgrade to this latest eGenix mx Base Distribution release.
If you are upgrading from eGenix mx Base 3.1.x, please see the eGenix mx Base Distribution 3.2.0 release notes for details on what has changed since the 3.1 major release.License
The eGenix mx Base Distribution is distributed under the terms of our eGenix.com Public License 1.1.0 which is an open source
license similar to the Python license. You can use the packages in both commercial and
non-commercial settings without fee or charge.
This open source distribution package comes with full source code.Downloads
Please visit the eGenix mx Base Distribution product page for downloads, instructions on installation and documentation of the packages.
As always, we are providing prebuilt binaries for all supported platforms: Windows 32/64-bit, Linux 32/64-bit, FreeBSD 32/64-bit, Mac OS X 32/64-bit. Source code archives are available for installation on all other Python platforms, such as Solaris, AIX, HP-UX, etc.
To simplify installation in Zope/Plone and other egg-based systems, we have also precompiled egg distributions for all platforms. These are available on our own PyPI-style index server for easy and automatic download. Please see the download instructions for details.
Whether you are using a prebuilt package or the source distribution, installation is a simple "python setup.py install" command in all cases. The only difference is that the prebuilt packages do not require a compiler or the Python development packages to be installed.Support
Commercial support for this product is available from eGenix.com.
Please see the support section of our website for details
For more information on the eGenix mx Base Distribution, licensing and download instructions, please write to firstname.lastname@example.org.
Marc-Andre Lemburg, eGenix.com