Dreamwidth News: 11 June 2013
Hello, Dreamwidth! Last week, we attended YAPC, the annual conference put on by the Perl Foundation. We brought a group of our developers so they could both attend the conference and learn things, and also so they could represent Dreamwidth to the wider world. (Which they did! Awesomely!)
The conference itself was full of a number of interesting and varied talks, given by a bunch of incredibly smart people, and we learned a bunch (and found out about all kinds of useful things we can apply to Dreamwidth in the future). Aside from that, though, we had a great week, full of things like midnight hackathons, trips to see the actual servers that run Dreamwidth in person, people being voluntold to do things (that's a combination of "volunteer" and "told" that involves me pointing at someone and telling them "that's a great idea, why don't you do that"), and a whole host of teambuilding and other productive things. We've learned things, taught things, broke things, fixed things, and discovered just how many people you can pack into a hotel room and not want to kill each other later.
We'd like to say "thank you" to everybody who's paid for their accounts lately, since it's your support that allowed us to do this, and it's already paying off in bugfixes, new features, usability improvements, and loads of people who heard about Dreamwidth-the-open-source-project from us and are interested in coming to hack with us. So, let's go over some of the neat stuff we did!
(I also want to apologize in advance for any typos or weirdness in this news post, since I switched recently to dictating instead of typing, since my RSI problems just keep getting worse. Let me tell you, it may be easier than I thought it would be to make the transition, but that does not mean it's easy.)
Behind the cut:
* Conference Report
* Development
* Icon Renaming
* Pretty URLs
* Tales from the Conference #1
* New Entry & Comment Pages
* Spam Prevention
* HTML Cleaner Changes
* Tales from the Conference #2
* Volunteering with Dreamwidth
The biggest thing we managed to get done this week was a great deal of training, since we had a team of fourteen people, ranging from relatively new to Dreamwidth development to having been with us from the start. It was really awesome to have everyone in the same room and able to share information and knowledge, even if it was interspersed with jokes about Chris Evans.
It was really awesome to look up and realize that people had formed little groups to share what they know and work together on patching bugs. We also went to talks, gave some talks of our own (including
misskat's first talk at a tech conference, which went over wonderfully), sat around hacking, taught each other some really awesome tips and tricks, and thought of ways we could apply all the neat things we were learning about.
There were a lot of highlights in this trip, but one of the really awesome things was being invited to our server hosting company for a tour of the facility and to see where our servers live. They were incredibly gracious at being invaded by a horde of slightly odd people, but it helps that they were all odd in precisely the same way that we are, which is to say the awesome way. We were all very careful not to trip over any power cords, and we waved at our servers as we passed them.
We weren't allowed to take photos inside the facility itself, but we did get a shot of everybody (minus the ones who had to stay back at the hotel, woe) in front of the building, with bonus guest appearances by
dive (who works for the hosting company),
cheyinka, and their adorable tiny human:

(You'll note the number of people who are clutching coffee cups as though our lives depended on it. It was a really early start. Half of us only don't have them because we'd already finished ours.)
We'll be hearing slightly more from each of the people who joined us for the conference throughout this post, since like last year, I assigned them homework.
This, meanwhile, was the view from our hotel room balconies:

Both photos are courtesy of my lovely and talented wife,
sarah! (Who did an incredible amount of work last week to make sure the ship kept lurching along.)
Friday night's code push included the fixes and features from the following code tours:
21 April–7 June, part 1
21 April–7 June, part 2
Supplemental Code Tour, 7 Jun - 11 Jun
Highlights from this batch include replying to comment email allowing you to reply to the comment the email was from (which was mentioned in the last news post, but which received a few bug fixes and tweaks for this release), a number of fixes for display issues in both site skin and journal styles, a bunch of backend fixes to make the site run more efficiently, a number of new themes, a few really big accessibility wins, and a handful of additional fixes for bugs that have been annoying us for a while. (The advantage to having a number of people in the same room working on Dreamwidth is that you can find someone who's willing to adopt that bug that's been annoying you for a really long time.)
There are also two big things, namely:
You've been able to rename your icon keywords for a while, in order to change the keyword on an icon without causing all old uses of that icon to revert to your default icon, but if you had icons that have been uploaded without a keyword and had been assigned the automatic "pic###" keyword, those couldn't be renamed.
We're pleased to announce that thanks to the hard work of
purplecat, with help from
allen, you can now rename those automatically keyworded icons as well. It works the same way as renaming any other icon.
This was a huge project, even though it doesn't look like it should be on the surface -- unlike 'normal' keywords that you supply yourself, the automatically-assigned "pic###" keywords were system-generated and special-cased, and the code treated them differently.
purplecat did an amazing amount of work to make this happen -- learning an incredible amount in the process, since she took the bug thinking it'd be simple and easy and only discovered too late that it was more complex than it looked! -- and deserves all the cookies in the world for it.
Several people also reported a bug in which their keywords had been deleted. We've been trying to figure that one out for a while, but
allen managed to finally lick it. If you had that problem, which was only happening in certain rare edge case circumstances, you can now rename the automatically assigned keywords back to your own keywords and it won't happen again.
Have you ever looked at a link to a Dreamwidth post and wondered which post of yours that was, or been linked to a post in someone else's journal and wondered what you would find there if you clicked it?
Wonder no more. We've released a feature that will allow you to name your posts in the URL, by defining a "slug" -- yes, that is the technical term! It comes from the days of newspapers and typesetting.
You can find out more about how to do this by reading How do I add a slug to change the URL of my entry? It will only work if you have enabled the new Create Entries beta version of the Update page.
You don't have to define a slug for each of your entries -- if you don't add a slug for one entry, it will use the old-style URL, and you can mix old-style URLs and pretty URLs in your journal with abandon. You can only use a given slug once in your journal, even if the entry is posted on a different day. If you give it a slug that you've already used, your entry will still be posted, but it will use the old-style URL and the site will warn you that the slug had already been used.
Check out what it looks like by looking at the URL of this entry!
This project was
mark's, based on a suggestion that came through
dw_suggestions from
skud, and it's a standard feature in many other blogging platforms. I'm really excited to see it on Dreamwidth, even if it does mean I'm going to have to go back and edit a bunch of my old entries to give them pretty URLs. And yes, this is the reason why the codepush was about an hour and a half later than we'd said it was going to be -- he had to finish up the final touches and let us test it.
(
mark gets extra credit for doing it, too, since he did not one but two big things this week -- the other thing he did was pulling our support system into the search database so support volunteers can find old requests once they've been closed, which is also a super awesome feature that took a ton of work.)
I asked everybody to write up a brief blurb on what they did last week for inclusion in the news post. Like last year, they were very tolerant about being assigned homework. I'll turn over the next section of the post to them:
alierak:
deborah:
kareila:
misskat:
momijizukamori:
And, the bit from
momijizukamori's bit from above that I pulled out to give it a bit more prominence:
Back to me:
momijizukamori is too modest to say so, but this was an incredible amount of work. We've had it in beta for a few rounds of testing, and since there were no additional bugs being reported, we took it out of beta with this code push. (And promptly, of course, discovered a few new bugs. It never fails.) You may have noticed a few subtle differences between the old site-skinned entry/comment page and the new one -- hovering over timestamps, for instance, will give you a tooltip with the length of time since an entry was posted, the timestamps now obey your selection on the Customize Journal Style page, and a few other subtle little changes -- that reflect the fact that site-skinned entry/comment pages are now generated by the same engine that journal-skinned entry/comment pages are generated by.
One thing people identified after the code push that was a surprise to us: in the old entry/comment pages, due to a bug (and a fairly bad one) that we didn't know about, in certain views anonymous comments were not being cleaned by our HTML cleaner to the same standards as they were on the rest of the site. The HTML cleaner is the routine that strips out dangerous and unwanted HTML before it's displayed to the user. In anonymous comments, links are rewritten to be unclickable and images are rewritten to be placeholders that need to be clicked to display the image.
This is done for a number of reasons, but primarily to lower the incentive for spammers to spam Dreamwidth. Spammers leave links to their websites on other sites in order to improve their search engine results: search engines scour the internet to index pages, and as part of that indexing, tally up the number of times a particular page is linked to and the reliability of the linking page. Spammers are also likely to try to trick people into downloading and installing malware on their computer, or to link to sites that download and install malware automatically when the website is visited.
By making links unclickable, we remove the incentive for spammers to leave those links on Dreamwidth; we target anonymous comments because spambots are more likely to be leaving anonymous comments, as anything that saves them time (such as not having to have a human create an account before programming their bots to leave spam comments on a site) increases the return on their spam.
Patching this bug -- which wasn't deliberate (we didn't know about it) but happened as part of the whole rewrite -- has inconvenienced a few people, for which I apologize! But it's necessary in order to ensure the safety and security of the site for everyone. (And to avoid that annoying thing where the Google searchbot follows links, encounters malware, and places the site on a blocklist so anybody using Chrome or clicking through on search results from Google gets a giant scary warning page about the site being infected with malware -- I've been tearing out my hair wondering how the heck that kept happening, and now I know.)
We've had several and various suggestions that we make this change opt-in or opt-out, or allow people to set their account so that links left in anonymous comments are clickable on an account-by-account basis, but that just isn't possible. The best solution, if you regularly leave anonymous comments or want anonymous comments in journals you read to be clickable, is to install a local browser extension that will do it for you. There are also several mobile browsers that will make bare-word URLs clickable or allow you to install an extension that does so as well. And, of course, links left by logged-in users aren't rewritten.
As a reminder, when you get comment spam in your journal, anonymously or from a logged-in user, be sure to select the "mark as spam" checkbox when you're deleting it -- that puts the comment into our antispam system, so our antispam team can thwack the spammer. If you come across a journal that looks like it might be operated by a spammer, meanwhile -- full of links to the same site, containing a number of commercial-looking keywords, full of barely-coherent entries that exist only to work in linked keywords as often as possible, often with no icon and minimal journal customization -- report it to us by opening a support request in the "Anti-Spam" category.
Also done with this code push: we were forced to make some additional changes to the HTML cleaner to strip some additional attributes from anonymous comments, most critically all uses of tables. This had to be done because some people were using tables to disrupt the display of entry and comment pages, through such methods as forcing font face, font size, or font color changes for the entire page, replace the entire page with shock images, force the contents of entry and comment page to appear entirely offscreen and prevent the reader from scrolling to read the page, and multiple other forms of "page breaking", as well as to deliberately exploit a loophole to allow them to post images anonymously without those images being replaced by a placeholder. All of these tactics were in active use to disrupt the site for others, and were also being used by spammers to display their spam.
This also had the side effect of preventing that workaround for people who were non-maliciously using tables to display images in anonymous comments, but whether it was being done maliciously or non-maliciously, it was still exploiting a loophole. We're sorry for the disruption, but again, we have to take the safety and security of the entire site into account.
People commenting anonymously can still post images using the <img src> tag -- that hasn't changed, although those images will continue to be replaced by image placeholders.
purplecat:
randomling:
sarah:
shadowspar:
allen, who has seen too many 80s movies and perhaps did not take my assignment all that seriously:
It's been a while since we've talked about ways that people can contribute to Dreamwidth if they want!
*
That's it from us for another update! As always, if you're having problems with Dreamwidth, Support can help you; for notices of site problems and downtime, check the Twitter status page; if you've got an idea to make the site better, you can make a suggestion.
We'll see you soon for our next update, which will hopefully be less rampantly tl;dr. (I CAN'T HELP MYSELF.)
The conference itself was full of a number of interesting and varied talks, given by a bunch of incredibly smart people, and we learned a bunch (and found out about all kinds of useful things we can apply to Dreamwidth in the future). Aside from that, though, we had a great week, full of things like midnight hackathons, trips to see the actual servers that run Dreamwidth in person, people being voluntold to do things (that's a combination of "volunteer" and "told" that involves me pointing at someone and telling them "that's a great idea, why don't you do that"), and a whole host of teambuilding and other productive things. We've learned things, taught things, broke things, fixed things, and discovered just how many people you can pack into a hotel room and not want to kill each other later.
We'd like to say "thank you" to everybody who's paid for their accounts lately, since it's your support that allowed us to do this, and it's already paying off in bugfixes, new features, usability improvements, and loads of people who heard about Dreamwidth-the-open-source-project from us and are interested in coming to hack with us. So, let's go over some of the neat stuff we did!
(I also want to apologize in advance for any typos or weirdness in this news post, since I switched recently to dictating instead of typing, since my RSI problems just keep getting worse. Let me tell you, it may be easier than I thought it would be to make the transition, but that does not mean it's easy.)
Behind the cut:
* Conference Report
* Development
* Icon Renaming
* Pretty URLs
* Tales from the Conference #1
* New Entry & Comment Pages
* Spam Prevention
* HTML Cleaner Changes
* Tales from the Conference #2
* Volunteering with Dreamwidth
Conference Report
The biggest thing we managed to get done this week was a great deal of training, since we had a team of fourteen people, ranging from relatively new to Dreamwidth development to having been with us from the start. It was really awesome to have everyone in the same room and able to share information and knowledge, even if it was interspersed with jokes about Chris Evans.
It was really awesome to look up and realize that people had formed little groups to share what they know and work together on patching bugs. We also went to talks, gave some talks of our own (including
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
There were a lot of highlights in this trip, but one of the really awesome things was being invited to our server hosting company for a tour of the facility and to see where our servers live. They were incredibly gracious at being invaded by a horde of slightly odd people, but it helps that they were all odd in precisely the same way that we are, which is to say the awesome way. We were all very careful not to trip over any power cords, and we waved at our servers as we passed them.
We weren't allowed to take photos inside the facility itself, but we did get a shot of everybody (minus the ones who had to stay back at the hotel, woe) in front of the building, with bonus guest appearances by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)

(You'll note the number of people who are clutching coffee cups as though our lives depended on it. It was a really early start. Half of us only don't have them because we'd already finished ours.)
We'll be hearing slightly more from each of the people who joined us for the conference throughout this post, since like last year, I assigned them homework.
This, meanwhile, was the view from our hotel room balconies:

Both photos are courtesy of my lovely and talented wife,
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Development
Friday night's code push included the fixes and features from the following code tours:
21 April–7 June, part 1
21 April–7 June, part 2
Supplemental Code Tour, 7 Jun - 11 Jun
Highlights from this batch include replying to comment email allowing you to reply to the comment the email was from (which was mentioned in the last news post, but which received a few bug fixes and tweaks for this release), a number of fixes for display issues in both site skin and journal styles, a bunch of backend fixes to make the site run more efficiently, a number of new themes, a few really big accessibility wins, and a handful of additional fixes for bugs that have been annoying us for a while. (The advantage to having a number of people in the same room working on Dreamwidth is that you can find someone who's willing to adopt that bug that's been annoying you for a really long time.)
There are also two big things, namely:
Icon Renaming
You've been able to rename your icon keywords for a while, in order to change the keyword on an icon without causing all old uses of that icon to revert to your default icon, but if you had icons that have been uploaded without a keyword and had been assigned the automatic "pic###" keyword, those couldn't be renamed.
We're pleased to announce that thanks to the hard work of
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
This was a huge project, even though it doesn't look like it should be on the surface -- unlike 'normal' keywords that you supply yourself, the automatically-assigned "pic###" keywords were system-generated and special-cased, and the code treated them differently.
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Several people also reported a bug in which their keywords had been deleted. We've been trying to figure that one out for a while, but
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Pretty URLS
Have you ever looked at a link to a Dreamwidth post and wondered which post of yours that was, or been linked to a post in someone else's journal and wondered what you would find there if you clicked it?
Wonder no more. We've released a feature that will allow you to name your posts in the URL, by defining a "slug" -- yes, that is the technical term! It comes from the days of newspapers and typesetting.
You can find out more about how to do this by reading How do I add a slug to change the URL of my entry? It will only work if you have enabled the new Create Entries beta version of the Update page.
You don't have to define a slug for each of your entries -- if you don't add a slug for one entry, it will use the old-style URL, and you can mix old-style URLs and pretty URLs in your journal with abandon. You can only use a given slug once in your journal, even if the entry is posted on a different day. If you give it a slug that you've already used, your entry will still be posted, but it will use the old-style URL and the site will warn you that the slug had already been used.
Check out what it looks like by looking at the URL of this entry!
This project was
![[staff profile]](https://www.dreamwidth.org/img/silk/identity/user_staff.png)
![[site community profile]](https://www.dreamwidth.org/img/comm_staff.png)
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
(
![[staff profile]](https://www.dreamwidth.org/img/silk/identity/user_staff.png)
Tales from the Conference #1
I asked everybody to write up a brief blurb on what they did last week for inclusion in the news post. Like last year, they were very tolerant about being assigned homework. I'll turn over the next section of the post to them:
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Whooooosh. That was the sound of a whole week going by with an awesome group of DW folks. Or possibly the sound of a million bats flying out from under a bridge. One unexpectedly crawled across my shoes and thenpurplecat's as we crowded the railing to watch, but we gave it some breathing room and it flew off across the street to keep hunting bugs. Whew. Hopefully it'll submit its first DW code patch any day now and feel welcomed by our crew of devs and code reviewers.
As for me, of course I found several of the YAPC talks captivating, but I spent much of the week visiting family and wasn't trying to get a lot of coding done.mark has said that DW is really about the people anyway. There are whole areas of Dreamwidth that I just don't worry about because I know there are plenty of talented people working on them already. But when said talented people personally invite me to resolve bugs that they care about, I am grateful and honored. Thanks Dreamwidth!
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
It was YAPC, and Perl people were everywhere. I got to Austin, which I'd like to complain was sauna-hot but for some reason -- alien invasion, maybe -- so was New England, so Austin was kind of like New England with air conditioning. And then in my hotel there were Dreamwidth People! I would love to tell you that they looked like little aliens and had clusters of tiny elephant legs but ... you know what? Let's just pretend that they did.
Anyway I learned that coding with the Dreamwidth People is, in fact, the funnest. One thing about the code I write (accessibility bugs and features, for the most part) is that it has a direct impact on a very small portion of the user base; for most of our users the only visible impact is that it ends up being easier for your friends who have accessibility needs to read and post. But the Dreamwidth People (maybe because the clusters of tiny elephant legs and their tiny alien arms mean they have to use alien technology) have just as much respect for fixes that will help just a couple of our users as they do for fixes that will help everybody. I got as much help, support, and positive feedback for adding screenreader accessibility to the support request forms as others did for [EXCITING FORTHCOMING FEATURE REDACTED] or [EXCITING OTHER FORTHCOMING FEATURE REDACTED]. What I'm saying is that for tiny, adorable, elephant-legged aliens from the planet Dreamwidth, these folks take the diversity statement seriously.
When we weren't hacking we were attending the conference, and having attended a lot of tech conferences over the years I was expecting that I would get value out of two, maybe three sessions before I burned out hard and had to nap on a registration table. But maybe because Dreamwidthia is kinda energizing in a way that boring old planet Earth isn't, I made it to the final day of the conference before I had to be dragged out bymisskat and
mark, while sleepily protesting "but I want to see the last round of lightning talks!" between snores.
Lightning talks don't involve actual lightning. This was a surprise and a disappointment.
I went to a great session by Joe McMahon (pemungkah) called "How to Make Your Users Not Want to Murder You, or Software Engineering for the Lazy" which talked about how to document and communicate about API changes. At one point somebody in the audience asked "but if we do it your way we won't be spending all of our time coding," and Joe responded "no. If you are a good developer, you should not be spending 100% of your time coding." It was a great reminder about how much of what we do needs to be supported by communication. D Ruth Bavousett gave a talk called "An Ecological View of a FOSS Community: Koha" about the choices one open source community made to encourage contributions from the user base.
So basically I spent a week learning cool things about programming in between wicked long hackfests with adorable little elephant-legged aliens, where our Glorious Leaders, Captainsmark and
denise, encouraged us in keeping the systems running and writing our code, and taught us more about git, and fought our imposter syndrome, and made sure we took stretch breaks, and fed us (who knew a vegetarian with food allergies could eat so well in Texas?), and encouraged us some more, and put the code push up on the hotel television so we could all watch it, and stayed up all night with us while we dealt with the fallout from bugs introduced in the code push not that I broke the site for people running really old versions of Firefox or anything hey I fixed it by morning okay?
And it was damn fun. Pardon my language.
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
What I Learned On My Summer Vacation:
1. Dreamwidth people are universally awesome.
2. We are our own worst critics.
3. We are not allowed to call ourselves stupid. (see 1,2)
4. Everyone has something valuable to contribute.
I think that last item is maybe the most important, because this was nominally a Perl conference, and not everyone who attended knew Perl. Some people focused on styles, some on responsive web design, some on jQuery. I myself spent much of the week reading up on CSS3, and I noticed Mark learning his way around Template Toolkit. But what some of us are best at is directing other people to work on the things that most need working on, helping the rest of us be more productive. That is totally a valid life choice.
When we all work together ("... and my axe!"), we make a really good team, and I'm proud of that.
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Dear Dreamwidth,
This week has been amazing. I was able to sit in on some wicked cool talks, and while a lot of the technical details went over my head, I did learn some pretty cool stuff. The best part about the conference was watching Mark and D give their talks: D's RSI talk had everyone waving their hands around, and Mark's talk on diversity was incredibly thoughtful. You should check out the slides on Slideshare if you're interested. Actually, maybe the best part was trading hair braiding and nail painting for patches. Or the best part was finally meeting all these people in meatspace! I've known many of these people for over 4 years now, and it's been fantastic to be able to lean over and chat with them.
Thank you all for making this possible.
Best,
Kat
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
- Despite being on this project just over a year, I can still horrify senior devs by explaining parts of the codebase to them. The expression on
allen's face as I outlined the layers the journal-style system uses was almost worth having to deal with them.
- This project is made of wonderful, caring people, as I got hideously sick on Thursday (sleep dep + heat + con-crud = a mess), and basically everyone asked if I needed anything, and they said hi to our servers for me while I hid in bed back at the hotel.
- Sometimes asking devs for input on things outside their usual area of expertise is remarkably useful (particularly when one of them is a reference librarian).
- We saw horses tethered to a tree outside the Target. I am not even making this up.
- Watching all the codepush live on the tv was cool in a nerdy way. Particularly live updates on site traffic.
- As of this last push, we have no unclaimed/unfiled color themes left, and only one unclaimed/unfiled base theme. AWESOME.
- I LOVE EVERYBODY IN THIS BAR.
And I've had one project in the pipeline that went live this last codepush, and one that is in the planning stages and I did a lot of spec-work on at this conference, so, some short stuff about them!
[Editorial edit -- see below!]
The work-in-progress (I won't give an ETA because I'm terrible at meeting deadlines) is an improved search feature for styles. Right now, if you go to Customize, you have three (not well-updated, fairly useless) categories to choose from. So useless that one is actually 'All', which, when we have over thirteen hundred live color themes, means if you're trying to find something that fits your taste, well... good luck? But it will become BETTER. The plan is to replace it with useful categories with things such as colors, high or low contrast, bright layouts vs muted ones, dark-on-light or light-on-dark, and some useful fun categories like 'Seasonal' or 'Nature' too. And you'll be able to search by more than one of these. Want a blue Practicality layout that has high contrast? You will be able to search for it. And a lot of this will be automatic sorting, so that staff don't have to go 'is this red?' over all 1300+ layouts.
Basically, pure awesome. There's a lot of work that needs to be done for it still, but people gave me some GREAT ideas for it at YAPC (tip of the hat tosarah and
allen for some thoughts on cool ways to sort the information, and on gathering some of it, and to
deborah who told me that 'that thing were you search for a thing by more than one attribute' is properly called 'faceted browsing', which really helps in the research department).
New Entry & Comment Pages
And, the bit from
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
The new live one is something most people haven't quite noticed yet, which is actually fully intended. Our comment pages for site-schemed pages were being generated by some very old, very hacky code, which was super-sleek back in 1999, but the 90s were over a decade ago. Geocities is dead. This code (which maybe four people actually understood enough to change) also needed to be dead. It used transparent GIFs to make indentation in the tables for comments. Everyone who has done HTML coding is now crying inside. I'm sorry.
Thankfully, we already had the well-written S2 comment code, which is used to generate journal-schemed comment pages -- the big project was to make what is essentially a journal-schemed comment page, but for the site scheme, that looked as close as we could get it to the original. It's not perfect -- there are some minor things that we couldn't edit to be exactly identical, and there's probably at least one or two bugs that didn't get caught in the seven months we had it in opt-in beta (and if you see those, give a shout). But what you're looking at now is nice, modern code, which is easy to update and change, has fewer security holes, and will actually display as intended even if you turn images off. EXCITING.
Back to me:
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Spam Prevention
One thing people identified after the code push that was a surprise to us: in the old entry/comment pages, due to a bug (and a fairly bad one) that we didn't know about, in certain views anonymous comments were not being cleaned by our HTML cleaner to the same standards as they were on the rest of the site. The HTML cleaner is the routine that strips out dangerous and unwanted HTML before it's displayed to the user. In anonymous comments, links are rewritten to be unclickable and images are rewritten to be placeholders that need to be clicked to display the image.
This is done for a number of reasons, but primarily to lower the incentive for spammers to spam Dreamwidth. Spammers leave links to their websites on other sites in order to improve their search engine results: search engines scour the internet to index pages, and as part of that indexing, tally up the number of times a particular page is linked to and the reliability of the linking page. Spammers are also likely to try to trick people into downloading and installing malware on their computer, or to link to sites that download and install malware automatically when the website is visited.
By making links unclickable, we remove the incentive for spammers to leave those links on Dreamwidth; we target anonymous comments because spambots are more likely to be leaving anonymous comments, as anything that saves them time (such as not having to have a human create an account before programming their bots to leave spam comments on a site) increases the return on their spam.
Patching this bug -- which wasn't deliberate (we didn't know about it) but happened as part of the whole rewrite -- has inconvenienced a few people, for which I apologize! But it's necessary in order to ensure the safety and security of the site for everyone. (And to avoid that annoying thing where the Google searchbot follows links, encounters malware, and places the site on a blocklist so anybody using Chrome or clicking through on search results from Google gets a giant scary warning page about the site being infected with malware -- I've been tearing out my hair wondering how the heck that kept happening, and now I know.)
We've had several and various suggestions that we make this change opt-in or opt-out, or allow people to set their account so that links left in anonymous comments are clickable on an account-by-account basis, but that just isn't possible. The best solution, if you regularly leave anonymous comments or want anonymous comments in journals you read to be clickable, is to install a local browser extension that will do it for you. There are also several mobile browsers that will make bare-word URLs clickable or allow you to install an extension that does so as well. And, of course, links left by logged-in users aren't rewritten.
As a reminder, when you get comment spam in your journal, anonymously or from a logged-in user, be sure to select the "mark as spam" checkbox when you're deleting it -- that puts the comment into our antispam system, so our antispam team can thwack the spammer. If you come across a journal that looks like it might be operated by a spammer, meanwhile -- full of links to the same site, containing a number of commercial-looking keywords, full of barely-coherent entries that exist only to work in linked keywords as often as possible, often with no icon and minimal journal customization -- report it to us by opening a support request in the "Anti-Spam" category.
HTML Cleaner Changes
Also done with this code push: we were forced to make some additional changes to the HTML cleaner to strip some additional attributes from anonymous comments, most critically all uses of tables. This had to be done because some people were using tables to disrupt the display of entry and comment pages, through such methods as forcing font face, font size, or font color changes for the entire page, replace the entire page with shock images, force the contents of entry and comment page to appear entirely offscreen and prevent the reader from scrolling to read the page, and multiple other forms of "page breaking", as well as to deliberately exploit a loophole to allow them to post images anonymously without those images being replaced by a placeholder. All of these tactics were in active use to disrupt the site for others, and were also being used by spammers to display their spam.
This also had the side effect of preventing that workaround for people who were non-maliciously using tables to display images in anonymous comments, but whether it was being done maliciously or non-maliciously, it was still exploiting a loophole. We're sorry for the disruption, but again, we have to take the safety and security of the entire site into account.
People commenting anonymously can still post images using the <img src> tag -- that hasn't changed, although those images will continue to be replaced by image placeholders.
Tales from the Conference #2
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I learned a lot about github, taking it from a mysterious set of random commands to a thing that makes sense (though I still need to look up the commands). There were also tinker toys.(She really did, by the way. Hooray for airport wifi!)
I learned a lot of useful bits and pieces about Perl. I particularly enjoyed a presentation about the Method::Signatures module, and an interesting talk on Roles vs. Inheritance which argued both that Roles could avoid the dreaded "diamond of death" and that they represent a better abstraction than inheritance. I now feel I should learn more about the Moose module.
I contra danced, saw the DW server, and stayed up long past my bed time gossiping and hacking.
The best bit was meeting all the other Dreamwidth people, and attending their talks! Given I don't hang out in irc, it was great to getter a better feel for the people behind posts indw_dev and
dw_dev_training, not to forget
sarah who was an angel, ferrying us all backwards and forwards, introducing me to root beer and frito pie, and taking us to watch bats. Talking to people who are much more familiar than I with both Perl and the DW code base was incredibly useful. Thanks to this and in particular, to
allen, I managed to get a pull request submitted in amongst everything else (even if it did mean making commits from the airport on the way home).
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I travelled. Quite a long way -– from London to Austin, Texas (and soon back again). I attended my very first technical conference, attended talks, met new people, learned a lot.mark,
denise and
misskat gave truly excellent talks. I met some of the people I've been working with over the past eighteen months for the very first time, and was completely unsurprised to find out that every single one of them is incredible. I wrote code! Some of it was good! Some of it needed fixing. Some of it I actually fixed (the rest I'm still working on).
It seems pretty hard to sum up a week's worth of new experiences in a couple of paragraphs. I think the main thing I'll take away from this week is the massive boost to my confidence, both as a developer and as a human being. This week has been amazing, and I'm coming away feeling ready to take on as many coding challenges as I can find the time for! Thank you, Dreamwidth, for bringing me to Austin!
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
As D's wife, I've often tagged along to tech conferences before to help out with logistics (e.g. run and fetch things for the conference-goers) and to play tourist in the host city, but this is the first time I've ever attended the conference itself.
Even to the non-programmer, many of the talks were interesting, and I was able to follow the logic of how & why the speaker addressed a particular problem and broke it down to be solved (even if I didn't understand the underlying code). And thanks to the other DW folks who are here this week who are so patient and willing to explain, I learned quite a lot about Perl in general, DW's codebase in particular. So I'm leaving enthusiastic about learning more on my own.
I loved Austin's restaurants (particularly this pizza joint & this hot dog place, its nifty little shops (especially this geeky yarn shop & this great comic store, its amazing friendly people, and its hordes of urban bats (really).) It was a total pleasure to visit for the week.
It's always amazing to meet IRL some of the people who contribute so much to DW. This was, by far, the best part of this conference. Thanks to everyone who's offered to help me learn more about DW's technical side -- and thanks for being plain awesome to hang around with.
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
People write software: A big theme for this YAPC -- at least my experience of it -- was the role that people play in software projects. Our mental image of a project is generally one of the product that's produced: a website, a database server, a paint program. However, wrangling people is at least as big a part of a software project as wrangling code. If you don't have a contributor base, your software doesn't grow -- you can neither fix bugs nor add features without someone to do the work. Code is great, and its technical merits are profoundly important, but it is people who write the code.And finally,
Helping/not helping: having become inured to interacting with other contributors through the computer, I find it's really easy to forget how much easier it is to help someone with a problem when they are physically located in the same room as you. You have a lot more shared context, you can walk over and see exactly what they're seeing, and it's easy to ask the many little incidental questions one would never take the trouble to bother someone about via IRC or IM. I wrote up some cribnotes on using screen, a Unix tool that lets people share a command-line session, but it didn't see any use during YAPC. Hopefully it will, now that we're all back home.
Being together in the same space also makes it very easy topesterask people a barrage of questions, spouting everything you can think of the moment it pops into your head. I'm happy to report that I am now front-loaded with knowledge for the upcoming months. =)
Finally, speaking of physical proximity: we took a field trip to visit our servers! The folks at our hosting facility were kind enough to set us up with a brief tour of their data center. I met our new servers, petted them, and told them what good servers they are. In all seriousness, it was a reassuring to meet the people who look after the machines that run the site. They're good folks, and I left feeling like our servers are in good hands.
Presentations: Looking at the conference sessions in retrospect, the first thing that jumped out at me was the uniformly solid level of presenting skills. YAPC hasn't been weak in this area to begin with, but at any conference, you usually encounter a few talks where the speaker's deathly dry delivery combines with your lack of sleep and caffeine to send you dangerously close to an embarassing naptime. There were no such talks amongst the sessions I was in -- not a one -- which speaks very well of the conference's presenters.
Sessions presented by non-DW folks which I particularly got a lot out of: patch's session on how the various pieces of Perl's unicode support fit together; Deb Nicholson's talk on software patents and patent trolling; and SawyerX's talk on asynchronous programming, along with a hilarious lightning talk in which he mercilessly pilloried the venerable CGI.pm module. Finally, garu and hugmeir gave the best internationalization lightning talk in the history of ever -- five minutes of alternating, rapid-fire Spanish and Portuguese that left the majority of the audience completely confounded. I believe that some or all of the conference sessions will be posted here once the video is processed.
The presentations given by the Dreamwidth crew --denise,
mark, and
misskat -- all went extremely well. Whenever we present on what some people view as "soft" topics, I'm always worried that nobody except fellow Dreamwidth folks will show up. Thankfully, that didn't turn out to be the case -- indeed, we spoke with a few people who, having heard one of the DW folks present, were very interested in coming on board and contributing. (Huge win!)
Community: lesson learned: if you show up at a conference with with a bunch of nice people who seem very happy with the F/OSS project they dwell in, and if have a few of their number present on how awesome they think the project and community are, surprisingly enough, some of the other folks there become very interested in getting involved too. =)
To a one, the Dreamwidth folks who assembled out in Austin are simply stellar human beings. You can kind of appreciate how awesome someone is by interacting with them online, but meeting them in person for the first time -- well, it's kind of like the difference between seeing the Grand Canyon on television and seeing it in person.
In conclusion: we've built a really, really incredible community here. People outside of it are starting to realize that. I think that this feat is nothing short of amazing.
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Deardenise,
We accept the fact that we had to sacrifice a whole week in Texas in order to fix whatever of our coding was wrong. And some of our code did have bugs, but we think that you're wrong to make us write an essay telling you what we learned while we were there.
You can see us as you want to see us. In the simplest of terms. The most convenient list of interests.
But what we found our is that each one of us is an evil coder, and a styles maven, and a support champion, an Imposter Syndrome sufferer, and a Slytherin.
Does that answer your question?
Sincerely yours,
The YAPC Club.
Volunteering with Dreamwidth
It's been a while since we've talked about ways that people can contribute to Dreamwidth if they want!
- If you know Perl, want to learn Perl, or always wanted to learn to program and never knew where to start: we have a bunch of resources and a lot of people who are very dedicated to teaching! Check out
dw_dev and
dw_dev_training, the Development page on the wiki, the entire Development category on the wiki, and our Dreamhack service, which are hosted development environments so you don't have to faff around with installing the code on your own (since it takes a lot of time, effort, energy, and resources to install and maintain a Dreamwidth installation, even one that will just be used for development).
- Our Support system is also a volunteer project! We're still working on getting our new-volunteer documentation up to date, but you can check
dw_support and
dw_support_training, read through the Support wiki category and the Support process and Support guide pages on the wiki, and request support-related privileges to make wrangling the support board a little easier.
- If you make color themes or styles, consider submitting them to
dreamscapes! There are a few guidelines for new themes and styles, but if your style doesn't meet our guidelines 100%, it's okay: we'd rather you submitted it and let our styles team see if it could be converted to fit our guidelines for system styles than not see it at all.
- If you're a technical writer (or want to be!), you can come tackle our FAQs. Work is coordinated in
dw_docs, and you can find the to-do list with a Bugzilla query. Start with the Manual of Style.
- And finally, if you're an interface designer or a UI specialist, there are tons of pages on the site that could use modernization and usability improvements.
dw_design is the (low-volume) community, but we don't currently have a UI team lead -- if that sounds like you, drop me an email.
*
That's it from us for another update! As always, if you're having problems with Dreamwidth, Support can help you; for notices of site problems and downtime, check the Twitter status page; if you've got an idea to make the site better, you can make a suggestion.
We'll see you soon for our next update, which will hopefully be less rampantly tl;dr. (I CAN'T HELP MYSELF.)
no subject
no subject
no subject
no subject