Author Archives: Chris Kottmyer

Not Everything Appears as It Seems – Lessons on Computing from an ex-Strategy Consultant

How to confuse a spouse new to programming!  A two-step guide!

My wife looks over my shoulder a bit confused.  I’m working on a final project for my Node.js class (7th iteration) and she’s been watching since the first iteration.  This is what she sees:

She asks me calmly!

“Why does it seem like every time I look at your Taskitty application [Task tracking App] it seems to look the same or occasionally looks worse?  I feel like you are procrastinating.  Maybe stop playing video games or watching TV.”

I’m a bit stunned.  I’ve been putting a ton of work in the class.  Easily a dozen or so hours per week on top of my typical work schedule.  Then I realize something spectacular.  1. The entire class is iterative and 2. the professor doesn’t care how it looks in the browser (front-end web development).  He wants us to focus on learning different frameworks and is fine with us replicating the same overall and feel.

The best analogy.  Imagine talking to a neighbor and finding out he’s put a ton of work into his house recently.  You look at the exterior and think “It looks like it’s actually deteriorating a bit.  A little bit of the siding is coming off and some of the wood seems a bit rotten”.  He than mentions that all his time has been focused on interior design and a kitchen remodel.  It’s that aha moment.

My wife was watching the exterior of the website, but was clueless that the kitchen and bathroom had been remodeled.  In fact, in my case the entire internals had been replaced without her even noticing.

The house before remodeling!

In the above cases, both version 4 and the final version of Taskitty are quiet large.  The first version uses a framework called Express that uses routers and templates to create the presentation.  The best way to describe it is the diagram below:

Your browser requests a web page from my server.  The server uses a router to find a template for the web page.  It fills in the blank parts of the template using information from a database and also cookies/session information.

Two important things to note:

  1. Everything happens on  my server, each web page has it’s own template with it’s own fill in the blank variables.
  2. When my server is done it sends the entire newly formed html document to your browser via the internet.
  3. Every web page requires you to contact my server first and all the processing happens on my server.

What changed inside the house!

The final version looks similar on the surface, but how it arrives to the same conclusion is completely different.  Here is the diagram of how it works:

In the above case, the browser requests a page from my server.  My server sends a single web page bundled with a ton of components and JavaScriptThe single page application (SPA) sets up a router on your browser using JavaScript, which than selectively picks and chooses components to create a web page.  It can also independently call the database for more information.  Once the router has finished picking the components and getting data from the database it modifies the single HTML web page that was sent and renders it for you in your web browser.  You can than use the router to reconfigure the web page as many times as you desire.

There are some huge implications here:

  1. When you first contact my server, you have to download not just a web page, but all the components and logic of the website.  That can be a very large initial download.  So the first connection is a bit slow.
  2. Once the web page and website logic exists on your browser, the only time you have to reach out to my server is to contact the database.  You can almost run the application without an internet connection.  That can really speed up the experience since internet connections are slow compared to your computers resources (usually).
  3. By shipping components, I can re-use them across web pages.  This safes a lot of time.

The house walls are still an ugly Green!

My wife of course doesn’t have access to the code or knows how the internals work by looking at what the website generated.  She just sees the same old web page unchanged iteration after iteration.  The only thing she might notice is that the later web page feels faster and seems to function smoothly.  She can easily take this for granted, because both sites are relatively fast.

I think this is one way a developer’s experience can be divorced from an end user.  Sometimes we make huge changes, but things that are visible don’t change drastically.  So it appears no work has happened.

The “SQL” strikes back!

About 3 months after the class, my wife decides to be ambitious and start a class on Excel, SQL and Tableau.  One day, I watch her getting frustrated.  She tells me:

“I keep trying out these SQL commands in this database.  Every single time it tells me the function doesn’t exist.  I’ve tried different things and googled the message for the last 4 hours.  Nothing seems to solve it.”

Trying to be a helping hand and having done SQL for almost a decade.  I decide to look into the issue for her.  The first thing I ask is what SQL database she is running.  She tells me the class is in PostgreSQL.

She types SQL into a web page.  Runs it.  It works.  She opens up a SQL client on her computer.  Types the same thing in.  It tells her the function doesn’t exist.

My first gut reaction is she’s running an older version of the database.  So I tell her to type: select version().  That should tell me what version of postgreSQL she is running.

