DSPIllustrations.com: The Convolution Theorem and Application Examples

Planet Python - Sat, 2017-03-11 19:00
The Convolution Theorem with Application Examples

The convolution theorem is a fundamental property of the Fourier transform. It is often stated like

"Convolution in time domain equals multiplication in frequency domain"

or vice versa

"Multiplication in time equals convolution in the frequency domain"

In this notebook we will illustrate what that means by pictorial examples. First, let us state the first version of the theorem mathematically. Let x(t) and y(t) be two arbitrary signals. Then, we have


where \mathcal{F}\{x(t)\}(f) denotes the Fourier transform of x(t), evaluated at the frequency f. In other words, we can say:

"The spectrum of the convolution two signals equals the multiplication of the spectra of both signals"

Let us first recap convolution (a more detailed description is given in another article on convolution): Given two signals x(t) and y(t), their convolution is defined by z(t)=x(t)*y(t)=\int_{-\infty}^{\infty}x(\tau)y(t-\tau)d\tau.

Literally, we take one signal, mirror it in time and shift it in time domain. Then we multiply this signal with the other signal and calculate the integral of the overlapping part. Let us now calculate the convolution of two arbitrary signals and look at the result in time and frequency domain. Here, ...

Categories: FLOSS Project Planets

John Goerzen: Silent Data Corruption Is Real

Planet Debian - Sat, 2017-03-11 17:34

Here’s something you never want to see:

ZFS has detected a checksum error: eid: 138 class: checksum host: alexandria time: 2017-01-29 18:08:10-0600 vtype: disk

This means there was a data error on the drive. But it’s worse than a typical data error — this is an error that was not detected by the hardware. Unlike most filesystems, ZFS and btrfs write a checksum with every block of data (both data and metadata) written to the drive, and the checksum is verified at read time. Most filesystems don’t do this, because theoretically the hardware should detect all errors. But in practice, it doesn’t always, which can lead to silent data corruption. That’s why I use ZFS wherever I possibly can.

As I looked into this issue, I saw that ZFS repaired about 400KB of data. I thought, “well, that was unlucky” and just ignored it.

Then a week later, it happened again. Pretty soon, I noticed it happened every Sunday, and always to the same drive in my pool. It so happens that the highest I/O load on the machine happens on Sundays, because I have a cron job that runs zpool scrub on Sundays. This operation forces ZFS to read and verify the checksums on every block of data on the drive, and is a nice way to guard against unreadable sectors in rarely-used data.

I finally swapped out the drive, but to my frustration, the new drive now exhibited the same issue. The SATA protocol does include a CRC32 checksum, so it seemed (to me, at least) that the problem was unlikely to be a cable or chassis issue. I suspected motherboard.

It so happened I had a 9211-8i SAS card. I had purchased it off eBay awhile back when I built the server, but could never get it to see the drives. I wound up not filling it up with as many drives as planned, so the on-board SATA did the trick. Until now.

As I poked at the 9211-8i, noticing that even its configuration utility didn’t see any devices, I finally started wondering if the SAS/SATA breakout cables were a problem. And sure enough – I realized I had a “reverse” cable and needed a “forward” one. $14 later, I had the correct cable and things are working properly now.

One other note: RAM errors can sometimes cause issues like this, but this system uses ECC DRAM and the errors would be unlikely to always manifest themselves on a particular drive.

So over the course of this, had I not been using ZFS, I would have had several megabytes of reads with undetected errors. Thanks to using ZFS, I know my data integrity is still good.

Categories: FLOSS Project Planets

Bryan Pendleton: Following up

Planet Apache - Sat, 2017-03-11 16:00

I haven't been writing an awful lot recently. I've been quite busy with my new day job, and we also took a delightful 3-day weekend trip to the mountains with my granddaughter.

But here's a few things I wanted to share.

  • I wrote a fairly long essay about the importance of hiring.

    As is so often true, The Awl said it simply, more crisply, and more powerfully than me: If It Walks Like A Jerk And Talks Like A Jerk: Call him an asshole, not “brilliant,” and don’t hire him.

    I’ll tell you what: first of all, stop calling him that. Brilliant is just how we excuse Jerk. It’s how he gets away with bad behavior, like sexual harassment and insubordination (and yes, he is usually a he). Let me get all third grade on you for a second here: If you’re so brilliant, then why haven’t you figured out how to be good at your job? The jury is long out on the jerks’ performance: they may be highly productive, “but they are not, however brilliant business people,” wrote Cliff Oxford in the Times. This is because good business people, strangely enough, are good people.
  • I mumbled for a while about the challenges of making a highly-reliable web service.

    Amazon, who know a lot more about this than me, released a great post-mortem about just how hard it is: Summary of the Amazon S3 Service Disruption in the Northern Virginia (US-EAST-1) Region

    We are making several changes as a result of this operational event. While removal of capacity is a key operational practice, in this instance, the tool used allowed too much capacity to be removed too quickly. We have modified this tool to remove capacity more slowly and added safeguards to prevent capacity from being removed when it will take any subsystem below its minimum required capacity level. This will prevent an incorrect input from triggering a similar event in the future. We are also auditing our other operational tools to ensure we have similar safety checks.

    Some people (although not very many) had actually prepared well enough to be able to survive this outage and remain operational: Mitigating an AWS Instance Failure with the Magic of Kubernetes

    At Spire, we’ve been using Kubernetes for a little over 9 months at this point, the last 6 of which were in production. It’s transformed our workflow and provided us with a significantly more reliable product. If you’re considering a move to Kubernetes, I highly recommend it. It’s an incredibly powerful tool that is guaranteed to leave you in awe at least a few times.

    And, of course, it's not enough for those services just to be highly reliable and available, as MIT's Technology Review observes: they have to be secure, too: Centralized Web Services Are Wonderful—Until They Go Wrong

    Cloudflare points out that the flaw meant that its servers leaked private information just once in every 3.3 million Web requests it dealt with. But such is the scale of Cloudflare’s operations that those numbers add up—and quickly. Among its clients are the likes of Uber, Fitbit, OKCupid, 4chan, and 1Password. All told, as many as 120,000 pages per day from 3,438 domains could have leaked data, and the bug remained undiscovered for over five months.
  • I worried a lot about the Oroville Dam.

    Ideasman69 has put up a stupendous series of pictures and videos about just how bad it actually was:

    Those pictures are astonishing.

  • I fretted about the amazing pace of construction near the Transbay Terminal.

    WebCor have recently updated their project page with some new architectural drawings: First and Mission (Oceanwide Center)

    the development includes the construction of two high rise towers and the renovation of two existing buildings, 78 and 88 1st Street. The 910 foot tall, 61-story 1st Street Tower will include a 4 story basement, a 7-story tall open public space on the ground level, 33 stories of office space (1.35 million square feet) and 109 ultra-luxury condos. The steel 1st Street Tower will be the second tallest building in San Francisco and will be targeting Platinum LEED Certification.

    At 610 foot tall, the concrete 54-story Mission Street Tower consist of a 169 key Waldrof Astoria hotel and 156 ultra-luxury condos. The unique façade of this tower will be natural stone with protruding glass bay windows.

    Meanwhile, one block in the other direction, at 181 Fremont, they're looking for buyers: The tallest penthouse apartment in San Francisco is going on the market for $42 million — take a look inside

    The unit rises 700 feet above the city, making it the tallest residence on the West Coast. Its price tag also makes it one of the most expensive listings San Francisco has ever seen.

    Somehow, "tallest" doesn't seem like quite the right word to use, here.

