Let's talk about PERIODS

Look guys (and I use that in the general sense, not in the "directed at males" sense), I know most people are squeamish about periods. I don't know if it's the blood or the vagina that does it, but really now... how old are we? When grown ups blush and get flustered when they stumble on my stash of pads, when friends always look uncomfortable when I complain about cramps or PMS or just generally how annoying it is to have blood dripping from between my legs for three days a month... when the people who manufacture and market "feminine hygiene" products make crinkle-free wrappers because god forbid the person in the stall next to you in a public restroom hears you tearing open a pad or tampon wrapper.

There's something wrong here.

Look guys. Just look. A pad:

And a tampon:

Are they anything to get embarrassed about? Are we really this immature that we get uncomfortable about something that half the population of the entire fucking world has to deal with? I'm forgiving of dudes popping random boners now and then because hey, I understand that you can't always control it. Well guess what? I can't control my periods either. I'm good about them - I don't leave bloody tampons in hallways (mostly 'cus i don't use tampons ;) *), I don't stick used pads on the walls, I don't leave pools of blood on your furniture. So give me a bit of credit here. Don't get that furtive look on your face when I complain that my uterus is being an asshole today. Don't avert your eyes when I bring a box of pads to the counter at WalMart. Forgive me if my protection leaks and I get a spot of blood on my pants. It's all natural and, seriously - if I had the choice I wouldn't get periods, either.

Myths and misconceptions about periods:

Paranoia: The Computer loves you. Unless you're a dirty commie mutant traitor.

Paranoia is a pen & paper role playing game. It's set in the distant future in a society driven underground (into a placed called the Alpha Complex) by a "Big Oops" and controlled by a totally insane, broken AI ("The Computer"). It's one of the few RPGs that are comedic by intent. It also has you looking over your shoulder and watching everything you say. It is an absolute blast to play - I haven't been able to play again since we can't gather enough interested players, but the one occasion I did I got cramps from laughing so much.

The rulebook is apparently a very fun read, though I'm not allowed to read it because having knowledge of the rules is actually illegal and can result in termination of your character. But that's OK, you get 5 more - people come in 6-packs, "because 6-packs make people happy." It makes the gameplay much more fun - you're more likely to take stupid risks and not feel too bad about killing NPCs. Your name is ended with the number of your current clone: Puggles-3 would have died three times, for example.

Players usually play the Computer's troubleshooters - people whose job is to "find trouble - and shoot it." You are typically given a mission by The Computer and have to complete it. At any time the Computer may forget it assigned the mission, or change the requirements (possibly without notifying you) or may give you a conflicting mission to complete at the same time. It may give you missions that are impossible for you to complete because of your security level. In addition to that, most players belong to a secret society and/or are mutants with a special ability that they must hide from The Computer and their teammates. The Computer is deeply paranoid about communists, mutants, The Outside, and secret societies.

Why do Americans insist on being different from the rest of the world?

There is something about Americans that bothers me more than their insistence that capitalism is the best model, more than their rabid patriotism, more than their religiosity... it's that they always insist on doing things differently. It's almost as if they think it is they who set the standards of the world and everyone else is to follow. And yet when you examine the actual world you find that the Americans refuse to conform on so many counts it is just baffling.
In Canada our poor citizens live a schizophrenic life, using International, British and American standards interchangeably due to their influence.

Date format

Seriously, guys, month-day-year? Medium-small-large units of time? Look, I know that in speech we commonly denote the month first, but that's a quirk of English and when written down (for say, accounting purposes) it makes much more sense to follow a logical incremental scheme (or a descending one)

The worst part of the damn thing is that in Canada, you never know if 01/02/2010 is January 2nd or February 1st unless it is explicitly labeled.


Girlcrush: Doe Deere

Doe Deere, the Unicorn Queen
29 / United States / Blogger, Model, Entrepreneur

Doe is the founder of Lime Crime makeup ("So bright it's illegal"), models for her makeup line in addition to other things, and is a lifestyle & fashion blogger. She is passionate about offbeat, colorful and fun clothing and coined the term Candyfuture which describes a style of fashion and a philosophical outlook that means embracing new things... especially bright, sugary, fairytale kinds of things.

Doe seems to be very caring, kind, and silly. She is an icon for people who are trying to be an individual in a society that only wants average. She is not without controversy - there is the usual anonymous cattiness that comes from being well-known, and there was some issues concerning her makeup. But she certainly didn't let it get her down - she's just as bubbly and dreamy as she ever was.

