afuna_archive: (Default)
Whoo! Remember the graph I showed you guys a while back? [livejournal.com profile] foxfirefey just released the source ^____^

Note: I think you need to be at least fairly technical and have Python on your system to use it.
afuna_archive: (Default)
I've been thinking about this a bit, and I will be moving my main posting to DW, but continue lurking here to read my friends page. Ironically, I've started reading my friends page here more regularly, since I got my Dreamwidth account. Something about being so happy over there carries over to being more sociable over here, too.

I will continue archiving my Twitter entries on my LJ, but I will not be posting them to DW. I will also cross-post from DW to LJ, assuming I don't forget -- may be a slight lag between when I post there versus here, because I end up too lazy to open a second update window, but entries with substance length will make their way here eventually.

There will be a crossposter tool soon! Which will be awesome, and will make crossposting much easier, and give me no excuse not to post entries to here.

PS. feature for the day: Tags on Month page!

Implemented a couple of weeks ago, but got overlooked among all the other style system changse.
afuna_archive: (Default)
So [livejournal.com profile] foxfirefey did this nifty program for generating visualization of network linkage from fdata. I volunteered to be a guinea pig, and got this! (I LIKE IT)




per-cluster close-ups behind cut )
afuna_archive: (Default)
Someone pointed out http://www.livejournal.com/stats.bml on IRC, which has a strange outlier for age 29.

Strange outlier wasn't there a year ago! http://web.archive.org/web/20080312210339/http://www.livejournal.com/stats.bml

What's going on?

(I suspect someone targeted the year 1980 as a nice round number that's above 18. But... but. Now my curiosity is itching.)
afuna_archive: (Default)
Three new scripts. Wrote them late last year, never got around to publishing them:


  • LiveJournal Default Memory Security
    Set a default initial security when creating new memories.

  • LiveJournal Rage Goggles
    Inspired by Google's Mail Goggles, this script makes you solve a math problem, before you post that comment you know you're going to regret later. "Rage-goggled" ljuser-head shows up in the comment form to indicate that the script is active. Click on it for options: you can whitelist a journal temporarily or permanently.

  • LiveJournal Track from Navbar
    Adds a convenience link to the navbar, pointing to the track this journal's entries page.



As always, the rest of my scripts can be found on my site.
afuna_archive: (Default)
One thing that has frustrated me about interacting with LiveJournal programmatically, is that ?format=light does not work on all pages. It's not really something that affects most users would notice, but certain (Greasemonkey) scripts would be much much easier to write if the entry/journal pages could be guaranteed to follow the same format.

Mostly I've kludged around it by working off of the archive pages, which respond to ?format=light, so I could get data consistently. I have a script which scrapes the lj-cut text, so it can be seen in the inbox which does this. [livejournal.com profile] murklins has done me one better, with a script which lj-cuts your inbox, like the entry text. I do not know how I ever lived without this. Lifesaver. Adore, love. Seriously.

But for other pages, it's been a process of trial and error, trying to figure out whether ?format=light is supported (tag page supports it, showing a page based on s1shortcomings). Uh. Archive pages, as mentioned above. Reply pages and entry pages, obviously, using core, I think.

Not affected by ?format=light are friends and recent entries. LJ site scheme pages, meanwhile depend on the user's site scheme, unless you append ?usescheme=blah, which I always forget to /o\

It's all possible, but it can get messy depending on what you're trying to do. Which is why I love that LJ offers a mobile view. Love <3

The gist of it is that LiveJournal offers a minimalistic view for mobile phones/browsers (I suspect screenreaders could benefit). No header graphics, less junk overall, more consistent look/feel, and most importantly if you're hijacking it for scripting, it works consistently! To trigger, you need to supply the appropriate user agent:

GM_xmlhttpRequest({
   method: "GET",
   headers: {"User-Agent":"w"},
   url: $url_here,
   onload: function(details) {
       // do something with details.responseText
   });



The important part is the useragent line. The rest is just the normal stuff you need to fetch and process a page.

I haven't used it in an actual script. And since I don't play around with LJ much anymore, I'm not sure when I will. But it is a potential solution to what has up to now been a tedious problem.
afuna_archive: (Default)
Hey,

I'm cleaning up my friends list, but only to remove abandoned journals, for people with multiple journals.

If I delete real-you by accident, let me know!
afuna_archive: (Default)


In other words, I just made Web admin. It's taking its time sinking in ;-)

There's so much to look at, and so much to do. Web is going to be, mm, interesting to admin.

PS. My first year in Support is in a couple of weeks! That also is taking its time sinking in ;p
afuna_archive: (Default)
Finally managed to finish a script I've been wanting to use for a while: Admin Console for Requests

It basically inserts a form below each request, where you can type in your desired commands, and then takes advantage of LJ's CSP to submit these. Your currently logged-on username is automatically detected, so no configuration is required.

I've integrated it with the synedit and synmerge Automator (though each script can also work as a standalone). If you are a Syn SH+ and have the admin console script installed, it will place the syn_* command in the console instead of as an IC. My goal is to reduce the effort it takes to respond to synedits -- also other things, but synedit is the only support-related console command I regularly use.

(All my scripts are available on this page.)

Also, trying not to babble on too much here, but I found the XMLRPC format interesting. However arrays are a pain and a half to work with.
afuna_archive: (Default)
I forgot that certain characters under certain conditions will cause parts of a word to be expanded as a variable in Perl. (In other words, my password was wrong because a portion of it was being recognized as a variable "$xyz", which was blank ;))

*whistles innocently*

The original twitter2lj.pl script is barely recognizable, as I had to redo the feed fetching, parsing, authentication, time(zone) handling, and posting to LJ. However! The HTML format of the output remains (mostly) the same.

Had to rework the feed-fetching-related stuff because the RSS feed has too few items (only 20). The archives XML file, which gives 80 items at a time, is in XML, but not RSS. They require different approaches to authentication as well. I feel a bit guilty about fetching directly from the archives instead of from latest items, but I only do it once a day, so it seems reasonable enough.

Given the problem with the password, the authentication for my RSS feed probably never worked. I just didn't notice it, because authenticating on that feed had no effect, given my settings!

For some reason, @lj_tags = ["tweets"]; was parsed as "array(0xblah)" when posted $lj->Setprop_taglist (in LJ::Simple). However, using @lj_tags = qw(tweets); works. As does using LJ::Simple::QuickPost. It's likely I've misunderstood something about the way lists work in Perl.
ETA: Ciaran has explained it to me :)
( [] indicates an array reference. I got that first line from the original code, which uses QuickPost, which expects an array reference, so it worked for that, but not when I switched to Setprop_taglist. Refreshing my memory about scalars vs lists vs references now *g*)