And, since I've already distracted you pretty well, a few other things that I thought worth noting:

  • A lovely essay about a wonderful author: 5 Things You May Not Know About Margaret Wise Brown I have long had an image in my head of what Margaret Wise Brown must have been like and Amy Gary's new book, In the Great Green Room totally blew that away. Brown was a firecracker. She was an innovator. She was amazing.
  • The utterly superb team at Double Fine is going to give VR a try: Legendary game developer Tim Schafer tells us why he's excited for more 'Psychonauts' games, virtual reality, and the new Nintendo SwitchSchafer: The thing about using clairvoyance in Psychonauts is that it didn’t just let you teleport around, but also let you feel like you’re seeing the world through someone else’s eyes. So if you’re looking through the world through the POV of a big person or a small person or a tiny crab sandwich, or some insects, or giant creatures — you want to feel big, or you want to feel small. We want to represent that altered mental state as you see through their eyes, so it’s teleportation but also an empathy device.

I'm sure that's enough for a while; we'll talk again soon.

Categories: FLOSS Project Planets

Enrico Zini: On the meaning of "we"

Planet Debian - Sat, 2017-03-11 09:11

Rather than as a word of endearment, I'm starting to see "we" as a word of entitlement.

In some moments of insecurity, I catch myself "wee"-ing over other people, to claim them as mine.

Categories: FLOSS Project Planets

Stefan Bodewig: Apache log4net Needs Help

Planet Apache - Sat, 2017-03-11 06:45

This is a general call-to-arms for everyone who uses log4net as their logging solution. If log4net is the logging framework that you are using and would like to keep using in the future it is time now to get involved. The project needs a larger developing community to move on! We really need more people who want to shape the future of log4net at the Apache Software Foundation.

In all the time since log4net has been started by Nicko Cadell more than ten years ago, there have never been more than two or three people regularly contributing to it. As is normal in open source projects people have come and gone when their interests or just the amount of time they could invest have changed.

At the moment Dominik Psenner and Stefan Bodewig are the only people semi-actively working on log4net and neither of them is able to devote as much time to the project as they'd like to and as would be required.

Realistically log4net is maintenance mode where development of new features is not going to happen.

This has repeatedly made log4net lag behind recent developments in the .NET world. It took a long time to get a version out that properly worked with .NET 4.0 in 2011 and adaptions to .NET 4.5 also took much longer than many users would have wished. We are seeing it again with .NET Core right now. In addition there are many unresolved issues in log4net's JIRA.

Despite this there are more than 2500 downloads of the logging framework every day from nuget. We are asking you, the log4net community, to get your hands dirty.

Right now we are in the process of creating a log4net release that works for .NET Core. It is a very targeted effort and it is very unlikely Dominik and Stefan will be able to contribute more in the future than we did during the past months.

If you are willing to help, please join log4net's dev mailing list and raise your hand. Look through log4net's issue tracker and pick things you'd like to work on. If you don't know where to start, please ask, Dominik and Stefan will be there to help.

If there is anything holding you back from contributing, let's discuss it and get it out of the way. Nothing is carved into stone, neither what the future of log4net holds nor how we make it happen.

log4net's JIRA
dev mailing list
How the ASF works
https://www.apache.org/foundation/how-it-works.html, https://www.apache.org/dev/contributors.html
Categories: FLOSS Project Planets

Stefan Bodewig: XMLUnit for Java And XMLUnit.NET 2.2.0 Released

Planet Apache - Sat, 2017-03-11 06:45

With this release Sources created from strings or byte[]s can be used more than once. In XMLUnit for Java it is now also possible to configure the DocumentBuilderFactory used when a DOM document is created from a non-DOM Source by the DOMDifferenceEngine.

The full list of changes for XMLUnit for Java:

  • Input.fromByteArray and Input.fromString now return Sources that can be used multiple times. Issue #84.
  • The DocumentBuilderFactory used by DOMDifferenceEngine is now configurable. Issue #83.

The full list of changes for XMLUnit.NET:

  • Input.FromByteArray and Input.FromString now return ISources that can be used multiple times. Issue similar to xmlunit/#84.
Categories: FLOSS Project Planets

Stefan Bodewig: XMLUnit for Java And XMLUnit.NET 2.3.0 Released