I admire her style - I actually don't like most of it, but I admire that she does it. I like a lot of her old outfits better than her recent things... at some point she basically said "screw pandering to strangers, I'm gonna wear what makes me happy", and it certainly shows! (that's a good thing)

One thing that I particularly like is that she is, essentially, my bodytype. You don't see that a lot in the fashion blogosphere. She's directly acknowledged this in a response to someone asking for advice,

Fun with camera

I got a new dress, the sky was nicely overcast and I spent 30 minutes curling my hair. That means it's picture time.

I maded a story.

About a species given too much power and an individual blinded by love.

Her arms around my neck, green eyes gazing up a me, we slowly circled the dance floor. She pressed her lips against my ear,
“I love you.”
“I love you too.”
“I want you.”
“I need you,” as her white dress brushed the tops of my shoes. More than anything.

She sighed and I lifted my gaze to the rest of the room. Her boyfriend – no, husband now – stood entertaining some subset of her large family. He was a good man – well deserving of her affection and loyalty. He treated her well, which is more than I could say. I inhaled the perfume in her hair.

“Fuck this world,” she mutters.
“And everyone in it” I reply. Her smile is genuine, but it doesn't eliminate the pain in her eyes.

That became our mantra over the following years – a prayer for strength, a chant to ward off the evils of the world. It helped us cope with the inherent unfairness of life. When we danced on the brink of temptation our mantra sobered us and draws us away. Fuck this world.

I don't remember how we met – a party perhaps, maybe in college – but I do know that she was absolutely entrancing. She was fantastically unique, fiercely intelligent and probably more than a little insane. In the following years I followed her around the world like a pathetic puppy as she flit from one place to another, absorbing all the varied cultures the world has to offer. I took jobs in more cities than I can count in order to support my newly adopted nomadic lifestyle. She always seemed to have money and would have happily paid my way but I'm not the type who can sleep at night knowing my bed was paid for by someone else.

Blogger spoiler tags version two: cross-browser

I made my choice about spoilers: blurry text effect for the engines that support it and blocked-out text for those who don't. This way I see pretty things and people using inferior browsers still get a spoiler effect. ;)

Note: This particular version won't show up in feed readers or on Blogger's mobile template. I'll include instructions to get it to work in readers/mobile later!

My code has been modified from the previous, simpler version to be like this:

CSS: (for just plain black spoilers)
/* Spoiler tags*/

