Multiple Google Accounts

So as of today I am fed up with how Google Drive handles multiple accounts—hooray for having a ualberta account with unlimited storage! So handy! But wait, if I want to switch between my personal google account and ualberta account, Drive has to re-download all the fricking files?!? No thank you!

And I found a thread from 2012 asking for this feature—mostly people like us, with a work account and a personal account. But no actual solution (a lot of third-party pay solutions).

Relatedly, I’m sick of my calendars being intermingled, my YouTube search history for personal stuff coming up in class when I’m showing AI videos, etc, etc.

I’m setting up multiple users. That’s it. I don’t necessarily like this, but I think Mac handles multiple user accounts better than Google does. I can directly manage permissions between the two users on my laptop, by sharing files and whatnot, without requiring that the files actually be duplicated across Google drive accounts. Because I don’t really want my personal files shared to my school folder, because that is the school’s property.

Presumably then I can switch to my school account for lectures, and swap back to my personal account for general use.

I’ll keep you posted with how this goes.

Advertisements

Leave a comment

Filed under Meta

Birthday Sweaters and How to Avoid Death by Sweater Asphyxiation

It seems to have become almost a tradition by this point that every few (~5) years the stars align, and I have several realizations all at once:

  1. I have a lot of yarn. And this yarn typically comes in two varieties — the “sooooper pretty single skein” and the “20 skein workhorse for a sweater”. The former, I chip away at a little (and replenish a lot) throughout the year but the latter always seems to languish (a cardinal sin when space in the stash is at a premium).
  2. I get so caught up in Christmas/Birthday/Baby knitting that I never (intentionally) knit anything for myself. (I don’t know that too-small-toques-no-one-wants really count as selfish knitting…)
  3. It is my birthday.

The cumulative effect of these three factors is that every few years I get an itch to knit myself a birthday sweater. After a great deal of consideration and consultation with Anna I did what I always do: pick a pattern and yarn with completely opposite gauges. And so I find myself modifying Seacoast — a worsted weight sweater — to work with my fingering weight yarn. (Another trend of the birthday sweater phenomena is that I tend to wind up with projects somehow related to Brooklyn Tweed, but that’s a whole other blog post/ode) (ANOTHER general knitting trend is that I keep picking projects in the finest weight to stash bust with. As if a zillion-hour-single-skein-lace-weight shawl is going to clear out a lot of stash room. BUT SURE, cast it on. Why not?)

Now I’m not a stranger to modifying patterns. In fact, I’m more of a stranger to actually following a pattern… I mean, really, you can’t expect me to NOT add a thumb gusset the colourwork mittens? It’s a matter of comfort. And my inability to not lose a paper pattern. But I digress.

I’ve finally finished the ribbed patterned part of the yoke for Seacoast and I’ve hit some short rows shaping in the back. This is a cute little trick I’ve seen in sweaters before — it’s to prevent sweaters from riding up in the front and giving you that oh-so-comfortable-and-attractive choked look that sweaters sometimes have. I sat down and did some math to figure out how I could replicate the short-row placement intended by the original pattern. (Below is my sad attempt to document the results of said math for future reference.)

sweater_diagram//embedr.flickr.com/assets/client-code.js

But then I got curious and wanted to see if anyone had talked more generally about why this shaping is useful and where best to do it in your sweater design. I mean, it’s not difficult, and it’s something I just know to do so I don’t need instructions. But I was curious if it was something people recognized as a general “technique”. Did this have a name? It’s the kind of thing that I wouldn’t be surprised if Elizabeth Zimmermann had long ago codified the technique into some sort of intuitive ratio system and then it became buried by virtue of being attached to a garment pattern.

Anyways, I haven’t had time to do an exhaustive search of my knitting resource but after trying a few different search terms, google gave me this lovely video by MariaXuxena:

Now, I think I’m in love. This knitter does an excellent job of describing the problem and explaining the logic behind the short-row solution. Looking at some of her other videos, she seems like exactly the kind of knit instructor I would want to be.

I guess after all the story about my birthday sweater, I just wanted to

a) query the knitting hive mind (Or more realistically, Anna) about whether or not there’s a name/existing resource for this little sweater trick

b) share this knitter’s youtube channel

c) annoy Anna by switching from a number based list format to an alphabetic list format mid post

and

d) give a sneak peak of where my birthday sweater is at. And for Anna: yes, there are >450 sts on those needles. Yes, the cable is too small. Yes, I regret certain life decisions. I don’t feel like you can judge :P.

seacost_progress//embedr.flickr.com/assets/client-code.js
 

3 Comments

Filed under Meta

Building building building

Prompted by a recent news story about an inner city business feeling “unsafe” and how we need to consider *everyone’s* safety. She’s more diplomatic than I’m feeling, so I’ll say I’m rather uncomfortable that the white hipster (that’s redundant, isn’t it…) coffee shop gets the fanfare of being the “first business in an LRT station” and a sign of progress downtown that might be harmed by those pesky homeless.

Urbane Adventurer: Amiskwacî

In 2011, I wrote about my maternal Grandpa Croucher’s autobody shop in downtown Edmonton. I was quite small when he sold the family business that his father had built when he settled in Edmonton post-WWI. That business was Albert’s Autobody, which still stands next to the Hope Mission in Edmonton today.

My memories of my granddad grow hazier as the years go on. He died, very suddenly, of a heart attack in my final year of high school. My granddad was a community man. In his retirement, he entertained an endless stream of visitors at his home in Laurier, chatting over cups of coffee on the park bench he set up next to my grandmother’s begonias. In the spring, he grew myriad tomatoes, gerananiums and other plants from seed. Nurtured them into plants that he then gave away to all his friends and neighbours. He was constantly doing that. Giving everything…

View original post 1,317 more words

Leave a comment

Filed under Meta

Viking Toque

There are two words that are strange together. Ah well, Canada is a mosaic, n’est-ce pas?

I thought the pattern was pretty simple, really, but it turns out I add lots of pesky details to things. So it got complicated quick.

Really it’s: make a band that has crochet cast-on/bind-off, seed stitch edges, and bobbles in a stockinette field. Make a hat in 1×1 ribbing, but decrease in a special way. And then the wings, I admit, have a bit going on, but it’s shaped ribs.

Okay, so maybe my idea of simple is no garter-stitch baby scarf after all.

This is not tech-edited or even test knit yet, so let me know if there are mistakes and I will update as necessary. Eventually I will post a pdf.


Viking Toque preamble


Stitches used:

  • Crochet cast-on
  • Seamless crochet join
  • Crochet bind-off
  • Bobbles
  • Various increases and decreases, see abbreviations

Materials:

  • Elastic (optional)
  • Waste yarn in contrasting colour
  • Silver yarn (enough for a hat)
  • Gold yarn (enough for a quarter of the hat)

Abbreviations and definitions:

Work as established: knit the knits and purl the purls.

ktbl – knit through the back loop (create twisted knit stitch)
sl – slip (by default purlwise, leaving the stitch untwisted)
inc – increase in-pattern however you like

yo – yarn over as to knit
(wrap needle such that the leg at the front of the needle is the rightmost leg of the stitch)
yobw – yarn over backwards
(wrap such that the leg at the front of the needle is the leftmost leg of the stitch)
kf&b – without dropping the stitch from the needle, knit into both the front and back leg of the stitch
(creates the effect of an untwisted knit stitch followed by a purl stitch)
kbl – knit into the stitch below the last-worked stitch
(create left-leaning knit increase)
pbl – purl into the stitch below the last-worked stitch
(create left-leaning purl increase—will be right-leaning knit on the other side)
kbr – knit into the stitch below the next stitch to be worked
(create right-leaning knit increase)
pbr – purl into the stitch below the next stitch to be worked
(create right-leaning purl increase—will be left-leaning knit on the other side)