Version() doesn’t exist!

Yes, the database tells me even the Version() function doesn’t exist.  Now, I’m on high alert.  It’s either a very old database from several decades back, which is nonsensical.  The firm she’s taking the course from is less than a decade old.  Alternatively, she’s using another database.

I google the error message by itself.  The first thing that pops up on Google.  SQLite.  So I ask my wife to try:

select sqlite_version();

She tells me it works!  What does it mean?

My wife’s website was in PostgreSQL and the one on her laptop was SQLite.  Postgres and SQLite have different functions for the same tasks.  So the SQL from postgres will often error out in SQLite.  The same is true in reverse.

Mystery solved!

Except, my wife is now more confused than ever.

  1.  She now realizes there are different SQL databases.
  2. She doesn’t understand why they would teach Postgres and give a SQLite test database for practice.

I don’t blame her.  It’s very confusing.

Possible reasoning?

Having spent a lot of time in Postgres and having taken a few dozen courses/tutorials in Python.  I realized I might know the answer.  SQLite is a database with a small footprint often used in IOT devices.  You can easily download it as a single file.  Postgres on the other hand requires an installer, setting up a database/users and creating tables.  You can definitely bundle it up and ship it as a single file if you are clever about it (docker etc), but it’s much more complicated.

The problem in this courses case is communication.  They should have made it clear that the databases weren’t the same.  That the reason they use SQLite for practice is it’s much easier to set up.  The only thing the students would have to do is google SQLite functions when using it.

Two things, both different, both look similar!

Here ends the tale of two confusingly superficially similar things, which are actually completely different.  Lesson things that look the same might be completely different.  Communicating those differences can have a huge impact on user experience and prevent you from looking like a couch potato.

Web Certificate – 7 Days Left

 

7 Days until the Start of the End

Another personal update!

I have 7-days left of my month long “vacation” from school.  This is the start of the end of my Harvard Extension School – Front-end Web Development certificate.  I will take a class that perfectly sums my last year: 50% Data Science and 50% web development.  The class is called: building interactive Web Applications for Data Science.  I’m concurrently working towards a Masters in Analytics at Georgia Tech, which will become the main focus afterwards.

What I’ve built so far!

CSCI E-12 – Fundamentals of Website Development:

  1. The final project combined flexbox, media queries, jquery/javascript and light boxes.  I had to do some wire-framing and learn a bit about UX.

CSCI E-33A – Web Programming with Python and JavaScript: 

  1. Pokemon Listing website  – pokemon list and coding documentation containing basic HTML, CSS, SCSS and JavaScript
  2. Bookstore with Search:  Book listing for book store with search done in a mix of SQL, Flask and HTML/CSS.
  3. Slack Clone (Chat): Chat messenger that looks exactly like Slack using a mix of Flask and socket.io.
  4. Pizza Shop – E-commerce: This is a Pizza shop application with a shopping cart built with a mix of Django and Django forms.
  5. Property Management App: This is a property management app.  Search houses in Zillow, add them to your properties and watch monthly mortgage payments/interest auto-calculated including payment schedule.  Built using Django and calling Zillow API.

CSCI E-31 – Web Application Development using Node.js

  1. Task Tracking Application: this was incrementally built starting with a static Express application in Node.js, adding MongoDB as the data source, restful apis for task data and finally converting the front-end to use Angular.js.

What’s Next?

building interactive Web Applications for Data Science combines my interest in Data Science and Data Analytics with recent skills I’ve acquired in web development.  The class focuses on Flask deployed to AWS via Docker.  It requires the student to build Machine Learning models and use D3.js that interact with the Web Application.  This should be interesting.

This ties into 2 other classes I’ve taken at Georgia Tech: CSE – 6040 – Intro to Computing for Data Analysis and ISYE 6501 – Intro to Analytics Modeling.  First class explores Python, Pandas, Numpy and Machine Learning implementation.  Later focuses on analytics techniques and introduces around a dozen different type of models.  6501 coding in R.

Fall Term!

Fall term is approaching.  I will be focusing exclusively on my Masters of Analytics outside of work.  Two courses I will be taking: Data Visual Analytics and Simulations.  The former involves a survey of different data-related technologies: Python, D3.js, Spark/Hadoop, SQL-databases.  The later is theoretical with a focus more on the math.  It involves building a few simulations in Arena and Python.  The Data Visual Analytics course is renown for being time-intensive and difficult.  More so, those with little programming experience.

