Brainstorming a Conference Talk Proposal


Tips and Tricks

Taken from Brainstorming: Writing a PyCon Proposal.  While this post is for PyCon, the US-based conference for Python developers, users, educators, and everyone with an interest in Python, this advice can apply to any language-centric conferences, even the topic suggestions themselves.
—-

Hey you! Ever thought about submitting a proposal?
What? oh no, no no no.
Why not?
What would I talk about?  I have nothing to say!

So how about this:

Tell me what talks you went to at previous years’ PyCons that you found were pretty good (regardless of speaker performance)?

What about: what would you like to see at PyCon this year?

Ok.  You want to see those topics?

Why don’t you write the talk you want to see?

Bam, you have an idea.  (cheeky lil’ blogger, aren’t I?)

No seriously: if you want to see a talk, write it yourself.  Or: take what it is that you do with Python (professionally, hobby-wise, side-jobs, whatevs), and write a talk on it.

There is significant interest in the “Python in the Wild” – such as, Python in (non-technical) corporations (product/services or used internally), governmenteducation (CS degrees, high school programs, communities), and science (NASA, robotics).

There is always interest in popular topics, like deployment, big data, python packaging.  Not only do people have short memories, but every year, it will be many people’s first PyCon.

What tends to be popular are talks that compare frameworks/libraries/packages, critique a well-known/used tool/framework, and extreme talks (e.g. we’re getting down to the nitty gritty details of Twisted).  Topics that could do surprisingly well are security/cryptography, event-driven networking, and subjects that people should know about and probably default to industry standard, but don’t really know in depth.  Very interesting subjects include alternatives to giants like Django (e.g. Flask, Pyramid), or where has Python failed.

There are important subject matters like accessibility within Python, and diversity & community building.  Not all talks at PyCon are technical (my head would explode), but are needed and well-respected nonetheless.

When proposing a talk:

Submit early.  You know how many proposals the Program Committee has to read through?  Not too many right now.  There is more time and patience to give feedback, give a second look after the speaker responds/edits.  The committee also is not that tired yet.  Submit on September 27th?  Dead tired.  Not really wanting to give feedback; just wanting this voting process over.

Write an outline.  Yes just do it.  It can be bare bones, but it helps a lot to see where you’re going with this talk, if there is enough meat behind this talk or if it’s too ambitious for the time slot.   Don’t write out your whole talk.  My n00b confession: I wrote a 2-page single-spaced essay for my proposed talk at OSCON. /facepalm

It also significantly helps the reviewer and you to associate length of time per bullet/subpoint/etc.  The reviewer has a sense of where you’re going, if it can actually be a full talk or if it’s too long.  It also helps you frame your actual talk when you come to flesh it out (because no one writes the damn talk before they propose it for the first time).

Nervous about actually speaking? Find a partner.  Either someone that shares your beginner level of speaking (both hold the burden of being nervous for your first talk) or someone that is already a seasoned speaker (you can relax a little!).

Add links to the ‘about you’/bio portion, or more context in general about why you are the person to speak about this topic.  Did a project with Google Summer of Code?  Show the link.  GitHub repo?  Love to see it.  Published a paper on the topic? Well it might not be read, the fact that it’s there would give assurance :D .  Remember though, provide the reviewers with more context on why you should be speaking on this topic (not just some random article you wrote about how lame PHP is (but it is lame).).  Note: it is not important that you haven’t spoke at PyCon or another conference before.  But do prove that why you should now.

Think posters might be a better option for your first time presenting something at PyCon?  With a talk, you have about 30 minutes.  You can plan out what you’re going to say, how your talk might lead to certain questions (pro tip: leave some unanswered/unaddressed items from your talk, and look awesome when you know the answer if they’re asked).  After the talk, for questions you don’t know, you also have the forgiveness of the audience:

“Oh actually, hmm, that’s a very good question.  I’m not sure I can address that here right now, but catch me after the talk.”

(and then sprint away…:D)

With a poster, you are defending your PhD thesis (practically), standing around for hours with some of the audience’s expectation of:

“You know everything about this talk and I’m going to grill you because you’re stuck here.”

It can be pretty demanding.  But it’s why posters are great for in-depth and/or unconventional topics.  There also a second shot at doing something with PyCon if you’re talk doesn’t get accepted since they are due Jan 15th.

