• Bitwise operation tutorial on sololearn. Basically just convert to binary, then compare the two bytes (or however many). Each will be a row of 8 numbers and perform the Boolean operator on each digit (columns). And, or, xor, not, masking, shifting.
    • Cryptography tutorial on sololearn. Symmetric encryption is when the same key encrypts and decrypts. This is like a cypher. Asymmetric encryption is when two keys are used (like public/private in RSA). == at the end means a key is base64.
      • Databases do not store your password. They use a one-way hash to encrypt it, then next time run it through the same encryption and see if the result matches, not your password.
      • If someone ever got a hold of the algorithm, they could just run a TON of common passwords through it, then compare to the database to find matches. This is a dictionary attack. The was around this is by salting, where a secret key (random string, usually) will be added to the password before hashing it.
    • Created a journal for all my BBQ sessions! Backfilled the previous.
    • Bootstrap tutorial, sololearn.
    • Called Del Amo to check on the crash estimate. Their Ducati tech is pretty backed up but he should have the estimate soon.
    • Added my BMW information to all my docs. Looked at AAA insurance for it. I’ll do the swap (taking ninja off) next week before I head up north.
    • jQuery, React, Angular, and Vue are frontend framework leaders.
    • Kotlin is a modern alternative to Java. You can write the server backend with this. It can be used to write an app where PHP or Python would otherwise, but its primary use right now is for Android apps. Swift is still primarily used for iOS apps.
    • React Native allows you to build both the frontend and the backend with the same language (so you don’t need Swift or Kotlin or Java). It’s pure javascript (with React as well, obviously). This means the same application source is used for all platforms.
    • CDN = content delivery network. Usually a URL you can point to in an HTML file to include another library, like jquery.
    • Remember duck typing, as opposed to strong typing. It means you don’t need to specify type; if it looks like a duck and walks like a duck, it’s probably a duck.
    • snake_case. camelCase. PascalCase.
    • Node.js is javascript without a browser. It’s a runtime environment. While js runs natively in the browser for client-side scripting, node allows js to run server-side as well.
    • Java and C++ are faster than javascript (or nodejs), by about a factor of 2. Python and Ruby are slower, by about a factor of 5-10.
    • Finished the Openlearn JS course.
    • Move all new programming courses to drive (in separate docs, rather than this blog).
    • Compiled some level info. This is all for senior software engineer.
    Company
    Salary/yr
    Stock/yr
    Bonus
    Google
    177299
    153754
    35346
    Facebook
    179000
    159579
    28974
    Microsoft
    155059
    29311
    24695
    Amazon
    154259
    150648
    19227
    Apple
    178131
    98820
    25721
    Netflix
    425000
    7750
    0

    • Finished the Openlearn PHP course. Didn’t really take notes or memorize this, just kinda wanted to get a feel for how things were done a while ago. Modern languages have more comprehensive server-side scripting capability (even the Python I’m also an expert at).
    • Updated resume with some of the recent frameworks I’ve been studying.
    • Php studying! Added doc to programming notes.
    • Cookies are small files that the server gives back to the client. They contain information about the transaction, allowing a “session” to continue with that data (until expiration). They could contain a username or something else that you don’t want to have to provide every single time over and over and over with each subsequent request.
      • The browser will send cookies (for that domain) with each request (if they exist), then the server usually checks for them (if they exist) and skips some logic if they do.
      • They can apply to a whole domain, or subsets.
      • Third-party cookies: when your server applies it to another domain as well (like for advertisements). This is often looked down upon, for obvious reasons.
      • They can be encrypted or not, apply to https or http only, and more. They are not safe for secure information.
      • They literally take up space on the client’s machine (albeit small).
    • I’ve never had to use NumPy before, since all my linear algebra was in school with MATLAB, but it’s a tool for that. Linear algebra, matrices, n dimensional arrays, etc.
    • REST APIs are stateless, remember. You  should also use nouns instead of verbs for all routes, except the last one can be a verb. Go from collections (plural) to singletons, like domain/users/bmahlstedt/files/resume.pdf.
    • PUT creates a new resource, if not already existent. PUT is idempotent. POST sends data. Sometimes that might mean creating a resource. Not necessarily idempotent.
    • Instability is not the ladder you want to climb – in regard to staying at a company where lots of people are leaving. Some say that promotions come more easily as gaps open, but this is bad advice.
    • levels.fyi is a website with TONS of comp information for all the software companies I’m looking at. Based on my level (somewhere II-senior), my goal for base salary is 200k (anywhere) or 400k (netflix). It’s honestly that big of a difference. Equity around 200k is fine. Signing bonus of ~50k is fine.
    • Finished HTML sololearn.
    • Finished CSS sololearn.
    • Supercontest.
      • Got everything in working condition again! Cleaned up the git branches and the nginx configuration. They’re nicely symlinked now.
      • Just use `python manage.py runserver` for local testing. No reason to involve nginx and the production webserver, unless you’re explicitly testing the proxy aspect or load-testing. Flask-script really is pretty great.