Learning how to learn … again

I have learned many things. I have also forgotten many things. To avoid the latter, I pay attention to how I do the former.

One of the hardest things to learn how to learn is programming. German? Study. Flip those 1990 3×5 flash cards. Flip through that Duden. Do a junior year abroad in Germany and Austria. Read texts in German. Write to German-speaking friends. Workbooks. Texts. You know. Writing, editing, and proofreading skills? A little study and a lot of doing. Read. Know your style guides. Write a lot. Go over and improve your writing. So much rinse-lather-repeating. There was a lot of learning about < insert topic here > before engaging in < insert aforementioned topic here >, and even then I am learning as I do. I get feedback from those I’m writing to or talking with. I have decades of texts and journals to refer to and learn from. I’m in classes. I have several professors at once. All that worked for me with what I’ve studied before. It does not work for me as I learn programming and coding.

I’ve done two coding boot camps: one focused on front-end development, the other on the MERN stack in a full-stacky sort of way. Please. I hate the term “full-stack” as much as I hate “Renaissance men”. Look. Listen. Look and listen. You can’t be awesome at everything. No. You can’t. No matter what your online dating profile says. If I could, I would another. Why? It’s like cheap uni without the essays. I think of boot camps as flights. Do one. Figure out what you love. Focus. Do another. Isn’t that what we did at university? Go in with one major, take some classes, learn that you love this other topic or get more specific with your major, keep studying. I am not dumping a truck-load of coin at returning to university. Been there; done that. Boot camps were perfect. But like university, they do not last forever. Also, the living conditions are dreadful.

How do I keep learning on my own? I can’t just read my German texts, play Der Die Das games on my iPhone, and watch German language YouTube channels as I knit. It also doesn’t work to take handwritten notes while I watch tutorials. I don’t print out Medium articles to highlight and make notes in the margins. I tried that out of habit. I do think that writing notes by hand while I watch tutorials was incredibly helpful. Writing code by hand? Changing colors to focus my attention to what I need to remember. Or to see how one code block affects another? And just the slower pace of writing all of that down was incredibly helpful. It was also, however, so … stink … ing … sloooooow. Screw that. It helped me a lot, but at a pace that is not sustainable.

Now what? I think I’ve got it. One of my instructors told me that he learned by watching a tutorial three times: Just watch, follow and code along, do solo and refer back when stuck. Yes! Almost. But that works for me. And it helps me to do other things I feel that I miss out on while learning. I’ve put my spin on it. I’ll listen to the tutorial while I knit, fold laundry, chill with my eyes closed. Anything that keeps me listening but not watching. Focus on what is being said. Listen to the new terms. If I am knitting, I’ll just set a timer for 30-40 minutes. Listen to as many sections that fit into that time. Put the yarn away. Do some casual home squats, crack my knuckles, and go back to where started and code along. Do my own version after I’m done or in parallel. I sometimes listen to many sections. Other times I just repeat one until I know it by heart. It depends. Do I need a refresher and a dusting off of brain matter or do I need a deep dive (hello, JWT and PassportJS)? Either way, since I do not have a live human to go to for advice or have call on me when I raise my hand, I just like to listen and listen.

One bonus (or major problem?) is that I talk to them, imitate their voices, or say those -isms they have. Wes Bos has a few. My favourite is “That’s no way to live your life.” Andrew Mead has “How’d you do?” and “And that’s faaantastic!”. I don’t know. I think this repetition also leads to familiarity with the tutor, so they become someone I know and less of a 2D talking head.

I should add that there are some tutors I cannot listen to when I am tired. It is not that they are boring. Not at all. But some voices and talking styles put me to sleep. Lulling, not boring, me to sleep. For them, I have learned to listen while I get ready for bed. Repeat as I fall asleep. Do the work the next day while I have my coffee. I’m not naming that person. I make him sound boring. It’s not. He’s not at all boring; he has taught me a lot. His voice is just mellowing.

Now. Time to get cracking!

 

 

 

ES6 makes the Hokey Pokey easy

As I make my way through various tutorials, some topics stick out more than others. This is especially true for tutorials that cover change. These are different from those that are about a new (to me) language or framework. For those, almost everything is sparkly and sticking out like a neon porcupine. There are the ah-ha moments, short for “Ah-ha, so that’s why this framework came to be needed”, but that’s not the same ah-ha I get when I learn about improvements to something that exists.

