Review of April 25th, 2017

Time-limit to complete post: 30 minutes.

Pencils down at 10:38:35 EDT 2017

Reading the Days Posts

Daily Entry

The formatting of this page is all weird for some reason. Oh, it's because there's a single-spaced indent on all lines. Making each line-break in the markdown filea a line-break in the page.

Fixed.

I used sed to solve a problem with how I incorrectly did tags in these diary posts.

This should probably be a problem statement.

I constantly distracted myself throughout the day. I'm doing it while writing this post, as well. I'll stop, walk away from the computer, and pace thinking about any given thing.

I do not have proper control over my brain right now.

Creating time-limit for this post.

I decided to separate stretching from other exercise, because I like to stretch before exercise, and when I exercise is less predictable because exercise starts via dancing with my wife.

This was a good decision.

I have started the habit of writing notes while watching TV. I'd like to try to start some proper analysis of what I watch.

Vatic Labs Problem-Statement

The first problem-statement of my training regimen. Hopefully the beginning of something very valuable to me.

Vatic Labs Post-Mortem

This will be of use to me next time I tackle the given problem.

Usefule stuff right now from this post:

  • I want to create a project creation recipe
  • I want to create a common speed bottleneck list

Stats

Exercise:

  • Ran 2 miles in over 20 minutes
  • Danced 9 songs in Just Dance
  • Did 4 pull-ups
  • Did a full stretch routine
  • 1-minute plank
  • 1-minute horse stance

Writing:

  • Wrote three diary posts
  • Wrote an argumentative comment on YouTube
  • Wrote a short update email to head-hunter

Watched:

  • Episode of Rick and Morty
  • 2 episodes of Elementary
  • 2 episodes of Iron Fist

Read:

  • Love Joy Feminism blog post
  • Pharyngula blog post
  • Random tweets
  • YouTube comment

Overall

Distractions limited output of the day. Need to work on conquering distractions.

Daily Entry: April 26th, 2017

Wed Apr 26 10:03:34 EDT 2017

So, now that I'm actively planning multiple posts per day, I suppose it is prudent to explain how the daily entry will work.

The daily entry will be the "first" post of the day. However, it'll be updated throughout the day, and I will announce in this post when I've switched to working on other posts.

Other posts will also be updated live to blog, because they aren't serious enough to work on in draft form and then properly publish. However, they will be written in a single go and only edited later if I need to correct mistakes.

Wed Apr 26 10:07:42 EDT 2017

I will now work on yesterday's review.

Wed Apr 26 10:17:13 EDT 2017

After I finish the review, I will make a "find/replace" problem-statement.

Wed Apr 26 10:22:46 EDT 2017

After "find/replace" problem, I will resurrect my 2015 timer. I may even end up using it for my own purposes.

Wed Apr 26 10:30:34 EDT 2017

After timer, create project creation recipe and create common speed bottleneck list.

Wed Apr 26 10:51:39 EDT 2017

Review done, and find/replace problem-statement and first post-mortem done.

Now it's time to resurrect the timer.

Wed Apr 26 11:13:47 EDT 2017

The timer has returned!

Wed Apr 26 11:34:24 EDT 2017

Time to work on the sample test on HackerRank from Two Sigma.

Wed Apr 26 13:21:49 EDT 2017

I am done with sample test (no good problems to keep for training regimen) and the actual Two Sigma test (two problems total, both good short problems).

Am creating problem-statement and saving my solutions before "finishing test".

Actually, I'm not allowed to copy-paste the text, I'll print it to pdf for now and write it in by hand later.

Wed Apr 26 13:35:14 EDT 2017

I'd like to put another hour in towards some form of training, but first I'm going to watch some stuff with family.

Vatic Labs Code Test Post-Mortem

The Problem Statement

Goals of This Post-Mortem

Specifically, I would like to capture stats to use as metrics for comparison against future attempts.

I would also like to mutate the challenge for future attempts, for improvement purposes.

Further, I would like to consider the four questions, Stephan:

  1. What did we do well, that if we don't discuss we might forget?
  2. What did we learn?
  3. What should we do differently next time?
  4. What still puzzles us?

I wish to answers these four questions on this attempt, as well as the process I am creating by repeatedly doing these problems and then post-morteming them.

Stats of Interest

Started: Sun Apr 23 08:30:00 EDT 2017

Ended: Mon Apr 24 08:30:00 EDT 2017

Time to complete task: 24 hours

Tests created for this attempt: 4