Other Technologies!

Typically, I don’t talk much about things outside of class!  That said, I did get to pick up and implement docker within a codebuild environment.  Build a continuous integration and development system.  That was pretty cool.  I’ve also been reading up on new data technologies: Spark, Presto etc.  During my 1-month break have implemented a Spark cluster on an EC2 instance that contains Jupyter and used my “micro” cluster to try out Spark’s official Machine Learning documentation.  I’ve been wanting to try it out.

Overall, I’m personally trying to push myself towards trying new things out.  Just implementing more things from scratch.  It’s part of stretching some of my new found skills in Linux Administration gained over the last few years.  Also a general interest in learning more about Devops technologies on the side.

Always stay true to yourself and explore this world!  Life is to short to wait for it to pass you by!

Best,

Chris

2020 – Education Overload

Georgia Tech

Georgia Tech

Education overload: 2019-2020.  That should be a life headline.  Before 2 years ago, I picked up new technologies by: reading a few books, scouring the internet for tutorials and than building a bunch of prototypes.  It worked.  But! I’ve always wanted to try graduate school and I wanted to do it on a topic I struggle with: Math.

why math?

math blackboard

math on blackboard

This is part past history and part recent struggle.

In college, I rapidly switched between: chemistry, mathematics, international relations and than economics.  I even threw in some art courses: drawing and painting.  The class that “got away” was always math.  It’s my ultimate “what-if”, had I stuck with it where would I be today.  I’m not sure I would be more successful, but it still interests me.

The second part is recent struggle.  I’ve read a few books on different math topics over the last 10 years: probability theory, statistics, machine learning and game theory.  I’ve even taken an intermediate statistics course, I skipped the pre-requisites due to cockiness (which quickly resolved itself over the next few classes).  The problem learning was never consistent and sustained.  There was always the next best opportunity, Computer Science, staring at me when I struggled with a math equation or theory.

Graduate school kills two birds with 1 stone: that nagging what-if question and the natural instinct to pick up an easier topic in computer science when the math gets hard.

stupidity’s name is ambition…

coffee

coffee

My coping mechanism to experiencing change is to rapidly increase the pace of change.  I partially blame my coffee addiction: rapid heart-beat, high energy, high tempo.  Love that coffee high.  Love how change generates an adrenaline rush.  Same problem, different skin.

I bought a house December 2019.  I got married the following June.  Once those two events kicked off, I got an adrenaline rush from the change.  I folded, applied for both the Computer Science and Analytics Masters at Georgia Tech.  Meanwhile, I couldn’t stay still and picked up two courses in web development over Fall/Summer 2019 at Harvard Extension School and got Linux certified.

Ambition leads to the: “Education Plan”.  A “5-year” style plan reformatted into a 3-year format.  Now, I can keep myself busy for the next 3 years.  Fun.

the “Plan”

grand plan

the grand plan

What did the education plan do?  It formalized the Masters in Analytics as a 3-year goal by breaking it down into 2 classes per semester (that in task master driven manner I’ve kept to).  Converted the 2 Harvard Web Courses into a Front-end web development certificate due Summer 2020.  Finally, listed a bunch of “optional” certificates to pursue.  You know, just in case I had enough free-time.

how’s that been going for you?

I’m finishing up my 3rd course at both Georgia Tech and at Harvard Extension School.  So far, I’ve done since May 2019 (currently March 2020):

Georgia Tech Master of Analytics:

  1. Business Fundamentals for Analytics
  2. Computing for Data Analytics
  3. Introduction to Statistical Modeling

Harvard Extension School:

  1. Fundamentals of Website Development
  2. Web Programming in Python and JavaScript
  3. Web Application programming in Node.js

All I can say, It has been busy.  I’ve been studying 10-20 hours every week since May 2019.  My only break has been December for 2-3 weeks.  It’s been a relentless march of progress.  I’ve been tired, stressed and also had fun.  Overall, I feel like all my free-time has been sucked out of my life.  I’ve really started cherishing relaxed weekends and time with friends/family more.

how to cope?

stress

how to deal with stress?

