- A king cobra bite can kill an elephant!
- Bought and prepped 2 spare rib racks yesterday. Smoked them today for game of thrones. Getting much better at trimming, especially with focus to both the tips and the st louis cut.
- Shopped for motorcycles at a few shops with jcriss yesterday, he brought a grommmm.
- WAF = web application firewall.
- BitMitigate is a cool service that provides ddos protection, waf, cdn, and more.
- To get the thumbnail from a youtube video, just enter the ID into: https://img.youtube.com/vi/<>/maxresdefault.jpg
Sunday, April 28, 2019
Friday, April 26, 2019
- Supercontest.
- Added pytest-cov. 45% overall. Not bad! Most of the core functionality is covered.
- JS lint/tests.
- Activate your python venv, then pip install nodeenv, then run nodeenv -p. This creates a virtualenv for node modules integrated with your current virtualenv for python modules. Gives you the `npm <>` command.
- ./node_modules instead of ./venv. Has a bin and all the usual. This should be gitignored. The package-lock.json should not.
- `npx` can be used instead of `npm` at the command line. This will fetch packages as needed into tmpdirs and run them.
- Instead of coupling it with python/tox, you can use `nave` to create a pure node venv, and then add make targets to execute whatever test commands (instead of tox).
- You can also run through npm itself, by defining a lint task in package.json (setup.py) and `npm run lint` (pip run lint). I've never like coupling the package manage with the admin commands. An external infra like make is better for this.
- Ran npm init to create a skeleton package (required for style guide).
- Ran eslint --init to create an eslintrc.json.
- Ran a full eslint evaluation! 113 errors in my 4 simple files. Extending Google style guide. Common fixes I performed:
- Single instead of double quotes.
- Const instead of let for vars that are never reassigned.
- No double space before inline comment, like Python.
- Regular line indents are all 2 spaces. Indents for line continuation are 4 spaces.
- No space between function and ().
- Trailing common after the last item in sequences.
- jasmine init, then added the spec yml to vcs.
- Creed from The Office is performing at Saint Rocke on June 29: https://www.ticketweb.com/event/creed-bratton-saint-rocke-tickets/9166055?pl=saintrocke. It's not comedy, it's music: https://www.youtube.com/watch?v=Vt6kcF-PIsE.
- HN. Some mild interest this week.
- Removed the js blocks from vimrc. Didn't like the folding.
- JS speed is important, obviously, because of clientside implications. Hence the preference for 2 spaces instead of 4. JS typically isn't compiled or compressed, so this small percentage makes a little difference. Also, with tons of callbacks, 4 spaces can visually get way too indented.
- PharmaDB
- Talked a little with Art about aggregating prices into a central marketplace, like Kayak for drugs.
- Currently, technicians spend a lot of time shopping around for the lowest prices. Pharmacies (or their parents) have contracts with vendors which change the prices. These are reflected in the account, and work automatically with the creds to log in to the vendor site.
- Some common vendors: AmerisourceBergen, Cardinal, HD Smith, Anda, Parmed.
- Medicaid hosts a database with (I assume) average prices: https://data.medicaid.gov/Drug-Pricing-and-Payment/National-Pharmacy-Pricing-Database-xls/uima-szn8.
- Gonna try to get a demo account (can only see prices, not order) to write an app that fetches all this information and aggregates it in a simple marketplace platform.
- Sugar caramelizes at about 340F. If you're doing low and slow ~200, it's fine. I prefer a bit of brown sugar in the texas crutch. And don't worry about bbq sauce on ribs if you're cooking low. Do not use sugar/bbq sauce for hot and fast.
- Prepared the rib recipe for sunday. Going to focus on the rib tips this time instead of the st louis cut (still doing full spare racks). That's cartilage in the tips, not bone!
- Lots of info came for lighting in a bottle. Skimmed most of it.
- Pivotal, the company Rachel came from, makes RabbitMQ and Jasmine. They're owned by Dell. I knew neither of these facts.
- Csslint is also a thing.
- Finished the suspiria remake (2018). I watch a lot of horror movies, and I loved how different this one is. That ENDING whattttt.
- If you have chrome devtools open on a tab, you have a LOT of data. If you login to a site, the network tab shows you the form data of the request, which literally contains your plaintext password. This can be recorded (for that tab only). After that, it's obviously stored in a cookie so that subsequent requests don't contain the password. Still, given all that information, another client could copy and imitate that request.
- Sharks and Warriors playoff games.
- Remember, TDD = Test Driven Development and BDD = Behavior Driven Development.
Thursday, April 25, 2019
- Avengers Endgame. I've never been a fan of comic book movies. This one had a ton of hype, almost Avatar level. It was average. There is a lot of time travelling and then a big fight and they knock some stones off his glove and win. Who could have predicted such a shocking, unlikely ending.
- PW: some cool app ideas to practice skills: https://medium.freecodecamp.org/here-are-some-app-ideas-you-can-build-to-level-up-your-coding-skills-39618291f672.
- Supercontest.
- Unittests.
- Had to `sudo systemctl restart postgresql` on my host before running the unittests. Remember, it requires an existing supercontest_unittests db. And remember, I do dev on this laptop as well, so postgresql doesn't start on boot on my host (it would conflict with docker since I use default ports). Laptop must have died at some point.
- Used spoof_lines and spoof_scores to populate the test db.
- Had to install chromedriver on my host (unfortunate dep of the test now, I can fix later but it's not urgent).
- Added selenium capability to the tests so that I can actually check the data in the dom after js runs. I don't do any click functionality to test registration or anything, just verification of the route APIs.
- Changed to LiveServerTestCase from flask-testing so that I could use selenium. self.get_server_url is offered now. This slows down the tests a bit.
- Loving selenium so far for unittests. Load a page, submit for data, click buttons, check results.
- The webdriver API: https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webdriver. find_element[s]_by_[id,xpath,css_selector,name,class_name,link_text].
- Changed commit_picks to allow bypass of all checks (on the python app side).
- Did some color mapping between names and rgba values (which is what selenium returns for the background-color css property).
- Finished all the python tests that I wanted: user/line/score/pick commit, frontend login, matchup/pick/leaderboard view. Now on to eslint and jasmine for the js.
- Docker
- There's an image on dockerhub with python/chromedriver/chrome/selenium: joyzourski/python-chromedriver. Switched to that instead of basing off python and installing the webdriver functionality manually in the dockerfile.
Wednesday, April 24, 2019
- FW/MD
- Function declaration (definition) vs expression (anonymous). Obvious differences. Former allows a variable of global scope for callbacks, hoisting, etc. Latter less mem.
- Change detection in a project usually means VCS changes for CI. Change detection in an app usually means frontend or backend. How does the view/controller respond when the model changes data?
- In docker, `expose` in the dockerfile is just for documentation. `publish` (-p at the cli) is necessary to actually make the ports available. In docker-compose, `expose` in the yml is sufficient to do both.
- Facebook internals. https://www.wired.com/story/facebook-mark-zuckerberg-15-months-of-fresh-hell/. Didn't read the article because it's way too long, but looked interesting.
- The sharks/vgk game 7 last night was the best hockey game I've ever seen. The sharks came back from a 3-0 deficit by scoring 4 goals on a power play due to a 5m major. The knights tied it and pushed it to overtime, where the sharks scored to win. This sealed game 7 after coming back from a 3-1 game deficit in the series.
- The Damian Lillard buzzer beater last night was also one of the best shots I've even seen. 37' out, at 0 seconds, against Paul George, when tied, to end the series and knock OKC out of the playoffs.
- Ordered new shoelaces. 54" just for ref (medium high boots).
- Jury duty summons can pull from registered voter pools or driver's license pools (or both).
- The "utm" you always see in ref links (like HN) is "Urchin Tracking Module". Urchin is the predecessor to Google Analytics, and is simply a marketing tool. These 5 query params (utm_*) can be added to a URL to collect data: source, medium, content, campaign, term.
- Did a couple typing tests. I'm about 90wpm with 95% accuracy.
Tuesday, April 23, 2019
- Reapplied thermal tape to the compressor on the ducati yesterday to protect it from the exhaust pipes.
- Dodgeball championships last night, was great playing with the team. I liked this group (cowbell).
- Went to Slab (same as Trudy's) BBQ today. Brisket was better than Bludso's, chicken was about equal, and pulled pork sucked. They also didn't serve chicken quarters, only halves, which is dumb. Total was $33, which is absolutely ridiculous - that's the same price as an entire 10lb packer of USDA prime. Very thankful I learned to smoke at home. It's better quality at about 1/10th the price, for the sacrifice of a little effort!
- Soundcloud requires you to pay for premium mode to download tracks for offline.
Friday, April 19, 2019
- Supercontest
- Scrubbed testing.postgresql. Wasn't configurable enough for my tests. Couldn't do stuff like changing the default encoding of the db, so collation in the static model failed. Instead, I just defined a separate uri for test (with proper cleanup) and piggybacked off the host postgres installation (which is obviously then required to run tests....system dep agh).
- Removed the collation=NOCASE remnant from sqlite in my models. Then I was able to get a successful unnitest env working. Test app connected to test db.
- The problem now is alembic. The migrations require a local postgresql instance, so I can't run them nominally on the host - I need to run them in the context of the container. Alembic enters through flask-script, which runs on the app container. So you can run a migrate operation while just connected to one container. But the upgrade operation needs the migrate.py from the app container and the actual db from the postgres container, so who knows how that will work. I'll have to look up the right way to use alembic with docker.
- I guess you'd run the manage.py migrate/upgrade commands through docker-compose exec, not on the host. Ok.
- Didn't end up having to migrate since postgres doesn't need the collation, but for future reference: `python manage.py db migrate/upgrade` needs to be run through `docker-compose exec app_dev/prod` now that you're working in a container setup.
- Testing.
- Added extra_config_settings to get_app(), allowing direct flask args to be passed from elsewhere (like tests, where I suppressed mail and csrf).
- Added tests to make sure all the user routes (login/profile/logout/etc) work.
- Debugging.
- You can run `python -m pdb <myscript.py>` or just put `breakpoint()` in your code.
- Then you can step through with s.
- To print, just use `p <var>`.
- You can also check types, specify new variables, etc! `pp locals()` or globals as well.
- `l` or `where` will list where you are in the script.
- `exit` finishes.
- Remember, a lot of system binaries (like echo) are at /bin, not /usr/bin or /usr/local/bin.
- Security.
- Bandit is a cool tool I started playing with: https://github.com/PyCQA/bandit.
- Added to supercontest tox. I had no issues, just two (example) passwords I had to ignore with # nosec.
- Internet fiasco.
- They wouldn't activate the new account because the modem (which I own, not spectrum) is still attached (maybe mac address) to the old account. After calling them and getting transferred 10 times, and briley doing the same, we finally got it working.
- In the meantime, I went to a few Hermosa cafes for wifi. The new yellow one doesn't offer public internet (lol) and gum tree gives out temporary codes which provide access for an hour (lol). What happened to cafes?
- Indian BBQ.
- My two favorite cuisines on the planet. Had a thought the other day they I might try some fusion with my smoker at home. Did some research, and nothing came up. I don't think it's a very common idea, since the origins of BBQ are the south, and there's not much overlap between the south and India, at least culinarily. High-level smoked meat with curry-based rubs....sounds delicious.
- Started first batch today. Curry jerky! Thinly sliced cross rib roast with some premix curry powder. I can play with the levels and finetune later.
- My xps13 ubuntu18 suddenly couldn't play sound and just showed "dummy output". Running `pulseaudio -k && sudo alsa force-reload` fixed it.
- HN
- Awesome statistical model of skittles: https://possiblywrong.wordpress.com/2019/04/06/follow-up-i-found-two-identical-packs-of-skittles-among-468-packs-with-a-total-of-27740-skittles
- Mentor, don't hire. Workplaces of growth are much better investments. https://sizovs.net/2019/04/10/the-best-developers-are-raised-not-hired.
Thursday, April 18, 2019
- Exported my amazon data to google drive and ran some queries on it. Interesting.
- Went to San Bernardino yesterday to hang out with Grandma and mom. Got Rosa Maria's. Called Eric for his bday.
- PW: GoT and Python https://medium.freecodecamp.org/how-i-used-python-to-analyze-game-of-thrones-503a96028ce6.
- Guy on jeopardy has now won 10 games straight and holds the top FOUR single-day winning totals (from ~90k-130k). Total is 700k over 10 games. He's got the second highest total now (non-tourney) after Ken.
- Reapplied some thermal tape to the denali compressor. Noticed yesterday after the freeway riding that it was worn through.
Subscribe to:
Posts (Atom)