Now that it works, I have to resist the urge to redo it to optionally use JSON instead of XML (for the sake of those who had trouble installing the XML::Parser, since that would only affect a few people, and of those few people, I'm probably the only one who wants to do Twitter->LJ via this script). I also have to resist the urge to add options to grab other things available via the Twitter API.

So yay, my Twitter stuff archived here: http://afuna.livejournal.com/tag/tweets (backdated so that it doesn't double-spam, forchrissake).

<3 [livejournal.com profile] aveleh, [livejournal.com profile] murklins, [livejournal.com profile] ciaran_h for bearing with my babbling over IM (while I tried to figure out how to best tweak certain things *g*)
afuna_archive: (Default)
I was just made SH in the Issues Investigation category (despite literally having done almost nothing within the actual category *grin*). [livejournal.com profile] ciaran_h pointed out that this makes me an SH in exactly 50% of all public categories :O

Also, I reached the front page with a day to spare \o/
afuna_archive: (Default)
And the site has Greasemonkey scripts :-)

I really need to fix up some of the scripts and expand the variety of scripts that I've worked on, because that's a sad, sad total (especially since most of those were pretty trivial to do!), but the site itself is not too bad for my first time creating a site from scratch.

Unless you count using the Geocities web tools back in 2000? In which case, this is not my first site ;)

(I'm on Ciaran's server and have spent today hammering at both site and scripts with his help ♥)
afuna_archive: (Default)
Hm, am 36 points away from the first page. One more week should push me over?

(Talking about this second page, by the way.)
afuna_archive: (Default)
If there is a feature of LiveJournal (the software - not the business) that you would love to use but can't, or have trouble using, because it's poorly designed, confusing, unreliable, or not worth using because it makes you jump through unnecessary hoops, what is it, how do you think it should work instead, and why?
afuna_archive: (Default)


What should actually be showing up in that entry is the welcome video of OSX Leopard.

It's definitely not something being done by lj-toys, and I get the ad-filled page when I visit the page directly, so it's not just within the iframe. Somehow, Firefox is directing me to the wrong site/domain. But how? And why?