k{2/3}tog – knit 2 or 3 together, as specified
(a right-leaning decrease where the stitches are not twisted)
p{2/3}tog – purl 2 or 3 together, as specified
(create a right-leaning decrease on the stockinette side, technically left-leaning on the purl side but not obvious)
ssk – slip stitch knitwise, knit the next stitch, pass slipped stitch over that knit stitch
(create a left-leaning decrease)
pso – on working needle, pass adjacent stitch over last-worked stitch
(bind off a stitch)

Bobble base:

A 5-stitch, 5-row bobble, worked over 3 rounds, is described. You may use any bobble you prefer. This way of doing it reduces the hole potential and lies a little flatter. But you have to remember to decrease the 3 stitches in the next round of the pattern. It won’t be hard because there will be a big lump of stitches to remind you to decrease, and it is indicated in the pattern.

With right side facing (1 stitch):
Row 1: Without dropping the stitch from the holding needle: k, yo, ktbl, yobw. Drop the stitch and knit once into the stitch below (5 stitches)
Rows 2-4: Work in stockinette, slipping the first stitch of every row         Row 5: Sl1, k2tog, k2tog. (3 stitches)

Seed stitch:

        Purl the knits and knit the purls.

Insert lifeline:

Use a lifeline to mark the round on the hat that you will secure the band too. Do this by stopping at the row indicated, taking a contrasting bit of waste yarn and threading it through the stitches in the row below. I thread it between the ribs so that it lies over the purl columns and under the knit, but it’s not important how you mark it, just that you do—you’ll thank yourself when you are assembling the pieces at the end.

Insert elastic:

Tack elastic ribbon down to the base of the hat where the bottom band will cover it. I’m guessing at three or four equidistant points would be enough that it doesn’t roll but still leaves a little fudge factor.

Fit:

Before assembly, the bottom band should be quite a bit larger than the head it’s made for, while the hat should fit comfortably. Err on the side of looser than you need because the crochet joining reduces the size somewhat and you can easily secure an elastic ribbon between the band and hat to make it a bit tighter. If everything seemed to fit individually but was too tight after you assembled it, try joining the pieces with a larger crochet hook.

Adjustments:

If you want a warmer hat over the ears, you can widen the bottom band by adding more rows of stockinette. Remember to adjust the location of the lifeline in the hat accordingly.

For larger wings, repeat the instructions for the 2nd feather additional times.


Viking Toque Pattern


Bottom band

Bobbles in a field of stockinette bordered by seed stitch with crochet chain cast-on, bind-off, and attachment to the hat.

Setup: With gold yarn, crochet cast-on 132 (120, 108) stitches. Join the last stitch to the base of the first.
Round 1: Knit.
Round 2: K1 p1 until 2 stitches from the end, k1 p2tog (the final stitch of the round and the initial stitch of the round). 131 (119, 107)
Rounds 3-4: Work in seed stitch pattern [k1, p1].
Rounds 5-7: Work in stockinette.
Round 8: K6, work bobble base, [k11, bobble base] x 10 (9, 8), k4
Round 9: K1, k3tog, [k11, k3tog] x 10 (9, 8)
Rounds 10-11: Knit.
Rounds 12-14: Work in seed stitch pattern [k1, p1]. If you are finicky make sure the stitch directly above the bobble is a knit stitch on the first round.
Round 15: Inc1 and knit.
Use crochet bind-off to finish.

Main hat

A simple 1×1 rib hat in a multiple of 12. Use a stretchy cast-on (I used twisted-german cast-on) and decrease to your liking.

Setup: With silver yarn, cast on [using twisted german cast-on] 132 (120, 108) stitches (a multiple of 12).
Round 1: Join, k1 p1 around. Before starting the next round, double-check that the cast-on egde is lying correctly on the needles.
Rounds 2-14: Work in 1×1 rib as established.