I’m following Wes Bos‘s ES6 for Everyone and had to stop for a few days after the section on swapping variables with destructuring. My first reaction was THANK CHEESES! My second was “Srsly, it took them this long to find their inner hatred of var temp?!” I always found this not only to be a pain for the extra lines but also for just the logic. I am all about logic puzzles like the River Crossing problem, but your code shouldn’t be a logic problem. It should be a logical solution.

Out with the old:

let footOut = "left foot";
let footIn = "right foot";
var temp = footOut;
footOut = footIn;
footIn = temp;
"That's no way to live your life!" - Wes Bos (my favourite Bosism)

I hated that. I can see it, but it doesn’t flow when I type it, and it’s never become automatic the way other things have (for-loops, named and anon functions, etc.). If I have to think about it every time, my time is wasted. I majored in German. I can get my head around change like shoving a conjugated verb to the end of a subordinate clause. I don’t need simplicity. I need speed, Ms. Mead. I need a flow, Moe.

Thus spake JavaScrusthra:

let footOut = "left foot";
let footIn = "right foot";
[footOut, footIn] = [footIn, footOut];

Short. Sweet. Complete. If this doesn’t matter to you, imagine writing an app for the Hokey Pokey. Too much? Then a function for shuffling.

Or don’t change at all. Stick with var temp = “Edsel”.

 

State the Rainbow of Fruit Colors

When I first started to learn ReactJS, state and props did my head in. I was learning mounds in a short time. Too short for a visual learner who likes to see the connections. I need time between lecture and homework to do my doodles. I did get it, though, and I learned to love React. I still do, but it is something that fades if I do not keep it up.

After too much time had gone by, I felt insecure with my understanding of state, so I revisited ReactJS with React for Beginners by Wes Bos. My instructors at The Iron Yard were clear and (ERMAHGERD) patient, but they were teaching live, so I could not stop them whenever I wanted, rewind what they said exactly, pause, repeat until I made sure my notes were clear to me. Sure, I could have recorded them myself, but what we see online has been scripted and edited. I want to repeat and review edited lectures. Online tutorials solve that problem for me. I sure miss my instructors helping me via conversation, though. I don’t get that in a tutorial. There are pros and cons to both. Apples and oranges, to use a cliché.

After many viewings of the section on state (clip 13), I was ready to write it out for reference. Although colouful, I crammed too much on a small piece of paper. By the time I realised it, it was too late to plan for scissors and tape. No big deal. The more I do this, the more it sets in.

beforenotes
Problem: State on one wee page

Solution: make state big and colourful like a jacked unicorn at a Skittles factory.

Step 1: Write the finished code in a bluhblah colour. No offense to navy blue. Optional step 1b is to make it look like real screens. If you do step 1b, then it’s mandatory that you do step 1c: quit stalling by colouring.

codedone
Code done: 1 page per js file

Step 2: Get comfy with your lap desk, relegate laptop to your shins, have a sentient being who thinks you hang the moon in case you need the ego boost.

armedandready
Getting read: Tutorial and Audience

Step 3: Go to town with colours, arrow, and notes. Know how you learn and learn that way. I kept my numbers in one colour but used other colours to separate my notes by theme or topic. I highlighted or underlined my code as needed. I gave all of zero rat arses for whether this makes sense to anyone but myself. My brain; my rules.

addfishform
Page 1: AddFishForm.js
app
Page 2: App.js
inventory
Page 3: Inventory.js

Et voilà! I glued and taped the sheets together and used tape to reinforce the edges. I am keeping The State Scroll forever!

afternotes
Final: State all gussied up
 While I was doing this, I got Vanilla Ice stuck in my head (you may have guessed from the start) and had “State state, baby” in my head for a few days. There is really only one way to get it out of my head. This is horrible, but it’s therapy:
Yo, VIP, let’s get it!
State state baby
State state baby
All right stop
Colour-code and listen
State’s not bad but I need intervention.
Something’s off; my notes are unsightly
Then I code like a zombie daily and nightly.
Will I get it?
Yo, I don’t know
Turn off the rules and I’ll flow.
To the extreme, I colour and I doodle
Fill up a page and scribble from my noodle.
Dance
Bum numb. Sittin on cushion.
The bigger the state the sweeter the pushin’.
Deadly, when my app gets stately,
So anyway I learn improves it greatly.
Colour and draw it
This is my own way
I better git push now
Don’t got all day.
React’s state was my problem
So I solved it.
Check out my notes while my colors resolve it:
State state baby. React. Jay. Ess.
State state baby. React. Jay. Ess.
State state baby. React. Jay. Ess.
State state baby. React. Jay. Ess.
Now let’s make an AddForm component

Render return and put a form on it.
Adding refs makes my form breathtaking
They hook up inputs to the object I’m making.

Refs takes in (input) and then fat arrow
this dot name is input, straight n narrow.
And I make an object with this info:
like name colon *this* dot name dot value.

Object is in this form, you know

But it’s not in state, so my App don’t know
Build a constructor()
and quick call super()
Why do that?!
Because you need *this*!
Keep on coding to the next step:
*this* dot ‘n’ state and I’m building me an object.
That state was bare.
Yo so I continued to create one much-needed method.
I update state, spread a copy in a new state,
but it’s not yet there so I update with a setState.
Jealous of this method of mine?
When I started out it was barely more than slime.
Ready for this method and kiss.
Constructor’s acting chill because it’s got bind(this)!
Now props, like a wave they’re swell
They send stuff to state, like a bat from hell.
Addin’ to the child component
make now a prop, this dot method
Bumper to bumper the App file’s packed
I’m moving to the child before my mind goes slack
Props on the scene
You know what I mean
I use props now, between the *this* and method.
React’s state was my problem
So I solved it.
Check out my notes while my colors resolve it:
State state baby. React. Jay. Ess.
Too bad, I’m not a talented poet.
I Googled my rhymes in case you didn’t know it.
AddForm, that created this here smackdown
Gets *this* dot props dot method all around.
‘Cause my style’s like a sewage spill
Queasy dull rhymes worse than a pneumonic drill.
Constructor, props, state:
They’re a hell of a concept.
I make it mine and you want to do your own.
Memories can fade, so I do what I can now.
Save like a git commit so fast
Better young devs say, “damn”
If my rhyme made you pissed.
I would take it on the lam.
Keep my composure when it’s time to code live.
Mesmerised by the job and I might nosedive.
React’s state was my problem,
So I solved it.
Check out my notes while my colors resolve it:
State state baby. React. Jay. Ess.

Yo Katy, let’s get out of here
Word to your developer.
State state baby. No toast. No toast.
State state baby. No toast. No toast.
State state baby. No toast. No toast.
State state baby. No toast. No toast.

I over re-React-ed

A while back, I started this little trip planning app for me: Unscrambled. With my dad diagnosed with acute myeloid leukemia, I was heading to Dallas a lot. I’d always forget something. This was for me in two ways: it solved one of my own problems, and I needed to practice ReactJS. I built it with Webpack. Or started to. I let it go when I got stuck. I wanted to deal with it in React Meet-ups, but not all Meet-ups are equal (the Dallas ReactJS group is stellar). I was also chicken as a junior developer to ask the well seasoned (“Hi. *picks nose* My name is Katy and I like kitties and doggies and sunshine and coding and I maked dis app will you look at it I also eat paste.”). I felt naked and naive, and not in the sexy ingenue portrayed by a dewy French actor sort of way.

Then my stepsister died.

Then my dad died.

I did not want to stop or abandon the project, but I could not concentrate. I can now. Of course, I still miss them, but now I think “Oh, they’d love this” when I design or build. I’m good. I’m sad; I miss them, but I am good.

What was not good was the app. I also wanted to try the Create React App tool so I could avoid the builds. If I let too much time go, I just forget the process: npm do this, cd into this npm do that to build then cd out to save to GitHub. Schtaaahp. I build an app with Webpack and Perk framework before (Critter Sitter) and was happy with it. I just have a simpler app to build. I have no backend. I have a set list of places I stay in Dallas and my packing list is set. Could I build a component to add to my packing list? Sure. But by now, I have that list down. It’s checking it off that matters. Should I want to add a component called AddItem, I will deal with it later.