Not cache, because it persists after I clear and restart.
Not an extension, because I'm reproducing in an empty profile. Actually, for that reason, shouldn't be cache, either.

nslookup from my machine returns a different result versus the nslookup from [livejournal.com profile] ciaran_h's server. Plus, lj-toys works properly on Safari, but not on Firefox; I don't know why.

nslookup results )

Fu: 0
That site: eleventy-one

Update:
Dre fixed it <3 Added a line to /etc/hosts, and now I have no problems. It's hacky, but it works. *purrs at Dre*

Gold star!

Aug. 22nd, 2007 11:59 pm
afuna_archive: (bounce)
I got a gold star for my work in Syn ^___^

*adds it to collection*
afuna_archive: (ergo)
Hahaha, I feel immensely silly right now. I've been staring at parsefeed.pl, trying to figure out how two pieces of date-parsing code were related to each other, and I only just realized that one is Atom-specific, the other RSS-specific, and that if you're in an Atom feed, which is what I needed to look at, then you return before you reach the RSS-specific parsing code.

(I thought that there would be another module for parsing RSS, just as there was for parsing Atom and that a certain block was being called when parsing both RSS and Atom *facepalm*)

I've been looking at this (dumbly) since last night.

On the good side, the reason I couldn't find where certain attributes were being handled is because it looks like these attributes aren't being handled at all (the attributes in question being _atom_updated and _atom_published; only _atom_modified and _atom_created are being processed).

I wonder why the Atom parser doesn't use w3cdtf_to_time. Are Atom feeds guaranteed to more strictly follow a certain format?

Must recheck my results in this request later, but it looks right to me. If it pans out, then RT.
afuna_archive: (Default)
Investigated all four issues while I was logged in to LJ and as both logged in and logged out of Photobucket.

four different issues with inserting images via RTE: diagnostic work, error messages, all that dull stuff )