Insert lifeline
Continue working in 1×1 rib until hat measures 5″ (4 1/2″, 4″) or desired distance from ear to crown.

Decrease rounds:
Setup: Count 11 (10, 9) from the start of the round and mark that knit column with a removable stitch marker. Count 22 (20, 18) from the marked column and mark that knit column 5 more times.
Between the decrease columns you will work as established: that is, knit the knits and purl the purls.
Round 1: [Work as established to marker column, k, k2tog] x 6, work in pattern to end. 126 (114, 102)
Round 2: Work as established.
Round 3: [Work as established stitch before marker column, ssk] x6, work in pattern to end. 120 (108, 96)
Round 4: Work as established.
You now have 6 sets of 3 knits in a row, with 1×1 rib between.

Repeat rounds 1-4.
Now you are back to 1×1 ribbing all around (96, 84, 72)

Repeat these two sets of decreases until 30 stitches remain, then repeat rounds 1 and 3 until 12 stitches remain. Cut yarn and thread through remaining 12 stitches. Check the fit! It should fit comfortably if a little loosely at this point.

Left wing

With a plain stockinette stem, feathers are created from 2×1 ribs sprouting off the largest edge and using an angled bind-off for the tips.

Setup: With long-tail cast-on 6
Row 1: Sl1, p5
Row 2: Sl1, k5
Row 3: Sl1, p5
Row 4: Sl1, k2, p1, k2
Row 5: Sl1, p1, k1, p3

First feather (increases every other row):
Row 6: Sl1, k2, kbl, p1, k2
Row 7: Sl1, p1, k1, p4
Row 8: Sl1, k2, kbl, k1, p1, k2
Row 7: Sl1, p1, k1, p5
Row 10: Sl1, k1, kf&b, k2, p1, k2
Row 11: Sl1, p1, k1, p2, k1, p3

Second feather (increases every row):
Row 12: Sl1, k2, kbl, p1, k2, p1, k2
Row 13: Sl1, p1, k1, p2, k1, p1, pbr, p3
Row 14: Sl1, k1, kf&b, [k2, p1] x 2, k2
Row 15: Sl1, p1, [k1, p2] x 3, p1

Third feather:
Rows 16-19: Repeat Row 12-15

Rows 20-26: Work in pattern

Small feather edge:
Row 27: Sl1, [p1, pso] x 2, [p2, k1] x 3, p3
Rows 28-31: Work as established.

Regular feather edge:
Row 32: Work as established up to last stitch, leaving last on holding needle. Turn.
Row 33: Sl1, pso, [p1, pso] x 2, work as established to end.
Rows 34-35: Work as established.

Repeat Rows 32-35 three more times.
Pull last stitch to leave a long tail then cut.

Right wing

Mirrors the Left Wing.

Rows 1-3: As for Left Wing
Row 4: Sl1, k1, p1, k3
Row 5: Sl1, p2, k1, p2

Row 6: Sl1, k1, p1, kbr, k2
Row 7: Sl1, p3, k1, p2
Row 8: Sl1, k1, p1, k1, kbr, k2
Row 9: Sl1, p4, k1, p2
Row 10: Sl1, k1, p1, k1, kf&b, k3
Row 11: Sl1, p2, [k1, p2] x 2

Row 12: Sl1, k1, p1, k2, p1, kbr, k3
Row 13: Sl1, p2, pbl, p1, [k1, p2] x 2
Row 14: Sl1, k1, p1, k2, p1, k1, kf&b, k3
Row 15: Sl1, [p2, k1] x 3, p2

Rows 16-25: As for Left Wing

Row 26: Sl1, [k1, pso] x 2, [k2, p1] x 3, k3
Row 27-30: Work as established