End-to-end tests (usable in future attempts): 3

Past test results: N/A

Current test results: all passed

Future test results: N/A

Final result:

  • Passed speed constraint
  • Failed system test
    • Meaning unknown
    • Possibly failed memory constraint
    • Possibly failed implementation

Constraints for next attempt:

  • Same constraints as in problem-statement except:
    • Three hours allotted time to complete task
    • Create larger suite of tests in general
      • Test every edge condition
      • Test every specified constraint of final executable
      • Rewrite end-to-end test such that they run a vatic_code_test executable
        • This will allow end-to-end tests to run against non-python attempts

What did we do well, that if we don't discuss we might forget?

Given the options, I decided to tackle the question in the language I knew best, and, if I had time, then port it to the language I didn't know as well.

I believe this was the correct decision.

I setup my environment pretty quickly, and was even using pylint throughout (caught small errors that might've wasted my time pretty quickly).

What did we learn?

If I am going to take using different editors and IDEs seriously, I have to:

  • note whenever I want something to be different
  • note bad habits
    • make bad habits impossible

Otherwise, I might as well stick to vim.

Pandas is a cool library that I want to get better at.

Printing to stdout is slow! I've learned this multiple times now and I'm now going to create a list of common speed enemies.

Only solve a problem once it is proven to be a problem. Again, learned this multiple times now, but it's a hard habit to break. Specifically, I tried to optimize away rounding error before verifying it would be a problem, and it ended up making my program too slow.

What should we do differently next time?

Git Init

I need to start cultivating a checklist (some people call them recipes and I like that metaphor) for general startup purposes.

I've dabbled in them in the past, and I think it's a good idea to dabble in them again.

But that's really specifically to do something differently next time that I surprisingly forgot to do this time. I did not start my project with:

git init

I didn't even consider properly versioning my code until I was almost done with my first implementation.

Even if my instinct is to make quick prototypes that I delete (more on that later), there's nothing wrong with versioning those prototypes. The repo will be deleted just as easily as the code.

Break It Down, Prototype, Start-Over

The problem was well-defined. I was given input, I was given output.

The problem is not particularly complicated, but it does have layers and many steps.

I needed to define the sub-goals, prototype an answer, get something working, and then redo it so it would naturally be a bit cleaner.

The final product ended up being a lot messier than I would like, probably in part because of my failure to do this.

Super Starting Over

Six hours in, I submitted my first code to see what result I would get.

"Time Limit Exceeded"

I panicked. I reread the problem-statement, I noticed that I was allowed numpy and pandas, and so I started over with the goal of solving the problem using that library.

I'm super glad I did this, but I should not do it again. Not like how I did.

Noting the third-party libraries that are explicitly allowed is ideal, and specifically using those libraries attempts not the first one for the purpose of getting better at those libraries is also a good idea.

Using a new library on a problem I hadn't properly finished before when it was not a requirement was incorrect. Especially since I already had a solution and I hadn't tested it in any way to see how close to fast-enough it was.

The non-working solution I made in pandas ended up over 10x slower than my original attempt.

All I needed to do to make my original program fast enough was save printing to stdout until the very end, and use floats instead of decimal.Decimal.

Had I made the dataset to test the speed of my code first, and tinkered with things to see if I could speed things up, I would've found this out and had time to further debug my code.

What still puzzles us?

How do I make fast pandas code?

I really want to know. Pandas is a library that could be of signficant use to me in future projects, I think.

What test did I fail?

I think it's possible I exceeded the memory limit, but rereading the problem-statement makes me think perhaps I did liquidity wrong.

Things I Should Do in Future Post-Mortems

All right, this post-mortem is taking me long enough. In fact, it's already taken me too long.

Next post-mortem: time-limit of 30 minutes.

I let myself get distracted too often and it wastes a lot of time. I will stop at the 30-minute mark next time. Even if it's in mid-sentence.

If this happens, I'll put a "pencils down" at the end of the post, I guess.

I would also like to make the code I made available.

I'll put it up on github in some way, I think.

"Pencils down."

Daily Entry: April 25th, 2017

Tue Apr 25 10:45:51 EDT 2017

I have posted the problem I worked on two days ago, as well as the company that I was doing it for.

It was going to be a post-mortem, but considering this will be a problem I revisit in the future, I have decided to post the problem itself first, and tag it with training regimen.

I have also realized that I've been doing tags incorrectly so far. Which means it is time to google how to use sed for exactly some specific thing.

Woo.

1
2
3
4
# Fix every tag but the first one
sed -i '/^tags:/s/,\ /\n-\ /g' *
# Fix the first tag
sed -i '/^tags:/s/ /\n-\ /g' *
Tue Apr 25 11:10:00 EDT 2017

Tags fixed.

Woo.

Tue Apr 25 11:23:02 EDT 2017

Really need to start post-mortem, as I also have another code-test today (and hopefully one or more additional training regimens).

Tue Apr 25 12:23:27 EDT 2017

I really needed to stretch first, and I did a lot of pacing inbetween.

Tue Apr 25 12:29:36 EDT 2017

Forgot about foam rolling.

Tue Apr 25 22:12:16 EDT 2017

I did the things. That post is above this one, so you may not notice that I went and updated this post more, Stephan. I'll mention it in the review of the day. Which I think will be separate posts now.

My legs are super thanking me right now. Good decision there.

Tue Apr 25 15:30:40 EDT 2017

Did some watching of TV with family. Now I'll do post-mortem.

Tue Apr 25 15:52:24 EDT 2017

The wife has asked that I resurrect my timer for her own purposes. I will do so after the post-mortem and sample test.

Tue Apr 25 16:37:48 EDT 2017

Post-mortem "done".

Vatic Labs Code Test Problem-Statement

On Sunday, April 23rd, around 0830 EDT, I started a coding test as a part of an application to Vatic Labs.

As far as I can tell, having read everything pretty carefully and thoroughly, I have made no agreement to not discuss or publish the problem. I am repeating the problem here for the purposes of saving it to my training regimen.

This shall be the first of many, I hope.

There will be no commentary in this post, but future commentary on this problem will refer to this post.

The Problem-Statement.

Objective

Your program will analyze quotes and trades and output paired trades. A quotes file describes the prices of several stocks over time, and a trades file lists the inidividual transcations a hypothetical trading firm makes in those stocks.

Quotes File

The quotes file contains:

1
2
3
4
5
6
TIME,SYMBOL,BID,ASK
1,ABC,10.05,10.06
1,DEF,35.95,35.99
2,GHI,76.34,76.42
3,ABC,10.06,10.07
5,DEF,35.97,36.03

Each line represents a quote update (i.e., BID and ASK prices) of the given SYMBOL, and is effective from the given TIME until there is another update for the same SYMBOL. In the above example, the BID and ASK of 10.05 and 10.06 respectively for symbol ABC is valid for times 1 and 2 but the values change to 10.06 and 10.07 beginning at time 3. TIME will always be an int presented in chronological order.

The BID represents the highest price at which market participants are willing to buy and the ASK represents the lowest price at which market participants are willing to sell. The ASK is always strictly greater than the BID.

Trades File

The trades file contains:

1
2
3
4
5
TIME,SYMBOL,SIDE,PRICE,QUANTITY
2,ABC,B,10.06,500
4,DEF,S,35.99,200
4,ABC,S,10.07,200
5,ABC,S,10.07,300

Each line represents a single trade made by a hypothetical firm. A trade contains the SIDE (whether the firm B(ought) or S(old) the SYMBOL), the PRICE of the transaction, and QUANTITY of shares executed. Again, TIME in this file is chronological.

Task Description

For each trade, determine the prevailing bid and ask of the execution, as well as the LIQUIDITY tag of the execution. For a B(uy) execution, the LIQUIDITY is P(assive) if the price is at or below the BID or A(ggressive) if the price is at or above the ASK. For a S(ell) execution, the LIQUIDITY is P(assive) if the price is at or above the ASK or A(ggressive) if the price is at or below the BID. As an example, the first ABC and DEF trades above have LIQUIDITY = A and P respectively.

Form opening-closing trade pairs in a first-in-first-out (FIFO) manner.

  • Every symbol begins with 0 inventory. The first execution will always be an opening trade as it opens new inventory. With ABC, we see an opening trade that creates net inventory = 500 at time 2.
  • If trades occur which increase the magnitude of net inventory (e.g., if another buy were to occur for ABC after the first one) then these new trades are also opening trades and should be maintained in a FIFO structure.
  • Any trade that reduces the magnitude of net inventory (e.g., the 200 share sell at time = 4) will be a closing trade and will pair off with the first available opening trade. Whenever this occurs, a "paired trade" record should be generated in the output file. The magnitude paired off will be the minimum of the shares executed by the paired opening and closing trades. In this example, this paired quantity is 200 shares since 200 < 500.
    • If the closing trade is smaller than the paired opening trade, then the opening trade's open inventory should be reduced but the trade should maintain its FIFO position. In this example, the first opening ABC trade now holds 300 shares remaining.
    • If the closing trade is equal in size to the paired opening trade, then the opening trade is completely consumed.
    • If the closing trade is beigger than the paired opening trade, then it consumes the entire opening trade and proceeds to pair against the next opening trades. Note that this means a single closing trade can pair against multiple opening trades. If one closing trade closes 10 opening trades, then this creates 10 separate "paired trades."
    • Finally, if the closing trade is bigger than the entire open inventory, whatever is left over from the closing trade actually "flips" the inventory and creates a new opening trade on the opposite side. It will wait until a future closing trade to pair against it. For example, a single Sell trade could close five Buy trades as well be itself an opening Sell trade.

For each paired trade, compute the profit and loss (PNL), which is the product of the paired quantity and the per-share PNL (difference between sell price and buy price).

Write all "paired trades" (in any order) to standard output.

Notes

  • The firm can sell short in any SYMBOL, i.e., take a negative position.
  • If a quote update and trade happen at the same time, the quote update takes precedence.
  • There may be some nonzero inventory at the end, i.e., not all trades will be paired. Only print paired trades.
  • You may assume that all prices for testing will have at most two decimal places.
  • Optimize the code for speed without sacrificing readability.

Output Paired Trades

The output you produce should resemble:

1
2
3
OPEN_TIME,CLOSE_TIME,SYMBOL,QUANTITY,PNL,OPEN_SIDE,CLOSE_SIDE,OPEN_PRICE,CLOSE_PRICE,OPEN_BID,CLOSE_BID,OPEN_ASK,CLOSE_ASK,OPEN_LIQUIDITY,CLOSE_LIQUIDITY
2,4,ABC,200,2.00,B,S,10.06,10.07,10.05,10.06,10.06,10.07,A,P
2,5,ABC,300,3.00,B,S,10.06,10.07,10.05,10.06,10.06,10.07,A,P

Constraints

The number of entries in the quotes file is less than 5,000,000.

The number of entries in the trades file is less than 5,000,000.

Time Limit: 20 secs (C++), 60 secs (Python)

Memory Limit: 1 GB

Submission Instructions

Please submit your code in a single compressed tarball (.tgz or .tar.gz) or zip archive within 24 hours of beginning the coding exercise. Your code will be graded based on correctness, efficiency, and style. We expect the coding and implementation to take between 2-4 hours. Please take as much of the remaining time as you want to test, clean, and document your work appropriately.

Upon submitting, the online judge will compile your code and run your program against a series of large test cases. Compilation erros will be made available to you. If your program terminates unexpectedly, you will be provided with the exit code. When your submission is accepted by the online judge, you have completed the assignment and a human grader will evaluate your implementation. You are allowed an unlimited number of submissions in the 24-hour time span.

Grading

C++

We will compile your code using GCC 4.8.2 and run your binary on 64-bit Ubuntu 14.04 LTS. If you choose to develop on an environment different from ours, you are responsible for writing your solution in a portable fashion.

The online judge will extract and compile your code via

1
g++ -std=c++11 -O3 -o vatic_code_test [all .cpp and .cc source files]

Your binary will be run via

1
./vatic_code_test [quotes file] [trade file]

Python

We will run your code using Python 2.7 on 64-bit Ubuntu 14.04 LTS

1
python vatic_code_test.py [quotes file] [trade file]

Please ensure that your script is runnable from the archive root, not from within a subdirectory. Most packages in the Python Standard Library will be available for your use. In addition, we have installed numpy (1.11.1) and pandas (0.19.0). No other third-party packages are allowed.

Attempts

[1]

Daily Entry: April 24th, 2017

Mon Apr 24 11:12:32 EDT 2017

Yesterday did not go according to plan.

It took me 6 hours to get some semblance of working code, and that code didn't run fast enough. I then reread the problem statement, installed the available third-party libraries I could use, and redid the work whilst starting to grok a new library.

When I got that code working hours later... it was an order of magnitude slower than the original code.

I'm pretty excited to learn how to use pandas, and that I made a somewhat working solution with a library I didn't know existed the day before felt pretty good. But making it fast I do not know how to do.

So, this morning, around 0530, 3 hours before the test expired, I went about creating better fake data to test how fast my code ran.

I then tweaked a few things to my original code and suddenly it was fast enough.

Those things were:

  • Printing to stdout in one chunk at the end of the program instead of at each calculated line
    • I should really know better at this point to not do that but I keep forgetting
  • Switching using Decimal objects back to float
    • I didn't need the precision of the Decimal objects, I was being silly using them

Upon submitting the faster code, I no longer got a time-out error, I got a "Failed system test" error. I made some tests to see what I may be doing wrong but couldn't find anything. I may have exceeded memory limitations, though I think the online judge would've told me. I couldn't get my setup to spit out wrong answers with the input I created (though the pandas version certainly did). So, I gathered all the resources I developed in solving the problem, and zipped it all up for one final submission, so that a human grader could get a better idea of everything I did to tackle the problem, if they are so inclined.

Mon Apr 24 11:23:17 EDT 2017

I am so glad I did that coding test, and that I'm starting the interviewing process. Yesterday was engaging, fun, a wake-up call, and inspiration on how to start seriously developing my craft.

Mon Apr 24 11:28:40 EDT 2017

I have, for a while now, been wanting to start developing a list of programming problems to solve regularly. I have not been cultivating any such list.

Yesterday I have secured my first problem that I actively plan to solve regularly, and I'll be copying the problem here later for a variety of reasons.

Today, and tomorrow, I'll be doing a test for a different company I may be interviewing with. Rather, they have a sample test, and then the real test. The real test I will have 3 hours of time to complete. It looks like it'll be multiple questions, including some multiple choice. From here, too, I will probably gather some problems to add to my training regimen.

Also, this test will be through hackerrank, which I will devote some non-zero time to everyday during my funemployment, from now on.

Mon Apr 24 11:34:28 EDT 2017

A long time ago, I lamented to a friend of mine how I felt I was too slow at progress in my profession. He thought on what I said a bit, and asked me, "You like speedrunning, right? Why don't you speedrun work?"

This is a thought that has stuck with me for a long while. And it is an idea I have tried to implement, both with success and failure.

Regularly solving the same set of problems, from scratch, is a very good application of this thought.

With regular new problems, consistently being fast is difficult. I have things I need to learn and research, even relearn and re-research. Time gets eaten up at unexpected places, and the feeling of a "speedrun" is lost. It becomes a grind again. Regularly solving problems I've tackled before, however, and tracking time to completion, gives me a reasonable metric to gauge improvement or decay, and periodically adding new problems to this system allows me to practice getting fast at various types of problems that I can expect to run into again and again.

Thus, I should get faster at random programming projects and problems that come my way.

Mon Apr 24 11:47:01 EDT 2017

This is something I've said before, but getting started was difficult. I didn't know what problems to cultivate, and had no problems already to look at for inspiration on what else I wanted. Beginning the job application process has solved this problem for me. Problems given in interviews are a perfect starting point, and actually doing interviews forces the motivation necessary to do the problem the first time. No looking for other problems because reasons, the random problem given to me is the one I had to solve.

Exactly what I needed to get started.

I think.

I hope.

Mon Apr 24 11:50:46 EDT 2017

Anyways, I want to do a review of yesterday, and in that review, I want to do a post-mortem. I think what I'll do is write a special post just devoted to yesterday's review.

Daily Entry: April 23rd, 2017

Sun Apr 23 07:31:58 EDT 2017

Review incoming soon. Yesterday went very well. I need to start working on coding interview stuff soon, but I think it might be ideal to do yesterday's review first.

Sun Apr 23 07:41:54 EDT 2017

It's cold, so I put on a jacket. Let's do this review thing.

Yesterday Review

Okay, we can start with reading the review I wrote yesterday whilst I write my review.

Sun Apr 23 07:47:06 EDT 2017

Oh, wait, first, gots to go through my tickler. I skipped it the past couple days.

Aw, I missed wishing someone a happy birthday yesterday. That's life.

Oh, wait, yesterday was Saturday and today is Sunday. It'd only really make sense to wish her a happy birthday on a workday. Perhaps I'll call her tomorrow.

Sun Apr 23 07:51:33 EDT 2017

Tickler stuff may be something I want to write about a bit. I'm having a pretty bad habit of throwing stuff into the future that doesn't need to be thrown to the future. I mean, it wouldn't take much effort or time to do the things, and they need to be done. True, there's no priority for them to be done, but they should be done. Today, it makes sense not to do those things (and in fact they had already been thrown to tomorrow), because I need to call people on workdays to do it.

So, I guess what I'm saying is I'm making a promise to myself to actually tackle all the tickler items tomorrow instead of just throwing them into the future.

Sun Apr 23 07:55:26 EDT 2017

Let's actually review yesterday now.

Current editor: VSCode

Future editors and IDEs being considered:

  • Wing IDE 101 version 6.0.x
  • Atom

Exercise of the day:

  • 40 minutes of Just Dance dancing, yeah!
  • 4 sets of pull ups, starting with 3 and then barely being able to do 2 by the end
    • I should probably properly count throughout the day
  • Throwing around lil' cousins throughout the day
  • Some random pushups
  • Some random upside-down pushups (or bridge pushups)
  • Calf stretches

Should've done more stretching overall, especially considering that I thought about how I should repeatedly stretch certain ares to achieve flexibility goals (like being able to do the splits eventually).

Eating habits: I cooked food yesterday! Lots of food. Made vegan pancakes, vegan waffles (an original recipe made from several other waffle recipes and some research into flours), french fries, and ate some food cooked prior (and also some food cooked by the wife).

And also plenty of cereal.

Diet overall yesterday was good. Still more eating sessions than I would like, but I was hungry after throwing lil' kids around all day.

I'm actually surprised I'm not that sore today, thinking on it. Just a little fatigued.

Watched:

  • A bunch of kid's cartoons that I don't remember what they're called (one's a Netflix Original where a girl goes to an imaginary place called Amazia).
  • One episode of Elementary