I think these Google hangouts that PyLadies did were productive; I got the feedback that they were helpful.  I also got the “zomg such a good idea but I can’t make it tonight.”  I’d like to see more, perhaps from the Program Committee itself (full disclosure, I am a part of the committee).  We have 4 weeks until talk proposals are due.  Let’s help you give it your best shot. 

About Lynn Root

@PyLadiesSF founder, @WomenWhoCode champion, Python/Django developer with a secret crush on databases.

More Posts by Lynn Root - Author Website

ASP.NET Membership.GetUserNameByEmail Error: “The E-mail supplied is invalid.”


.NETASP.NETC#LanguagesTips and Tricks

What the heck does this error message mean?? I had cause to find out when I was getting this error in a method that was simply updating the email address for an existing user. Mind you, I wasn’t creating a new user – I was just updating an existing user.  Since the error message is less than helpful, I thought I’d post this so anyone else getting this error won’t have to search as much as I did to find the solution.

Here’s how it came into play: I had created a secure web page to allow my client to manage some of their user accounts. They often had requests to change the email address for the account, so I created a simple form with a couple of text boxes (tbChangeEmail_Old and tbChangeEmail_New), a label to display the status of the attempt (lblChangeEmail_Status) and a Submit button.

Here’s the code I was using, when the user clicked the Submit button:

try
{
   string username = Membership.GetUserNameByEmail(tbChangeEmail_Old.Text);
   if (!string.IsNullOrEmpty(username))
   {
      MembershipUser user = Membership.GetUser(username, false);
      user.Email = tbChangeEmail_New.Text;
      Membership.UpdateUser(user);
      lblChangeEmail_Status.Text = "Email address successfully changed.";
   }
   else
   {
      lblChangeEmail_Status.Text = "Unable to find user with that email.";
   }
}
catch (Exception ex)
{
   lblChangeEmail_Status.Text = "Error: " + ex.Message;
}

It’s pretty straightforward – attempt to get the username using the ‘old’ email, and if the account isn’t found, display a message to the user. If we do find the username, then use it to get a MembershipUser object, set the Email property to the ‘new’ value, and update the user. Wrap that up in a try/catch block, and we’re good to go.

Everything worked fine, until today, when my client reported she was getting an error message for one user: “The E-Mail is invalid.” Huh. Did that mean the new email address wasn’t a valid email format? No, the new email was fine. Did it mean the old email didn’t work and the user wasn’t found? No, the test for !string.IsNullOrEmpty(username) catches that, and I verified that the account with the old email address was present. So what’s going on?

I did the usual trick of Googling for a solution, and found a lot of forum questions related to creating a new user, but then I finally found something about DUPLICATE emails, which, of course, are not allowed in the Membership database, based on our configuration. Aha! I did a quick SQL query of the DB, and sure enough, there was already an account with the ‘new’ email address, so it was not possible to update the ‘old’ account with the ‘new’ address!

So, since the existing error message is less than helpful in this case, I changed the logic in the catch block, so I could display a more helpful error on the web page:

catch (Exception ex)
{
   if (ex.Message.ToLower() == "the e-mail supplied is invalid.")
      lblChangeEmail_Status.Text = "There is another account with the 'new' email address, so the 'old' email account cannot be updated.";
   else
      lblChangeEmail_Status.Text = "Error: " + ex.Message;
}

Now, if we run across another case like this, my client will know exactly what’s going on. No more ambiguous error messages! J

So, not earth-shattering .NET stuff, but I figure what I learned might help someone else in the same situation. Happy coding!

Book Review: "Refactoring in Ruby"


BookDesign processEventsIntroductionsRubyTestingTips and Tricks

“Refactoring in Ruby” written by William C. Wake and Kevin Rutherford.
Published by Addison-Wesley

This is more like a “workbook” then a “how to write awesome code” book. You can download the code from github http://github.com/kevinrutherford/rrwb-code and you will find tests/specs for the exercises.

The book is arranged in three parts, The Art of Refactoring, Code Smells, and Programs to Refactor.

There are explanations of “code smells” which are one characteristic of code that could be improved. Some of them are long parameter lists, unnecessarily complex, global variable, feature envy sections, etc. One thing I find interesting is the “How did it get this way?” section. It gives some insight into the thought process and reasoning behind the smell. I think this is good, as programmers our ego may be rather miffed to hear “This code stinks” but with some reasoning, it makes the pain less and I think firms up in our minds when this happens again, to do it this other way. I always want to know why when someone says I could do such and such thing better.