Row 31: Work as established up to last stitch, leaving last on holding needle. Turn.
Row 32: Sl1, pso, [k1, pso] x 2, work as established to end.
Rows 33-34: Work as established.

Finish as for left wing.

Finishing

If using wool, wash and block pieces before assembly.

Put toque on willing head and mark position of the wings as desired. But I’ll tell you how I did it.
Sew tip and and stem loosely.

Join the band and toque by slip-stitching the lower leg of the chain cast-on to the loops from the twisted german cast-on that separate each stitch.

Insert elastic as necessary (but double-check the fit, this is where it might have gotten snugger than expected).

Join the top edge of the band by slip-stitching into the top leg of the chain bind-off to the gap just above the lifeline, piercing through the wing stems when/if necessary.

Put a couple stitches in the outside edge of the wings so that they lay flat.

Weave in ends.

Leave a comment

Filed under Crafts

Scholarly analysis of #GG

This is a really interesting explication of the concept of base assumptions with #GamerGate as a worked example.

Some of my favourite high-level bits:

“base assumptions…the things that we don’t even consciously believe because they’re frequently things we’re completely oblivious to.”

They underly what is “normal”, and pulling out and examining what is normal and what assumptions underly that is a worthwhile thing to do.

Reminder: “It’s entirely possible for well-meaning people to create problematic text through action, inattention, or carelessness.” You can think of the text as an independent entity: eg “How does ‘Man of Steel’ feel about the military?”

VERY IMPORTANT: “Every text is political in nature.” It exists in the “normal” and political framework it was created in. “It cannot help but reflect that system, push and pull off of it.”

Apparently I should watch ‘A Pervert’s Guide to Ideology’

At 6:43 starts on GamerGate itself. Good food for thought.

Watch S4E7 – #GamerGate | Folding Ideas Episodes | Entertainment Videos | Blip.

Leave a comment

Filed under Feminism

Mixins, Decorators, and Monkeypatching — oh my!

I’m back contemplating metaprogramming in python and decided to write some thoughts down so they’re easier to examine. The dilemma in this case: there is a class that does mostly what you want, but not all.

Mixins: write a class (without an __init__) with a set of functions that work together (i.e. operate on the same persistant instance). Probably a terrible idea to overwrite any of the __ methods, unless you know the class(es) you want to use it with need it. Good when you have a reason to group some functions together (probably resist the temptation to group things for aesthetic/conceptual reasons). You can use them with classes you write (in combination with existing classes, but not as stand-alone and not without defining a new class). Mixins I find conceptually useful for the idea of adding functionality in nice packages to objects I create. But can create headaches with an exploding namespace and method-resolution order nightmares.

class MIXIN():
        def myFunc1(self, …):
                …
        def myFunc2(self, …):
                …
        …
class myClass(CLASS, MIXIN):
        def __init__(self, …):
                …
        def otherNewFunc(self, …):
                …
myInstance = myClass(…)
myInstance.myFunc1(…)

Decorators instead of Mixins: You can create the same effect with decorators, and apparently it is faster execution. It also makes the inheritance resolution order clearer. But it decouples the functions, so that makes it a little more confusing in the case when the functions are tightly linked.

def add_func1(cls):
        def myFunc1(self, …):
                …
        return type(cls.__name__, (cls, ), {‘myFunc1’: myFunc1})
def add_func2(cls):
        def myFunc2(self, …):
                …
        return type(cls.__name__, (cls, ), {‘myFunc2’: myFunc2})

@add_func1
@add_func2
class myClass(CLASS):
        …

Monkeypatching: write a function as if a class method (“self” is the first argument) and then assign it to the namespace of the class you want to extend. Doesn’t group functions together but does let you add operation to an existing object. I doubt there’s a good reason to monkeypatch your own classes, but if you want to have some new functionality whenever you instantiate an object of an existing type, you have to monkey patch it. Potentially a mighty debugging headache. Future you will be very frustrated if you monkeypatch over existing functions. Monkeypatching lets me add simple functionality that is universally useful to the existing class (in the scope of the current project).