Rewatching Elementary has been fun. My aunt's not that into the show, however, so I think we may stop watching it soon. Which is too bad. I legit prefer it to Sherlock. Can't wait for the "Everyone" episodes.

Played:

  • About 40 minutes of Just Dance

I've improved a lot, and even the game is noticing (scoring higher on songs). Got my first Superstar two days ago, and repeated that yesterday (same song). Superstar doesn't mean I'm properly good at the dance yet, just means my hand motions are good enough, still got a lot of subtleties to master. That's why I'm recording myself, need to review, and practice specific bits.

Read:

  • Another two posts of Daylight Atheism's review of the Foutainhead
  • Some politics on reddit (not a good habit)
  • Some other random reddit stuff (also not a good habit)
  • Various other blogs and webcomics

Responsibilities:

  • Another solid step on website with some thinking on what to do next
  • Narrowed down version of Wing IDE I'll be playing with

Plan for Today

I don't really need to log the scattered thoughts I had yesterday, because I actually logged them while they were happening, more-or-less. I may want to compile those thoughts and save them somewhere they'll be referenced, but that's something for a weekly review.

....

Wait, should I do a weekly review today? It is Sunday.

Hmmmm....

Let's do it first thing tomorrow, actually. Today will be the end of the week, and I review things first things now.

