Tens of thousands of people visit directory.fsf.org each month to
discover free software. Each entry in the Directory contains a wealth
of useful information, from basic category and descriptions, to
providing detailed info about version control, IRC channels,
documentation, and licensing info that has been carefully checked by
FSF staff and trained volunteers.

While the Directory has been and continues to be a great resource to
the world for over a decade now, it has the potential to be a
resource of even greater value. But it needs your help!

On the 22nd of this month back in 1893, bicycle makers Charles and Frank Duryea showed off the first American automobile produced for sale by cruising through the streets of Springfield, Massachusetts. This momentous day requires two themes: first is CAD Software for the design of the parts, and second, in the modern car we can't overlook the navigation system.

If you are eager to help, and you can't wait or are simply unable to
make it onto IRC on Friday, our participation guide will provide
you with all the information you need to get started on helping the
Directory today! There are also weekly Directory Meeting pages
that everyone is welcome to contribute to before, during, and after
each meeting.

For those reading this who don’t already know, DrupalCon Europe is a community-focused event intended to bring existing community members together as well as encourage new participation in the project. There are a number of session tracks focusing on broadly accessible topics such as “Being Human” all the way through to the detailed and technical sessions. There are also sprint workshops focused on adding features and fixing bugs in the existing and future version of Drupal. In a very real sense, there is something for everyone.

Compared with some of the other Amazee Labs team members, I am a relative DrupalCon newbie. I’ve only recently moved to the UK, so this will be my second DrupalCon. For some of the team members, this will be their 10th or even 15th DrupalCon!

Something that struck me last year, and that I’m really excited to see again this year, is the diversity of the attendees and how much work the organisers and community put into making the event accessible. I’m really looking forward to seeing people from all ages, races, and genders getting together under the banner of something we all have in common, namely our support (albeit in varied forms) for the Drupal Open Source project.

There is a growing sense of excitement in our daily standups and on our Slack channels as we draw closer to this year’s event. We have people coming from across Europe, South Africa, the UK, Taiwan, and the USA. While most of us are traveling to the event by way of planes, trains, and automobiles we can proudly boast that one of our team members is cycling all the way from Zurich to Vienna through the Alps! This is not the result of a lost bet between rivals but rather Amazee’s latest “Extreme Challenge” participant. Check out the Tour de Drupalps if you are (understandably) intrigued. You can also follow @dasjo or the #drupalps on Twitter.

Amazee submitted a number of session proposals this year and we are extremely proud of our team members who were selected to share their knowledge and ideas with the Drupal community.

With so many of our core team members working all over the world, we love to take these opportunities to have some real-world and in-person conversations. Our team dinner is a great opportunity to buy that person - who is usually on the other side of the world - a beer to say thanks for that one time where they made magic happen on that deadline that needed to get done that one Friday. It’s also a great opportunity to seek out that core or module developer and say thanks for all their efforts on the Drupal project.

Looking beyond ourselves, we’re also really excited to see what other companies and teams are doing and thinking. Josef is super excited for the Community Summit on Monday. Mary is excited to see the presentation on “Teaching Clients How to Succeed”, and I’m looking forward to seeing a presentation on Drupal & Ethereum as well as the Commerce 2.0 “Lessons Learned”.

If you’re attending, I hope to see you around! If you’re not attending you’ll be able to follow along with us. During the course of DrupalCon we will be posting at least one blog post per day on our Amazee Labs blog about the various events and highlights of our team’s experiences, so check back here and keep an eye out for our various social media posts.

Here is where we seek to bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll investigate Module Sitemap, a module which will help you navigate through pages associated with modules you have enabled on your site. We also briefly review the Coffee module.

Below is a question that was recently asked on StackOverflow and I decided it would be helpful to publish an answer explaining the various ways in which to troubleshoot a problem you may be having in Anaconda.

In recent months, I’ve begun moving some of my analytics functions to the cloud. Specifically, I’ve been moving them many of my python scripts and API’s to AWS’ Lambda platform using the Zappa framework. In this post, I’ll share some basic information about Python and AWS Lambda…hopefully it will get everyone out there thinking about new ways to use platforms like Lambda.

Before we dive into an example of what I’m moving to Lambda, let’s spend some time talking about Lambda. When I first heard about, I was a confused…but once I ‘got’ it, I saw the value. Here’s the description of Lambda from AWS’ website:

AWS Lambda lets you run code without provisioning or managing servers. You pay only for the compute time you consume – there is no charge when your code is not running. With Lambda, you can run code for virtually any type of application or backend service – all with zero administration. Just upload your code and Lambda takes care of everything required to run and scale your code with high availability. You can set up your code to automatically trigger from other AWS services or call it directly from any web or mobile app.

Once I realized how easy it is to move code to lambda to use whenever/wherever I needed it, I jumped at the opportunity. But…it took a while to get a good workflow in place to simplify deploying to lambda. I stumbled across Zappa and couldn’t be happier…it makes deploying to lambda simple (very simple).

OK. So. Why would you want to move your code to Lambda?

Lots of reasons. Here’s a few:

Rather than host your own server to handle some API endpoints — move to Lambda

Rather than build out a complex development environment to support your complex system, move some of that complexity to Lambda and make a call to an API endpoint.

If you travel and want to downsize your travel laptop but still need to access your python data analytics stack move the stack to Lambda.

If you have a script that you run very irregularly and don’t want to pay $5 a month at Digital Ocean — move it to Lambda.

There are many other more sophisticated reasons of course, but these’ll do for now.

Let’s get started looking at python and AWS Lambda. You’ll need an AWS account for this.

First – I’m going to talk a bit about building an API endpoint using Flask. You don’t have to use flask, but its an easy framework to use and you can quickly build an API endpoint with it with very little fuss. With this example, I’m going to use Lambda to host an API endpoint that uses the Newspaper library to scrape a website, pull down the text and return that text to my local script.

Note: The ‘host = 0.0.0.0’ and ‘port=50001’ are extranous and are how I use Flask with vagrant. If you keep this in and run it locally, you’d need to visit http://0.0.0.0:5001 to view your app.

The last thing you need to do is build your requirements.txt file for Zappa to use when building your application files to send to Lambda. For a quick/dirty requirements file, I used the following:

zappa
newspaper
flask
flask_restful

Now…let’s get this up to lambda. With zappa, its as easy as a couple of command line instructions.

First, run the init command from the command line in your virtualenv:

zappa init

You should see something similar to this:

You’ll be asked a few questions, you can hit ‘enter’ to take the defaults or enter your own. For this eample, I used ‘dev’ for the environment name (you can set up multiple environments for dev, staging, production, etc) and made a S3 bucket for use with this application.

Zappa should realize you are working with Flask app and automatically set things up for you. It will ask you what the name of your Flask app’s main function is (in this case it is api.app). Lastly, Zappa will ask if you want to deploy to all AWS regions…I chose not to for this example. Once complete, you’ll have a zappa_settings.json file in your directory that will look something like the following:

I’ve found that I need to add more information to this json file before I can successfully deploy. For some reason, Zappa doesn’t add the “region” to the settings file. I also like to add the “runtime” as well. Edit your json file to read (feel free to use whatever region you want):

Now…you are ready to deploy. You can do that with the following command:

zappa deploy dev

Zappa will set up all the necessary configurations and systems on AWS AND zip up your libraries and code and push it to Lambda. I’ve not found another framework as easy to use as Zappa when it comes to deploying…if you know of one feel free to leave a comment.

After a minute or two, you should see a “Deployment Complete: …” message that includes the endpoint for your new API. In this case, Zappa built the following endpoint for me:

https://4wq2muonbb.execute-api.us-east-1.amazonaws.com/dev

If you make some changes to your code and need to update Lambda, Zappa makes it easy to do that with the following command:

zappa update dev

Additionally, if you want to add a ‘production’ lambda environment, all you need to do is add that new environment to your settings json file and deploy it. For this example, our settings file would change to:

Next, do a deploy prod and your production environment is ready to go at a new endpoint.

zappa deploy prod

Interfacing with the API

Our code is pushed to Lambda and ready to start accepting requests. In this example’s case, all we are doing is returning “hello world” but you can see the power in this for other functionality. To check out the results, just open a browser and enter your Zappa Deployment URL and append /hello to the end of it like this:

https://4wq2muonbb.execute-api.us-east-1.amazonaws.com/dev/hello

You should see the standard “Hello World” response in your browser window.