Golden rules for studying 2 courses at a time, working full-time and also having time for family/friends (as well as 2 work out sessions a week): do as much as possible as early as possible, schedule things in advance, schedule vacation during school holidays and take frequent breaks.

1.  Do things as early as possible

Your worst enemy is procrastination.  Procrastination leads to late nights studying, finishing up projects or work assignments.  Late nights are not sustainable.  You will sooner or later pay for them by either: resting/recovering for long times (you don’t have time), limiting time with friends/Spouse (stress/psychological relief) or experiencing increased amounts of stress (bad for dealing with people).  The trick: be super proactive about everything.

2.  Scheduling things in advance

Try to put things on the book or on your schedule.  This will help motivate proactive behavior.  If you know you will hang out with friends on the weekend, you’ll try to crush that assignment tonight.  You won’t wait until Monday and panic.  It helps keep you more accountable.

3. Schedule vacation during school breaks

Vacations are a nightmare if you are doing part-time school.  A bunch of problems can arise.  1.  you can easily lose motivation when a beautiful mountain range is right outside your door waiting to be hiked.  2. You’ll get FOMO, when is the next time you’ll be on this tropical island?  Why bother studying? 3. Your internet will fail you or be blocked by the government (what happens in China stays in China).  4. You’ll want to spend time with family since you only see them every few years (my parent/s live in Germany/China).  All 4 cases are worse when you are actively studying in school.  Let a vacation be a true vacation, do it when you don’t have work or school.

4.  Take frequent breaks

When studying, take a bunch of breaks.  Go study for a few hours, than go watch a movie, take a long walk or exercise.  Long stretches of studying will “compress” your brain and make it harder to study in the future.  Don’t try to cram too much at once, because it will get exhausting.  This kind of goes back to part 1 of this list: do things as early as possible.  The earlier you do something, the more opportunities you have to take a break or spend time with friends/family.

last, but definitely not least

Having support and understanding friends, family and spouse is crucial.  Don’t neglect those important people in your life (again step 1). Recognize how they make you stronger and help you out on your day-to-day journey.

I’m especially thankful to my loving wife for putting up with long study hours, making the occasional dinner and believing in me.  She also frequently checks on me and gives me an excuse to take a break!  I think this experience would be much tougher without her.

Fall 2018 – Readings and Online Courses

Dear Reader,

I decided to write quickly about 6 programs/books I took: AI Programming with Python (Udacity), Google Cloud Platform Architecting (Coursera), Creating Kivy Apps by Dusty Philips, Linux Kernel Development by Robert Love, Terraform: Up and Running by Yevgeniy Brikman and the Design of Everyday Things by Donald A. Norman.

Udacity: AI Programming with Python

This is the entry-level course in AI for Udacity.  Udacity is an online course-ware provider that focuses on providing content on cutting-edge topics: AI, Deep Learning, Self-driving cars and Node/React.  It also has classes on data analysis and marketing.  AI program starts by teaching you python, brushing up on some linear algebra and finishing off with 4 sections on AI: Two theoretical units on gradient descent and neural networks, one on PyTorch and a final project that classifies flowers.  PyTorch is Facebook’s AI framework built in Python.

AI Class

The course is well prepared overall and should be manageable for someone with intermediate programming skills.  Best in Python.  It’s a bit on the expensive side for online material: $500-$1000, but Udacity tends to make up for the price tag with more interesting content and topics.  Overall the quality is good.  I’ve heard FastAI is a free alternative.

My Repo: https://github.com/Silber8806/udacity-AI-programming-with-python

Coursera: Architecting with Google Cloud Platform

Offered by Google Cloud

Google Cloud Platform, GCP, is googles answer to AWS, Amazon Web Services.  Overall, the platform has many of the same services as Amazon including Cloud Functions, which looks to be AWS Lambda for Google Cloud.  The only glaring issues I’ve noticed so far: 1. No equivalent to SNS for e-mail and some UI issues in the console concerning Google Cloud Storage (S3).  The first part is painful in that Google by default blocks the smtp ports forcing you to use a 3rd party provider (with limited support in stackdriver).

Google outsourced most of it’s training for GCP to coursera.  The courses are broken into 6 parts.  The first course covers all of the services on a 40,000 foot level, 4 courses proceeding this are in-depth technical reviews of virtual machines, networking, storage, database technologies, container services and autoscaling solutions.  It also includes a host of managed services including the very neat sounding: “Spanner”, a supposedly horizontally scaling RDBMS service.