Planet Apache - Sat, 2017-03-11 06:45

This release allows the schema used in W3C XML schema validation to be specified as Schema and XmlSchema respectively when using the (JAXP)Validator or the corresponding matchers and constraints.

The full list of changes for XMLUnit for Java:

  • JAXPValidator and ValidationMatcher now accept using Schema instances for the schema when validating instance documents. Issue #89.
  • updated test dependency to Mockito 2.1.0 PR #87 by @PascalSchumacher.

The full list of changes for XMLUnit.NET:

  • Validator and SchemaValidConstraint now accept using XmlSchema instances for the schema when validating instance documents. Issue similar to xmlunit#89.
Categories: FLOSS Project Planets

Stefan Bodewig: Yet Another First Ascension Post

Planet Apache - Sat, 2017-03-11 06:45

Oh, wow.

I've been playing nethack on and off for more than twenty years now. I started with 2.x on my Atari ST back in university and occasionally came back to it. I've never become good at it, mostly dying between the early game and the middle (i.e. shortly before going to the quest) because of stupidity, slipping fingers or - most of the time - because of overconfidence.

A few months ago I decided to go with the Wizard role and stick with it until I'd finally make it. I started a game shortly after christmas and got lucky, as in really lucky. Found a wand worth 600$ in a shop, bought it and it turned out to be a WoW. I decided to go for armor to counter my built-in foolishness and soon I was wearing SDSM, Speed Boots and a Helm of Brilliance to go with my starting Clock of Magic Resistance. I went for the HoB as as an orc this was the only way to achieve hungerless casting.

The whole game took place over the course of three weeks, mostly being played on weekends and repeatedly interrupted by reading the nethack wiki.

Apart from the WoW the only notable event of the early game was my cat stepping on a polymorph trap and turning into an ice troll, which then went on to kill all shopkeepers and the (not-coaligned) priest in mine town. I converted the altar in minetown and camped there until I was granted Magicbane which became my primary weapon until the end. Sokoban contained a BoH.

Met one of my better former selves and knew it had been killed by an Aleax but this time around it posed no problem due to my armor. Even though Stormbringer and Mjolnir were part of the former Stefan's heritage I decided to ignore them and go for a "real" Wizard run (i.e. trying to rely on spellcasting and Magicbane). Unfortunately I failed to find any attack spellbooks apart from force bolt and magic missile I started with.

I carried a box up the stair to Sokoban and left most of my stuff there, which was good as I managed to fall into water - twice - due to the stupid errors I always make and lost valuable scrolls, but not too many as there were some backups in my stash.

The Dark One managed to pick up the Eye of the Ethiopica before I could kill him but I had pushed a boulder onto the upstairs and managed to kill him using Magicbane with a few hits. Wore the Eye for the rest of the game.

I learned the identify spell and this certainly made the game a lot easier.

Before entering Gehennom I thought I should learn cone of cold and finger of death and wished for the fomer spellbook; got myself crowned for the second. While sacrificing I encountered Jubilex and killed him from the inside. In retrospect I think I have used cone of cold three times and could have easily gone without it.

What I think is normal for people new to Gehennom and beyond I was carrying way more stuff around than I needed. When I finally ascended there were lots and lots of wands in my BoH that I had never used.

I had polypiled a few things and found enough scrolls of enchant weapon to enchant up Magicbane and a silver dagger to +7 as well as my stack of daggers that I almost never used. I learned the silver dagger was superior to Magicbane when fighting demons and vampires.

Gehennom mostly was uneventful if not boring. In particular since Scrolls of magic mapping were scarce (I found two in the whole game) as were magic markers. Used the pickaxe to pave the way back up. Only Asmodeus managed to escape upstairs. Killed Orcus by climbing up and paralyzing him before he could use the WoD. Vlad was a joke (two hits with a +7 silver dagger), found the vibrating square and decided to return to Sokoban once more preparing for the ascension run.

The Wizard fell victim to the Wand of Death, and wouldn't come back before I left Gehennom. The high priest of Moloch was dispatched with a single cone of cold spell. Ran up and went to Sokoban again, was disturbed by the mysterious force twi or three times, which didn't cause too much trouble. Met the Wizard four times in total - twice on the plabe of earth - and used finger of death each time. Wearing the Eye power regeneration never seemed to become an issue.

I teleported the air elementals out of my way on the plane of air and levitated directly to the portal on the plane of fire. The water plain took some time but only because it took so long until the portal finally showed up.

On Astral plane I again was really lucky. A master lich cast create monster and the cockatrice next to me left a corpse that led to a trail of statues. The altar to the right was guared by Famine so I went for it, killed him with the WoD before he was getting close enough to touch me. It turned out to be the chaotic altar, the high priest gave me "two bits for an ale" and there I went.