More context in the headers themselves. Urgh, I'm too lazy to dig around PB to figure out what's going on (not even sure I can? Dig around, I mean. Also figure out what's going on)

'Kay, I think at this point, I need to update the RT ticket about being unable to paste images using photobucket, and possibly file another one about the "OK" button's appearance being delayed, and another one about the "please type image url" popup. And then uh. Possibly IC where necessary, but tomorrow. Think I need to stop work on this particular issue for today. Need a night's rest before I can whip this into shape to make coherent ICs, reports, etc. Here's to hoping I don't forget :P

Also, must remember to find out whether anyone else is experiencing the same problem (more to the point, if not everyone is experiencing this problem, then why?)
afuna_archive: (Default)
*shamelessly stolen from [livejournal.com profile] idonotlikepeas

Eep, I just realized: I'm a few days shy of my sixth month in LiveJournal Support (not counting the other time(s?) I dabbled briefly and then left). I first tried out Support in February of 2003 because I was stressing over my final-finals in high school. I stayed on for a short time, earned (I think) Gunk I1s, but I drifted away once I started university.

Four years later, I was again stressing over senior year finals, when a conversation with [livejournal.com profile] ciaran_h reminded me about Support. I figured it would be a good way to de-stress, so I decided to poke around a bit.

My first touch was in Web. You need to be able to see screened comments in Web to see it, but basically I left a diagnostic screened saying, "I think the problem is here: blahblah". And then I apologized for leaving it asdfghkl;jghk;lk.

[livejournal.com profile] ciaran_h tried to convince me to file the RT report since I'd done the diagnostic work, and that led to this conversation (paraphrased):

[livejournal.com profile] afuna: I don't feel comfortable filing an RT ticket, or actually answering the request, since I'm not really in Support :( (Would you do it, pretty please?)
[livejournal.com profile] ciaran_h: Okay, but I feel guilty about taking that ten-pointer from you :/
[livejournal.com profile] afuna: Nah, don't worry about it. I don't need the points; I'm just poking around anyway, because it's fun. I doubt I'll ever even leave a screened. I might look at one more request, though...


It's always that "just one more" that gets me ;). I didn't touch another request until the first one had been approved (I refreshed several times over the next two days, just so I could see when it went from open to aac *whistles innocently* I... might have been hooked by that time). At some point between my first and my tenth touch, I must have realized that I was actually in Support because I started hanging around IRC. And OH GOD that very first day. Everyone was nice to me, but I was so shy that it took all my self-control not to give in to my awkwardness and run away. (I was very nervous for absolutely no reason at all.)

Anyway, looking at my first ten requests ([2], [3], [4], [5], [6], [7], [8], [9], [10]), and huh, well I still remember most of these because investigating them drove me half-crazy (but in a good way, similar to how exercising leaves you sweaty and aching and tired, but also relaxed and sleepily content afterwards).

Closest to my heart is number nine *grin*. It was the first stale request I tried, and it's the one that made me realize that sometimes, all that the bottom of the board really needs is a little love and patience ♥. It's also the one which earned me my first privs! *dies* I brought it up in IRC because I felt unsure about how I was supposed to write the answer (it had barely been a week since I left that first screened comment, and I felt seriously out of my depth). I came out of that conversation with a better idea of how to put together a response and I1.5 in Entries. I could see internal comments (ICs)! (I love those little red boxes :D) And after that, I promised myself I'd aim for the ability see ICs in every category I worked in. Heeeeee. I eventually achieved this goal, but not in the way I'd planned.

brief explanation of privs and internal comments )

I discovered early on that I have a knack for diagnostic work. Investigative requests are generally my favorite, because you can start with knowing absolutely nothing about a topic. The hardest part is finding a starting point, but the more complicated a request appears at first glance, the more likely it is that the information you need to know where to start is in there somewhere. After that it's usually a matter of following it through to wherever it takes you. (Well that and making a ton of mistakes along the way.)

One thing I've never told anyone is how FAQ references stressed me out, especially at the very beginning. There were just so many FAQs, in so many different categories, I kept forgetting what stuff was already covered, and what stuff wasn't, and I had to search and double-check my search each time, and since everyone else was familiar with FAQs, I was always too late with my answers. (My first FAQ reference was in comms, a week after I started. My first approved FAQ reference in one of "my" four primary categories came a month later -- this was in Gunk. )

I usually alternate between fiddling with the bottom of the board and working at the top and middle, but this past week, I've found myself devoted almost entirely to this one ljbook-related request. I don't think I've left even one screened anywhere: I've left a couple of ICs here and there, but every time I try to write an answer, I feel impatient because my mind goes back to that request and my concentration is broken. Seeing as I've hit a dead end there, though, I'm thinking of backing away for now and seeing whether I can do any good elsewhere.

I absolutely love doing LiveJournal Support. It lets me work alongside people I respect and adore, help out users, and work on things that interest me. It's also a purely voluntary effort on my end; whenever real life gets in the way, I can stay away for a few days and not have to feel guilty (because everyone else is so amazing yay).

The experience is absolutely amazing -- and here I mean "experience" to refer to both how much I've learned, and to what I've experienced gone through. I'm constantly learning new things from seeing everyone else talk, and occasionally during the course of investigating requests on my own. My latest 'discovery' has been about how the range header works. Not everything I learn is related to LiveJournal, though. The channel has been a very good source of weird links and YouTube videos ;P

Love you all so much! Thanks for making the past six months so wonderful!
afuna_archive: (Default)
I find it interesting that servers respond to the Range header in so many different ways.

My newest toy is a simple Perl script which I wrote to test why certain feeds can't be syndicated on LJ. I've only had a chance to use it twice, but both times the feed couldn't be created because the Range header makes the remote server return 206 (Partial Content) instead of 200 (OK), and each server had a different idea of how it should serve up partial content. And to confuse things even more, some servers return 200(OK) even when the Range header is specified.

First request I tried it with, the remote server returned the feed as a gzipped stream. Second request I tried it with, the server couldn't handle a byte range beyond a certain size (the size of the feed, maybe?); anything larger than that, and it returned 416 (Requested Range Not Satisfiable). I know that the problems with Bad Behaviour are also caused by the range header, but I am not certain about the specifics, other than that it's rejecting the requests because the byte range starts with a 0.

I really should drop this, since there's literally nothing I can do about any of it and there are more productive things I could be doing right now. But. Maybe I'll just check out one more feed if another request about failed feed creation comes in, even if finding out what's wrong isn't likely to help get the feed syndicated.

Enough synning for today! I'm jumping ahead of myself again. I have yet to answer a feed change request where the answer is a simple "yep, valid. Feed changed"; I should get on that soon ;)

Profile

afuna_archive: (Default)
afuna_archive

June 2009

S M T W T F S
  1 2 3 4 5 6
7 8 9 10 11 1213
14151617181920
21222324252627
282930    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 19th, 2017 08:41 pm
Powered by Dreamwidth Studios