Python

  • Most Topular Stories

  • PyCon 2012: Early Bird approaches; how much awesome can a conference contain?

    The PyCon blog
    Jesse
    19 Jan 2012 | 8:18 am
    Wow.It feels like only a few days ago I was still in the midst of helping wrap up PyCon 2011. In reality, PyCon 2012 is under 50 days away. At this point I feel like a deer in the headlights!For example - Early Bird registration rates end on January 25th - that's only 7 days away! With the Early Bird discount, and attendance capped at 1500 attendees - now is the time to get registered! Registration includes breakfast, lunch and snacks too!We have an amazing list of tutorials you can attend, a jam-packed line up of main conference talks,  the Poster session is going to be awesome (the full…
  • Thinking Through a 21st Century Replacement for PowerPoint

    The Third Bit
    Greg Wilson
    26 Jan 2012 | 2:05 pm
    Over on the Software Carpentry site, I’ve posted another set of musings on what a 21st Century learning content creation tool (i.e., a PowerPoint killer) would look like. Comments welcome…
  • NumPyPy progress report - running benchmarks

    PyPy Status Blog
    Maciej Fijalkowski
    10 Jan 2012 | 1:21 pm
    Hello. We're excited to let you know about some of the great progress we've made on NumPyPy: both completeness and performance. In this blog entry we mostly will talk about performance and how much progress we have made so far. Word of warning: this work is in progress -- we're maybe half way to where we want to be and there are many trivial and not so trivial optimizations to be written. (For example, we haven't even started to implement important optimizations, like vectorization.) Benchmark We chose a laplace equation solver, based on SciPy's PerformancePython wiki. Unfortunately, the…
  • Convert CSV to TSV

    Entity Crisis
    Simon Wittber
    11 Dec 2011 | 11:17 pm
    import csvopen("output.tsv", "w").write("\n".join("\t".join(e.strip() for e in i) for i in csv.reader(open("input.csv"))))
  • Pyramid @ Python 3

    Fetchez le Python
    Tarek Ziadé
    25 Dec 2011 | 4:15 am
    If you have been following closely the latest work done by Chris on WebOb, you know that WebOb and eventually Pyramid became Python 3 compatible. That makes Python 3 a very tempting target for a new web project. Paste & PasteScript still need to be ported to Python 3 and the Pyramid team has chosen not to. They have created their own paster replacer instead, which can be used to initiate a Pyramid project or run the app using the .ini file. I am wondering if it would not be simpler at this point to drop Paste and use this replacer for all Python 3 frameworks that are using the Paste…
  • add this feed to my.Alltop

    Python Software Foundation News

  • Armin Rigo Receives PSF Community Service Award

    Doug Hellmann
    6 Jan 2012 | 7:00 am
    The Python Software Foundation has presented a Community Service Award for the fourth quarter of 2011 to Armin Rigo for his outstanding work on PyPy. The Python Software Foundation is pleased to recognize Armin's contributions to the community.
  • Mike Müller Receives PSF Community Service Award

    Doug Hellmann
    5 Jan 2012 | 7:00 am
    The Python Software Foundation has presented a Community Service Award for the fourth quarter of 2011 to Mike Müller for his outstanding work in bringing Python forward in the science world, through the organization of the first two EuroSciPy conferences and for heading the new yearly PyCon DE conference, which gives the large number of German speaking Python users a platform for interchange and discussion. The Python Software Foundation is pleased to recognize Mike's contributions to the community.
  • PSF Grants Over $37,000 to the Python Community in 2011

    Mike Driscoll
    1 Jan 2012 | 11:00 am
    The Python Software Foundation provides financial support to many Python related conferences and projects. In 2011, the grants and awards totaled US$37,511. As we enter the new year, we want to take this opportunity to review some of the work funded by, and for, the Python community throughout the year. Conferences One of the most prominent ways the PSF supports the community is through the conference assistance program. Organizers of Python-related conferences are eligible to receive grants toward conference-related expenses, including renting space, travel, catering, etc. PyCon AU…
  • PSF Proffers Payment to Port to Python 3

    Mike Driscoll
    15 Dec 2011 | 9:00 am
    As news of Python 3 porting becomes a more frequent occurrence and Python 3.3 development takes strides towards becoming the version everyone wants, the PSF has their own way of helping: money. With a grant program in place, the PSF is awarding funds to projects that plan an effort to port their work to Python 3. As we've previously written about, R. David Murray's work to port the email package was funded by a PSF grant. Jean-Paul Calderone took advantage of a grant to port PyOpenSSL. Most recently, Chris McDonough used grant funding to port WebOb to Python 3. The foundation has been able to…
  • First annual PyCon China a hit in Shanghai

    Brian Curtin
    13 Dec 2011 | 9:37 am
    The first annual PyCon China recently wrapped up an excellent event in Shanghai, with the December 3 and 4 conference serving over 450 attendees and just under 500 viewers of their live webcast. The new conference drew so much interest that over 100 people were put on a waiting list to get in.The conference schedule included 25 topics with 13 of them being 45+ minute presentations. After a keynote speech by Sting Chen titled "Python Enriches the World", the conference went on to cover Tornado, the Xunlei download manager, OpenStack, and others. They also included a lightning talk…
 
  • add this feed to my.Alltop

    The PyCon blog

  • DNS problems with the us.pycon.org conference website are resolved

    Doug Napoleone
    28 Jan 2012 | 4:08 am
    Our hosting provider has informed us that the DNS problems have been resolved. Thank you for your patience and understanding while this problem was being addressed.
  • DNS problems with the us.pycon.org conference website

    Doug Napoleone
    27 Jan 2012 | 11:01 pm
    The PyCon website is currently experiencing DNS resolution problems. We are working with our hosting company and their upstream provider to resolve this issue. We hope to have this problem resolved soon.Due to all your interest in the conference and the community help, this will be the best PyCon in history. Thank you all for your patience while we resolve this issue.UPDATE 9:55am Saturday (GMT):  The DNS resolution issue has been fixed. Some problems may exist for the next hour while the DNS update propagates.
  • Early Bird Rates Ending January 25

    Brian Curtin
    24 Jan 2012 | 8:11 am
    If you haven’t already done so, now would be a good time to register for PyCon 2012! You know why? It’s cheaper if you do it soon - by the end of January 25. We already think PyCon is an extraordinary value with ticket prices that haven’t changed in years, but we want to take that a step further. With discounts as high as 25%, the clock is ticking to get the deal of the 2012 conference season.If your company is sending you to the conference, they can get you in the door for $450, with that rate going up to $600 after Wednesday. Another thing your company might be interested in is…
  • PyCon Poster Session - Third Time's the Charm

    Vern Ceder
    21 Jan 2012 | 7:58 pm
    17, 31, 50...PyCon 2012 marks the third year of the Poster Session.  The Poster Session has been training in the off-season and is back, bigger and better than ever.  This year we have 50 posters for your PyCon enjoyment with the full list of accepted posters coming soon to the site.  We've grown a lot since the original 17 posters of the inaugural session2 years ago!Wondering how you'll manage your time and make it to all the posters that call to you? Wondering what's on the list? We'll have Robots that test mobile applications and play Angry Birds in their…
  • PyCon 2012: Early Bird approaches; how much awesome can a conference contain?

    Jesse
    19 Jan 2012 | 8:18 am
    Wow.It feels like only a few days ago I was still in the midst of helping wrap up PyCon 2011. In reality, PyCon 2012 is under 50 days away. At this point I feel like a deer in the headlights!For example - Early Bird registration rates end on January 25th - that's only 7 days away! With the Early Bird discount, and attendance capped at 1500 attendees - now is the time to get registered! Registration includes breakfast, lunch and snacks too!We have an amazing list of tutorials you can attend, a jam-packed line up of main conference talks,  the Poster session is going to be awesome (the full…
  • add this feed to my.Alltop

    Happenings in Python Usergroups

  • PyPG Python User Group Perugia - Next meeting: January, 25

    Masci
    24 Jan 2012 | 4:36 am
    PyPg, the Local Python User Group located in Perugia, Italy, will meet Wednesday, January 25th, at Evonove Coworking Space (map).Agenda:We will discuss about the project Kimol, a kinect interface to the 3D molecular viewer software Pymol.After a brief introduction to the Kinect technology and how we used it with Python, we'll make a short trip inside the (python) code of the project.As usual, snacks and beer for all the participants - free entrance!You can follow us on twitter or visit our Facebook page to get latest news on our activities. Feel free to come to our…
  • pyCologne Python User Group Cologne - Meeting, January 11, 6.30pm

    Andi Albrecht
    9 Jan 2012 | 2:07 pm
    We will meet Wednesday, January, 11th starting about 6.30 pm - 6.45 pm at Room 0.14, Benutzerrechenzentrum (RRZK-B) University of Cologne, Berrenrather Str. 136, 50937 Köln, GermanyAny presentations, news, book presentations etc. are welcome on each of our meetings!At about 8.30 pm we will as usual enjoy the rest of the evening in a nearby restaurant.Further information including directions how to get to the location can be found at:http://www.pycologne.de(Sorry, the web-links are in German only.)
  • Leipzig Python User Group, Next Meeting Tuesday, Januray 10, 2012

    Mike Müller
    8 Jan 2012 | 5:34 pm
    We will meet on January 10, 2012, 8:00 pm at the training center of Python Academy in Leipzig, Germany (How to find us).Everybody who uses Python, plans to do so or is interested in learning more about the language is encouraged to participate. While the meeting language will be mainly German, English speakers are very welcome. We will provide English interpretation if needed.Food and soft drinks are provided. Please send a short confirmation mail to info@python-academy.de, so we can prepare appropriately.The dates of our next meetings can be found in our calendar.Information about meetings…
  • PyUGAT Python User Group Austria - Next Meeting: January 11th, 2012

    hop
    6 Jan 2012 | 9:03 am
    The next meeting of the Python User Group Austria (PyUGAT) will take place this Wednesday, January 11th, 2012 around 6 p.m. at the Metalab in Vienna (how to get there).You can also find us on Meetup.The Agenda for this evening can be found in our wiki. This time there will be another Coding Dojo and a couple of small presentations. Afterwards there is time for chit-chat and a beer.If you happen to be in or around Vienna this Wednesday, come and join us at the Metalab!We can accommodate non German-speaking guests by switching to English, so don't be afraid to drop by!You can also follow us on…
  • Leipzig Python User Group, Next Meeting Tuesday, December 13, 2011

    Mike Müller
    12 Dec 2011 | 3:30 am
    We will meet on December 13, 2011, 8:00 pm at the training center of Python Academy in Leipzig, Germany (How to find us).Markus Zapke-Gründemann will introduce the Python client dedun that offers access to the API for theinformation server of the City of Leipzig. Topics will include design and development of the software aswell as the testing with py.test.Everybody who uses Python, plans to do so or is interested in learning more about the language is encouraged to participate. While the meeting language will be mainly German, English speakers are very welcome. We will provide English…
 
  • add this feed to my.Alltop

    PyPy Status Blog

  • Py3k and Numpy First Stage: Thanks to all who Gave

    Maciej Fijalkowski
    27 Jan 2012 | 3:46 am
    Last year was quite successful for PyPy fundraising through the Software Freedom Conservancy, and Conservancy and PyPy are very excited to announce that enough was raised to begin the first stages on the Py3k and Numpy grant proposals. As of the end of 2011, 135 different individuals gave to the Py3k campaign, and 114 to the Numpy campaign. We thank each of you who donated to help make this work possible. Meanwhile, if you haven't given to support these projects, we do hope you'll give generously now to help fund their second stages later this year! We're also particularly excited that a few…
  • Comparing Partial Evaluation and Tracing, Part 1

    Carl Friedrich Bolz
    26 Jan 2012 | 6:44 am
    As part of writing my PhD I am currently thinking about the relationship between PyPy's meta-tracing approach with various previous ideas to automatically get a (JIT-)compiler from only an interpreter of a language. One of the most-researched ideas along these lines is that of partial evaluation. Partial evaluation has basically the same goals as PyPy when it comes to compilers: Write an interpreter, and get a compiler for free. The methods for reaching that goal are a bit different. In this series of blog posts, I am trying to explore the similarities and differences of partial evaluation…
  • PyPy internship at NCAR

    Maciej Fijalkowski
    15 Jan 2012 | 4:38 pm
    Hello, everyone I would like to inform you that there is a very interesting opportunity for doing an internship at NCAR in the lovely town of Boulder, situated on the foothils of Rocky Mountains. Before you read on, make sure you: are a student of a US University, who is legally eligible to work in the US are at least finishing second year this year apply before February 3rd. The internship itself will focus on using PyPy (in some way) to provide a high performance numeric kernel for an atmospheric model, and measuring how fast we can go. This is very much in line with what the current effort…
  • Transactional Memory (II)

    Armin Rigo
    14 Jan 2012 | 7:21 am
    Here is an update about the previous blog post about the Global Interpreter Lock (GIL). In 5 months, the point of view changed quite a bit. Let me remind you that the GIL is the technique used in both CPython and PyPy to safely run multi-threaded programs: it is a global lock that prevents multiple threads from actually running at the same time. The reason to do that is that it would have disastrous effects in the interpreter if several threads access the same object concurrently --- to the point that in CPython even just manipulating the object's reference counter needs to be protected by…
  • NumPyPy progress report - running benchmarks

    Maciej Fijalkowski
    10 Jan 2012 | 1:21 pm
    Hello. We're excited to let you know about some of the great progress we've made on NumPyPy: both completeness and performance. In this blog entry we mostly will talk about performance and how much progress we have made so far. Word of warning: this work is in progress -- we're maybe half way to where we want to be and there are many trivial and not so trivial optimizations to be written. (For example, we haven't even started to implement important optimizations, like vectorization.) Benchmark We chose a laplace equation solver, based on SciPy's PerformancePython wiki. Unfortunately, the…
  • add this feed to my.Alltop

    Coder Who Says Py

  • Asynchronous XML-RPC in Python

    Brett Cannon
    26 Jan 2012 | 11:58 am
    Do you use XML-RPC (and specifically the xmlrpclib/xmlrpc.client from Python's stdlib)? Do you like multi-calls? Wish you could construct your XML-RPC multi-calls in a way so that you could make them asynchronous by constructing the call from scratch? Then you're in luck because I already did the hard work of figuring out the details for you! =) In my case I needed to communicate with an XML-RPC server that supported multi-calls, but in an asynchronous fashion with a non-standard communication object (i.e. not sockets but App Engine's urlfetch). So I had to piece together how to make a…
  • Grab bag of tips when working with App Engine unit testing

    Brett Cannon
    24 Jan 2012 | 5:44 pm
    [update: App Engine doc bug is being fixed and should be publicly visible in 1.6.2 or 1.6.3] First, an announcement: register for PyCon! It's a great conference and tons of fun. Early bird ends on the 25th. With that out of the way, this blog post is going to be testing an App Engine app. This can be, liking testing any complex system, is painful. And unfortunately the documentation on this subject is somewhat lacking for App Engine. But hopefully this post about random things to be aware of when writing unit tests for App Engine can help prevent someone else from having to learn the…
  • Working with App Engine backends

    Brett Cannon
    17 Jan 2012 | 5:53 pm
    This post is all about backends in App Engine, but first I want to make two personal points. One is that I'm sorry I have not been updating this blog (or really contributing to Python and its great community) more this past year. It was a rather insane 2011 for me personally: I finished my Ph.D., got married, moved to SF  (w/o my wife thanks to immigration), started working at Google full-time, moved to Toronto (yes, I moved internationally within the span of 6 months), transferred to the Google Waterloo office and started on a new team. In other words I have been stressed out and…
  • PyCon 2012 CFP ends in a month!

    Brett Cannon
    12 Sep 2011 | 1:32 pm
    The title says it all: the CFP for PyCon 2012 ends in a month, so you should seriously start thinking about getting those proposals in! As I say every year, you do not need to be a Python celebrity or  have presented previously in order to get a talk accepted. Having been on the PC from the beginning of PyCon I can tell you that we very happily give slots to people we have never heard of. As long as your proposal shows you are organized and your topic is interesting your talk will be  given a serious chance for acceptance. And sorry about the lack of posts. My Python free time is…
  • How to import a module from just a file path

    Brett Cannon
    16 Jul 2011 | 5:11 pm
    Dr. Brown asked on Twitter whether there was a single expression (e.g., no semi-colons or abuses of and or or) that could import a module from a file path, either through a stdlib function call or just constructed from scratch; mod = import_from_path('some_file.txt'). Because it involved import, I got cc'ed on the tweet while various people tried to come up with a solution. In the end people realized that it's not possible in Python 2 (but it is in Python 3). But how hard could it be, right? Right?!? Well, the devil is always in the details. While there are some functions in the stdlib…
 
  • add this feed to my.Alltop

    Doug Hellmann

  • Python Atlanta Meeting Jan. 12

    Doug Hellmann
    11 Jan 2012 | 11:28 am
    PyATL, the Python user group in Atlanta, Georgia, will have its firstmeeting of the year on Thursday, January 12, 2012. The meeting startsat 7:30 PM, but some of us gather for an informal dinner early between6:00 and 6:30 PM.AgendaThe agenda for this month includes several short presentations fromour members:"Using the os library to manage files under Windows XP" from William Soukup"Phone Site (http://fon.st)" from Jay Kelkar"When Do I Need Classes?" from JR RickersonWe will also be discussing topics the group wants to see presented atother meetings this…
  • virtualenvwrapper 2.11.1

    Doug Hellmann
    8 Jan 2012 | 9:14 am
    What is virtualenvwrappervirtualenvwrapper is a set of extensions to Ian Bicking's virtualenvtool. The extensions include wrappers for creating and deletingvirtual environments and otherwise managing your development workflow,making it easier to work on more than one project at a time withoutintroducing conflicts in their dependencies.What's New in 2.11.1Fixes a bug with tab completion in sub-shell environments such asscreen and tmux introduced in 2.11.InstallingVisit the virtualenvwrapper project page for download links andinstallation instructions.
  • sphinxcontrib-sqltable 1.0

    Doug Hellmann
    7 Jan 2012 | 8:12 am
    What is sphinxcontrib-sqltable?sphinxcontrib-sqltable is a Sphinx extension that allows authorsto embed SQL statements in source documents and produce tabular outputin rendered documents.What's New in 1.0This is the first public release of sphinxcontrib-sqltable.InstallingRefer to the main documentation page for installation and setupdetails.
  • New Year's Python Meme

    Doug Hellmann
    29 Dec 2011 | 6:23 am
    What is the coolest Python application, framework, or library youhave discovered in 2011?We use PyFilesystem to access WebDAV and S3 storage as though itwas part of the local file system.What new programming technique did you learn in 2011?It's not a technique, per se, but I learned a lot about theinternals of Sphinx while preparing the manuscript for my book. Iwill be summarizing what I learned in a presentation at PyCon2012.What’s the name of the open source project you contributed themost in 2011? What did you do?For non-coding contributions, that would be the Python SoftwareFoundation.
  • virtualenvwrapper 2.11

    Doug Hellmann
    28 Dec 2011 | 11:38 am
    What is virtualenvwrappervirtualenvwrapper is a set of extensions to Ian Bicking's virtualenvtool. The extensions include wrappers for creating and deletingvirtual environments and otherwise managing your development workflow,making it easier to work on more than one project at a time withoutintroducing conflicts in their dependencies.What's New in 2.11Add -a option to mkvirtualenv to associate anew virtualenv with an existing project directory. Contributed byMike Fogel.Drops support for Python 2.4 and 2.5. The tools may still work,but I no longer have a development environment set up for…
  • add this feed to my.Alltop

    Frank Wierzbicki's Weblog

  • Jython dev notes part I: The Jython Exposer

    Frank Wierzbicki
    2 Jan 2012 | 12:12 pm
    One of my new years resolutions is to make Jython more friendly to new developers. One way to do that is to write up some notes on bits of Jython that are particularly mysterious to newcomers. I've boldly titled this post "Jython dev notes part I" to push myself to create more than one of these :)It should be noted that I'm not shying away from making these notes highly technical - but I'm happy to edit them to make them more manageable later. Hopefully if I write enough of these up they can make up the beginnings of an advanced dev guide for Jython.Recently I was asked how the Jython exposer…
  • Contributing to Jython

    Frank Wierzbicki
    22 Nov 2011 | 3:08 pm
    About a year and a half ago my dream job of doing nothing but Jython all day and night came to an end (By the way, does anyone want to pay me to do Jython all day and night? It's about the only thing that could pull me from my awesome job at Canonical which I'm overdue on writing about here). Anyway to re-integrate myself into society I had to go cold turkey on Jython for a while so I could learn how to have a regular job again. I've contributed to Jython here and there by coding some of this and that, but I've failed to take care of the most important part: helping new people that want to…
  • This Weblog is Now Licensed Under a Creative Commons License

    Frank Wierzbicki
    18 Feb 2011 | 11:13 am
    I've been meaning to add a creative commons license to this site for a long time. Since the default copyright laws are not conducive to any sort of digital sharing, I think anyone that wants to share their work should take the time to find a license that makes sense for them. These days, with the creative commons form, it only takes a few minutes to do. You just pick the rights you want to grant and the chooser gives you an html snippet that you can drop onto your site or weblog or whatever. I encourage anyone that wants their words or work to be shareable to have a look at the great work…
  • Jython 2.5.2 beta 2 is released!

    Frank Wierzbicki
    14 Sep 2010 | 10:32 am
    The title says it all! See the details at Jim Baker's blog. There is a reasonable chance that this will become the 2.5.2 final release and that we can start work on the next 2.x version of Jython.
  • Leaving Sauce Labs

    Frank Wierzbicki
    24 Aug 2010 | 11:09 am
    My time at Sauce Labs is at an end, and so I am looking for a new opportunity. I had a great time at Sauce Labs where I worked on building a cloud based infrastructure for test automation with Selenium. I have been working in software for more than twelve years, often in a lead role. I am well regarded in the Open Source world, where I have participated in and helped build communities. I have been the Jython project lead for six years. I am a committer on the Python project, and a member of the Python Software Foundation. I have done a wide variety of work in recent history: development and…
  • add this feed to my.Alltop

    The Third Bit

  • Work As Though You Lived in the Early Days of a Better Nation

    Greg Wilson
    27 Jan 2012 | 4:59 pm
    Cam Macdonell teaches computer science at Grant MacEwan University in Edmonton. Last September, he had to deliver a software engineering class for the first time. Instead of giving his students the kind of throwaway project such classes are usually built around, he put them to work on Ushahidi, a humanitarian open source project. As his end-of-course blog post shows, they can be proud both of what they did, and how well they did it. Like David Humphrey‘s course at Seneca College, or the UCOSP program that gives students from across Canada a chance to work together for course credit,…
  • Well, That Was Weird

    Greg Wilson
    26 Jan 2012 | 5:29 pm
    It’s amazing what you can learn when you don’t have cable TV: peaceful.com says “coming soon”. joyful.com is a one-man software shop. At least he’s Irish. disappointed.com tells you to get over it. angry.com and sad.com are both for sale. happy.com redirects to Walgreen’s pharmacy.
  • Thinking Through a 21st Century Replacement for PowerPoint

    Greg Wilson
    26 Jan 2012 | 2:05 pm
    Over on the Software Carpentry site, I’ve posted another set of musings on what a 21st Century learning content creation tool (i.e., a PowerPoint killer) would look like. Comments welcome…
  • 21st Century Textbooks

    Greg Wilson
    24 Jan 2012 | 8:49 am
    Apple’s announcement, blah blah blah—I think Audrey Watters’ “Apple and the Digital Textbook Counter-revolution” sums it up best. So what should a “textbook” for a webified world look like? David Andrade’s description of what he does in his physics course, and Frank Noschese’s “Vision for a Physics iBook” are much better answers.
  • A Better Solution to the Final Problem

    Greg Wilson
    23 Jan 2012 | 12:54 pm
    I enjoyed the first three episodes of BBC’s Sherlock. I was disappointed by how episode 4 (the first of the newest trilogy) resolved episode 3′s hangover, but immediately forgave the writers as A Scandal in Belgravia unfolded. But then came episode 5, The Hounds of Baskerville, which was frankly awful. So it all came down to episode 6, The Reichenbach Fall. Good opening, great development, tension steadily ratcheting up, and then bam, the final three minutes ruined it all. Completely. It was completely implausible, inconsistent with what we’d seen of the characters up to…
 
  • add this feed to my.Alltop

    Agile Testing

  • An ode to running a database on bare metal

    Grig Gheorghiu
    24 Jan 2012 | 11:03 am
    No, my muse is not quite as strong as to inspire me to write an ode, but I still want to emphasize a few points about the goodness of running a database on bare metal.At Evite, we use sharded MySQL for our production database. We designed the current architecture in 2009, when NoSQL was still very much in its infancy, so MySQL seemed a solid choice, a technology that we could at least understand. As I explained elsewhere, we do use MySQL in an almost non-relational way, and we sharded from the get-go, with the idea that it's better to scale horizontally than vertically.We initially…
  • Graphing, alerting and mission control with Graphite and Nagios

    Grig Gheorghiu
    5 Jan 2012 | 1:21 pm
    We’ve been using Graphite more and more for graphing of OS- and application-related metrics (here are some old-ish notes of mine on installing and configuring Graphite.) We measure and graph variables as diverse as:relative and absolute state of charge of the LSI MegaRAID controller battery (why? because we’ve been burned by battery issuesbeforedatabase server I/O wait time (critical for EC2 instances which are notorious for their poor I/O performance; at this point we only run MySQL slaves in EC2, and we do not repeat DO NOT use EBS volumes for DB servers, instead we stripe the local…
  • Load balancing and SSL in EC2

    Grig Gheorghiu
    22 Dec 2011 | 3:02 pm
    Here is another post I wrote for this year's Sysadvent blog. It briefly mentions some ways you can do load balancing in EC2, and focuses on how to upload SSL certificates to an Elastic Load Balancer using command-line tools. Any comments appreciated!
  • Analyzing logs with Pig and Elastic MapReduce

    Grig Gheorghiu
    12 Dec 2011 | 11:18 am
    This is a blog post I wrote for this year's Sysadvent series. If you're not familiar with the Sysadvent blog, you should be, if you are at all interested in system administration/devops topics. It is maintained by the indefatigable Jordan Sissel, and it contains posts contributed by various authors, 25 posts per year, from Dec 1st through Dec 25th. The posts cover a variety of topics, and to give you a taste, here are the articles so far this year:Day 1: "Don't bash your process outputs" by Phil HollenbackDay 2: "Strategies for Java deployment" by Kris BuytaertDay 3: "Share skills and…
  • Crowd Mood - an indicator of health for products/projects

    Grig Gheorghiu
    7 Dec 2011 | 1:13 pm
    I thought I just coined a new term -- Crowd Mood -- but a quick Google search revealed a 2009 paper on "Crowd Behavior at Mass Gatherings: A Literature Review" (PDF) which says:In the mass-gathering literature, the use of terms “crowd behavior”, “crowd type”, “crowd management”, and “crowd mood” are used in variable contexts. More practically, the term “crowd mood” has become an accepted measure of probable crowd behavior outcomes. This is particularly true in the context of crowds during protests/riots, where attempts have been made to…
  • add this feed to my.Alltop

    Labix Blog » Python

  • Bazaar, the git way

    Gustavo Niemeyer
    15 Jan 2012 | 10:02 pm
    Back at the Ubuntu Platform Rally last week, I’ve pestered some of the Bazaar team with questions about co-location of branches in the same directory with Bazaar. The great news is that this seems to be really coming for the next release, with first-class integration of the feature in the command set. Unfortunately, though, it’s not quite yet ready for prime time, or even for I’m-crazy-and-want-this-feature time. Some background on why this feature turns out to be quite important right now may be interesting, since life with Bazaar in the past years hasn’t really…
  • Ensemble, Go, and MongoDB at Canonical

    Gustavo Niemeyer
    4 Aug 2011 | 10:49 pm
    About 1 year after development started in Ensemble, today the stars finally aligned just the right way (review queue mostly empty, no other pressing needs, etc) for me to start writing the specification about the repository system we’ve been jointly planning for a long time. This is the system that the Ensemble client will communicate with for discovering which formulas are available, for publishing new formulas, for obtaining formula files for deployment, and so on. We of course would have liked for this part of the project to have been specified and written a while ago, but…
  • Efficient algorithm for expanding circular buffers

    Gustavo Niemeyer
    23 Dec 2010 | 6:57 am
    Circular buffers are based on an algorithm well known by any developer who’s got past the “Hello world!” days. They offer a number of key characteristics with wide applicability such as constant and efficient memory use, efficient FIFO semantics, etc. One feature which is not always desired, though, it the fact that circular buffers traditionally will either overwrite the last element, or raise an overflow error, since they are generally implemented as a buffer of constant size. This is an unwanted property when one is attempting to consume items from the buffer and it is…
  • Removing seatbelts with the Go language for mmap support

    Gustavo Niemeyer
    28 Nov 2010 | 12:33 pm
    Continuing the sequence of experiments I’ve been running with the Go language, I’ve just made available a tiny but useful new package: gommap. As one would imagine, this new package provides access to low-level memory mapping for files and devices, and it allowed exploring a few new edges of the language implementation. Note that, strictly speaking, some of the details ahead are really more about the implementation than the language itself. There were basically two main routes to follow when implementing support for memory mapping in Go. The first one is usually the way…
  • Python has a GIL, and lots of complainers

    Gustavo Niemeyer
    9 Jul 2010 | 2:15 pm
    I’ve just read a post by Brett Cannon where, basically, he complains about complainers. If you don’t know who Brett is, you’re probably not a heavy Python user. Brett is a very important Python core developer which has been around for a while and who does a great job at it. His post, though, makes me a bit sad. Brett points out that there are two types of personalities which do not contribute to open source. The first one he defines as: The first type is the “complainer”. This is someone who finds something they don’t like, points out that the thing they…
  • add this feed to my.Alltop

    jessenoller.com

  • PSF Grants, and some additional color

    jesse
    1 Jan 2012 | 2:59 pm
    Doug Hellmann and Mike Driscoll put up an excellent post on the Python Software Foundation blog about most of the grant-type work that the foundation performed over the 2011 year. To add some color to it — reviews and discussions about grants and awarding this comprises quite a bit of the board-level work that goes on (excluding individual committees). You can see from the post quite a bit of the capital spent goes to support other conferences — as I’ve stated before, money that comes into the foundation in the forms of donations and PyCon “revenue” goes back into the system to be…
  • 2011 In Review: The Python Portion

    jesse
    30 Dec 2011 | 3:15 pm
    As I said in my post this morning — “2011 in Review: The Personal Portion” — it’s that time where we’re all taking stock and reflecting back on 2011. In this post’s case, I’m taking stock of the things that changed for me — things that stick out in my mind and projects I’ve either started, floundered or run completely into ground. Design and Experience Matter Perhaps the biggest shift for me in Python-as-a-whole is a movement more towards the social / management aspects. I’m a Python Software Foundation board member, so obviously me needing to take a “bigger view”…
  • 2011 in review: The Personal Portion

    jesse
    30 Dec 2011 | 9:24 am
    Yup; it’s that time — everyone and their brother is doing a post looking back at 2011 and taking stock of the good, the bad and the ugly. I’m no different — 2011 was a year that largely represented a massive shift in my life’s tectonic plates. I’ve decided to break this reflection into two related parts — the more personal stuff (this one) and the big-P Python stuff — both have seen shifts and changes worth noting, and both are inextricably tied for me. I’ve intentionally skipped all of the Python** stuff (including PyCon) that I’ve been working on — that’s going to…
  • Quick example of extending UserCreationForm in Django

    jesse
    19 Dec 2011 | 9:35 am
    I just banged my head against this, and with no good answers floating around out there, I thought I’d share. In my case, I just wanted to extend the basic django.contrib.auth.forms.UserCreationForm in order to make it so when a user was added, an email address had to be supplied in addition to the username and password fields. Here is a working example (forms.py) — just so I don’t forget it: View Code PYTHON1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm   class…
  • Porting to Python 3: An offer for you.

    jesse
    9 Dec 2011 | 8:53 am
    Recent posts and discussions around porting of existing libraries and frameworks to Python 3 have been pretty interesting. I think that there have been a lot of good points brought up in the discussion (See: Armin’s Post (and followup), Nick’s entry on Python 3 and Nick’s email to Python-Ideas). On a personal level; I’ve felt frustrated that there’s not much that I can do myself — I do believe that 2.7 is the proper end of the road of Python 2, and I do think that Python 3 is the future of the language. Does that mean Python 3 is perfect? Oh hell no. Does it mean that we can do…
 
  • add this feed to my.Alltop

    Ned Batchelder's blog

  • Slim comparisons

    Ned Batchelder
    26 Jan 2012 | 8:31 pm
    Hanging out in the #python IRC channel today, I learned something new about Python comparisons. It isn't so much a new detail of the language, as a way to make use of a detail, a clever technique that I hadn't seen before.When defining a class, it's often useful to define an equality comparison so that instances of your class can be considered equal. For example, in an object with three attributes, the typical way to define __eq__ is like this:class Thingobject     def __init__self a b c…
  • Decorated fabric over the edge

    Ned Batchelder
    10 Jan 2012 | 9:21 am
    Like many, I use Fabric to write deploy procedures, but I feel like I'm doing it wrong. Fabric is fundamentally based on the ideas of "hosts" and "tasks". You write a Python file whose functions are tasks, and from the command line you can ask that a list of tasks be performed on a list of hosts.Tasks can be decorated to affect their execution, for example, the @runs_once decorator will mean the function is only executed once, no matter how many hosts are specified. This can be useful for performing initial work, such as preparing a tarball to be copied to many hosts. So for example, I can…
  • Safari buys Threepress

    Ned Batchelder
    9 Jan 2012 | 8:08 am
    For the last year, I've been doing a lot of freelance work for Threepress on Ibis Reader, their HTML5 e-book platform. The good news out this morning is that they have been acquired by Safari Books Online.This is a great fit, because of their already-shared business, technology, and culture. Congratulations to Liza, Keith, Jonathan, and Chuck, who have all done great work, and will now be Safari employees. Xconomy has some sound bites from Liza and her new boss about the acquisition.The down-side for me is that I will not be working as much with them now, but there may be some smaller…
  • Where can I walk to in 30 minutes?

    Ned Batchelder
    7 Jan 2012 | 11:12 am
    I like to walk to explore, even in my home neighborhood. So I like to find new places to go. I wanted to print map and draw a 1½-mile radius circle on it to find a good range. But the set of points you can reach with a mile and a half of walking is not a circle, it will depend on where the streets are. Anyone know of a map app that can show me the actual range?Mapnificent is a similar idea: it shows how far you can get in a given amount of time, using public transportation, walking, and maybe biking. But it also just draws circles.Is what I want out there?
  • Happy and quiet

    Ned Batchelder
    2 Jan 2012 | 12:00 pm
    Happy New Year everyone, I hope your 2011 was good, and that 2012 will be even better. This year I hear people talking about "intentions" rather than "resolutions," is that a reflection of reality, or an early cop-out so that failure doesn't feel like "failure"?When I think about the year past and the year ahead, my "intention" is to spend my time more mindfully. That doesn't dictate how I will spend it, or even that I should spend it purposefully, but that I should decide how to spend it, rather than falling into habits and ruts.In Pico Iyer's relevant and recent widely-circulated piece, The…
  • add this feed to my.Alltop

    Richard Jones' Log: Python

  • Tips for Testing Twisted

    5 Jan 2012 | 10:04 pm
    This post contains some tips for testing Twisted applications. Note that I'm not using trial, the official Twisted test runner, for a variety of reasons. Twisted Deferreds in Testing You could use trial, but if you need to use another testing tool (nose, or behave) then you'll need to do a little more work. To let your deferreds run (and make sure they do finish) wrap your test functions in the "@deferred" decorator from nose.twistedtools: @deferred(1) This will run the reactor for 1 second before declaring it hung. If you want to see deferreds that are not behaving you will…
  • New Year Python Meme

    21 Dec 2011 | 11:15 pm
    Thanks, Tarek, for this fun idea. 1. What's the coolest Python application, framework or library you have discovered in 2011? I was pretty happy I discovered the awesomeness of bottle when researching my web micro-framework battle (video.) I've started using Python 2.7 and 3.2 which is pretty cool (having been stuck in 2.3, gasp!) I've been working with Twisted again after a couple of years' break and have discovered txpostgres and Twisted's own inlineCallbacks. Both are pretty cool. inlineCallbacks make Twisted programming quite bearable to think about :-) 2. What new programming technique…
  • Cheese Shop (PyPI) sprinting at PyCon AU

    23 Aug 2011 | 1:58 am
    We've had a fun couple of days sprinting on the Cheese Shop at PyCon AU where a number of contributors have fixed bugs and improved or added features (though always with the goal of keeping the service simple of course.) In particular: Andy Todd helped clean up some aspects of the underlying database and fix up some of the sql. Capel Brunker added some more XML-RPC functionality, performed some tracker triage and also addressed some bugs and security issues. Kaleb Ufton, in his first contribution to Open Source development, added a bug tracker URL field to packages (which persists across…
  • Using Solaris "priv" with Fabric

    26 Jul 2011 | 8:56 pm
    I needed support for "priv" instead of Fabric's built-in "sudo" support. I went through a number of (sometimes quite horrific) iterations before I settled on this relatively simple solution: import contextlib @contextlib.contextmanager def priv(user): '''Context manager to cause all run()'ed operations to be priv('user')'ed. Replaces env.shell with the priv command for the duration of the context. ''' save_shell = env.shell env.shell = 'priv su - %s -c' % user yield env.shell = save_shell This is then used in a fabfile like so: with priv('remote_user'): run('do some remote command as…
  • PyCon Australia 2011 - Registration Open and CFP Almost Over

    29 Apr 2011 | 12:09 am
    A reminder that the Call for Proposals for PyCon Australia 2011 will be closing soon. We've had some great proposals so far, but there is still time left and program to fill. PyCon Australia is Australia's only conference dedicated exclusively to the Python programming language, and will be held at the Sydney Masonic Center over the weekend of August 20 and 21. See below for more information and updates on: Call For Proposals Registration is Open More Sponsors Announced Please share this message on to those you feel may be interested. Call For Proposals The deadline for proposal submission is…
  • add this feed to my.Alltop

    Entity Crisis

  • No GGJ For Me.

    Simon Wittber
    25 Jan 2012 | 4:06 pm
    I'm flying from London to Singapore over the 2012 GGJ weekend. Sad to miss this one, but I'm looking forward to seeing what my fellow Perth peeps get done!
  • Best app @ BETT show in London?

    Simon Wittber
    12 Jan 2012 | 12:47 pm
    IMHO, it's Skoolbo. Skoolbo is developed using Unity3D. Oh, and I run the company that built it! So I guess I am a little biased. :-)
  • We're building a library!

    Simon Wittber
    11 Jan 2012 | 12:27 am
    Would you like to help build a library for a school in Thailand?It is easy to help out, all you need is to send a FB like, and you're sending a brick for the library!Skoolbo is funding (and even helping with the brick laying!) the project.Skoolbo is a project I've been working for almost two years. The backend is a beautiful piece of Python, and the front end is a similar quality piece of Unity3d, which will be released Real Soon Now.
  • Convert CSV to TSV

    Simon Wittber
    11 Dec 2011 | 11:17 pm
    import csvopen("output.tsv", "w").write("\n".join("\t".join(e.strip() for e in i) for i in csv.reader(open("input.csv"))))
  • Unity3D available on Linux!

    Simon Wittber
    29 Nov 2011 | 7:58 pm
    While exploring the build API for Unity3D today, I came across this... Yup, that's a BuildTarget enum for Linux! I haven't tried it yet, so it may throw an exception if I try to use it... but I'm guessing this means official Linux support is imminent?
 
  • add this feed to my.Alltop

    Fetchez le Python

  • Mozillians, win a free pass for Pycon US – take 2

    Tarek Ziadé
    4 Jan 2012 | 4:41 pm
    I am extending the contest until Feb the 1st – Mozillians, win a free pass for Pycon US Filed under: mozilla, python
  • The fear of CRUD

    Tarek Ziadé
    2 Jan 2012 | 5:17 pm
    Cornice is growing steadily, and we are thinking about the different ways to use it for our needs. One use case that comes often when we build web services is the need to publish a SQL Database via HTTP. For instance, in a project I am working on, we might expose a list of servers and some information about them, that are stored in a SQL DB . The goal is to allow some management scripts to interact with the DB, to set and retrieve information about the servers, like: “can I use server 12 as a node for application X ?” Interacting with CURL or a similar tool is simpler and more…
  • Pyramid @ Python 3

    Tarek Ziadé
    25 Dec 2011 | 4:15 am
    If you have been following closely the latest work done by Chris on WebOb, you know that WebOb and eventually Pyramid became Python 3 compatible. That makes Python 3 a very tempting target for a new web project. Paste & PasteScript still need to be ported to Python 3 and the Pyramid team has chosen not to. They have created their own paster replacer instead, which can be used to initiate a Pyramid project or run the app using the .ini file. I am wondering if it would not be simpler at this point to drop Paste and use this replacer for all Python 3 frameworks that are using the Paste…
  • Tutorial – build your web services with Cornice

    Tarek Ziadé
    21 Dec 2011 | 4:50 am
    At this stage, I think we’ve added enough helpers in Cornice to get anyone started in building web services in Python. As a reminder, Cornice provides helpers to build & document REST-ish Web Services with Pyramid, a Python web framework. The main benefits of Cornice are: automatic handling of some HTTP errors – Ask yourself: is your app handling properly 405 or 406 errors? automatic web service documentation via a Sphinx extension. a simple way to validate and convert requests data, and return structured 400 responses. This is a small tutorial, extracted from our…
  • New Year’s Python Meme

    Tarek Ziadé
    20 Dec 2011 | 4:28 am
    Hey I did this in 2009, let’s try again — I am adding one extra question this year 1. What’s the coolest Python application, framework or library you have discovered in 2011 ? GEvent & Pyramid. Not discoveries, but a daily usage. GEvent was for me a fantastic way to make the Firefox Sync Python server scale without being forced to write callback-style code. Pyramid is a very elegant framework, that takes the simplicity from Pylons and the power and experience from Repoze & the Zope world. A good sign for me is that we don’t have to deal with the ZCA 2. What new…
  • add this feed to my.Alltop

    Ted Leung on the Air

  • Blogaversary 2012

    Ted Leung
    9 Jan 2012 | 10:43 am
    Twitter, Google Plus, Facebook, Flickr, 500px. pinterest on the horizon. All that’s missing is a partridge in a pear tree, and sometimes that appears to be there as well. The world of online communication and connection is pretty different that it was nine years ago, when I slapped a bunch of Python scripts onto a server running in a closet in my house. For all the other forms that have emerged, blogging still has a warm place in my heart. I’ve used this blog to host long (some might say too long) and short form content over the years. I never really mastered the short form…
  • 2011 in Photography

    Ted Leung
    29 Dec 2011 | 8:54 pm
    I’ve been dreading writing the photography roundup post this year, because I haven’t taken a lot of photographs. I’ve only a few months worth of photographs on Flickr, which makes a month by month roundup pretty tough to do.   We’ve had an enormous amount of stuff going on schedule wise this year, and between all of that activity, and me getting fussier about my pictures, 2011 saw a precipitous decline in the average number of pictures that I made during a given month. I’m still doing some dance performance work, and on the right occasions, I am going…
  • Book Review: Head First HTML5 Programming

    Ted Leung
    20 Nov 2011 | 10:54 pm
    You can’t read about modern web development without hearing something about HTML5. It is a term that covers not only the next version of the HTML markup language, but a broad array of facilities exposed as JavaScript API’s. Eric Freeman and Elisabeth Robson’s new book Head First HTML5 Programming approaches HTML5 from this point of view, and uses the friendly, pictorial style of their highly successful Head First Design Patterns. You’ll need an understanding of HTML and CSS before you dive in. This book assumes that you have those technologies under your belt, and…
  • Clojure Conj 2011

    Ted Leung
    15 Nov 2011 | 5:51 pm
    Last week I was in Raleigh, attending the second Clojure/Conj. The last time that I attended a Lisp conference was the 1986 ACM Conference on Lisp and Functional Programming. I am a Lisp guy. I took the famed “Structure and Interpretation of Computer Programs” course from Sussman and Abelson. I spent some time doing undergraduate research on Symbolics Lisp Machines. When Apple invested some energy into Dylan, I hoped that I’d be able to use a Lisp on a personal computer. Java pretty much ruined that. Over the years, I pretty much gave up on the idea of being able to use Lisp…
  • Web 2.0 Summit

    Ted Leung
    26 Oct 2011 | 12:13 am
    Last week I attended the Web 2.0 Summit in San Francisco. The theme this years was “The Data Frame”, an attempt to look at the “Points of Control Theme” from last year through the lens of data.    Data Frame talks Most of the good data frame stuff was in the short “High Order Bit” and “Pivot” talks. The interviews with big company CEO’s are generally of little value, because CEO’s at large companies have been heavily media trained, and it is rare to get them to say anything really interesting. Genevieve Bell from Intel…
  • add this feed to my.Alltop

    The Voidspace Techie Blog

  • Callable object with state using generators

    22 Jan 2012 | 9:05 am
    It's often convenient to create callable objects that maintain some kind of state. In Python we can do this with objects that implement the __call__ method and store the state as instance attributes. ... [596 words]
  • Simple mocking of open as a context manager

    13 Jan 2012 | 6:18 am
    Using open as a context manager is a great way to ensure your file handles are closed properly and is becoming common: with open('/some/path', 'w') as f: f.write('something') The issue is that even if you mock out the call to open it is the returned object that is used as a context manager (and has __enter__ and __exit__ called). Using MagicMock from the mock library, we can mock out context managers very simply. ... [320 words]
  • Mocks with some attributes not present

    12 Jan 2012 | 6:33 am
    Mock objects, from the mock library, create attributes on demand. This allows them to pretend to be objects of any type. ... [199 words]
  • mock 0.8rc2: new release and development docs

    10 Jan 2012 | 8:13 pm
    I've pushed out a new release of mock. This fixes an inconsistency in the create_autospec api I discovered whilst working on the docs (yes I've really been working on the docs), and a fix for a bug with using ANY. ... [190 words]
  • Python on Google Plus

    3 Jan 2012 | 5:41 am
    As you may (or perhaps not) have noticed, I've been blogging a lot less in the last year. A new job with Canonical (although I've been there over a year now) and an eight month old daughter all make blogging harder. ... [83 words]
 
  • add this feed to my.Alltop

    Will's blog

  • my standing desk

    25 Jan 2012 | 2:17 pm
    Back in October of 2010, I created a standing desk. A friend of mine bought a Sears workbench and was using that and while it was pretty cool looking, I wanted something I could more easily nail things into. I've been meaning to write about this for a while. I bought some two-by-fours and plywood and built most of it with that and some scraps of wood I had lying around. Since then, I built a stool to go with it and bought a shelf thing from Ikea that goes to the right of it. I think it took a day to build the standing desk, though I've tweaked it a bit since I originally built it. It took a…
  • Fix for vagrant keys permission issue

    11 Jan 2012 | 7:11 pm
    Tim threw together a vagrant setup for Kitsune based on what Alex did in November. I went to give it a try but I'm using vagrant 0.8.10 and it died. Important part of the error message was: /var/lib/gems/1.8/gems/net-ssh-2.1.4/lib/net/ssh/key_factory.rb:38:in `read': Permission denied - /var/lib/gems/1.8/gems/vagrant-0.8.10/keys/vagrant (Errno::EACCES) Issue is documented at https://github.com/mitchellh/vagrant/issues/235. My fix was to do this: saturn /var/lib/gems/1.8/gems/vagrant-0.8.10/keys> ls -al total 24 drwxr-xr-x 2 root root 4096 Jan 11 20:00 . drwxr-xr-x 10 root root 4096 Jan 11…
  • Pyblosxom 1.5 released!

    28 Dec 2011 | 9:33 pm
    While I was writing up the release blog post, I figured out that I've probably been working on Pyblosxom 1.5 on and off for the last three years or so. That's pretty intense---I knew I'd been working on it for a while, but I didn't realize how long it actually was. The last year or so of development has been fun. There's a pretty consistent contingent of friendly folks who hang out on #pyblosxom. I really appreciate their humoring me with my period, "Pyblosxom 1.5 is almost done! I just have to ..." announcements. Details of the release are in the release blog post. If you've been…
  • phil 1.0 released!

    3 Dec 2011 | 4:29 pm
    Mediagoblin has monthly project meetings. One of the things I wanted to automate was meeting reminders that gets sent x days in advance, contain the link to the Meetings page in the wiki, and specify the date and time of the next meeting. I figure if we automate it, it's one less thing we have to think about---it just happens. To do this, I decided to write phil. For the most part, it's sort of a throw-away project, but it was so small that I decided to go through a complete project development cycle with it and make sure it had all the bits a mature Python project should have: proper…
  • Python Miro Community status: October 20th, 2011

    20 Oct 2011 | 10:39 am
    What is Python Miro Community Python Miro Community is an index of Python-related videos on the Internet. For the most part, it's a collection of videos from Python-related conferences. Saw a session you liked and want to share it? It's likely you can find it and share it with Python Miro Community. Status I've finished posting DjangoCon 2011 videos. They're all set up to be transcribed and translated. If you have spare time, please think about taking the time to transcribe your favorite presentation. If it's transcribed already and you can translate it, please translate it. I'm keeping track…
Log in