stefanb, chaotic male orcish Wizard ----- |.@@ --..--------- -- --..A|.......| ---..A.|...V...| ` .`.@.A-A..@...| ---....|....@..|@ ` --...|.....V.| -%- --..--------- A ------- / |... @ |` ` ----- -` ----- `% Stefanb the Necromancer St:18/50 Dx:18 Co:18 In:20 Wi:20 Ch:11 Chaotic Astral Plane $:2 HP:236(236) Pw:263(263) AC:-31 Xp:25/51461489 T:55454 Satiated Your inventory Amulets A - the blessed Eye of the Aethiopica (being worn) Weapons x - a blessed +7 silver dagger F - the blessed rustproof +7 Magicbane (alternate weapon; not wielded) Armor b - a blessed fireproof +5 cloak of magic resistance (being worn) l - a blessed fireproof +2 pair of speed boots (being worn) n - an uncursed fireproof +2 pair of leather gloves (being worn) w - a blessed greased rustproof +4 helm of brilliance (being worn) N - a blessed +2 Hawaiian shirt (being worn) V - a blessed +4 silver dragon scale mail (being worn) Comestibles j - an uncursed cockatrice corpse (weapon in hand) I - an uncursed lizard corpse L - an uncursed lembas wafer Rings s - an uncursed ring of conflict t - an uncursed ring of levitation u - an uncursed ring of free action (on right hand) Wands c - a wand of death (0:4) f - a wand of cold (0:3) g - a wand of fire (0:4) k - a wand of teleportation (0:6) v - a wand of fire (1:14) z - a wand of digging (0:2) E - a wand of digging (0:8) H - a wand of slow monster (0:2) M - a cursed wand of teleportation (0:4) Tools a - the uncursed Candelabrum of Invocation (7 candles attached) o - an uncursed brass lantern p - an uncursed sack named emergency B - a blessed bag of holding T - an uncursed towel U - a blessed +0 unicorn horn Gems e - a blessed luckstone Contents of the sack named emergency: 2 uncursed K-rations an uncursed lizard corpse a blessed scroll of remove curse a blessed potion of full healing 2 potions of holy water a wand of wishing (1:2) 7 blessed wax candles a +0 unicorn horn Contents of the bag of holding: 2792 gold pieces an uncursed amulet of life saving 23 blessed +7 daggers 2 uncursed pancakes 10 uncursed C-rations 5 uncursed K-rations 2 uncursed lizard corpses an uncursed lembas wafer 2 blessed scrolls of stinking cloud an uncursed scroll of teleportation a blessed scroll of taming a blessed scroll of remove curse an uncursed spellbook of sleep a blessed spellbook of finger of death an uncursed spellbook of identify an uncursed spellbook of magic missile an uncursed potion of polymorph an uncursed potion of oil 3 uncursed potions of full healing 2 uncursed potions of paralysis 7 potions of holy water a wand of magic missile (0:4) a wand of teleportation (0:4) a wand of teleportation (0:4) a wand of teleportation (0:5) a wand of teleportation (0:4) a wand of magic missile (0:4) a wand of polymorph (0:2) a wand of cold (0:5) a wand of fire (0:6) a wand of cold (0:4) a wand of fire (1:4) a wand of fire (0:7) a wand of cold (0:4) a wand of magic missile (0:4) a wand of teleportation (0:7) a rusty wand of magic missile (0:8) a blessed wand of fire (0:7) an uncursed oil lamp an uncursed oil lamp Final attributes You were the Glory of Arioch You were piously aligned You were fire resistant You were cold resistant You were sleep resistant You were shock resistant You were poison resistant You were magic-protected You saw invisible You were telepathic You were warned You had infravision You were invisible to others You could teleport You had teleport control You were protected You were very fast You had reflection You had free action You were extremely lucky (13) You had extra luck Good luck did not time out for you You survived Spells known in the end Name Level Category Fail a - force bolt 1 attack 0% b - magic missile 2 attack 0% c - detect monsters 1* divination 0% d - detect food 2* divination 0% e - light 1 divination 0% f - jumping 1 escape 0% g - knock 1* matter 0% h - haste self 3 escape 0% i - detect unseen 3* divination 0% j - stone to flesh 3 healing 0% k - slow monster 2* enchantment 0% l - cure sickness 3* healing 0% m - identify 3 divination 0% n - restore ability 4* healing 0% o - cause fear 3* enchantment 0% p - sleep 1* enchantment 0% q - create monster 2* clerical 0% r - protection 1* clerical 0% s - healing 1 healing 0% t - cone of cold 4 attack 0% u - finger of death 7 attack 0% v - cancellation 7 matter 89% w - extra healing 3 healing 0% x - drain life 2 attack 0% y - wizard lock 2 matter 0% z - charm monster 3 enchantment 0% A - remove curse 3 clerical 0% B - dig 5 matter 29% Voluntary challenges You never genocided any monsters You polymorphed 206 items You never changed form You used 8 wishes You did not wish for any artifacts Your skills at the end Fighting Skills (none) Weapon Skills dagger [Expert] quarterstaff [Basic] Spellcasting Skills attack spells [Expert] healing spells [Basic] divination spells [Skilled] enchantment spells [Basic] clerical spells [Basic] matter spells [Basic] Goodbye stefanb the Demigod... You went to your reward with 2990872 points, The Candelabrum of Invocation (worth 5000 zorkmids and 12500 points) The Eye of the Aethiopica (worth 4000 zorkmids and 10000 points) Magicbane (worth 3500 zorkmids and 8750 points) 1 amulet of life saving (worth 150 zorkmids), and 2794 pieces of gold, after 55454 moves. Killer: ascended You were level 25 with a maximum of 236 hit points when you ascended. You made the top ten list! No Points Name Hp [max] 1 2990872 stefanb-Wiz-Orc-Mal-Cha ascended to demigod-hood. 236 [236] 2 103416 stefanb-Ran-Orc-Mal-Cha died in The Gnomish Mines on level 8 [max 22]. Killed by a fire vortex. - [73] 3 73635 stefanb-Rog-Orc-Mal-Cha died in The Dungeons of Doom on level 10 [max 11]. Killed by an Aleax. - [90]
Categories: FLOSS Project Planets

FeatherCast: ApacheCon Seville 2016 – If You Build It, They Won’t Come – Ruth Suehle

Planet Apache - Sat, 2017-03-11 05:39

If You Build It, They Won’t Come – Ruth Suehle


Good code isn’t enough for a successful open source project. First of all, only you know how to use what you’ve made. Maybe it’s time for a little UI and UX help? At the very least some documentation! Next, how is anyone else going to find what you’ve created? And that’s only the beginning. Ruth Suehle, manager of Red Hat’s Open Source and Standards community leadership team, will take you through examples of the best and the worst, from projects large and small, to help you see what you need beyond your code to build a successful open source project and community.

More about this session

Categories: FLOSS Project Planets

Django Weekly: Django Weekly 29 - GraphQL, Security Concepts for Django developers and more from @thedjangoweekly

Planet Python - Sat, 2017-03-11 04:52
Worthy Read
Getting Djiggy with Django ModelsArticle focused on Django ORM. Explains Q, select_related(), prefetch_related(), Cached Properties, extending models.Manager and Atomic Transactions.
SQL, orm, Query
Manual Kinks in your CI/CD Pipeline?See The 3 Use Cases of How Our DevOp Teams Automate Development
Testing GraphQL with Graphene DjangoIt is 2017, and GraphQL is changing the way that we write APIs. In particular, Graphene Django is an easy to use library for writing GraphQL APIs within Django. However, Graphene Django doesn't include a testing guide! But fear not, testing is easy, simple and clear.
django, GraphQL
Choices for Choices in Django CharFieldsTalking about handling multiple choices using a CharField from the Model class in Django. There are many ways to approach choices in a Django model. I’m going to cover a few approaches in this post and none of them will be the definitive answer. Note - Do look at the solution using `enum` which I believe was added in 3.4.
Cloud Hosted Databases9 DBs to choose from, 5 min setup, auto-scaling, Cloud hosted. Free for 30 Days.
An easy to use project template for Django 1.10This is by the folks at BeDjango. Git repo here - https://github.com/BeDjango/bedjango-starter/ .
If you needed a crud app built, how would you build it? - Hackernews discussionQuite a few people suggesting Django and Django admin.
Security concepts to learn for a django developerReddit Discussion
django, security

django-knowledge-share - 13 Stars, 1 ForkMicroblog app used to share quick knowledge. This code powers Vinta's lessons learned running at http://www.vinta.com.br/lessons-learned/.
django-videokit - 7 Stars, 0 ForkVideo storage and processing for Django
django-fullurl - 4 Stars, 0 ForkDjango template tag `fullurl` acts just like `url`, but it always prints absolute URLS with scheme and domain
Categories: FLOSS Project Planets

PyBites: Code Challenge 09 - With Statement / Context Manager - review

Planet Python - Sat, 2017-03-11 04:00

It's end of the week again so we review the code challenge of this week. It's never late to sign up, just fork our challenges repo and start coding.

Categories: FLOSS Project Planets

Drupal core announcements: Drupal core security release window on Wednesday, March 15, 2017

Planet Drupal - Sat, 2017-03-11 00:14
Organizers:  xjm cilefen Fabianx catch stefan.r David_Rothstein Event type:  Online meeting (eg. IRC meeting)

The monthly security release window for Drupal 8 and 7 core will take place on Wednesday, March 15.

This does not mean that a Drupal core security release will necessarily take place on that date for any of the Drupal 8 or 7 branches, only that you should watch for one (and be ready to update your Drupal sites in the event that the Drupal security team decides to make a release).

There will be no bug fix or feature release on this date. The next scheduled minor (feature) release for Drupal 8 will be on Wednesday, April 5.

Drupal 6 is end-of-life and will not receive further security releases.

For more information on Drupal core release windows, see the documentation on release timing and security releases, and the discussion that led to this policy being implemented.

Categories: FLOSS Project Planets

Vasudev Ram: Analyse this Python code snippet

Planet Python - Fri, 2017-03-10 21:50
By Vasudev Ram

Hi reader [1],

Analyze the snippet of Python code below. See what you make of it.

I will discuss it in my next post.

>>> a = 1
>>> lis = [a, 2 ]
>>> lis
[1, 2]
>>> lis = [a, 2 ,
... "abc", False ]
>>> lis
[1, 2, 'abc', False]
>>> a
>>> b = 3
>>> lis
[1, 2, 'abc', False]
>>> a = b
>>> a
>>> lis
[1, 2, 'abc', False]
>>> lis = [a, 2 ]
>>> lis
[3, 2]

[1] This product is suitable for Pythonistas aged 1 to 2 (approximately). For those of higher age, the dose may have no effect :)

- Vasudev Ram - Online Python training and consulting

Are you a blogger with some traffic? Get Convertkit:

Email marketing for professional bloggers

Get updates (via Gumroad) on my forthcoming apps and content.

Jump to posts: Python * DLang * xtopdf

Subscribe to my blog by email

My ActiveState Code recipes

Follow me on: LinkedIn * Twitter

Share |

Vasudev Ram
Categories: FLOSS Project Planets

MidCamp - Midwest Drupal Camp: MidCamp 2017 keynote, sessions, and trainings, oh my!

Planet Drupal - Fri, 2017-03-10 20:07

Keynote Speaker

We are pleased as punch to announce that Emma Karayiannis will be the keynote speaker for MidCamp 2017.

Emma is a huge Open Source community advocate. Over the past 4 years Emma has taken part in many (if not all) forms of contribution within the Drupal community. Emma's current focus has put the code aside to support the people who contribute to Drupal. Her current responsibilities include being a member of the Drupal Community Working Group and the creator of the 'Being Human' track for DrupalCon.

Get tickets

Accepted Sessions

We had a record breaking number of sessions submissions this year, making our job extremely difficult on how to choose the best content for this year's camp.  We have 45 sessions spread across four concurrent rooms planned for Friday and Saturday.

With sessions like Inclusive Development: Using Styleguides to Improve Website AccessibilityUnderstanding DrupalThe Butler Did It: Putting Jenkins To Work For You; and Building Great Teams, we have something for everyone!

View all sessions

Training Day

On Thursday, we have four great full day Training sessions planned.  We have lined up a group of incredible trainers who are going to donate their time to lead full day, in depth training sessions.  Each session is $40, and is additional to the price of the camp.

View all trainings sessions

Drupal Development Best Practice Workflows on Pantheon

Pantheon is a website management platform for Drupal & WordPress that provides lightning-fast hosting and best-in-breed web development tools for your team. Learn how to use Pantheon like a seasoned Drupal developer and level up your Drupal development game.

We'll walk through time-saving development workflows on Pantheon's development platform where you'll be using Git and high-performance technologies like Varnish and Redis to keep your clients happy.

Learn more or get your ticket now!

Introduction to Drupal 8

Drupal is known for being a powerful platform with a steep learning curve. This course will give you an introduction to the world of Drupal and soften that learning curve so you can get up-to-speed with Drupal quickly. We'll cover fundamental Drupal concepts and terminology, and give you the hands-on experience you need to dive deeper.

Whether you're a developer using Drupal for the first time, a content editor looking for an introduction to Drupal administration, or a site builder wanting to know how to structure a new Drupal website, this course will get you started on the right foot.

The course includes step-by-step exercises to help you understand the process of creating a Drupal site. It also includes independent exercises to help you think through the process of building out a website for your particular use case or organization.

Learn more or get your ticket now!

Theming Drupal 8

Themes combine HTML, CSS, JavaScript, and Drupal in order to make beautiful websites. Creating truly unique themes requires knowing how to use the Twig template language to manipulate HTML, how to add CSS and JavaScript assets in a way that's compatible with Drupal's caching, all while maintaining the flexibility that Drupal is known for.

This workshop will familiarize front-end developers with Drupal 8's theme system through a combination of presentations, and hands-on exercises. Whether your goal is to theme your personal site, pass the Acquia front-end developer certification, or upgrade your skills for a job our goal is to provide students with a solid foundation on which to start and enough knowledge to continue to practice and learn on their own.

Learn more or get your ticket now!

What Am I Getting Myself Into? A Drupal Crash Course for Non-developers

Are you responsible for project management, content, or vendor selection and preparing to work with Drupal? This one-day training delivers all of the tools you need to get started. Delivered by an Acquia Certified Drupal Developer, this training will answer the questions you didn’t even know to ask!

Targeted to the non-developer, this training is perfect for individuals that need to get up and running in Drupal - fast! Attendees will benefit from a unique perspective at the intersection of Drupal expertise and marketing, that only Margaret can deliver as a former marketing executive and author of the Drupal 8 Acquia curricula. Individuals that are brand new to Drupal will walk away with the confidence to work within the Drupal framework and community.

Learn more or get your ticket now!


At MidCamp 2016, the Sprint room was always abuzz with activity.  There was so much activity on those who work on the Frontend of Drupal, and a concentrated effort to get Drupal Commerce to it's first Release candidate.

If you want to sprint, stop by these rooms any of the days.  If you are interested in mentoring, or leading sprints, please contact midcampsprints@gmail.com.  We ask if you are coming on Thursday and Sunday that you get a free ticket so we can make sure to get enough food and coffee.

  • Thursday sprints will take place in Room 220, with room for 80 people
  • Sprinting during sessions Friday and Saturday will take place in Room 120AB, starting after the keynote
  • Sunday sprints will take place in Room 314A and 314B, with room for 60 people in each room

Sponsor MidCamp 2017!

Are you or your company interested in becoming a sponsor for the 2017 event? Sponsoring MidCamp is a great way to promote your company, organization, or product and to show your support for Drupal and the Midwest Drupal community. It also is a great opportunity to connect with potential customers and recruit talent.

Find out more at:

Thanks for reading this far!  We hope to see you at the camp!

Categories: FLOSS Project Planets

Justin Mason: Links for 2017-03-10

Planet Apache - Fri, 2017-03-10 19:58
Categories: FLOSS Project Planets

Mike Driscoll: Python – How to tell if a Function Has Been Called

Planet Python - Fri, 2017-03-10 19:15

Last year I ran into a situation where I needed to know if a function had been called. Basically we were trying to prevent shutting down a Twisted event loop twice or starting two of them. Anyway, in my research I stumbled across a fun post on StackOverflow that showed a couple of ways to do this.

The first made use of the fact that everything in Python is an object, including the function itself. Let’s take a look at a simple example:

def self_aware_function(a, b): self_aware_function.has_been_called = True return a + b   if __name__ == '__main__': self_aware_function.has_been_called = False   for i in range(2): if self_aware_function.has_been_called: print 'function already called' else: print 'function not called'   self_aware_function(1, 2)

In this example, we create an attribute on the function that we named has_been_called. We set it to True when the function is called. When you start your program, you will want to initialize that attribute to False, which we do above. Then we use a for loop to loop twice. The first time through it will check if the function has been called. Since it hasn’t, you will see it fall to the else statement. Now that we called the function, the second time through the loop the first part of the if statement executes.

That StackOverflow post also mentions a neat way to use a decorator to track function calls. Here’s an example I wrote:

import functools     def calltracker(func): @functools.wraps(func) def wrapper(*args): wrapper.has_been_called = True return func(*args) wrapper.has_been_called = False return wrapper   @calltracker def doubler(number): return number * 2   if __name__ == '__main__': if not doubler.has_been_called: print "You haven't called this function yet" doubler(2)   if doubler.has_been_called: print 'doubler has been called!'

In this example, I import functools and create a decorator that I dubbed calltracker. In this function, we set up the same attribute that we did in the previous example, but in this case we attach it to our wrapper (i.e. the decorator). Then we decorate a function and give our code a try. The first if statement checks to see if the function has been called yet. It hasn’t, so we go ahead and call it. Then we confirm that the function was called in our second if statement.

Wrapping Up

While this stuff is certainly useful at runtime, you can also do similar things using Python’s trace module to trace through the execution of your code. This sort of thing is also done via coverage tools. You will also find this kind of functionality in Python Mock objects as a Mock can tell when it has been called.

Anyway, you will hopefully find this exercise as interesting as I did. While I already knew that everything in Python was an object, I hadn’t thought about using that functionality to add attributes to functions.

Categories: FLOSS Project Planets

Fear not, OMG! Ubuntu! You will bounce again!

Planet KDE - Fri, 2017-03-10 18:49
KDE Project:

Serving the quadruped audience

Intrepid journalist Joey Sneddon over at OMG! Ubuntu! recently pointed out to us that Plasma 5 is currently not doing so well when it comes to serving an important user demographic - bored cats!

Indeed, Plasma 5.0 cost them (and us) the Bouncy Ball widget. And the reasoning mentioned in the article ([...] when trying to develop a professional experience toys and gimicks aren’t a good thing to be shipping by default [...]) is actually pretty solid I think. Hmm.

Have we lost our bounce forever? No!

But! These days we have the sexy KDE Store going on, which is a great place to put toys and gimmicks (along with neat menus).

So it's back! Behold the demo:

Bouncy Ball v2.0 on Plasma 5

You can grab it now for your Plasma 5 via Add Widgets... in your desktop menu and then Get new widgets in the Widget Explorer, or check out the Bouncy Ball store page.

Now for some additional fine print, though: I wrote this at ludicrous speed over a Friday night, and it's not well-tested. It behaves a little quirky sometimes (the goal was to match the original closely, but I didn't have a running KDE 4 to refer to). And despite the v2.0 moniker, it's still missing some of the features of the old Ball, including auto-bounce and that satisfying Boing! sound on collisions. I went with v2.0 in honor of the heritage - I'll polish it and add back the missing features a little later!

Update Bouncy Ball v2.1 is now on the store with sound support, auto-bounce, much better mouse response, a configurable simulation tick and a few bugfixes!

Categories: FLOSS Project Planets

Schedule posted: Explore the roots of freedom at LibrePlanet 2017

FSF Blogs - Fri, 2017-03-10 17:09

Register now to ensure your admission at LibrePlanet 2017: The Roots of Freedom. As always, FSF members and students attend gratis.

Need a little more convincing before you register? The LibrePlanet program is now available for your perusal.

Read on for more information about volunteering, the program, the LibrePlanet email discussion list, or engaging with the conference if you can't make it to Cambridge.

Volunteering (get gratis admission!)

We can't say it enough: LibrePlanet would be impossible without the help of dozens of volunteers. The free software enthusiasts who give their time and energy to LibrePlanet, both before and during the conference, are crucial to its success. Volunteering is a great way to meet fellow community members and give back to the free software movement. There are even ways to help if you can't attend in person! If you are interested in helping out with LibrePlanet 2017 email resources@fsf.org. We show our appreciation for our volunteers by offering gratis conference admission and lunch, plus a LibrePlanet t-shirt.


This year, the LibrePlanet program will include more than 50 speakers, an array of practical workshops, the opportunity for any attendee to give a lightning talk, and for the first time, Birds of a Feather (BoF) sessions, informal conversations based around shared interests—another great way for anybody at LibrePlanet to explore ideas important to free software, whether they're something not already on the program, or a deeper conversation jumping off of a LibrePlanet talk.

Want more LibrePlanet? Take it to the mailing list

Looking to coordinate travel with other LibrePlanet attendees? Brainstorm ideas for lightning talks? Organize a get-together after the conference? Join the libreplanet-discuss email list and the #libreplanet IRC channel on Freenode to connect with other LibrePlanet attendees. The list and channel are active year-round as part of the libreplanet.org community.

LibreLuna: LibrePlanet 2017 comes to you

We know not everybody can get to Cambridge to participate in LibrePlanet. So the FSF works hard to make conference proceedings available to the global free software movement. We will livestream all keynotes and most other sessions—the link will be available on the conference homepage during LibrePlanet. And we're bringing back LibreLuna—self-organized LibrePlanet satellite events hosted by free software fans across the planet. You can register your LibreLuna event now and we'll help promote your gathering.

LibrePlanet 2017 is produced in partnership by the Free Software Foundation with the Student Information Processing Board (SIPB) at MIT.

Explore the roots of freedom with us. Register for LibrePlanet 2017 today!

Categories: FLOSS Project Planets

Palantir: The Importance of Strategy to Design

Planet Drupal - Fri, 2017-03-10 16:44
The Importance of Strategy to Design brandt Fri, 03/10/2017 - 14:44 Ashley Cyborski Mar 14, 2017

Strategy-driven design helps create a common language for project teams and clients to discuss design decisions.

In this post we will cover...
  • Why a common language is important
  • How each individual design deliverable impacts the design process
  • How combining strategic goals with design deliverables creates the ability to set goals and test

We want to make your project a success.

Let's Chat.

Strategy-driven design is a process that is heavily informed by the research and goals established during the strategy phase of a project. At Palantir, our design and strategy teams work together closely. I’ll be using this post to talk about how different strategic deliverables help to inform the design process and keep it on track throughout the project.

Creating a Common Language

The biggest benefit of strategy-driven design is the creation of a common language for the design team, the strategy team, and the client to discuss design decisions. This benefit extends into each step of the process.

Many non-designers have trouble talking about and providing feedback on design. I’ve had experiences where I get feedback like “the blue isn’t working, so I think we should use orange more,” or “the image at the top is too small, let’s make it bigger.” Though this type of feedback isn’t all that bad, it could be more effective. The reasoning behind the feedback isn’t clear, and it lacks a relationship to the user experience.

By using the strategic deliverables as a benchmark, we can reframe the feedback in a way that keeps the goals and user experience in mind. Instead a client might say “The blue on this button does not have enough emphasis, and since this CTA is one of our primary KPIs, we should explore alternative colors to improve its hierarchy on the page.” You can see how the core meaning of the feedback didn’t really change, but the conversation around that feedback has been reframed to be goal-oriented and problem based.

When we have a common language, communicating is easier and the reasoning behind design decisions becomes clearer to a client. This results in clients being more confident in the design decision and also gives them language and reasoning when presenting them to their stakeholders.

Strategic Deliverables’ Relationship to Design Competitive Analysis

Competitive Analysis involves looking at an industry’s competitive landscape and determining what your website is doing well and where there is room for improvement. Basically, this piece of strategy is about sizing up the competition and figuring out how to surpass them.

Though the competitive analysis does not directly affect the design process, it can help us to understand an industry’s best practices and standards. We can compare our designs to what already exists and find unique ways to improve our user experience and the overall brand impressions from that experience.

For example, Competitor A’s site also has a newsletter signup pathway. As we navigate through it with the mindset of a user, we can uncover areas of improvement. For example, their form element doesn’t tell you what information it is looking for, and they do not have any descriptive information about what you are signing up for. By navigating through this process on our competitor’s site, we can gain a lot of insightful ideas to improve the user experience on our own site.

Business Goals and KPIs

The business goals and KPIs (Key Performance Indicators) of a project are the guiding light of the design phase. As we work through each part of the design process, we look at the goals as our design targets. Through the design, we want to ensure that we help set the project up to accomplish those goals.

For example, a site goal could be to increase newsletter sign-ups, and a KPI might be to increase them by 25%. So as we move through the design process, we consider the sign up form’s placement on a page as well as the style decisions that give it the appropriate hierarchy and visual weight, like color and size.

In addition to the site wide goals, each section of the site may also have its own unique goals. Part of the design and strategy collaboration process includes balancing these section specific goals with the project goals. The design helps to guide the user through each section of the site, ensuring that the section’s goals are understandable and navigable, and that the site goals are visible, without being overpowering.

User Research

User research builds on the existing KPIs and explores how and why a user explores the site. Empathy mapping provides insight into the feelings, thoughts, and actions of a user as they try to accomplish their goals. Personas then define the types of users at a high level by focusing on their specific needs, motivations, and limitations. User journeys combine this information to plan an improved pathway to help users more easily accomplish their goals on a site.

It is the designer’s job to help realize these goals and translate them into a clear and usable interface that meets the needs of individual users. By using hierarchy, color, clear indicators, and subtle animations, design can help guide users through the site without getting in the way and slowing them down. We begin to consider accessibility and functional needs. With the user journey as the direction, we can visualize how a user gets from point a to point b and where they may need to stop, or get help, along the way.

To continue our “newsletter sign-ups” example, this step involves ensuring that the placement of the signup form is in a location that makes sense, but doesn’t interfere with the other content on that page. It also means ensuring that users know where the submit button is and what information goes into the inputs by using appropriate labels. We can also begin considering different user needs. For example, a visually impaired user may need higher contrast levels or may need to navigate the signup form using their keyboard.

Content Strategy

The content audit looks at existing content, and the content type definition begins to define what content will be used on the site and how and where it will be used. Design uses this definition to plan components and templates. Without the content, there would be nothing to design and there would be nothing of value for a user. Content is really key.

A lot of people think good design can compensate for poor content, but that isn’t true. Content and design are like a pair of dancers, if only one is good, then the act is mediocre at best. If both are good, however, then the act is a beautiful work of art that communicates its message clearly and seamlessly to the audience. Good design cannot compensate for poor content, and you cannot have a great design without great, well thought out, and consistent content.

Once you have a good content plan the design can begin to form the structure and the hierarchy of that content. The strategy helps to inform how and where the content is connected, and the design works to tie those threads together with clear, navigable pathways.

For our newsletter example, this means first determining which content pathways lead to the newsletter signup form, and how important that form is compared to other content within that content type. On a news or blog article page, that form may be more relevant than on a contributor’s biography page. Additionally, the content strategy helps articulate the language around the form itself, defining the title and description blocks.

Information Architecture

If the User Journey is the direction from point “A” to point “B”, then the Information Architecture is the map. When it comes to integrating the IA into the design, the work is a lot more literal than the other examples. It involves creating waypoints that help users know where they are and how to navigate.

This involves things like clear labeling of “you are here” type information, such as bread crumbs or section headers. It can also entail active states on the navigation to show “you are in this section”. However, there are multiple pathways to get to point “B”. We can’t always tell where a user came from on the site or if they even landed there from the site at all. This means that each page has a goal of informing the user of where they currently are, as well as showing them other routes that they can take to get around. Having a clear navigation with understandable labels goes a long way. Design works to ensure that these are discoverable and usable.

To go back to our newsletter example, this would mean having a clear path to the newsletter signup in the navigation and surfacing alternative navigation pathways through the rest of the site.

Goal Setting and Testing

Above, I talked about how each individual deliverable impacts the design process. As a whole, these deliverables give the design process clear objectives, benchmarks, and a common language for discussing design decisions. This process helps to marry the strategic goals with the design goals of a project.

Oftentimes, design goals are not very rigid or specific. For example, a design-based goal might be to improve the brand presence on a site. This goal has a wide range of acceptable solutions and can be very hard to test in a meaningful way. By leveraging the strategic goals, we can set more specific design goals that directly tie into the project KPIs. These hybrid goals are much easier to test with an end user and lend themselves to the creation of benchmarks that the site can be tested against in the future.

The Wrap-Up

In my experience, when we do not have strategic goals, the design process can become frustrating, extended, and a bit detached from the overall process. Since there is no common language, it becomes harder and more frustrating to resolve design feedback in a meaningful and productive way. When we have that common language, communicating is easier and the reasoning behind design decisions becomes clearer to a client.

Additionally without clear project goals, it is also a lot harder to determine when a design is “finished” as there is a real lack of measurement. Oftentimes, clients will continue to iterate because they do not feel it is “quite right”, and are feeling a lot of pressure to be successful with large projects. With the goals in mind, we can look at a design and say “This is accomplishing this goal”, and we can test that statement. This gives clients a lot more confidence in the design deliverables as well as a platform for talking to their stakeholders about design decisions.

By leveraging the strategy deliverables in the design process, our final product is goal-oriented with a focus on the user experience. Ultimately, this creates a better final product for both the client and their users.



Stay connected with the latest news on web strategy, design, and development.

Sign up for our newsletter.
Categories: FLOSS Project Planets
Syndicate content