Sun Apr 23 08:11:06 EDT 2017

All right, it's 0811 EDT right now. I'll be logging into a coding assignment by 0830, I believe. I have 24 hours allotted to complete that coding assignment, but I doubt I'll need so much time. I'll instead allot 3 hours, as that's how much time I'll have for my coding assignment that I'm doing tomorrow.

If that goes well, I'll start setting up Wing IDE and playing with it a bit. Let's say 1230 to 1330 (giving myself an hour break for stuff). After that I'd like to setup a website environment locally to work on it locally and in Wing IDE. 1330-1430.

After that, I'm promising nothing as far as digital work goes. There'll be some dancing and maybe some cooking.

I think that's a good enough plan for today. Going to take a ten minute break to just sit and think.

Sun Apr 23 08:24:27 EDT 2017

I find myself thinking about the "just do it" mantra. Specifically, I have, many times, asked someone how to go about, say, start working on personal projects, and been told to "just do it". I had, even, for a long time told myself similar things.

This is not helpful. Or rather, if I'm at the point where I'm asking how to do something, telling me to "just do it" is not helpful. It's kinda like telling an alcoholic looking for ways to stop to "just stop". Trying to stop comes shortly after admitting alcohol dependency, which many say is "the first step". So, if it were as easy as "just stopping", there'd only be one step to no longer being an alcoholic.