def myFunc(self, …):
        …
CLASS.myFunc = myFunc

myInstance = CLASS(…)
myInstance.myFunc(…)

Utility functions instead of monkeypatching: If you want to retain integrity of classes, write the function as before but instead of “self” as the first argument, use “expectedClass” (replace with a name that hints at the object you expect, just for clarity). Longer to call, but same functionality as monkeypatching, without polluting the object’s namespace. I think I have mostly aesthetic aversion to this. It feels wrong for the “owner” of the functionality to be just another parameter. And gets tricky when the function conceptually modifies the instance. If it’s going to be changing an object, I like it to be in that object’s namespace. Or at least *very* explicitly named. And you have to be consistent on whether this type of thing returns a copy or modifies the original, and copying a lot can be expensive. But if it’s a simple thing that uses the instance variables without modifying them, it’s probably good to do this. Maybe it depends on the nature of the function—is it something generic, or does it “belong” to a certain class in some sense?

def myFunc(myCLASS, …):
        …

myFunc(myInstance, …)

Inheritance: create a brand-new object that inherits from the existing class. Gives you a brand new object type with whatever functionality you decided to add. It groups things together like mixins do, but you can use it stand-alone. You should define __ methods as necessary. Extending an object adds functionality to an existing object, but unlike monkeypatching you have to invoke it specifically—you have the choice of instantiating the old object or the new object. Protects the namespace, easier for debugging. This seems like a good approach, why would I not do this? Probably because it is a lightsaber when a laser pointer will do. Deciding on class hierarchy can get sticky, especially in cases when there isn’t a straightforward inheritance relationship. And because inheritance allows you to override the parent’s methods, so for someone reading your code, seeing you’ve extended a class, means they have to look carefully at code for both the parent and the child. So if there’s no good reason for it to be an entirely new object, it’s probably worth avoiding this.

class myClass(CLASS):
        …
        def __init__(self, …):
                …
        def __repr__(self):
                …
        def myFunc1(self, …):
                …
        def myFunc2(self, …):
                …
myInstance = myClass(…)
myInstance.myFunc1(…)

No final answer, I suspect it’s dependent on the details of the situation. Darn ambiguity.

Mixins vs decorators: decorators, always
Mixin vs composition: Nope, only in little frameworks
Stop making classes: if you have a class with one method besides the __init__, you don’t need a class. If you have a bunch of mutable data and functions that operate on it, you might want a class.
In-depth look at mixins

1 Comment

Filed under Programming

The Problem of Privilege

Random conjectures:

1. Confronting privilege is an inherently unsettling thing. It’s impossible to make someone comfortable when they discover they’ve been playing on easy mode in some areas. It should make you question your skills. It overturns my worldview. Attempts to sugar-coat or reassure people will dull the reality of the situation. This makes it difficult for all involved.

2. A person with minority or non-privileged status in some area is more likely to identify as an individual with that characteristic, because they have been confronting “X people are like this. I am X. I am not like this.” discord their entire lives. A major factor in privilege is that you have internalized that you are the default (Female characters vs characters, religion==Christianity) and so when statements are made singling out the default group, you naturally include yourself in it. Thus outraged cries of #NotAllMen are triggered by any statement that isn’t softened and mitigated (and even some that are).

3. It’s hard to identify with victims. Nobody wants to be a victim— nobody wants to be helpless. (Underdog is fine, but only when there’s a fighting chance). So in any narrative, your instinct is going to be to relate to the characters with the most agency and find things that distance you from the victim. You can consciously counter this, but it takes effort.

This might explain how the thin-skinned, hair-trigger, majority class can throw the biggest tantrums over how “everyone is too easily offended” and political correctness is ruining All The Things without having their heads explode.

Leave a comment

Filed under Feminism