<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Dress to Impress - Neopets wearables made easy

  var _gaq = _gaq || [];
  _gaq.push([‘_setAccount’, ‘UA-6835404-5’]);
  _gaq.push([‘_trackPageview’]);

  (function() {
    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;
    var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
  })();</description><title>OpenNeo</title><generator>Tumblr (3.0; @openneo)</generator><link>http://blog.openneo.net/</link><item><title>JN Wardrobe has landed! But, no worries: Dress to Impress is...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m3l7l1U2Ti1qb6um0o1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://wardrobe.jellyneo.net/"&gt;JN Wardrobe has landed!&lt;/a&gt;&lt;/strong&gt; But, no worries: Dress to Impress is here to stay.&lt;/p&gt;
&lt;p&gt;Yep! After years of hard work and preparation, the cool guys over at Jellyneo have unveiled their super cool customization tool. It’s a lot like Dress to Impress, but has a few really neat features that I’d like to point out in particular.&lt;/p&gt;
&lt;p&gt;&lt;img alt="JN Wardrobe's pet selector" height="36" src="http://i.imgur.com/2PkPP.png" width="953"/&gt;&lt;/p&gt;
&lt;p&gt;Honestly, I’m probably most thrilled about this super-spiffy &lt;strong&gt;pet selector&lt;/strong&gt;, which keeps things like gender/emotion/UC states really crazy organized. This is one of the really neat results of Jellyneo’s large full-time staff, since this data is really hard to organize automatically, so I’m super excited that this is so crazy user-friendly :D&lt;/p&gt;
&lt;p&gt;&lt;img alt="JN Wardrobe item search" height="65" src="http://i.imgur.com/NJHeG.png" width="524"/&gt;&lt;/p&gt;
&lt;p&gt;JN Wardrobe also comes stocked with a &lt;strong&gt;powerful search tool&lt;/strong&gt;. You got your word filtering, zone filtering, species filtering, NC/NP filtering—the works. I also like the part where it automatically filters to items that will fit the currently visible pet—that’s a really neat touch.&lt;/p&gt;
&lt;p&gt;&lt;img alt="JN Wardrobe IDB integration" height="197" src="http://i.imgur.com/xf0m0.png" width="456"/&gt;&lt;/p&gt;
&lt;p&gt;I’m also really excited to see some tight integration with the &lt;strong&gt;JN Item Database &lt;/strong&gt;(or IDB), easily one of the most valuable resources in Neopia. JN Wardrobe includes up-to-date item pricing data directly in the app, and also ties in well with the IDB’s wishlist feature. It’s pretty spiff.&lt;/p&gt;
&lt;p&gt;&lt;img alt="JN Wardrobe outfits" height="38" src="http://i.imgur.com/UR3fY.png" width="206"/&gt;&lt;/p&gt;
&lt;p&gt;I’m also glad to see &lt;strong&gt;outfit saving and sharing&lt;/strong&gt;. While there’s definitely room to grow here, I’m sure there are upgrades on the way, and it’s definitely pretty awesome as-is.&lt;/p&gt;
&lt;p&gt;So, after this really neat first glimpse, and knowing that JN has even more awesome stuff planned, here’s how I see the scenario: JN Wardrobe is cool. Dress to Impress is, too. &lt;strong&gt;So, Dress to Impress will proceed as normal,&lt;/strong&gt; gathering data from the community (thanks again for all your hard work!) and quickly responding to any concerns you may have (please email me at webmaster@openneo.net for anything at all!). I know the Jellyneo staff has been hard at work building this site for many, many years—actually, longer than DTI has been around—so I’m eager to see what kind of cool stuff they think up next.&lt;/p&gt;
&lt;p&gt;And, to be clear, I’ve always had &lt;strong&gt;two distinct goals&lt;/strong&gt; for Dress to Impress:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Serve the Neopian community.&lt;/li&gt;
&lt;li&gt;Have fun doing so.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;So, the way I see it, the JN wardrobe doesn’t affect my second goal too much, but definitely big-time supports the first goal by having some awesome ideas and keeping a dedicated staff to regularly gather and maintain its vast database. Therefore, thanks for being the awesome community I know you are by welcoming this new addition to our customization family with open arms. There’s one more app in our midst today, and I’m excited to see where this new adventure takes us :)&lt;/p&gt;
&lt;p&gt;Thanks again for all your support, and enjoy the JN Wardrobe! Happy Sunday!&lt;br/&gt;—Matchu &lt;/p&gt;</description><link>http://blog.openneo.net/post/22501428997</link><guid>http://blog.openneo.net/post/22501428997</guid><pubDate>Sat, 05 May 2012 23:05:00 -0700</pubDate></item><item><title>[FOOLS] Server has flipped out</title><description>&lt;p&gt;Hey Impressers,&lt;/p&gt;
&lt;p&gt;As you may have noticed, we&amp;#8217;ve been having some &lt;strong&gt;technical issues&lt;/strong&gt; lately. Again, we&amp;#8217;re really sorry for yesterday&amp;#8217;s extended downtime. We&amp;#8217;re almost back on our feet, so, as promised, here&amp;#8217;s the technical breakdown of the issue.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ve been in contact with our hosting provider almost constantly over the past 24 hours, and it would seem that, due to a large electrical storm in the area, our server and many others in the building suffered a power surge, &lt;strong&gt;causing all of the bits on the hard drive to flip&lt;/strong&gt;. Not good.&lt;/p&gt;
&lt;p&gt;Thankfully, the team over at the hardware end has been working day in and day out to restore the original state of our server by reflipping all the bits back to their original positions. However, we&amp;#8217;ve been informed that some of the data has yet to be unflipped.&lt;/p&gt;
&lt;p&gt;So, &lt;strong&gt;if you notice any flipping-related issues on the site&lt;/strong&gt;, thank you for your patience and please know that we are working hard to resolve the issue within the next 24 hours.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;And Happy April Fool&amp;#8217;s Day 2012!&lt;/em&gt; &lt;/p&gt;</description><link>http://blog.openneo.net/post/20268069733</link><guid>http://blog.openneo.net/post/20268069733</guid><pubDate>Sat, 31 Mar 2012 21:00:00 -0700</pubDate></item><item><title>Dress to Impress gets a turbo boost!</title><description>&lt;p&gt;Today was an exciting day of getting to know Dress to Impress a little bit better—specifically, which jobs take the database longest. And, um, some of the results were pretty frightening.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m rather ashamed to say that I can be pretty darn lazy when it comes to managing databases. Most of the site&amp;#8217;s core data structure is years-old, from back when this project was little more than a neat idea. And back then I didn&amp;#8217;t consider the fact that one day we&amp;#8217;d have &lt;strong&gt;millions of rows of data &lt;/strong&gt;(yep, another thing I learned today: millions!), which can be hard for a database to navigate without well-defined indexes on its data.&lt;/p&gt;
&lt;p&gt;I won&amp;#8217;t go into too much detail on a database index, except to say that, if you were a teacher filing all your students&amp;#8217; essays for future reference, it would be wise to index them by grouping them by student, so that looking up a particular student&amp;#8217;s paper would be a matter of just checking the right folder instead of digging through the whole pile. In the case of databases, we have even more freedom: we can simultaneously index the same records by different attributes, so that the teacher can quickly look up all a students&amp;#8217; papers, the whole class&amp;#8217;s papers on a given topic, all the A-grade papers, etc. without having to check each one. Clearly it&amp;#8217;s a trade-off—you have to build these indexes as you go along if you want to use them later—but in many cases it&amp;#8217;s a very, very good idea.&lt;/p&gt;
&lt;p&gt;Dress to Impress, however, was &lt;strong&gt;tragically short on indexes&lt;/strong&gt;, mainly because, when the project was small, it didn&amp;#8217;t seem like a big deal. These days, however, some of the tasks the database performs involve checking each and every record to look up just one or two. Which is just plain awful, can sometimes take even a full second per query, and can easily be resolved with an index.&lt;/p&gt;
&lt;p&gt;So, I took some time today to &lt;strong&gt;add some reasonable indexes&lt;/strong&gt;—like an index that relates the outfit a user shares to the items on that outfit, which, without an index, is literally checking millions of rows. In fact, if you noticed 15 minutes or so of downtime this evening, that was the database chugging along, indexing all of our existing data. (If I&amp;#8217;d known it would take that long, I would have waited until later tonight to run it—sorry about that!) Thankfully, everything has now been successfully indexed, and &lt;strong&gt;you should notice the site running &lt;em&gt;much&lt;/em&gt; more quickly as a result&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So, thanks for bearing with some downtime, and I&amp;#8217;m eager to see how much this small change boosts performance. (And I&amp;#8217;m still a bit embarrassed that the database wasn&amp;#8217;t indexed a loooong time ago, but at least everything&amp;#8217;s all better now!)&lt;/p&gt;
&lt;p&gt;Thanks for being awesome, and happy Wednesday!&lt;br/&gt;—Matchu &lt;/p&gt;</description><link>http://blog.openneo.net/post/19707067986</link><guid>http://blog.openneo.net/post/19707067986</guid><pubDate>Wed, 21 Mar 2012 17:42:26 -0700</pubDate></item><item><title>Adventures in Maintenance</title><description>&lt;p&gt;&lt;strong&gt;&lt;img height="150" src="http://images.neopets.com/pets/closeattack/103_left.gif" width="150"/&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here&amp;#8217;s the short version:&lt;/strong&gt; more than a year ago I made a huge mistake in how Dress to Impress handles information. Today I fixed it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here&amp;#8217;s the longer version:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thursday night, we brought the main Dress to Impress server down for about an hour and a half, temporarily sending visitors the &lt;a href="http://oldimpress.openneo.net/"&gt;old server&lt;/a&gt;. The &amp;#8220;enter a pet name&amp;#8221; feature on the homepage was also spotty for the following 24 hours. Sorry for any trouble this may have caused, and thanks for understanding.&lt;/p&gt;
&lt;p&gt;Usually when we push an update to the site, the server takes a few seconds to restart and most users are none the wiser. This time, however, we needed to make some very fundamental changes to our database structure that took quite some time to process, which would have made some sections of the site extremely unresponsive. Thankfully, the old server seemed to handle the job admirably. And everything seems to be running smoothly now, hooray!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And here&amp;#8217;s the very long, very technical version:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First off, Dress to Impress tracks two different types of SWF assets: &amp;#8220;biology&amp;#8221; assets (like a Blue Shoyru&amp;#8217;s head) and &amp;#8220;object&amp;#8221; assets (like how an Altador Cup Wig looks on that head). These SWFs have a unique ID number among assets of the same type—that is, though there can be both a biology asset #123 and object asset #123, there can&amp;#8217;t be two biology assets with ID #123. Since both types of SWFs have a similar structure and need to do similar jobs (like produce PNGs of themselves for Image Mode), it seemed reasonable to store them in the same database table. Then, whenever we wanted to access information an SWF, we&amp;#8217;d specify that we wanted, say, object asset #456 or biology asset #789. That was sufficient information for lookup, and everything seemed solid.&lt;/p&gt;
&lt;p&gt;However, I&amp;#8217;ll just be blunt about this bit: due to a painful inattention to detail, even though &lt;em&gt;accessing&lt;/em&gt; SWF data works perfectly, &lt;em&gt;updating&lt;/em&gt; that data has been critically broken for more than a year now. Specifically, after I would fetch &lt;em&gt;biology&lt;/em&gt; asset #1337 and update it (for example, if TNT changed its zone ID), sometimes it would instead update &lt;em&gt;object&lt;/em&gt; asset #1337. Ouch.&lt;/p&gt;
&lt;p&gt;I can only assume that this sort of data corruption has been going on for quite some time now. For example, the Shadow Shoyru&amp;#8217;s torso, biology asset #598, kept changing zone over the past few weeks (thanks again to everyone who reported the error!), because every time we saw the &lt;a href="http://newimpress.openneo.net/items/35931-mystery-island-lutari-anklets"&gt;Mystery Island Lutari Anklets&lt;/a&gt; (which, umm, are bracelets, TNT), the site would attempt to update the zone for object asset #598. And update the biology asset instead. Sigh. This is also why so many Image Mode PNGs are broken: the wrong SWF was marked as converted, even though it had never actually gone through the conversion process. And it stands to reason that other data has been corrupted over the years, though I suspect that most errors are quickly patched automatically as time goes by, since every time a pet&amp;#8217;s name is entered on the homepage, we update our data to match that pet&amp;#8217;s appearance. Yay, crowd-sourcing!&lt;/p&gt;
&lt;p&gt;(By the way, the whole 24-hour thing where loading pets by name was misbehaving: that was an unforeseen side-effect of the bug fix, and it has since been patched. Phew.)&lt;/p&gt;
&lt;p&gt;So, we restructured our database, and everything now seems to be in order. We should never see that type of data corruption ever again, yay! However, I would like to point out that, though all seemed well in my basic testing—and I&amp;#8217;m no longer receiving automatic error reports every single minute of the day, woot!—it&amp;#8217;s very possible that I missed something. Please let me know at &lt;a href="mailto:webmaster@openneo.net"&gt;webmaster@openneo.net&lt;/a&gt; if you notice anything suspicious going on, and bear in mind that we may have to roll back the database if we discover a particularly large error.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So, that&amp;#8217;s that.&lt;/strong&gt; Thanks for being willing to handle a little downtime and for all the super-helpful bug reports that helped me track down this nasty little issue. It always makes me so happy to see that, even when I&amp;#8217;m off at college and don&amp;#8217;t really have the time to fully manage a big site like Dress to Impress, I don&amp;#8217;t really need to: you guys take care of everything by yourselves. All the data you see on the site is added and updated by the community simply by entering pets&amp;#8217; names on the homepage, and it&amp;#8217;s beautiful. &lt;strong&gt;Thank you for making my life so easy. You&amp;#8217;re the best.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Happy new year!&lt;br/&gt;—&lt;em&gt;Matchu&lt;/em&gt; &lt;/p&gt;</description><link>http://blog.openneo.net/post/15794866953</link><guid>http://blog.openneo.net/post/15794866953</guid><pubDate>Fri, 13 Jan 2012 15:03:00 -0800</pubDate></item><item><title>New color: Eventide!
A nice, pretty skyscape, to be sure....</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lxb3waCM7x1qb6um0o1_400.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;New color: Eventide!&lt;/p&gt;
&lt;p&gt;A nice, pretty skyscape, to be sure. I’m not convinced that we really &lt;em&gt;need&lt;/em&gt; more new colors, but hey! At least they look nice.&lt;/p&gt;</description><link>http://blog.openneo.net/post/15328602448</link><guid>http://blog.openneo.net/post/15328602448</guid><pubDate>Wed, 04 Jan 2012 19:48:00 -0800</pubDate></item><item><title>Image converters back online - and everything's smooth!</title><description>&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; Wow! The converters cleared the backlog much faster than expected. Everything should be smooth sailing now :)&lt;/p&gt;
&lt;p&gt;So, as it happens, the Image Mode converters have been down for a while now, and finals week prevented me from looking into it too closely. However, I&amp;#8217;ve since managed to track down the issue, and &lt;strong&gt;the converters are now back online&lt;/strong&gt; and gleefully plowing through a backlog of SWF-to-PNG conversions. Hooray!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unfortunately, this will likely result in a heavy server load over the next 24 hours.&lt;/strong&gt; The converters are always on, waiting for conversion jobs, but those jobs only rarely appear. Today, however, the converters will be working non-stop to process their backlog, which may cause delays to the main site. Sorry for the trouble, and thanks for understanding.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;For the technologically minded, here&amp;#8217;s a brief run-through of the issue at play:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Conversion jobs failed to run due to a permissions error on the server: the converter would try to save some temporary files, but would be told that it&amp;#8217;s not allowed to save files to that folder, because that folder for some reason belonged to my personal account instead of the converter&amp;#8217;s account. I removed the folder, allowing the converter to replace it with a folder that belonged to the correct user, and all was well. Crazy how one small thing like that can bring down an entire feature, eh?&lt;/p&gt;</description><link>http://blog.openneo.net/post/14082840483</link><guid>http://blog.openneo.net/post/14082840483</guid><pubDate>Sun, 11 Dec 2011 13:26:00 -0800</pubDate></item><item><title>Stop American Censorship</title><description>&lt;a href="http://americancensorship.org/"&gt;Stop American Censorship&lt;/a&gt;: &lt;div&gt;
&lt;p&gt;&lt;strong&gt;The internet as we know it is under attack.&lt;/strong&gt; Today, November 16, Congress is holding hearings on the &lt;strong&gt;first American Internet censorship bill&lt;/strong&gt;, which would give the American government and the entertainment industry unprecedented power. This includes the power to &lt;strong&gt;block websites&lt;/strong&gt; for infringing content posted by its users, even if the site didn’t know about it. The bill also makes it a &lt;strong&gt;felony&lt;/strong&gt; with a &lt;strong&gt;five-year jail sentence&lt;/strong&gt; to stream copyrighted content, even in an entirely noncommercial context, such as &lt;strong&gt;singing a pop song on Facebook&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;We already have the Digital Millennium Copyright Act (DMCA), which gives the entertainment industry the power to demand that websites remove infringing content. The DMCA is what makes it possible for us to have free expression on sites like YouTube, Facebook, Twitter, and other social media platforms that allow us to both organize protests and live our daily lives. &lt;strong&gt;This bill would make it legally unfeasible to run websites with user-generated content, and could quite possibly spell the end of the Internet as we know it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This bill is real and could pass this month.&lt;/strong&gt; Don’t let the government throw the Internet into chaos with a Great Firewall of America. Stand up for a free society.&lt;/p&gt;
&lt;p&gt;See &lt;a href="http://americancensorship.org/"&gt;AmericanCensorship.org&lt;/a&gt; for more information. And, please, don’t let this happen to the Internet we know and love. It’s the most powerful tool we have to express ourselves in the modern world, and such threats to our freedom are unacceptable.&lt;/p&gt;
&lt;p&gt;Thanks for reading.&lt;br/&gt;—&lt;em&gt;Matchu&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;</description><link>http://blog.openneo.net/post/12871702903</link><guid>http://blog.openneo.net/post/12871702903</guid><pubDate>Tue, 15 Nov 2011 22:27:21 -0800</pubDate></item><item><title>Botox round two</title><description>&lt;p&gt;Sigh. Just like last week, Dreamhost started pointing impress.openneo.net to another customer&amp;#8217;s website.&lt;/p&gt;
&lt;p&gt;We emailed them asking them to both resolve the issue immediately, and find a more permanent solution. The Dreamhost staff implemented a short-term solution within minutes, though we haven&amp;#8217;t heard back yet about why this seems to keep happening. In the meantime, newimpress.openneo.net still works whenever impress.openneo.net goes down, in case anyone asks.&lt;/p&gt;
&lt;p&gt;Thanks for understanding. Happy Monday!&lt;/p&gt;</description><link>http://blog.openneo.net/post/9252198313</link><guid>http://blog.openneo.net/post/9252198313</guid><pubDate>Mon, 22 Aug 2011 08:09:00 -0700</pubDate></item><item><title>Sorry for the Botox downtime! </title><description>&lt;p&gt;Well, that was odd. I woke up this morning and found that at some point while I was sleeping &lt;a href="http://impress.openneo.net/"&gt;http://impress.openneo.net/&lt;/a&gt; started forwarding to some cosmetic consultants website. Umm, weird.&lt;/p&gt;

&lt;p&gt;To be clear: this was &lt;em&gt;not&lt;/em&gt; any sort of attack against DTI, and the Botox site was totally unrelated to Neopets. Dreamhost had some internal trouble, and started pointing that domain to another customer&amp;#8217;s website. The Dreamhost support team quickly resolved the issue after we reported it.&lt;/p&gt;

&lt;p&gt;Sorry for the trouble, and happy Sunday!&lt;/p&gt;</description><link>http://blog.openneo.net/post/8927988605</link><guid>http://blog.openneo.net/post/8927988605</guid><pubDate>Sun, 14 Aug 2011 16:56:08 -0700</pubDate></item><item><title>Your Items is released!</title><description>&lt;a href="http://impress.openneo.net/users/current-user/closet"&gt;Your Items is released!&lt;/a&gt;: &lt;p&gt;While waiting for the server upgrade for the most requested DTI feature ever, we’ve been working hard on the second most requested feature: the ability to track the items you own and want. We did it, and did it pretty darn well. Here’s the scoop:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Track your items:&lt;/strong&gt; If you’re logged in, you should see on any item’s page the “I own this” and “I want this” buttons. If you say you own or want it, it’ll be added to &lt;a href="http://impress.openneo.net/users/current-user/closet"&gt;Your Items&lt;/a&gt;, and be marked with a spiffy little icon across the whole site. You can also add items straight from the &lt;a href="http://impress.openneo.net/users/current-user/closet"&gt;Your Items&lt;/a&gt; page with the neato autocompleting search form.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sort into lists:&lt;/strong&gt; You make lists of items you own or want, like an Up For Trade list, for example, or a list of items you still need for that next big outfit. Simple but powerful. Also, you can drag-and-drop to and from lists on &lt;a href="http://impress.openneo.net/users/current-user/closet"&gt;Your Items&lt;/a&gt;, which, during testing, was hours of fun on its own.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fine-tune privacy:&lt;/strong&gt; Each of your lists has its own privacy switch, as do the items that aren’t in any list. You can make items &lt;strong&gt;private&lt;/strong&gt; so no one else can see them, &lt;strong&gt;public&lt;/strong&gt; so that anyone who goes to your items page can see them, or &lt;strong&gt;trading&lt;/strong&gt; so that your name is listed on an item’s Infinite Closet page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trading 2.0:&lt;/strong&gt; An item’s Infinite Closet page now includes a list of users who own or want that item and want to trade. So, if you need an item, you can see who has it and check to see if you have any items they want in exchange. It’s all very spiffy. Also, you can add your Neopets username to your lists page to make it easy for potential traders to Neomail you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Import Neopets closet:&lt;/strong&gt; I’m going to let the &lt;a href="http://newimpress.openneo.net/closet/pages/new"&gt;Neopets closet importer&lt;/a&gt; speak for itself. In short, you can get up and running with the items you own within seconds, and it’s pretty darn easy. Give it a shot :)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Export to Neopets petpage: &lt;/strong&gt;The &lt;a href="http://newimpress.openneo.net/user/6-matchu/closet/petpage"&gt;Neopets petpage exporter&lt;/a&gt; is similarly straightforward: your public items compiled into a simple but elegant petpage format. No need to send users offsite to share your trade lists with the Neoboards, am I right?&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;And that’s just the first iteration. As always, I’m looking forward to hearing from y’all on what works well, what doesn’t, and what we should improve. Please post specific ideas in our &lt;a href="http://openneo.uservoice.com/forums/40720-dress-to-impress"&gt;feedback forum&lt;/a&gt;, and send general praise or bug reports to &lt;a href="mailto:webmaster@openneo.net"&gt;webmaster@openneo.net&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also, though I’m usually really, really good at responding to emails, I’m going to be spending all day tomorrow, August 1, with my little sister. Bonding and whatnot. Still, please drop me a line, and I’ll be sure to get to you as soon as I can :)&lt;/p&gt;
&lt;p&gt;Thanks as always for your continued support! At time of writing, we’re $56 away from our fundraising goal. If you’re excited about this new feature and Dress to Impress in general, &lt;a href="http://newimpress.openneo.net/donate"&gt;please donate to help us reach our goal&lt;/a&gt;. Thanks again!&lt;/p&gt;
&lt;p&gt;Happy trading!&lt;/p&gt;</description><link>http://blog.openneo.net/post/8327194102</link><guid>http://blog.openneo.net/post/8327194102</guid><pubDate>Sun, 31 Jul 2011 21:18:00 -0700</pubDate></item><item><title>Happy teaser day! While Image Mode is pending a server upgrade,...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lp6jutkc1p1qb6um0o1_250.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Happy teaser day! While Image Mode is pending a server upgrade, we’ve still been hard at work…&lt;/p&gt;</description><link>http://blog.openneo.net/post/8284976732</link><guid>http://blog.openneo.net/post/8284976732</guid><pubDate>Sat, 30 Jul 2011 21:16:05 -0700</pubDate></item><item><title>Upgrade successful!</title><description>&lt;p&gt;Today we had some downtime here and there, but it was for a worthy cause :) In short, we swapped out some of the technology that runs Dress to Impress in order to reduce memory usage (that&amp;#8217;s how much RAM the site is using) so that we can do more things at once.&lt;/p&gt;
&lt;p&gt;Note that these changes involved moving to a different version of Ruby. I think I caught all of the major compatibility issues, but please keep an eye out for errors and report them when you see them.&lt;/p&gt;
&lt;p&gt;Thanks for supporting Dress to Impress, both by spreading the word and &lt;a href="http://www.pledgie.com/campaigns/13904"&gt;donating to keep our super cool server running&lt;/a&gt;. You guys make it all possible :D&lt;/p&gt;
&lt;p&gt;For the more technically minded…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here&amp;#8217;s the lowdown on our stack before the change.&lt;/strong&gt; We were using the nginx web server (that&amp;#8217;s kinda like Apache) as a proxy to share HTTP requests among three separate instances of Thin, a web server that runs Ruby on Rails applications like Dress to Impress. I originally chose this setup because Thin supports asynchronous connections: most servers can only handle one request at a time, which can be a problem if there&amp;#8217;s one type of request that&amp;#8217;s a serious bottleneck, like how typing a pet&amp;#8217;s name into the box on the homepage means waiting on a request to Neopets.com, processing all that data, inserting it into the database, etc. However, asynchronous requests turned out to be too messy to implement, causing errors on various pages at random intervals. It would seem that the technology isn&amp;#8217;t quite as polished as it needs to be. So, I instead left it at just having three Thin instances, since if one were busy loading a pet, the other two were probably free. (And loading a pet doesn&amp;#8217;t really take &lt;em&gt;that&lt;/em&gt; long, anyway.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;However, those Thin processes were running out of memory.&lt;/strong&gt; Each Thin instance loaded up its own copy of Dress to Impress and all the libraries the site uses (and there are quite a few big ones!), which require a lot of RAM. This usually wasn&amp;#8217;t a big problem, though once or twice a day Monit, our program that keeps an eye on the server, would restart a Thin process for taking up too much memory. Since it was only one at a time, y&amp;#8217;all usually didn&amp;#8217;t notice, since the other two stayed up; however, falling back on other servers is just our backup plan, and it&amp;#8217;s not acceptable for that to happen regularly. Also, we&amp;#8217;re working on a big feature that will take some serious processing power over the next few days—guess what it is!—so it&amp;#8217;s important that we have significantly more RAM available without sacrificing the concurrency we get from multiple Thins.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So, we moved to &lt;/strong&gt;&lt;strong&gt;&lt;a href="http://rubyenterpriseedition.com/"&gt;Ruby Enterprise Edition&lt;/a&gt; via&lt;/strong&gt;&lt;strong&gt; &lt;a href="http://modrails.com/"&gt;Phusion Passenger&lt;/a&gt;.&lt;/strong&gt; That&amp;#8217;s two important things there. The first is another version of the Ruby interpreter. Ruby is the programming language we use to make Dress to Impress, and there are a few different programs out there that run Ruby code. Ruby Enterprise Edition (REE) is a modification of the standard Ruby 1.8 interpreter, designed specifically to reduce memory usage. Phusion Passenger is another open-source project by the same company that replaces our Thin servers. Its main selling point is that it&amp;#8217;s easy to plug into servers like Apache or nginx, but its best feature for us is that, when used with REE, Passenger also significantly reduces memory usage. It&amp;#8217;s a clever trick: since every instance of Dress to Impress loads exactly the same fundamental application code, Passenger uses REE&amp;#8217;s memory-sharing feature to only load &lt;em&gt;one&lt;/em&gt; copy of the application code and share it among the application instances. So, instead of loading three separate copies of the app, we load three mini-servers that use the same application code. Much better for our memory usage by far :D&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hooray! We&amp;#8217;re stable!&lt;/strong&gt; Now the server is running more smoothly, and is able to also run a super cool background process or two…and those who stalk &lt;a href="http://github.com/matchu/openneo-impress-rails"&gt;the Dress to Impress source code repository&lt;/a&gt; should know what they are for ;) It&amp;#8217;ll be a few days until all that heavy-duty processing is done, but it will be so totally worth it. I&amp;#8217;m excited.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for your continued support!&lt;/strong&gt; It&amp;#8217;s tons of fun to be able to make all this cool stuff for y&amp;#8217;all. Here&amp;#8217;s hoping you&amp;#8217;ve enjoyed it :)&lt;/p&gt;</description><link>http://blog.openneo.net/post/6199342728</link><guid>http://blog.openneo.net/post/6199342728</guid><pubDate>Sat, 04 Jun 2011 20:16:11 -0700</pubDate></item><item><title>Weekend updates :)</title><description>&lt;p&gt;We&amp;#8217;ve had some fun this weekend fixing some minor issues around the site. Yay!&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The first gender/emotion state for the Tyrannian Uni no longer has a big, fat White Koi sticking out of it. Please report any other glitched combinations you see, and note that, usually, a good temporary fix is to click one of the other numbered gender/emotion buttons.&lt;/li&gt;
&lt;li&gt;Entries in the Infinite Closet items database now have prettier URLs and are significantly more search-engine-friendly.&lt;/li&gt;
&lt;li&gt;We noticed that the NC Mall spider that automatically grabs previews of items being sold in the Mall (which, by the way, is 100% legit by Viacom&amp;#8217;s terms) hasn&amp;#8217;t been running for quite a few weeks. Turns out out deploy script wasn&amp;#8217;t updating the crontab to refer to the app release&amp;#8217;s specific path (&amp;lt;/techspeak&amp;gt;), so it was trying to run the mall spider on an older version of Dress to Impress. This has since been fixed, and the spider is now working overtime to catch up on some things it missed.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;In short, bug fixes and minor upgrades. Since major features, exciting as they are, can get exhausting to work on at great length. (But, man, are they exciting ;D)&lt;/p&gt;
&lt;p&gt;Thanks for using Dress to Impress!&lt;br/&gt;&lt;em&gt;—Matchu&lt;/em&gt; &lt;/p&gt;</description><link>http://blog.openneo.net/post/5719167876</link><guid>http://blog.openneo.net/post/5719167876</guid><pubDate>Sat, 21 May 2011 20:11:00 -0700</pubDate></item><item><title>XSS vulnerability closed</title><description>&lt;p&gt;Just a quick notice that Dress to Impress had an XSS vulnerability in the Infinite Closet section, which has since been resolved. We have no evidence of anyone abusing this vulnerability, nor would they would have been able to access sensitive account data, regardless.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/matchu/openneo-impress-rails/commit/1b3669178c7209bf66aa8f14b2a9b5957322a8c5"&gt;If you&amp;#8217;re interested, here&amp;#8217;s the source code change that fixed the security issue.&lt;/a&gt; Short and sweet one-liner, escaping query output. Funny, because this is usually the first place I check when someone asks me to check their site for security issues xD I think I forgot that the Markdown interpolation doesn&amp;#8217;t do escaping by default, like interpolation in most other spots in Rails 3.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR: Minor security hole fixed. It doesn&amp;#8217;t look like anyone used it, nor would it have done them much good.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thanks for using Dress to Impress!&lt;br/&gt;—&lt;em&gt;Matchu&lt;/em&gt; &lt;/p&gt;</description><link>http://blog.openneo.net/post/5479559526</link><guid>http://blog.openneo.net/post/5479559526</guid><pubDate>Sat, 14 May 2011 07:02:00 -0700</pubDate></item><item><title>FEATURE: Infinite Closet supports Baby, Maraquan, etc.</title><description>&lt;a href="http://newimpress.openneo.net/items/51568"&gt;FEATURE: Infinite Closet supports Baby, Maraquan, etc.&lt;/a&gt;: &lt;p&gt;First off, sorry for &lt;a href="http://blog.openneo.net/post/5131127507/error-postmortem-database-write-issues"&gt;the downtime&lt;/a&gt;. This quick feature is to make up for it :)&lt;/p&gt;
&lt;p&gt;The Infinite Closet is our lovely wearables database, and it has a neat little feature for previewing items by species. However, that feature was flawed: some items only fit Baby, Maraquan, Mutant, 8-bit, etc., pets, some because they were just plain special (Baby Pajamas, Maraquan Dress, Elegant Mutant Cape) and some because they were paint brush items. The Infinite Closet would just try to stick these color-specific items on standard pets, and they wouldn’t fit, so it would claim that we’d never seen that combination before. It wasn’t very pretty.&lt;/p&gt;
&lt;p&gt;So, fixed :) Now, all color-specific items show the &lt;em&gt;right&lt;/em&gt; kind of pets at the bottom, so that the feature actually, ya know, works for those items. It’s the small stuff, right?&lt;/p&gt;
&lt;p&gt;Thanks again for sticking with Dress to Impress. Y’all rock :D&lt;br/&gt;—&lt;em&gt;Matchu&lt;/em&gt; &lt;/p&gt;</description><link>http://blog.openneo.net/post/5143225911</link><guid>http://blog.openneo.net/post/5143225911</guid><pubDate>Mon, 02 May 2011 15:30:36 -0700</pubDate></item><item><title>Error Postmortem: Database write issues</title><description>&lt;p&gt;Exciting things happened over the weekend. Namely, the beta server ran out of disk space. Oops. This caused any request that wrote to the database at all to just plain cut off.&lt;/p&gt;

&lt;p&gt;Fortunately, the biggest offender wasn&amp;#8217;t all those SWFs we downloaded (that&amp;#8217;s at about 1.6GB right now) or even the MySQL database (nowhere near that). It was our server logs, that have been tracking each HTTP request we received since the server went live. It had hit about 5.5GB. Which is way too big.&lt;/p&gt;

&lt;p&gt;So, we did something we should have done a while back: we now only keep access logs from the past 7 days. Protip: if you end up administering a web server, use logrotate from the beginning.&lt;/p&gt;

&lt;p&gt;Anyway. Glad that was an easy fix. Last night we started pushing people to oldimpress by default, and are now pushing users back to newimpress. Yay!&lt;/p&gt;

&lt;p&gt;Thanks for stickin&amp;#8217; with us through technical troubles. Y&amp;#8217;all continue to be the best :)&lt;br/&gt;
&amp;#8212;Matchu&lt;/p&gt;</description><link>http://blog.openneo.net/post/5131127507</link><guid>http://blog.openneo.net/post/5131127507</guid><pubDate>Mon, 02 May 2011 06:03:21 -0700</pubDate></item><item><title>ERROR: Database write issues</title><description>&lt;p&gt;The server is having trouble writing to the database. Since I just got home from being out of town for, heh, days, I can’t investigate right now, but I bet we’re out of disk space. Looks like we’ll have to reevaluate our current strategy of downloading all the SWFs in order to handle cross-domain policy issues.

We’ll be working on a fix very, very soon. Thanks! &lt;/p&gt;</description><link>http://blog.openneo.net/post/5119346108</link><guid>http://blog.openneo.net/post/5119346108</guid><pubDate>Sun, 01 May 2011 18:40:42 -0700</pubDate></item><item><title>Outfit saving all fixed :)</title><description>&lt;p&gt;There was an issue with saving outfits in non-Chrome browsers. It has since been resolved.&lt;/p&gt;
&lt;p&gt;It was kinda silly, really. I left in a line of code for debugging that tried to log a message to Chrome&amp;#8217;s debug console every time an outfit saved. In browsers that didn&amp;#8217;t support the console, the code would throw an error and never save the outfit.&lt;/p&gt;
&lt;p&gt;This took me longer to resolve than most bugs, mostly because I was out of town last week, and spent much of this week recovering, catching up on work, etc. Thanks for keeping me up to date on the site&amp;#8217;s issues even when I&amp;#8217;m not around, and for understanding that DTI is a labor of love, and, therefore, working on it is subject to openings in my schedule. I&amp;#8217;m happy to say that things seem to be looking up on that front, though :)&lt;/p&gt;
&lt;p&gt;Thanks for using Dress to Impress! Show off them outfits!&lt;br/&gt;—&lt;em&gt;Matchu&lt;/em&gt; &lt;/p&gt;</description><link>http://blog.openneo.net/post/4835247383</link><guid>http://blog.openneo.net/post/4835247383</guid><pubDate>Fri, 22 Apr 2011 06:46:54 -0700</pubDate></item><item><title>Happy April Fool's!</title><description>&lt;a href="http://warlock.openneo.net/"&gt;Happy April Fool's!&lt;/a&gt;: &lt;p&gt;Hope you enjoyed my superb acting skills. *takes a bow as Lilia, Avast, Suzie, Jerry, etc.*&lt;/p&gt;
&lt;p&gt;I know absolutely nothing about how restocking actually works; I just threw together an algorithm, said it was the official one, and watched the show :) Here’s hoping you didn’t waste &lt;em&gt;too&lt;/em&gt; many hours on getting those hundreds of Draik Eggs that “restocked” yesterday!&lt;/p&gt;
&lt;p&gt;Anyway. Shop Warlock lives on for your personal amusement and showing your friends how hilarious it was. Feel free to pass that link around for as long as you like.&lt;/p&gt;
&lt;p&gt;Now, back to fancy business with Dress to Impress. Since the beta app seems to have been serving us well over the past few days, it looks like full migration day is fast approaching. The old and new servers are on slightly different databases: everything before November is the same, and everything after is totally separate. (Some users noted that their points went down significantly after we started automatically pushing users to the new server. Their points earned on the old server still exist; the new server just doesn’t know about them.)&lt;/p&gt;
&lt;p&gt;Merging the two databases looks like it’ll be a fun challenge. The ideal result would be a true merge: contributions on the old server and contributions on the new server would be all grouped together, then we would recalculate everyone’s worth-their-weight-in-some-kind-of-pride-I-guess points to take into account contributions on both servers. If that proves not to be feasible, scores from the old server will take precedence.&lt;/p&gt;
&lt;p&gt;Oh, hey, a quick aside: I know that many of the illnesses and cures from Neopets’s April Fool’s gag are glitched, only showing their appearance on one particular pet species. Since absolutely none of those items have anything to do with real outfits anyone might ever make in the future, I’m okay with that. Just thought y’all should know :)&lt;/p&gt;
&lt;p&gt;Anyway. Hope you enjoyed the Warlock, and I’m looking forward to working on legit stuff for y’all in Dress to Impress ;) Thanks!&lt;br/&gt;—&lt;em&gt;Matchu&lt;br/&gt;&lt;br/&gt;&lt;/em&gt;P.S. Mika C says hi from his lovely igloo home, and Lucie sends you all her formal invitation to continue to visit her shop regularly. &lt;/p&gt;</description><link>http://blog.openneo.net/post/4278345496</link><guid>http://blog.openneo.net/post/4278345496</guid><pubDate>Sat, 02 Apr 2011 00:03:06 -0700</pubDate></item><item><title>[NEW PROJECT] Shop Warlock</title><description>&lt;a href="http://warlock.openneo.net/"&gt;[NEW PROJECT] Shop Warlock&lt;/a&gt;: &lt;p&gt;OpenNeo now reveals its latest major project: Shop Warlock, an app that, by fancy &lt;strike&gt;mathematics—&lt;/strike&gt;whoops, magic—can tell you when an item will restock before it even happens! Tired of wasting time restocking? Now you only need to press F5 like crazy juuuust before the Draik Egg is scheduled to wander in—though, as always, you’ll still need to be pretty darn fast to snatch it up, or, if you’re up against the best, even notice it at all ;)&lt;/p&gt;
&lt;p&gt;Curious? Give it a try! Shop Warlock is ready to stand alongside Dress to Impress as OpenNeo’s latest open-source Neopets app, meaning that it will be actively updated and maintained for a loooong time. And will also be just as awesome.&lt;/p&gt;
&lt;p&gt;Here’s hoping that you find Warlock helpful :) Tell your friends! Spread the word! This is going to be one of the coolest things y’all have ever seen.&lt;/p&gt;
&lt;p&gt;Happy Friday, and thanks for using Dress to Impress…and Shop Warlock!&lt;br/&gt;—&lt;em&gt;Matchu&lt;/em&gt; &lt;/p&gt;</description><link>http://blog.openneo.net/post/4251192843</link><guid>http://blog.openneo.net/post/4251192843</guid><pubDate>Thu, 31 Mar 2011 21:03:06 -0700</pubDate></item></channel></rss>