There have been many blog post written about the forthcoming DrupalCon in Vienna. Many topics were covered including our Accepted Business sessions for DrupalCon Vienna. To refresh your memories, we presented them because our commercial director Iztok Smolic was selected in a business track team to help prepare the program and select the sessions.
Maybe it is obvious or maybe it is not. But it's definitely time to say that we will be present on a DrupalCon in Vienna! Besides Iztok, who will be attending his eight DrupalCon, with the first one dating back to 2009, our development director… READ MORE

Come join PYPTUG at out next monthly meeting (September 19th 2017) to learn more about the Python programming language, modules and tools. Python is the ideal language to learn if you've never programmed before, and at the other end, it is also a tool that no expert would do without. Monthly meetings are in addition to our project nights.

WhatMeeting will start at 6:00pm.Main Talk: "Plotly, dash and company"

by Francois DionRemake of W. Playfair's classic visualization (source: Plot.ly)Abstract:There are many visualization packages available out there, each best suited to specific scenarios. In the past several years, I've covered Matplotlib, Seaborn, Vincent, ggplot, 3d visualizations through matplotlib, D3.js and mpld3 and Bokeh. In this presentation we will cover plotly (for javascript, R and Python) and related packages and when it makes sense to use it.Bio:Francois Dion is the founder and Chief Data Scientist of Dion Research LLC, specializing in analytics, data science, IoT and visualization. He is the author of several open source software, such as stemgraphic (www.stemgraphic.org), the founder of the Python user group for the Piedmont Triad of North Carolina (www.pyptug.org) and mentors various groups in Python, R and analytics at large. You might have run across his multiple part series on LinkedIn on data science books, including part V on Visualization.When:Please note, this meeting will be one week early in the month compared to our normal schedule:Tuesday, September 19th 2017Meeting starts at 6:00PMWhere:Wake Forest University, close to Polo Rd and University Parkway:Manchester Hallroom: Manchester 241 Wake Forest University, Winston-Salem, NC 27109 Map thisSee also this campus map (PDF) and also the Parking Map (PDF) (Manchester hall is #20A on the parking map)And speaking of parking: Parking after 5pm is on a first-come, first-serve basis. The official parking policy is:"Visitors can park in any general parking lot on campus. Visitors should avoid reserved spaces, faculty/staff lots, fire lanes or other restricted area on campus. Frequent visitors should contact Parking and Transportation to register for a parking permit."Mailing List:Don't forget to sign up to our user group mailing list:https://groups.google.com/d/forum/pyptug?hl=enIt is the only step required to become a PYPTUG member.Please RSVP so we have enough food for people attending!RSVP on meetup:https://www.meetup.com/PYthon-Piedmont-Triad-User-Group-PYPTUG/events/242721091/

It serves information about two kinds of resources: images and running instances of images. (Yes, it's a kind of kubernetes/dockyard lite that gives us a lot of control over servers with multiple containers.)

The feature set is growing rapidly. The legacy name needs to change. As we move forward, we'll be adding more microservices. Unless they have a name that reflects the resource(s) being managed, this is rapidly going to become utterly untenable.

Indeed, the name chosen may already be untenable: the name doesn't reflect the resource, it reflects an implementation choice that is true of all the microservices. (It's a wonder they didn't call it "PythonFlaskAPI".)

These guidelines don't seem to address naming in any depth. There are a few blog posts on this, but there seem to be two extremes.

Details/details/details. Long paths: class-of-service/service/version-of-service/resources/resource-id kind of paths. Yes. I get it. The initial portion of the path can then route the request for us. But it requires a front-end request broker or orchestration layer to farm out the work. I'm not enamored of the version information in the path because the path isn't an ontology of the entities; it becomes something more and reveals implementation details. The orchestration is pushed down the client. Yuck.

Resources/resource. I kind of like this. The versioning information can be in the Content-Type header: application/json+vnd.yournamehere.vx+json. I like this because the paths don't change. Only the vx in the header. But how does the client select the latest version of the service if it doesn't go in the path? Ugh. Problem not solved.

I'm not a fan of an orchestration layer. But there's this: https://medium.com/capital-one-developers/microservices-when-to-react-vs-orchestrate-c6b18308a14c tl;dr: Orchestration is essentially unavoidable.There are articles on choreography. https://specify.io/concepts/microservices the idea is that an event queue is used to choreograph among microservices. This flips orchestration around a little bit by having a more peer-to-peer relationship among services. It replaces complex orchestration with a message queue, reducing the complexity of the code.On the one hand, orchestration is simple. The orchestrator uses the resource class and content-type version information to find the right server. It's not a lot of code.On the other hand, orchestration is overhead. Each request passes through two services to get something done. The pace of change is slow. HATEOAS suggests that a "configuration" or "service discovery" service (with etags to support caching and warning of out-of-date cache) might be a better choice. Clients can make a configuration request, and if cache is still valid, it can then make the real working request.The client-side overhead is a burden that is -- perhaps -- a bad idea. It has the potential to make the clients very complex. It can work if we're going to provide a sophisticated client library. It can't work if we're expecting developers to make RESTful API requests to get useful results. Who wants to make the extra meta-request all the time?

One of the hallmarks of successful developers is continuous learning. The best developers I know don't just keep learning, it's one of the things that drives them. That's why I'm excited to bring you this episode on 10 books Python developers should read.

Today I tested how fast is jit from numba python and fibonacci math function.You will see strange output I got for some values.First example:import numbafrom numba import jitfrom timeit import default_timer as timer

C:\Python27>python numba_test_003.py(1.5074824049540363e-05, 0.1847134227837042)As you can see the fibonacci function is not very fast.The jit - just-in-time compile is very fast.Let's see if the python source code may slow down.Let's see the new source code with jit will not work well:import numbafrom numba import jitfrom timeit import default_timer as timer

C:\Python27>python numba_test_003.py9273726921930789991761445263496(0.0007348174871807866, 0.17523103771560608)The result for value 100 is not the same: 927372692193078999176 and 1445263496.First problem is: The problem is that numba can't intuit the type of lookup. If you put a print nb.typeof(lookup) in your method, you'll see that numba is treating it as an object, which is slow. The second problem is the output but can be from same reason. I test with value 5 and the result is :C:\Python27>python numba_test_003.py13131313(0.0007258367409385072, 0.17057997338491704)

Today I tested the numba python module.This python module allow us to speed up applications with high performance functions written directly in Python.The numba python module works by generating optimized machine code using the LLVM compiler infrastructure at import time, runtime, or statically.The code can be just-in-time compiled to native machine instructions, similar in performance to C, C++ and Fortran.For the installation I used pip tool:C:\Python27>cd Scripts

# jit decorator tells Numba to compile this function.# The argument types will be inferred by Numba when function is called.@jitdef sum2d(arr): M, N = arr.shape result = 0.0 for i in range(M): for j in range(N): result += arr[i,j] return result

a = arange(9).reshape(3,3)print(sum2d(a))The result of this run python script is:C:\Python27>python.exe numba_test_001.py36.0Another example using just-in-time compile is used with Numba’s jit function:import numbafrom numba import jit

fibonacci_jit = jit(fibonacci)print fibonacci_jit(14)Also you can use jit is as a decorator:@jitdef fibonacci_jit(n): a, b = 1, 1 for i in range(n): a, b = a+b, a

return aNumba is a complex python module because use compiling.First, compiling takes time, but will work specially for small functions.The Numba python module tries to do its best by caching compilation as much as possible though.Another note: not all code is compiled equal.

This series of python tutorials that we started at the beginning of this blog and called "The beauty of Python" is part of the series of tutorials aimed at the simplicity and beauty of the python programming language.The main goal for us is how to use this programming language in everyday life with different tasks.Today I will come up with examples to cover this goal and show you how to use the subprocess python module.

Hi guys! I was recently contacted by folks from AppDynamics (a part of CISCO). They shared an infographic with me which listed 13 Python libraries. These libraries were categorized in sections. I loved going through that infographic. I hope you guys will enjoy it too.

If you want to build a large, multi-level drop-down menu in Drupal 8, then the Superfish module is a great choice.

The Superfish module makes use of the jQuery Superfish menu plugin, which is useful for multi-level drop-down menus. Superfish has more features than most dropdown menus. It supports touch devices and keyboard interaction.

Last week I had a chance to attend the Randa meetings 2017, my plan was to work on the Plasma Mobile during the sprint, improve the state of current images. A few things changed over the course of the week:

No need to separately build the common things like Qt5, KDE Frameworks, Plasma

Always up-to-date packages, no need to manually re-trigger builds for common things

We also upgraded to newer version of Qt, Qt 5.9 from the older version of Qt 5.7.1, this aligns our stack with whatever KDE Neon dev unstable edition is using.

Rootfs for non-nexus Qualcomm devices

Non-nexus Qualcomm devices use a modified version of the hwcomposer.h which is not ABI compatible with the generic version of the android API headers, so for them the libhybris and kwin need to be separately built. Previously our CI infrastructure didn’t support this workflow, however now we are able to create the rootfs for such devices. Below is an image of Plasma Mobile running on Xiomi Mi device.

Marble maps

At Randa, we had a chance to test the newer version of the Marble maps, which has much more improved performance when zooming out-in. We were able to happily search locate Randa in the Marble maps.

QML based mobile friendly “konsole”

Previously we were using Konsole from the KDE Applications as a terminal emulator, however Konsole user interface was not mobile-friendly, and it was not possible to e.g, tab complete the command, go through history, etc. At Randa Emmanuel Lepage Vallee pointed us to qmltermwidget, which powers the terminal application in Ubuntu Touch and Cool-retro-term application. Marco Martin was able to write a simple QML application around qmltermwidget which can replace Konsole in Plasma Mobile.

Kirigami based koko

During GSoC 2017 lot of work has been put to port the normal QtQuick based image viewer application Koko to kirigami2, you can follow the work of Student developer Atul Sharma on his blog. At the Randa Sprint, we were able to test this work on Plasma Mobile and it shows great improvements compared to the older version.

Improved window switching experience

Due to a bug in the Plasma Mobile shell, shell windows such as task switcher and shell itself were also appearing in the task switcher, as a result of that user was able to close the shell window which ultimately ends up crashing the plasmashell. We were able to fix this bug in the plasma-workspace and plasma-phone-components so that Plasma Mobile shell windows would not appear in the task switcher.

Kube(!!!)

Yes, that is Kube in the first picture, we were able to run the Kube on the Plasma Mobile, it works in theory on Plasma Mobile, however the user interface is not mobile-friendly and needs various fixes to be usable on mobile. We will work with the Kube team to fix the issues and then test them on Plasma Mobile in the future.

Conclusion

That is all for now, I would like to thank the all the donors who donated for the Randa Meetings 2017, and made it possible for me to travel to Randa, Switzerland.

If you liked the work done on Plasma Mobile during the Randa Sprint, please support us on Randa 2017 fundraiser to make events like Randa possible in the future.

Captain William Bassett, a USAF officer stationed at Okinawa on October 28, 1962, can now be added alongside Stanislav Petrov to the list of people who have saved the world from WWIII:

By [John] Bordne’s account, at the height of the Cuban Missile Crisis, Air Force crews on Okinawa were ordered to launch 32 missiles, each carrying a large nuclear warhead. […] The Captain told Missile Operations Center over the phone that he either needed to hear that the threat level had been raised to DEFCON 1 and that he should fire the nukes, or that he should stand down. We don’t know exactly what the Missile Operations Center told Captain Bassett, but they finally received confirmation that they should not launch their nukes. After the crisis had passed Bassett reportedly told his men: “None of us will discuss anything that happened here tonight, and I mean anything. No discussions at the barracks, in a bar, or even here at the launch site. You do not even write home about this. Am I making myself perfectly clear on this subject?”

On September 13, 2017 while conducting customer beta testing of our new exploit detection technology, Cisco Talos identified a specific executable which was triggering our advanced malware protection systems. Upon closer inspection, the executable in question was the installer for CCleaner v5.33, which was being delivered to endpoints by the legitimate CCleaner download servers. Talos began initial analysis to determine what was causing this technology to flag CCleaner. We identified that even though the downloaded installation executable was signed using a valid digital signature issued to Piriform, CCleaner was not the only application that came with the download. During the installation of CCleaner 5.33, the 32-bit CCleaner binary that was included also contained a malicious payload that featured a Domain Generation Algorithm (DGA) as well as hardcoded Command and Control (C2) functionality. We confirmed that this malicious version of CCleaner was being hosted directly on CCleaner’s download server as recently as September 11, 2017.

This site has been partially supported by NSF Grant 07-08437. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the contributors and do not necessarily reflect the views of the National Science Foundation.