.spoiler {
color: black;
text-shadow: 0px 0px 0px #000000;

You do not need the
line if you will only use block spoilers; you must leave it in if you want blur spoilers. Here's what the blocked-out spoilers look like:

Jquery/javascript: (to add functionality for blurry spoilers for the browsers that support it)
if($.browser.mozilla || $.browser.webkit){
     $(&quot;head&quot;).append(&quot;<style type='text/css'>.spoiler{background-color:transparent;color:transparent;text-shadow:0px 0px 5px #000000;}</style>&quot;);

Remember: if you haven't already, you need to include the JQuery library for the above blurry spoilers to work:
<script src='http://code.jquery.com/jquery-latest.min.js'/>

For Blogger Blogs
In Dashboard -> Design -> "Edit HTML"
Find the line "]]></b:skin>" and paste the CSS directly before it.
Then, paste the javascript and jquery line directly after the "]]></b:skin>" tag. That aprt of your template code should now look like,

.spoiler {
color: black;
text-shadow: 0px 0px 0px #000000;


<!-- this is the jquery library -->
<script src='http://code.jquery.com/jquery-latest.min.js'/>

<!-- this is for spoiler tags -->
if($.browser.mozilla || $.browser.webkit){
     $(&quot;head&quot;).append(&quot;<style type='text/css'>.spoiler{background-color:transparent;color:transparent;text-shadow:0px 0px 5px #000000;}</style>&quot;);

As before, the spoiler tags are used like this:
<span class="spoiler"> My secret words </span>

In a blogger blog, you need to be switched to the "Edit HTML" view in the post editor to have the "span" tag work correctly.

It's set up such that by default, all browsers use the black-out approach. I then run the crude little script and if the browser is using the Gecko or Webkit engine, it alters the css of the page so that the class
uses the blur instead. Here's blur spoilers in Firefox:

Screencaps of how the blur text renders in each web browser can be found in my previous post.

Internet Explorer versions under 7 doesn't support
on non-link elements, so the box stays there even on mouse hover. You can either leave things be (people can still reveal the text by simply highlighting it) or you can add hover functionality for IE versions less than 7 using Jquery.

Spoiler tags: Text blur effect with CSS

If your browser supports it, this text will be blurry when not hovered over so you can't know the secret secret things it is saying! (ETA: I've made changes to my spoiler tags so if your browser doesn't support the blur method, you see a black bar)

I decided that I should probably have spoiler tags of some sort, since I plan to talk about sci-fi occasionally. There are a few popular methods of signifying spoilers:

- Add the words "spoiler alert" above the spoilers
- Make the spoiler text the color of the background and let users manually highlight the text to reveal the spoiler
- Have the text hidden in a div and a link "Click here to reveal spoilers." When the link is clicked, set the visibility of the div to be visible.
- Block out the spoilers with a solid color and display text normally on hover (possibly by setting the background-color of the text equal to the text color, then on hover making the background transparent)

My favorite from the above list is the last option. It takes the least amount of user interaction while making it very clear how you reveal the spoilers - you don't have to say "click here" or "highlight here" to reveal the text underneath. If the spoiler color is black you also get a nice "top secret; redacted" feel from the whole thing. ;)

The problem being: I don't like squares. Big ole' blocks of solid color just don't appeal to me. I wanted something smoother, something that would make the text unreadable but that would blend nicely with the surrounding layout and not be jarring. Eventually it hit me: blur. If I could find a way to blur the text to make it unreadable and then reveal the text on hover...

If I wrote a language...

Multidimensional arrays would be stored as arrays of arrays. This is nice for several reasons - one being that large arrays are fragmented. It also makes jagged arrays possible - and jagged arrays are awesomely useful. It also means that since each "row" is just an array (stored as a pointer/reference) you can manipulate the row as an array. You don't have to copy the contents of the row into a new array to get just a subset of the data from the multidimensional array. (I'm looking at you, Excel)

Come to think of it, maybe you'd have the option of using array-of-arrays or contiguous arrays, because you can do some cute stuff if your multidimensional arrays are contiguous in memory. (Apparently C++ does it this way.)

Things They Don't Tell You In CS

The title is a lie because I was, in fact, told this in CS but I don't think it is part of the curriculum, but here it is anyway:

Depending how 2D arrays are represented internally you can have a different performance if you iterate over them differently. If you iterate in a way that does not reflect the way the data is stored internally you may end up flipping between pages more than is strictly necessary. Extreme cases can trigger thrashing. In practice, of course, it is rarely an issue: the working set and amounts of data in most programs doesn't get large enough for this to be anything but an insignificant performance hit; although it can noticeably improve the speed of matrix operations on a large matrix stored as a 2d array.

For example, many languages store multidimensional arrays in contiguous data blocks row-by-row. So an nxm 2D array would be stored in a block of memory that is n x m x elementSize.
IE the 2D array conceptualized by the matrix
1  2  3  4  5
6  7  8  9  10
11 12 13 14 15
would be stored internally like {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15}.

Let's say that we're iterating over our matrix above. Suppose that the values 1 through 8 are on one page1 and the values 9 through 15 are on page2 and that either page1 OR page2 can be in memory, but not both, due to memory constraints such as too few frames available to use the full working set. Ignoring the terrible simplicity of this scenario which fails to take into account more intelligent paging algorithms and modern RAM amounts, we can actually have a notable performance difference between these two psuedocode loops:

for i = 0 to numRows {
   for k = 0 to numColumns {
       myArray(i,k) = myArray(i,k) * 2;

for k = 0 to numColumns{
   for i = 0 to numRows{
      myArray(i,k) = myArray(i,k) * 2;

In the first version, we would have an execution like this:
1 2 3 4 5 6 7 8     (page fault to page2) 
9 10 11 12 13 14 15
while the second loop would have something like this:
1 6   (page fault to page2) 
11    (page fault to page1) 
2 7   (page fault to page2) 
12    (page fault to page1) 
3 8   (page fault to page2) 
13    (page fault to page1) 
4 9   (page fault to page2)
14    (page fault to page1)
5     (page fault to page2)
10 15
in this example, we can avoid 8 page faults by simply reversing our inner and outer loops - we can get a performance boost by changing nothing about the scenario, architecture or programming language.

Moral of the story is that there is lots of room for optimization with arrays and that it pays to know how your programming language handles data structures internally and make intelligent design choices with that in mind.

Minecraft will pixelize your soul

Canada is number 1 in Minecraft

I held off buying Minecraft for a while, because, while it looked interesting, it didn't seem that interesting. All that changed when I found out you could make custom skins.

Minecraft is a currently-in-development indie game that is built around, well, mining. There's a lot of neat features being implemented daily, as the developer has recently switched from spare-time development to full-time development. You can follow the development blog here.


Whiskers :3

Gender neutral pronouns

There is one, giant gaping hole in the generally shoddy coverage of the English language that we really need to mend: the absolute lack of gender neutral pronouns.

Most people don't seem to be bothered by our lack of neutral pronouns, but I can certainly say they have frustrated me as both a writer and a feminist for some time. You almost cannot speak about a person without knowing or revealing their gender even when it is entirely irrelevant! If I want to talk about one of my friend possessions, I don't see why I need to specify that that friend is female or male: "It's her car" or "It's his watch". My friend's car and watch still belong to them regardless of what gender they are so why do we have to specify it?

It just highlights how gender-obsessed our society is that we have to form our sentences that way. A good friend of mine has said before they "like to fuck with people" by neglecting to identify the gender of their friends when they talk about them. I find myself fighting with the language to write natural-sounding but gender-neutral advice, especially when the advice is romantic or sexual. I use the word partner and have to pay a lot of attention of my phrasing so things don't sound clunky. I have to do that because I don't always know the gender of the person I am addressing or the gender of their partner - because of course I cannot deduce the gender of the partner by knowing the gender of the person being addressed.

On "The real Life Social Network V2"

A great slideshow prepared by Google's Paul Adams who works on things like Google Buzz and has lots of research into social networking's users.
There are some fascinating things in there to discuss. I think I'll start with my one gripe:
The problem is that the social networks weʼre creating online donʼt match the social networks we already have offline.
Everyone being shoved into this big bucket. People donʼt have one group of friends.
People have multiple independent groups of friends. Offline people have multiple groups of friends that form around life stages and shared experiences.
I agree that real life social networks are complex and segregated. You act differently around your friends, family, co-workers and hobby-sharers and many social networking applications don't let you manage these people in the most ideal way. But it seems as if this presentation suggests that you outright cannot even begin to organize your contacts in any meaningful way - which just isn't true. Here's two examples I use daily:

I'm normally not one to defend Facebook, but I'm honestly tired of people complaining about its security management. Facebook's newest update to privacy features makes it very flexible and customizable, you just have to play with it a little. At the moment I am quite pleased with my Facebook settings. You can fairly easily group Facebook friends into groups (called "lists") These groups are particularly useful in privacy settings! I have a few lists I actively use:

Luna Moth

Not today but at least this summer:

So I was cleaning out my pictures folder...

...And I found something I made once.

Formatting Excel Charts Automatically

The final product of my most recent work has been taking a chart like this


of any size or values (Since they're measuring distance, it can be in meters or lat/long) and turning it into this


There's a fair amount of work that gets done, but here's the main routine:

With myChart
        .Axes(xlCategory).HasTitle = True
        .Axes(xlValue).HasTitle = True
        If meters Then
            .Axes(xlCategory).AxisTitle.Text = "Easting (meters)"
            .Axes(xlValue).AxisTitle.Text = "Northing (meters)"
        Else 'latitude and longitude
            .Axes(xlCategory).AxisTitle.Text = "Longitude (degrees)"
            .Axes(xlValue).AxisTitle.Text = "Latitude (degrees)"
        End If
    End With
        Call FormatPlot.makePlotSquare(myChart, meters, xMin, yMin, optQuadrant1.value)
        If Not meters Then
            Call FormatPlot.DDLabelsToDMS(myChart, xlValue)
            Call FormatPlot.DDLabelsToDMS(myChart, xlCategory)
        End If

    '---Color the plot:
    Call FormatPlot.ColorPlot(myChart, _
        gridColor:=myGridColor, plotColor:=myPlotColor)

    '---lock the chart so users can't change or move it
    myChart.ProtectSelection = True

Things They Don't Tell You In CS

If you're trying to do something that seems really easy but all your implementations are inexplicably complex, try doing your process in reverse. This commonly comes up when working with some array types where it is easier to add and remove things to the end rather than the beginning.
We often conceptualize things in a beginning-to-end manner, even though a logical implementation would be faster or less complex if we start at the end (of, say, an array) and move backward (to the beginning element).

VB does a FEW things right...

If I wrote a language it would...

- Be strongly typed (sorry guys) but have a "generic" variable type for those special cases (you're welcome). For example, arrays of generics would allow you to pass back multiple results.
- Have a final keyword (a la Java) that would let you set the variable once and then make it read-only. Constants are close but you have to know it at compile time... and I mean really, who knows what the user wants at compile time?
- Only have one Null type - it would be the same for uninitialized variables, deallocated variables, primitives, empty strings AND objects. *fist shake*

Find last used cell in Excel with VBA

A few common requirement in VBA Excel is to find the last used row on a sheet. There are a few different ways to do this, but unfortunately only one works consistently (In Excel '03; I haven't tested in any other versions)

If you use the most common approach of
to count the last row of data in a sheet, you will get the wrong row value if there are blank rows anywhere before the first used row.
For example, put a value in a cell on row 10 of a blank worksheet and use ActiveSheet.UsedRange.Rows.Count . You will get "1" instead of "10".

Some people use
ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row -1
but this will count down to any formatted cell after cells with content in them. For example, put a value in cell A10 and then change the fill color of cell A20. This method will return "20" instead of "10"

If you use
as is also commonly suggested, you will also get improper values under some circumstances. xlCellTypeLastCell seems to track NOT a cell that has a value in it, but cells that have been modified.

For example, put a value in cell A1 and run
msgbox ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).row
from a macro. Then select any cell below that and go Edit->Clear->All and run the macro again. The last row value returned will now be whatever the cleared cell's row was.

I use a method provided here; I have not yet found a situation where it has failed to give the proper result of the last cell with content in it, regardless of formatting:
ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, _
You can compare results yourself with this simple subroutine, ran on a new worksheet:
ActiveSheet.Cells(10, 1).Value = "test"
    MsgBox ActiveSheet.UsedRange.Rows.Count
    ActiveSheet.Cells(1, 1).Value = "Blah"
    ActiveSheet.Cells(2, 1).Value = "hai"
    ActiveSheet.Cells(10, 1).Clear
    MsgBox ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    ActiveSheet.Cells(8, 1).Interior.Color = 0
    MsgBox ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1
    ActiveSheet.Cells(5, 1).Value = "Whee"
    MsgBox ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

I can confirm that the above is true and works with Excel 03; I am unable to test other versions.

Star Wars is not Science Fiction

Star Wars is not science fiction.

It’s a small point – an irrelevant point, many would say – but it’s something that’s been bothering me for a long time. In no way (except one) are the Star Wars movies at all related to the realm of science fiction. It involves spaceships and some advanced technology. For a layperson I guess that is enough to make it sci-fi. But geeks should know better.

True science fiction usually serves one purpose– exploring the impact of technology (or more broad scientific discoveries) on society or the individual - although the technology may be unlike anything we consider to be technology today. Science fiction is science based. Science is used as a plot device, either explanatory or as a setting or as the driving force to the story. In many ways the Steampunk genre is more science-fiction than Star Wars would ever be. The technology in Star Wars is rarely discussed and if you were to replace it with analogues the story would still stay mostly intact.

We are actually quite bad at classifying science fiction and fantasy. For example, many comic books have, at one point or another, played with science (or pseudoscience). The Hulk, the Flash, the Fantastic Four, X-Men, even Superman is more sci-fi than things that are considered “classic” examples of sci-fi. This is probably due to the fact that in the young origins of science fiction, anything related to “space” was automatically related to science. We’ve grown accustomed to the idea of space – it is no longer simply the realm of science. We can now think about alien cultures and races in a non-scientific context, so we should be able to throw away the immediate sci-fi classification for anything involving interplanetary travel.

So if Star Wars isn’t sci-fi, what is it? Well, ignore the setting and explore the plot: we have a mysterious and unexplained force (literally, The Force), a set of wise and powerful wizards who can use it, some evil wizards and their followers bent on domination and destruction, a rag-tag band of heroes who must mature and discover their talents, politics, romance, a generation-spanning story, and lots of epic battles. Replace light sabers with swords, alien races with mythical ones, planets with “lands”, Clones with an endless horde of summoned minions and some technology with magic and you get a classic fantasy story. The best genre would actually be something like: space epic; space opera; space fantasy. But not ever science fiction.

So what can I do about it? Well, my small silent protest is to refuse to tag Star Wars related things as "sci-fi" on my tumblr (instead it falls under the general "geeky" tag) and from now on I'll use logic on people who call Star Wars science fiction until they give in.
Copyright 2012 Phile not Found. See About
Powered by Blogger

"Whenever you find that you are on the side of the majority, it is time to pause and reflect."