But.

I am beginning to appreciate the logic. One needs to try and then assess what's blocking them. It's just sometimes it seems as though even trying is itself impossible. Like, there's something that needs to be done to make trying possible.

I'm thinking about this because I don't know where to start on some things, but Just Dance helped me start on dancing and perhaps I simply need to make a game out've trying while being bad and clueless at the things I would like to eventually be good at. "Fake it until you make it" if you will.

Sun Apr 23 08:29:34 EDT 2017

Time for the coding challenge.

Sun Apr 23 09:10:20 EDT 2017

Lost some thoughts on the coding challenge because I accidentally broke the connection to my server, so my writing didn't save properly.

It was basically: I want to finish this by 1000, and I'll do it in python first as that's an option. I'd like to port the python to C++ afterwards, because I want to start doing C++ and this is an opportunity, as C++ is the other option. There are some memory and speed constraints, but first I'm focusing on correctness via getting their example output with their example input.

I've downloaded some VSCode extensions for C++ and Python.

Daily Entry: April 22nd, 2017

Sat Apr 22 05:48:04 EDT 2017

All right, so the morning question is: should I do a review of yesterday since I didn't do one last night?

I think the answer is yes.

At the very least, it's good I didn't go straight to playing Legend of Zelda. That's real good. I want to do some stuff first. I also haven't visited any explicit time-wasting sites yet. Let's keep these things going.