Version 1 was not even complete when I opted to move it over. I have been following Wes Bos’s React for Beginners (aka Notorious RFB), coding along, then practicing my own in parallel: Teacher show, Katy copy, Katy do her own. It works for me. Next thing I know, it’s late. I’m still excited, but I’m fading physically. I should have gone to bed, but—no—I was going to move it all over when my brain and body were cooked. (Jeenyiss) My old format is not in the same style as Create React App. Of course, it isn’t. I should have taken the time to move one at a time. It’d be like starting over, but the components are already thought out and built. But no. I moved everything over. Not one thing was horrible, but there were many little things that need changing: paths, ES6, …
I am using this:
class SteveBuscemiIsMyMan extends React.Component {render: function(){yada yada yada}}
export default SteveBuscemiIsMyMan;
when before I had this:
export default React.createClass({render: function(){yada yada yada})}

Which brings us to this entertainment center that I use as a bookshelfstoragething. When I got it, I move all my things into and on to it in a day. I didn’t take the time to have a little crowding in order to put the books in the order I want them to and the craft boxes and bags where I want them to be and the knickknacks where they should be. I have had this mess for a long time. I now do a section at a time when I have the time, but looking back, I should have taken the time to slow down and just do it piecemeal.

What I did last night was similar: I over React-ed. Over re-React-ed, really, but that sounds too much like ovary acted.

a messy bookshelf
The gap is for the iMac that’s in the hospital. Fibre crafts, books, computers are my interests. Clearly not television.

I went to bed frustrated and tweeted about it. My frustration, however, was with me. I’ve posted enough about being an adult with ADHD. I won’t go into it, but this is sort of typical. The good news is that I can sit back and plan. Before I went to bed, I started over (again) and did not let my excitement get in the way. I slowed down. I read more (I read before but in the OHMYGODIAMSOEXCITEDTODOTHIS mindset). I moved one component over at a time and dealt with the styling. I’m not done, but I have a plan. I feel guilty tweeting that I found this frustrating. I was not clear. I was the one who was frustrating as well as frustrated. Create React App is a good thing. It’s easy. It’s there for me. It still expects me to calm t.f. down before I start though. They never mention that in the README file.

I do it my way … mostly

I just did a quick game called Egg Fox Feathers (v1) that is my style of Rock Paper Scissors:

Screen Shot 2017-04-02 at 9.24.00 AM
It’s you vs. Farmer Ted.
Screen Shot 2017-04-02 at 9.23.39 AM
Maybe a bit gross.

It’s my first go. I had a lot on my “to-practice” list: Flexbox, ES6, Sketch app. I wanted to keep my JavaScript basic enough so that at least something was “easy”. Well. it grew. Doesn’t it always?

When I came up with the idea, I was just going through old tutorials I did when I was just starting. I saw my old Rock Paper Scissors and figured I could use that but then make results show on the DOM and not just my console or the tutorial’s editor. And it kept growing. I could have kept it to three images and text but no. And as it grew (back away from the Sketch app, Katy), I found that I was repeating myself. Or I felt that I could dry it up. But how? I always refer to K.I.S.S. as Katy Is Super Sizing when I really need to Keep It Simple, Stupid. I’ve sent the code to my instructor in hopes that he’ll come up with something. It’s version 1. I need to remember that and be happy with it. Admire what I do like (my images, using dataset, that I did this in a few days, not weeks) and not beat myself up for I need to improve upon. VERSION ONE, WOMAN! I also know that the way for me to learn is stepping away, asking advice, and moving on to another project. Target fixation is not healthy as a motorcyclist or junior developer.

Now that I have finished this one, what next? I like to do things my way when I’m the boss and employee. And janitor, chauffeur, and kennel keeper. I need to return to ReactJS for little things before I re-tackle my Scrambled app, which is a bigger ReactJS project. I’m thinking about games. Wes Box’s JavaScript30 ends with a Whack-a-mole. I’ve thought about doing that my way:

NAME HOMES ITEM THEME
Whack-a-mole dirt mole amusement
Guac-a-mole bowl guacamole food
Boop-da-Boob breast ball/cyst breast cancer symptoms

I am leaning towards Boop-da-Boob. I won’t let it be a Susan G. Komen thing. I think their lawyers have ruined the organisation. I prefer to incorporate symptoms to the game, not have it be just another pink thing. I’d also like to build something for ovarian cancer (and make it reference Teal Toes in memory or Carey Fitzmaurice) and prostate and testicular cancer. The “embarrassing” cancers need attention. I believe if we make it amusing, it’ll be less awkward.

