26 Jun 2019

feedPlanet Python

NumFOCUS: Moderna joins NumFOCUS Corporate Sponsors

The post Moderna joins NumFOCUS Corporate Sponsors appeared first on NumFOCUS.

26 Jun 2019 6:02pm GMT

PyCon: PyCon 2019 Code of Conduct Transparency Report

PyCon 2019 Transparency Report

The PyCon Code of Conduct sets standards for how our community interacts with others during the conference. A Code of Conduct without appropriate reporting and response procedures is difficult to enforce transparently, and furthermore a lack of transparency in the outcomes of Code of Conduct incidents leaves the community without knowledge of how or if the organizers worked to resolve incidents.
In our efforts to continue to improve how PyCon handles CoC incidents, staff, volunteers and community members participated in a CoC training prior to PyCon 2019. In having more people trained we provided a more thorough process for reporting and responses.
With that in mind, we have prepared the following to help the community understand what kind of incidents we received reports about and how the PyCon staff responded.

Overview

Reports

This year, PyCon Staff and Incident Responders were notified of 11 incidents. For summary purposes we categorized each report using a tenant of our standards and expectations of attendees.
13 incidents were reported this year, and 10 were considered to be potential PyCon Code of Conduct matters:

Resolutions

Of the 10 potential PyCon Code of Conduct matters:

Summary of Reported Incidents

26 Jun 2019 5:03pm GMT

Real Python: Python Community Interview With Katrina Durance

With PyCon US 2019 over, I decided to catch up with a PyCon first-timer, Katrina Durance. I was curious to see how she found the experience and what her highlights were. I also wanted to understand how attending a conference like PyCon influenced her programming chops.

Ricky: Let's start with the same questions I ask all my guests. How'd you get into programming? When did you start using Python?

Katrina Durance

Katrina: Python was my first programming course in grad school back in 2013. I also learned R and SQL. The two jobs I've been in since I graduated have been completely SQL-focused, so Python and R fell by the wayside.

Since I work at an arts college in Chicago (Columbia College Chicago) I'm able to take courses for free. We have a gaming program so all our programming courses are game related. Since I'm a gamer and a very visual learner, I decided to take a C# course where we worked on building small games. I liked it.

I really struggled a lot with Python when I first learned it, but working with a programming language in a visual context started to clarify a lot of concepts for me. I knew after that course that I wanted to build my skills to get into full-time programming. I eventually came up with a study plan and decided to return to my Python roots at the beginning of this year.

Ricky: This year you attended PyCon US for the first time. I'm curious why this year was your first. What changed or made you want to go this time around?

Katrina: What really clinched it was knowing that there was going to be a group from PythonistaCafe, and a big contingent from the Chicago Python User Group meetup there. So I knew I would see some friendly faces. I didn't feel I was doing it all alone.

Ricky: Everyone's PyCon experience is different. I'm wondering if you had a standout moment this year? Is there one thing that you'll remember synonymously with your first PyCon experience?

Katrina: The mentored sprints were a big deal for me. I ended up working on an issue on a tool (Hypothesis) that I didn't understand because I haven't learned much about testing at all yet.

I was feeling frustrated and concerned that everything would go over my head. But our mentor was amazing and so encouraging and showed me a bunch of things I was learning and kept me going to the end. Now I have a closed issue on the software with my name on it, which is pretty cool.

Ricky: We, of course, met face to face several times over the weekend. But most notably at the PythonistaCafe open space. How was your open space experience? Did you learn anything new, or were there any actionable takeaways?

Katrina: I was excited about the PythonistaCafe open space because of the chance to meet some of the folks I've interacted with or just seen on the forum, and I wasn't disappointed.

I hosted an open space for self-taught programmers like me. I was stunned when 30-ish people showed up. I did my best to manage it and got some positive feedback and helpful advice.