In addition to the code smell examples there are three programs to refactor in the end of the book. In a conversational tone, it walks through and gives some hints on what needs refactoring. Its almost as if you had a pair programming buddy working with you and identifying in small chunks what can be improved. This is definitely something I want to work through more carefully.

What I find odd, is that not all the code smells have code examples. The inspiration for the book I think is the Martin Fowler book “Refactoring Improving the design of Existing Code” which has examples for every code smell. Maybe Ruby smells less than Java? Or those fixes are really trivial? I don’t know. Overall, this is a great book and is certainly worth the price and investment and you will be a better programmer because of it!

How rails has changed how I seek for a job


PeopleRubyThoughtsTips and Tricks

For nine years, I have developed for the web. Over the years I’ve programmed in C, C++, Python, Java, ASP, PHP, Perl, and most recently, Ruby.
Since my first job as a developer, I’ve never looked for a new job: all of my job transitions have come through friends or co-workers.

In mid 2007 I was happy working with Perl. One day a friend told me about a Ruby on Rails job. Back in 2007, Rails developers in Brazil were rare. Because of that, the employer was seeking someone who fit the company instead of someone with Rails experience. That was great for me!

After a pleasant summer, the new job’s charm wore off and I decided that I wanted to move on but continue to program with Rails. Finally, I left my job.

When I started to send out resumes I soon realized that Rails’ culture fundamentally changed the way that a Rails job search functioned. In addition to the traditional resume or CV, Rails jobs demanded to know about Working With Rails, LinkedIn, GitHub, Twitter, personal blogs and sites, discussion forum posts, participation in open source projects, and a multitude of other online presences. These new demands made me realize that I hadn’t been cultivating a comprehensive web presence, which is not uncommon for female programmers, in my experience.

At first, this realization was disturbing. Though it’s still possible to get a Rails job without a vast web presence, I was upset to realize that I hadn’t been adhering to this best practice. It was particularly jarring the first time I was unable to answer these questions to potential employer.
The practice of software development as a craft is constantly reinventing itself and this includes the processes around job seeking and reputation building. Despite all of the hours, projects, languages, and jobs I’ve previously invested in, I now realize that I need to adapt to this new developer reality of being social and visible with my work in order to win back my standing as a desirable developer and potential candidate for a Rails position. The details of how I’ll implement that strategy will be the subject of an upcoming post, but I look forward to the possibilities ahead.

To read in portuguese.

Fun at PyOhio: SqlAlchemy, MongoDB, and Google Maps API


ThoughtsTips and Tricks

This was my first year attending PyOhio, and I really enjoyed it. It was small enough to have the time to catch up with fellow Python geeks, yet large enough to offer interesting and wide-ranging topics.

I did a tutorial on browser-to-database web development in Python, using components from various packages instead of one framework. I found myself and Mark Ramm giving our audiences a common message about frameworks in general, which was (1) each framework has limitations, (2) know these limitations before running off to use them. It was comforting to know that I am not the only one trying to convey this message.

I wasn’t quite sure how long my tutorial would run, so the PyOhio folks were kind enough to give me a room for an entire afternoon. It took about three hours, and was great fun.

I’ll attach all slides, links, and code. But there’s the summary of it all.

I took weather data from the University of Delaware, air temperatures from around the world ranging from 1900 to 2008. I pulled the data into both SqlAlchemy/Postgres, and MongoDB (a BSON-based key-value object store).

I then used CherryPy to serve up the data. My templates are written in web.py template, generating Google Map data.

The first CherryPy daemon takes longitude and latitude, and allows you to choose between Postgres or Mongo:

http://www.pythonpeople.net/gmaps/squarearea?year=1900&month=0&zoom=7&centerlat=40.90&centerlong=-80.50

http://www.pythonpeople.net/gmaps/squarearea?year=1900&month=0&zoom=7&centerlat=40.90&centerlong=-80.50&mongo=1

The second daemon provided a simple form, accepting zip codes, and referencing a database which maps zip codes to longitude and latitude.

Feel free to play with the links for a bit longer. They will be coming down in the next month or so.

The code and data, including all CSV load code and scripts, exists here:

http://www.pythonpeople.net/pyohio_src

Shoot me an email for the login and password: gloriajw_66 at yahoo dot com

This is an excellent web app example for learning purposes.

The tutorial is also somewhere on BlipTV, I am told.

Enjoy, play, ask questions.

Gloria