The last course, Reliable Cloud Infrastructure: Design and Process,  was the most interesting.  It provides a practical overview of how to construct infrastructure as well as going over Google’s philosophy on designing scalable software.

Something that really stood out about this program is the labs.  They provide you a temporary Google Cloud Account for your tutorials.  You get to practice on the actual Google console and shell prompts.  This program is reasonably priced at $49.99 per month.  You can take the material without labs for free, but I’d recommend the labs!

Creating Apps in Kivy:

Kivy is Python’s Mobile Application development framework.  It’s used to make cross-platform applications for: Android, IPhone and Ipads.  It’s something I’ve wanted to try out for a while just out of curiosity.  I picked up Creating Apps in Kivy by Dusty Phillips, a book on the subject.

Creating Apps in Kivy

The book covers two applications: A weather application using an open weather api and a video game involving spaceships.  The weather app takes the block of the book with significant amount of time spent on UI and UI interactions.  Kivy generally is split into two files: a main file in python that is event-driven and a .kv file that describes the component layout.  A single chapter is dedicated to graphics.  The best part of the graphics section was developing animated snowflakes that fell from a single component.  The book also covers databases and advanced UI components like a carousel.

Overall, I’m happy with the quality of this book with the exception of 2 things.  It was hard to read the indentation between pages and there were a few chapters where I had to add imports or features he didn’t mention to get the examples to run.  For this reason, I’d recommend being somewhat well versed in Python before attempting the sample projects in the book.

Github Repository: https://github.com/Silber8806/kivy_tutorial

Linux Kernel Development (3rd Edition) by Robert Love:

I started reading this book after my colleague at Salesforce.com, a DevOps Engineer, began talking to me more about the Linux Kernel and strange behaviors in Bash.  I read a previous book to get a better understanding of the OS and am really happy that I skimmed through this book.

Kernel Book

Linux Kernel Development covers the Linux source code by going through different subsystems and explaining how it works.  It’s a deep-dive into things like: process management, memory, I/O, Virtual File System, Cacheing, Timesharing… It’s inspirational to see how much thought has gone into the Operating System and how many improvements are mentioned.  You really feel like you are standing on the shoulders of giants after reading this book.

Linux Kernel Development feels like a technical reference and I’d recommend reading a book on Operating Systems before getting too deep into it (or taking courses in C).  I skimmed through this book, because I use Linux daily and feel a bit clueless about what is happening under the covers and wanted to learn more about it.

Terraform: Up and Running by Yevgeniy Brikman:

Terraform: Up and Running covers… Terraform, the cloud provisioning software by HCL corp.  .  Terraform is a framework for deploying IT services to AWS, GCP, Azure and Digital Oceans in an automated fashion.

Terraform is cool in that you write your infrastructure as a series of templates.   These templates are in the form of a declarative language called HCL, which describes your cloud infrastructure typically in a 1-to-1 fashion with the services you have deployed.  What’s special about Terraform is that after you apply a HCL template to your cloud environment, it writes the current state into a file (immutable data structure).  Every additional change begins with your last state and modifies it.  A lot of devops systems are not aware of their previous configurations.  Terraform reminds me a little of Redux, but applied to Infrastructure instead of web development (I might be wrong).

Things I noticed from the book.  They suggested deploying these state files to S3, expect strong concurrency controls around the Terraform library and advice that you don’t mix other devops tools with Terraform.  That way if a user manual creates an account that Terraform isn’t aware of, it won’t create an error (since that manually created user isn’t part of Terraform’s state).  It seems Terraform works best as an isolated service and the “main” provisioning tool for a specific subspace of your infrastructure.

I skimmed through this book as I was interested in Terraform and have heard of a lot of adoptions in industry of this technology.  I didn’t get to test the code in this book and can’t really speak about it.

The Design of Everyday Things by Donald Norman:

The Design of Everyday Things by Donald A. Norman is a book about usability and user design.  It’s the book that I’ve been listening to on Audible, an audio book app by Amazon.com.

The book goes over the design of everyday things: ovens, doors, cars, computers, phone systems, radios and details both design flaws and positive things about different objects.  He focuses a lot on understanding differences between knowledge in the world vs in the mind, how we map controls (buttons etc) to actions and how overloading them can lead to confusion and how to constrict user settings to prevent too many options flooding the users consciousness.