Another JavaScript30 project was a drum machine. I have never seen a project that so desperately needs to be done my way but sighthound bottoms as drums and noses as cymbals. I have to do it. Tutorials are great, but if I don’t take what I built while someone held my hand, I don’t learn.

Tutorials are great, but if I don’t take what I built while someone held my hand and make something new that is mine and done my way, I don’t learn.

I’m totes into tutes, toots.

tutiebarsI’ve bitten the bullet journal … bullet. I was skeptical at first. Initially, I saw all of these Instagram accounts and bujo posts as the pen-and-paper version of the fit-bods-in-bikinis selfies. And maybe they are. Maybe it’s just proof that we want to look at perfect(ish) versions of whatever we’re trying to do.

I was hauled out of music in the 9th grade and forced to take typing. My teachers had it up to their necks in my scribble. Didn’t help that I couldn’t read my own handwriting when I’d have to read my essay tests to them. Also painful was reading aloud the part where I was boolsheeting just to fill the bluebook. I’ve been typing since 1983 and the world rejoices. Journalling was never for the laptop. That’s this. That’s blogging. I wanted to write on paper. I wanted to write neatly. Yeah. Never going to happen. The bullet journal appeals to me because I don’t have to (hand)write a lot, which is good. I can write neatly if given a short phrase. Very short. Nano. Pico. The first part of a letter. It also appeals to me for the quickness of it all. I could doodle forever. That’s an option. No one says your bujo has to be art. With an audible exhalation, I started one. So far, so good.

I love tutorials. Good ones. Knowing something is not the same as knowing how to teach it. As a former teacher, nothing annoyed me more than the variations of George Bernard Shaw’s “He who can, does. He who cannot, teaches” for many reasons, but there’s the assumption here that those who can could also probably teach. I’m sure you remember several university professors who knew their material but couldn’t make it understandable. They could teach to the Ph.D. students, but not to the first-year students. Basically, they cannot teach. They can discuss. Such a difference.

I see this in tutorials. “I know how to code, so I can teach it.” Maybe, but not if you don’t have the teaching skills, too. And to teach by means of an online tutorial is another type of teaching. There are no faces to let you know if you’re going too fast or have lost them. When I come across a good tutor, I swallow that Kool-Aid. Pay for it? Absolutely. It’s their job. I’m using their product. I didn’t teach 4th graders for free. I don’t expect expert coders to teach me and answer my questions on Slack for free. Respect the talent.

I have yet to discover the perfect way to do more than one. I seem to sample, determine what I’m in the mood for, then binge tute. When they’re over, I get a bit sad the same way I do when I end a series of novels. “Nooooooooo. You can’t leave meeeeeee!”

Now enough blathering on. I have a date with Wes Bos and ES6 for Everyone.

 

 

Sorting, bagging, keeping, and deleting

My dad is the first parent I’ve lost. I always thought grieving a parent would be more like constant crying. If I was alone but not crying, I was doing ok. When I’m in public or talking to others, I probably don’t look any different than I did before. I can fake happiness, but I don’t feel fake by doing so. If I fake it, and you laugh, then I laugh and feel better. Should I say, instead, “acting”?

When I am alone, I expected to be in tears most of the time. I’m not, so I thought this meant that I was on the road to recovery. I had the movie version of grief in my head. It’s all loud and messy. Maybe it is for some, but it isn’t for me. Like drowning. Most people think it’s loud and the struggling swimmer flails her arms about. Drowning is quiet, and that’s what my grief feels like. I look around at books, projects, my laptop, and see only a blur. When I sit down to work on old code or a tutorial, I don’t know where to start. I just stare at the laptop. I have plenty of code to work on. I could tweak. I could redo. I could start over. I could follow #100DaysofCode or do a Wes Bos tutorial. Or I could feel so overwhelmed that I shut the laptop and try to nap.

chocolate and vanilla cake with happy birthday poppa on topMy dad died four days before his birthday. On his birthday, some of the family gathered at my dad and stepmom’s for cake and ice cream. I found my stepmom’s sister in front of a pile of my late stepsister’s costume jewelry. Everything was a mess and dumped in a box. I sat down with her and sorted earrings to find pairs. I started with the larger ones and moved down to smaller studs. As pairs were matched, the pile got smaller. After the earrings, we moved to singles: pendants, rings, brooches. The final challenge was untangling bracelets and necklaces. After a few hours, we had order. We bagged and sorted. We went through and took what we’d like or what reminded us of Mel. The rest would be given to charity, and anything of value would be sold to help fund her sons’ education.