I may go eat something first.

Sat Apr 22 05:56:58 EDT 2017

Something eaten.

Sat Apr 22 06:03:01 EDT 2017

Let's reread my previous diary entries a bit.

Yesterday Review

Sat Apr 22 06:13:34 EDT 2017

Current editor: VSCode

Future editors and IDEs being considered:

  • Atom
  • Wing IDE

Current weight: 217 lbs

Exercise of the day:

  • about 8 pull ups across 3 sets

Skipped dancing and stretching yesterday. I should probably start exercising around 1000 EDT today to make sure I don't repeat that mistake. I have been pretty good about dancing. Not so good about stretching. When I feel good, I don't feel like stretching, but I feel good from past weeks of stretching.

Eating habits: lots of Life cereal.

Watched:

  • One episode of Bob's Burgers
  • One episode of Rick and Morty
  • Two episodes of Elementary
  • Bad Moms

Listened to:

  • Digibro After Dark, random content

Read:

  • A few posts of Daylight Atheism's review of Ayn Rand's "The Foutainhead"
  • Today's Love Joy Feminism post

Responsibilities:

  • Planning when to do initial coding tests for job interviews
  • Did small step in Django site

Scattered Thoughts I Remember Having Throughout the Day

Writing this while reading my last scattered thoughts from my last end-of-day review... which is already ten days ago. I just need to work on doing reviews more often.