He’s a big proponent of mapping controls to physical aspects of the world.  For example, a car seat control should move the seat forward if a switch is moved forward and backwards if a switch is flipped backwards.  A switch shouldn’t move forward and backwards if a button is pressed left or right as that will confuse a user.  He also favors designs were cues exist in the world that indicate what to do and where each control (button) does one and only one thing.  A button on a watch should only turn off the alarm not adjust the alarm or answer phone calls as well.  If these aspects of designs can’t be applied, he suggests standardization across an industry.  A water facet for example should have cold water knob always to the right of the hot water knob.

This is a great book.  I would suggest reading it on Kindle or as a paperback book. My big issue with Audible and Audio books in general is that I typically listen to them while walking or multi-tasking.  That means I lose focus on certain sections (last 2 chapters).  Overall, I really enjoyed the content I heard from this book.

Best,

Chris

5 lessons learned as an amateur investor

money-in-motion

1.  Money is almost always in “motion”

I often hear people talk about savings in a static manner.  I have $5,000 in the bank.  If I budget properly, I will have $6,000 next month.  Once I have $25,000, I’ll put down a downpayment on a house!

When you save, you become an economic force multiplier.  Your savings get loaned out minus some fractional reserve (typically 10%) to the banks customers.  So, if you put in $100, the bank might loan $90 to other customers and keep %10 in reserve in case bank customers decide to withdraw cash.

The recipient of the bank loan also deposits the loan into a bank.  That means:

$100 -> $90 -> $81…

If you do the math, an initial deposit of $100 leads to about $900 in loans ($1000 in money flowing in the economy).  This system works as long as all the banks customers withdraw their accounts at the same time (a run on the bank).

The bank of course charges interest on those loans and only pays a fraction back to it’s depositors.  That’s how they make money!  Which leads to…

2.  Investors see savings as a loss…except…

If you read the first chapter of Investments by Bodie, you’ll notice something odd.  Investors never compare their investments to a savings accounts?

Investor compare investment returns to U.S. Treasury Bonds or T-Bill (or it’s equivalent in the UK..etc).  Why?  U.S. government has a very low probability of defaulting, it almost always has a better return rate than a savings accounts (usually) and it can meet it’s obligations by printing money!  Let’s sample some recent T-Bill rates:

Date1 Month1 Year5 Year10 Year30 Year
June 1, 20181.742.282.742.893.04
June 4, 20181.772.32.782.943.08
June 5, 20181.822.322.762.923.07
June 6, 20181.812.322.812.973.13
June 7, 20181.782.312.772.933.08
June 8, 20181.782.32.772.933.08
June 11, 20181.822.322.82.963.1

Companies reflect a similar attitude when it concerns saving money!  They like generating cash and having it present to pay for operating expenses, but they don’t want to hoard cash for it’s own sake.  Companies typically reinvest cash in the business to create a greater return or return cash back to its shareholders when they can’t.  If a business can’t create a good return on your money (due to maybe a saturated market), it is probably best that they return the capital so that it can be employed in other opportunities.

Cash is still king! If you don’t generate cash quick enough, you will go broke!  If you don’t have cash or other liquid assets available, it’s hard to take advantage of price drops in assets (in say stocks).  Cash is prized for it’s liquidity, but represents an opportunity cost in the medium to long-term.

3.  Oh no! Inflation!

Ever hear people talk about when the price of bread was $.10?  Do you feel like the price of coffee has doubled over the last 10+ years?

Based on the CFA level 1 economics section, most governments target an inflation rate between 1-2%!  They avoid 0%, because there is a risk of deflation or negative inflation rates.  Why invest in a business, if by holding money you can buy more goods?  The opposite extreme is hyperinflation.  At 10% inflation, a $20,000 car would be worth $32,000 in 5-years and $52,000 n 10-years.  2% inflation equivalent is $22,000 and $24,200 respectively.  Having low inflation promotes investing, while preventing extreme changes in price!

How does inflation impact retirement?  If you retire in 35-years and inflation is 2%, the money in your bank will be worth 50% of it’s current value!