The PyCon Africa meetup was very enlightening because I learned that the reason we're not seeing a boom in innovation from Africa yet is that the internet is prohibitively expensive in every country represented in the room. It didn't matter if it was government regulated or privately owned. I would love to help figure out how to solve that problem.

Pyhtonista Cafe Open Space - PyconPythonistaCafe Members Coming Together at a PyCon Open Space

Ricky: There is so much to do at PyCon that there's just not enough time to do it all. So was there anything you wish you had done or a talk you'd missed that you wish you hadn't? Anything you'd do differently next time?

Katrina: I felt PyCon was what I was hoping it would be for this first time around, to be honest. Next year I want to stay for the sprints, which people kept telling me were amazing.

Ricky: So for those reading this that have yet to go to their first PyCon, this might be the most important question… How did attending PyCon affect how you will write your Python code going forward?

Katrina: I had to talk about my code. When you're self-taught, you don't get a lot of opportunities to talk through your code. Through the conversations I had at PyCon, I was encouraged to be more deliberate about taking advantage of my Slack and local Python communities to practice those communication skills.

In other words, I need to notch up my courage and not worry if I'm not coding it or explaining it well yet. I just need to keep coding and explaining.

Ricky: Last but not least, what else do you get up to in your spare time? What other hobbies and interests do you have, aside from Python and coding? Anything you'd like to plug?

Katrina: I love all things Sci-Fi and weird: movies, TV series, books, etc. I'm a LEGO enthusiast and have a penchant for building lost temples out of my love for H. P. Lovecraft stories. I really like VR and enjoy playing games on my Oculus Go. I also make jewelry out of felt, found objects, or even LEGO pieces.

If you'd like to catch up with Katrina and say hi, drop her a message on Twitter.

If there's someone from the Python community that you'd love me to interview, leave a comment below and let me know.


[ Improve Your Python With 🐍 Python Tricks 💌 - Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]

26 Jun 2019 2:00pm GMT

10 Nov 2011

feedPlanetJava

OSDir.com - Java: Oracle Introduces New Java Specification Requests to Evolve Java Community Process

From the Yet Another dept.:

To further its commitment to the Java Community Process (JCP), Oracle has submitted the first of two Java Specification Requests (JSRs) to update and revitalize the JCP.

10 Nov 2011 6:01am GMT

OSDir.com - Java: No copied Java code or weapons of mass destruction found in Android

From the Fact Checking dept.:

ZDNET: Sometimes the sheer wrongness of what is posted on the web leaves us speechless. Especially when it's picked up and repeated as gospel by otherwise reputable sites like Engadget. "Google copied Oracle's Java code, pasted in a new license, and shipped it," they reported this morning.



Sorry, but that just isn't true.

10 Nov 2011 6:01am GMT

OSDir.com - Java: Java SE 7 Released

From the Grande dept.:

Oracle today announced the availability of Java Platform, Standard Edition 7 (Java SE 7), the first release of the Java platform under Oracle stewardship.

10 Nov 2011 6:01am GMT

28 Oct 2011

feedPlanet Ruby

O'Reilly Ruby: MacRuby: The Definitive Guide

Ruby and Cocoa on OS X, the iPhone, and the Device That Shall Not Be Named

28 Oct 2011 8:00pm GMT

14 Oct 2011

feedPlanet Ruby

Charles Oliver Nutter: Why Clojure Doesn't Need Invokedynamic (Unless You Want It to be More Awesome)

This was originally posted as a comment on @fogus's blog post "Why Clojure doesn't need invokedynamic, but it might be nice". I figured it's worth a top-level post here.

Ok, there's some good points here and a few misguided/misinformed positions. I'll try to cover everything.

First, I need to point out a key detail of invokedynamic that may have escaped notice: any case where you must bounce through a generic piece of code to do dispatch -- regardless of how fast that bounce may be -- prevents a whole slew of optimizations from happening. This might affect Java dispatch, if there's any argument-twiddling logic shared between call sites. It would definitely affect multimethods, which are using a hand-implemented PIC. Any case where there's intervening code between the call site and the target would benefit from invokedynamic, since invokedynamic could be used to plumb that logic and let it inline straight through. This is, indeed, the primary benefit of using invokedynamic: arbitrarily complex dispatch logic folds away allowing the dispatch to optimize as if it were direct.