Need to be more consistent about pull ups! Decided to have my watch beep every hour in the hopes that I'll go do pull ups every time I hear the beep. May also use that hour beep to remind myself to note some random stuff in my diary.

Want to go back to eating one meal a day, but I'm not there yet. I'm making progress on it, though.

I am considering just straight-up writing "scripts" or script drafts for videos I want to make in these diary entries. Perhaps world-building for some fiction I'd like to flesh out if not actually create.

Plan for Today

Sat Apr 22 06:32:09 EDT 2017

I woke up around 0530 EDT, and now it's 0630 EDT. I have my lil' cousins coming over today at some point, and at that point, I probably won't be on the computer for the rest of the day. I also probably won't have any chances to play Zelda, but I can dance while they're here, as they like to dance along.

I'm going to go ask when they'll be arriving.

Sat Apr 22 06:35:07 EDT 2017

They'll be arriving "around noon".

That means I have 5.5 hours of time that could be reasonably time-blocked. The next 10 minutes can be devoted to planning those 5.5 hours.

After this planning, I will devote 2 hours towards the website project. That should be enough time to get everything I need to do before implementing proper users done. And then I can plan on implementing users and using an actual database (well, sqlite3) and stuff sometime next week (Sunday/Monday I'll be doing coding interview stuff).

I'll stop working on website stuff around 0900. I can take a 15 minute break before doing something else. At 0915, I can install Wing IDE and start messing with it and also start playing with pygame again. I'll allot 2 hours to that, but maybe only have energy for 1 hour. I'm severely out of practice focusing, after all.

It'll be about 1115 at this point. I can do an end-of-day review and also plan the rest of the day with the expectation of goofing around with the lil' cousins.

Sat Apr 22 06:47:02 EDT 2017

I was a bit cold so I spent some time under a blanket. Time to work on website. Notes here should be sporadic for the next couple hours (though, when my watch beeps I'll list what exercises I did and maybe some scattered thoughts).

Sat Apr 22 06:59:58 EDT 2017

0700 alarm! Time to do some exercises and jot down some thoughts.

First things first: pull ups.

Sat Apr 22 07:01:38 EDT 2017

Did three pull ups.

Now: plank.

Sat Apr 22 07:05:31 EDT 2017

1 minute 30 second plank. Could've went longer but goal right now isn't to push myself, just to build habit. This has reminded me that I like to listen to music while working. And considering the fact that my uncle is watching news upstairs, this is a good idea for drowning out outside noise.

Sat Apr 22 07:07:14 EDT 2017

Current mood: feeling focused. Feeling pretty good about the work I'm doing. I'm just cleaning up some code for proper use. It was a shell script, want to use it to render some stuff to HTML. Switching print statements to list construction. Simple work, good warmup to difficult stuff if difficult stuff starts happening.

At some point I'm going to want to write tests.

Sat Apr 22 08:19:07 EDT 2017

Got sucked into task, ignored beeping watch. Will now do the hourly exercise and thinking.

Sat Apr 22 08:27:52 EDT 2017

3 pullups (last pullup was really hard and not quite complete, though).

Stretched my calves.

Updated project friend on project progress.

Thinking a bit about what I want to do next.

Sat Apr 22 08:40:39 EDT 2017

Looking into Yodlee a bit to see if I would want to use it. I think it's too soon to think about it.

Sat Apr 22 08:40:59 EDT 2017

I think maybe I should do specific stretches at every hour mark (like how I'm doing pullups every time) to work on flexibility I want. For example, I'd like to do both types of splits eventually, so maybe I should do stretches related to achieving that every hour.

Sat Apr 22 08:41:56 EDT 2017

The next step on my web project is going to take some actual thought and design. Also some research into JavaScript libraries (specifically D3, I think).

Sat Apr 22 08:49:34 EDT 2017

Taking break early. I'm cold and people are upstairs who I can hang with.

Sat Apr 22 09:23:24 EDT 2017

Watched some Discovery Channel with my aunt. It was something I've seen before, a long time ago. Pretty neat.

Sat Apr 22 09:34:25 EDT 2017

Wing IDE play will have to start later, I don't know which version the person I'm working with is using, and I want to use the same version as him to maximize ability to help.

Sat Apr 22 09:49:51 EDT 2017

I think I'll play some Zelda after my 1000 EDT exercise.

Sun Apr 23 07:30:50 EDT 2017

The day went well and mostly according to plan. Review in tomorrow's post.

Daily Entry: April 21st, 2017

Fri Apr 21 12:48:49 EDT 2017

Try, trying again.

Hopefully I'll do an end of day review.

Part of the problem is that my sleep schedule is even less predictable right now. It might be worthwhile to try and do a review the next "morning" instead.

Fri Apr 21 17:02:14 EDT 2017

Sleep should be coming soon.

So, review time, and/or deciding to do stuff as I think about it here.

Fri Apr 21 17:04:24 EDT 2017

I updated VSCode first.

End of Day Review

Fri Apr 21 17:04:34 EDT 2017

So, been super lazy since Easter.

I thought I was over my addiction to The Legend of Zelda: Breath of the Wild was done when I beat the game, but I started over and now I'm playing it like it's a full-time job.

That probably needs to stop.

Fri Apr 21 17:07:35 EDT 2017

I have projects I need to work on that I have done nothing on since Thursday last week. I have, however, been slowly moving forward on job interviews. In fact, I gots myself a coding challenge as a first step to a job. I don't like using that as an excuse.

Fri Apr 21 17:10:36 EDT 2017

I just explained to a friend that that wasn't a valid excuse that I used earlier.

I'm going to get some of that stuff done tomorrow if I don't get it done today.

....

Or right now?

Fri Apr 21 18:22:41 EDT 2017

Right now. Or right then. In any case, I did a simple thing that was a tiny beginning step towards project completion.

Go me.

Back to the Review?

Fri Apr 21 18:55:13 EDT 2017

I might go hang out with family soon. Let me see what the plan is.

Sat Apr 22 05:45:18 EDT 2017

I did indeed hang out with family and then I passed out.

Daily Entry: April 20th, 2017

Thu Apr 20 15:15:03 EDT 2017

Today is my uncle's birthday, so I should call him.

Also, yesterday I forgot to review the day. I'll try to be better about that today.

Fri Apr 21 12:48:08 EDT 2017

I did not review yesterday.

Try, try again.