How do investors think about this?  They take the risk-free rate (T-Bill) and apply expected inflation to it.  This is called the nominal return rate!  They then add a premium on top of that for the risk of default, liquidity of a market and the opportunity cost of long maturities.  Investors expect investments to compensate for inflation and risk!

4.  Equity vs Liability?

I was reintroduced to the accounting equation recently:

Assets = Liabilities + Owner’s Equity

Assets is the property of a business.  Liabilities are 3rd party claims on your business: a bank loan or unfulfilled customer order.  Owner’s equity is how much value you own in your business after paying of loans and other obligations!

Investors can be part of either the liabilities or equities side of this equation!  You can either loan your money to a business or buy a claim in that business.  Giving a business or government a loan with an interest rate is called a bond.  Buying a stake or becoming a owner of a business is called stock.

Bonds:

Bonds are less risky!  When a company goes bankrupt, they have to pay off their debtors first before claiming anything left over in the business!  On the other hand, bonds have no claim on the businesses outside of interest and principal payments (for the most part).  That is, you get paid interest for a fixed number of years (or months) and then you get your loan amount back!  The business owes you nothing afterwards!

Stock:

Common Stock is a claim or slice of a business.  When a company makes makes a profit (after paying interest), it has a choice of reinvesting it into the business or paying it back to shareholders in the form of a dividend.  The attractive aspect of a business is that you get to participate in “your” growing business as a stake holder.  This is of course a double-edged sword!  If the company loses money, it will directly impact your stake in a company.  If the company goes broke, you might lose everything (that can be true of bonds too, it’s just less likely)!  Stock typically is traded in a market and company valuations (or re-evaluations) can significantly impact it’s value.

Inflation Risk:

Stocks adjust better to inflation and tend to have a better return over time (at a market valuation risk).  A business can adjust product prices for inflation!  Investments in say factory equipment or new technology should improve the companies value in the long-run.  Bonds are presented as fixed principal and interest amount (usually) and are typically impacted by inflation.  For this reason, many 401k hold stock when you are younger (to grow your fortune with companies) and add bonds as you age (to guarantee principal, while gaining a cash flow).

5.  Emotional Rollercoaster vs Long-term investing?

Stocks are traded on either a secondary market (stock exchange) or primary market (Initial Public Offering).  You can get access to through a brokerage like: TD Ameritrade, ETrade, Fidelity or Robinhood etc.  These brokerages typically offer bonds as well!

Emotional Rollercoasters:

Owning stock can be an emotional rollercoaster!

Bad news and Facebook:

One of the first stocks I bought was facebook.  It was during a controversy where Facebook was going to split it’s stock into two different classes (types).  The company had been doing good stock price-wise and I wanted to put my money into it.  Within a month, I found an academic study that treated Facebook like a flu epidemic and stated Facebook would disappear within 12 months.  Having never invested, I was super sensitive about losing all my money and decided to sell the stock!  The article trended on news outlets, but most investors were focused on the company fundamentals and so the stock price never budged.  Instead, the stock price increased exponentially that year!  It was the first lesson I had about listening too much to bad news!

Short-term Prices and Nvidia:

Similarly, I bought Nvidia as I knew that GPU (graphically processing unit) demand was increasing due to applications in AI and computer vision. They were the undisputed leaders in that sector and had outpaced their competitor AMD by a large margin.  Reports indicated that AMD would get a new chip into market, which would capture some of Nvidia’s low to mid-tier video game market, but Nvidia would cement it’s lead in high-end gaming the following quarter.  Their expansion into data centers made them an attractive choice as their revenue was expected to explode! (The reason I know this is news + 10k + reading specialists reports in that industry).

I decided to buy shares and thought I would hold them for the long run.  Sadly, my gut and emotions defeated me this time.  A report came out about a switch from hardware to software-oriented bitcoin mining that would negatively impact the short-term demand for Nvidia GPUs.  The stock dropped 10%.  My emotions got the better of me and I sold!  3 months later, I found out that Nvidia recouped the price difference and increased by another 20%.  My second lesson, if you are interested in a firm long-term, you should become less sensitive to daily price fluctuations (unless the company is going bankrupt, involved in fraud or a big assumption about growth changes…ok quiet a bit).

When you buy a single stock, you have to tolerate speculation, bad news and possibly daily price fluctuations.  You will also be surprised at what impacts the stock market as a whole (Trump tax cuts).