While everything I had been doing before the deaths of my stepsister and my dad might look like a tangled mess, I can get through it if I take a small amount at a time. Re-enter with the easy stuff. No time to prove anything. No one gets a medal for returning to normalcy first. As the simple and small tasks get completed, move on to more complicated tasks and code. Have a clear idea of what I’m working on so that completion is not fuzzy. Vague is not your friend. I have messes, and they need plans.

Mess: code, dev skills

Plan: I’ve reset my 100 Days of Code plan and am abiding by its set of rules. Starting with old homework assignments. Moving to completed code that could use better styling. Return to tutorials. No plan here. If I just do one a day, that’s fine. If I do more, bonus, but one a day is fine now and forever.

Mess: fitness

Plan: 5k to 10k app. Gym 3 days a week. Moving back to 5 days a week. Walking 10 minutes a day moving to 30 or 3×10.

Mess: job applications

Plan: One a day every other day. Moving to 1 a day, 5 days a week. Goal would be 3 a day for 5 days.

Mess: Creative side being ignored

Plan: 15 minutes a day to do something with fiber. Moving to 30 on weekdays and 2 hours on weekends. Slowly. Read fiction before bedtime. Blog once a week. I don’t care what about, just write. Move to 3-5 days a week but not always about coding.

Mess: I miss my dad.

Plan: I don’t know.

Round Two

I don’t know where to begin. My dad was admitted into the ER on 28 January, the day before my stepsister’s service. He passed away on 8 February. Yes. I have lost two family members in less than a month.

While my dad was in hospice, I received a call that a company I applied to would not be moving forward in the interview process. I have never been so happy. It was a good company, but the job was not for me. I was not for them. One clue would be that I did not study before the interview. I couldn’t make time for that company. I made time for Wes Bos, but not for the interview. Oddly, at the time I am trying to tell my dad goodbye and that it was ok to let go, not getting a job was a big relief. It was the only up I had in days and would have for days. Yes, I need stability, but the timing is bad. I get to cry and not beg a new boss to understand.

I need to return to coding tutorials. Grief brain. I have it bad. Tutorials and hand holding are what I need. And this time around, I’m making time to make other things. Before I started to learn HTML, CSS, and JavaScript, I knitted, crocheted, and embroidered. I also read a lot. I think I need to make more time for other creative outlets.

I know. I need to grieve. Trust me. I grieve. Plenty. Lots of tears. So many tears that I’m battling dehydration. Getting back into my coding and job app habits is the return to normalcy I need.

Always, we begin again.

 

Blame it on dessert

Every night I go to bed regretting not blogging about what I’ve learned, done, undone, or relearned in my quest to become the World’s Best Developer (and by World’s Best Developer, I mean South Austin’s Most Middle-aged Change-of-Career Developer).

“There’s  not enough time in the day.” Oh, bullshit. There’s plenty of time in the day.

“I have too much to do.” Again, bovine fecal matter. You’re no different than the rest of the world.

It’s really just that I love dessert most. Sitting down and following a tutorial or coming up with an idea for an app will always be more desirable than job searching or blogging. There’s nothing wrong with the other two just like there’s nothing wrong with a salad and lasagna. It’s just that dessert is better. Desserts make me happy. Coding tutorials make me happy, especially if I find a series that’s well done. I’m working my way through  JavaScript30, ES6 For Everyone, What The Flexbox, and React for Beginners and weighted in that order. I’m hooked! Wes Bos is Boss Applesauce! He’s succinct, funny, and knows his shit. I also like that his tutorials are not edited to where you don’t see his errors. We all make them and need to figure out how to debug.

But I’m getting malnourished from all the tutorials and not enough Job Application Salad and Blogsagna. I have no solution. I’m an adult. I don’t have my parental units keeping me at the table and refusing me desserts. All I know is that my current system of blogging at the end of the day does not work when you stay up too late on tutorials and then crash saying “I’ll blog tomor—zzzz…”

Ta da! I’ve returned to blogging. Now to reward myself with pie.