Your point about inference in Java dispatch is a fair one...if Clojure is able to infer all cases, then there's no need to use invokedynamic at all. But unless Clojure is able to infer all cases, then you've got this little performance time bomb just waiting to happen. Tweak some code path and obscure the inference, and kablam, you're back on a slow reflective impl. Invokedynamic would provide a measure of consistency; the only unforeseen perf impact would be when the dispatch turns out to *actually* be polymorphic, in which case even a direct call wouldn't do much better.

For multimethods, the benefit should be clear: the MM selection logic would be mostly implemented using method handles and "leaf" logic, allowing hotspot to inline it everywhere it is used. That means for small-morphic MM call sites, all targets could potentially inline too. That's impossible without invokedynamic unless you generate every MM path immediately around the eventual call.

Now, on to defs and Var lookup. Depending on the cost of Var lookup, using a SwitchPoint-based invalidation plus invokedynamic could be a big win. In Java 7u2, SwitchPoint-based invalidation is essentially free until invalidated, and as you point out that's a rare case. There would essentially be *no* cost in indirecting through a var until that var changes...and then it would settle back into no cost until it changes again. Frequently-changing vars could gracefully degrade to a PIC.

It's also dangerous to understate the impact code size has on JVM optimization. The usual recommendation on the JVM is to move code into many small methods, possibly using call-through logic as in multimethods to reuse the same logic in many places. As I've mentioned, that defeats many optimizations, so the next approach is often to hand-inline logic everywhere it's used, to let the JVM have a more optimizable view of the system. But now we're stepping on our own feet...by adding more bytecode, we're almost certainly impacting the JVM's optimization and inlining budgets.

OpenJDK (and probably the other VMs too) has various limits on how far it will go to optimize code. A large number of these limits are based on the bytecoded size of the target methods. Methods that get too big won't inline, and sometimes won't compile. Methods that inline a lot of code might not get inlined into other methods. Methods that inline one path and eat up too much budget might push out more important calls later on. The only way around this is to reduce bytecode size, which is where invokedynamic comes in.

As of OpenJDK 7u2, MethodHandle logic is not included when calculating inlining budgets. In other words, if you push all the Java dispatch logic or multimethod dispatch logic or var lookup into mostly MethodHandles, you're getting that logic *for free*. That has had a tremendous impact on JRuby performance; I had previous versions of our compiler that did indeed infer static target methods from the interpreter, but they were often *slower* than call site caching solely because the code was considerably larger. With invokedynamic, a call is a call is a call, and the intervening plumbing is not counted against you.

Now, what about negative impacts to Clojure itself...

#0 is a red herring. JRuby supports Java 5, 6, and 7 with only a few hundred lines of changes in the compiler. Basically, the compiler has abstract interfaces for doing things like constant lookup, literal loading, and dispatch that we simply reimplement to use invokedynamic (extending the old non-indy logic for non-indified paths). In order to compile our uses of invokedynamic, we use Rémi Forax's JSR-292 backport, which includes a "mock" jar with all the invokedynamic APIs stubbed out. In our release, we just leave that library out, reflectively load the invokedynamic-based compiler impls, and we're off to the races.

#1 would be fair if the Oracle Java 7u2 early-access drops did not already include the optimizations that gave JRuby those awesome numbers. The biggest of those optimizations was making SwitchPoint free, but also important are the inlining discounting and MutableCallSite improvements. The perf you see for JRuby there can apply to any indirected behavior in Clojure, with the same perf benefits as of 7u2.

For #2, to address the apparent vagueness in my blog post...the big perf gain was largely from using SwitchPoint to invalidate constants rather than pinging a global serial number. Again, indirection folds away if you can shove it into MethodHandles. And it's pretty easy to do it.