Note: I am not advocating either Facebook or Nvidia stock.  I’m using it to show how investment behavior changes when you own a stock!

Long-term investing:

Owning individual stock ties you to the fate of a single company.  That means you are exposed to bad news (or speculative news) as well as greater fluctuations in price.  A way around that is to own multiple companies!

ETFs

ETFs

An alternative to investing in individual companies is to invest in: ETFs (or mutual funds) and/or bonds.  Bonds I spoke about previously, but it’s worth talking about ETFs.

ETFs represent a slice of many companies (or bonds).  You can for example own a piece of the top 500 companies by investing in a S&P 500 index fund (like VOO or SPY).  The nice thing about ETFs is that they buy stock in bulk by pooling capital from many investors.  They then create slices from the fund that are significantly cheaper than buying each individual stock separately.

In our example, if the average cost of a stock was $20, you’d need $10,000 to purchase each stock (as an individual investor).  An ETF gets around this $10,000 cash requirement by collecting say $100 from 100 investors and then giving each ETF holder a single share representing a 1% stake in those 500 shares!

ETF diversification

Why would having a 1% stake in 500 companies be worthwhile?  First, those 500 companies might operate in different sectors of the economy.  One company might be a retail giant, while another represents a utility company.  If the retail giant competes with amazon and begins losing customers it’s stock price might decrease.  This decrease in stock price probably won’t impact utility industry!  So the loss from the retail giant might be offset by an unrelated price increase from the utility company!  Of course, this works against you as well!  If a company is doing really well, it might be offset by a failing industry!  Overall, a well-diversified ETF tends to have more stable daily price fluctuations with fewer large dips or huge gains (well-diversified part is key).  This is why ETFs and mutual funds (a similar concept) are often used by investors that don’t want to actively manage their investments (known as passive investors).

Since you rarely know all 500 companies in an ETF, you tend to be less impacted by bad news or price fluctuations (due to diversification) compared to owning a single stock.

ETF interesting notes

Some other interesting notes about ETFs.  ETFs often have a dividend.  Dividends are cash paid back to an investor for holding onto the stock for a set amount of time (typically represented as a % of the stocks value).  Dividends can often be reinvested into ETFs at a fractional rate (this is called a DRIP – Dividend reinvestment program).  ETFs often have a management fee, which can be anywhere from .02% to 2%+ of the investment value.  This management fee is typically taken out of the stocks gains or principal.  ETFs can also be leveraged meaning the fund takes loans out to buy more stock (at interest rate) or have higher turnover which means that it trades stock more often increasing trading fees. You  typically have to read the prospectus, a document explaining the fund, to see if it is leveraged or has a high turnover rate (sometimes not mentioned).

 

ETFs compared to 401k/IRA

Have you ever wondered how stocks/bonds relate to your 401k and IRA.  Many 401k funds are composed of a mix of Stocks and Bonds.  Stocks tend to be split between domestic and International stock (at least in the US).  Younger individuals or those that elect a more aggressive portfolio will have more stock and international stock in their fund!  Stock is an equity position that tends to perform well over long time frames.

Older individuals will see more of their portfolio dedicated to bonds.  This is due to the fact that bonds, a liability position, tend to be safer in the short and medium term.  Remember bonds are loans that aren’t directly attached to the valuation of the company and get paid out first when a company goes bankrupt.  Bonds, however, tend to be more sensitive to inflation in the long run (unless it’s an inflation protected bond).

Many retirement funds behave similar to ETFs or mutual funds, because they are a diversified positions.  One major difference between the typical ETF and retirement fund is that ETFs tend to be more specific (often less diversified) to an industry, country or the economy.  They also tend to be less diverse in terms of types of investments. A retirement fund will often have bonds, stocks, international stocks and possibly CDs.  An ETF tends to focus on only one of those (an ETF focusing on bonds is called a bond fund).

Another difference, retirement funds have government sanctioned tax advantages.  In return for the tax shelter, you are not allowed to withdraw from your 401k or IRA until retirement age (or risk a 10% penalty).

Summary

I’m still relatively new to the stock market and trading.  I’ve gained some confidence over time by reading more about the topic and trying to put a little extra money into my brokerage!  Hopefully the article is useful for other beginning traders or people interested in how the stock market works!