#3 is just plain FUD. Oracle has committed to making invokedynamic work well for Java too. The current thinking is that "lambda", the support for closures in Java 7, will use invokedynamic under the covers to implement "function-like" constructs. Oracle has also committed to Nashorn, a fully invokedynamic-based JavaScript implementation, which has many of the same challenges as languages like Ruby or Python. I talked with Adam Messinger at Oracle, who explained to me that Oracle chose JavaScript in part because it's so far away from Java...as I put it (and he agreed) it's going to "keep Oracle honest" about optimizing for non-Java languages. Invokedynamic is driving the future of the JVM, and Oracle knows it all too well.

As for #4...well, all good things take a little effort :) I think the effort required is far lower than you suspect, though.

14 Oct 2011 2:40pm GMT

07 Oct 2011

feedPlanet Ruby

Ruby on Rails: Rails 3.1.1 has been released!

Hi everyone,

Rails 3.1.1 has been released. This release requires at least sass-rails 3.1.4

CHANGES

ActionMailer

ActionPack

ActiveModel

ActiveRecord

ActiveResource

ActiveSupport

Railties

SHA-1

You can find an exhaustive list of changes on github. Along with the closed issues marked for v3.1.1.

Thanks to everyone!

07 Oct 2011 5:26pm GMT

21 Mar 2011

feedPlanet Perl

Planet Perl is going dormant

Planet Perl is going dormant. This will be the last post there for a while.

image from planet.perl.org

Why? There are better ways to get your Perl blog fix these days.

You might enjoy some of the following:

Will Planet Perl awaken again in the future? It might! The universe is a big place, filled with interesting places, people and things. You never know what might happen, so keep your towel handy.

21 Mar 2011 2:04am GMT

improving on my little wooden "miniatures"

A few years ago, I wrote about cheap wooden discs as D&D minis, and I've been using them ever since. They do a great job, and cost nearly nothing. For the most part, we've used a few for the PCs, marked with the characters' initials, and the rest for NPCs and enemies, usually marked with numbers.

With D&D 4E, we've tended to have combats with more and more varied enemies. (Minions are wonderful things.) Numbering has become insufficient. It's too hard to remember what numbers are what monster, and to keep initiative order separate from token numbers. In the past, I've colored a few tokens in with the red or green whiteboard markers, and that has been useful. So, this afternoon I found my old paints and painted six sets of five colors. (The black ones I'd already made with sharpies.)

D&D tokens: now in color

I'm not sure what I'll want next: either I'll want five more of each color or I'll want five more colors. More colors will require that I pick up some white paint, while more of those colors will only require that I re-match the secondary colors when mixing. I think I'll wait to see which I end up wanting during real combats.

These colored tokens should work together well with my previous post about using a whiteboard for combat overview. Like-type monsters will get one color, and will all get grouped to one slot on initiative. Last night, for example, the two halfling warriors were red and acted in the same initiative slot. The three halfling minions were unpainted, and acted in another, later slot. Only PCs get their own initiative.

I think that it did a good amount to speed up combat, and that's even when I totally forgot to bring the combat whiteboard (and the character sheets!) with me. Next time, we'll see how it works when it's all brought together.

21 Mar 2011 12:47am GMT

20 Mar 2011

feedPlanet Perl

Perl Vogue T-Shirts

Is Plack the new Black?In Pisa I gave a lightning talk about Perl Vogue. People enjoyed it and for a while I thought that it might actually turn into a project.

I won't though. It would just take far too much effort. And, besides, a couple of people have pointed out to be that the real Vogue are rather protective of their brand.

So it's not going to happen, I'm afraid. But as a subtle reminder of the ideas behind Perl Vogue I've created some t-shirts containing the article titles from the talk. You can get them from my Spreadshirt shop.

20 Mar 2011 12:02pm GMT