Skip to content

Instantly share code, notes, and snippets.

Avatar
🍋
when life gives you lemons, make hummus

Michael Floering hangtwenty

🍋
when life gives you lemons, make hummus
View GitHub Profile
@hangtwenty
hangtwenty / continuous_learning_inflection_point.md
Last active Feb 8, 2021
blog draft: continuous learning is the keystone habit of software development. oh, and the other part: you have to get over yourself!
View continuous_learning_inflection_point.md

I've self-educated as a developer; now almost 10 years into it, it's worked out for me. But why? What was the deciding factor?

Looking back, I think I can see the inflection point.

I had a mentor who helped me use interactive approaches, and test-driven development. This led to a test-driven mindset.

The core of this mindset is the empirical attitude: that you can know nothing without testing. I learned to iterate in a more directed way. And by always beginning with failing tests,

@hangtwenty
hangtwenty / _preserve_ipython_history_TLDR.diff
Last active Apr 18, 2019
preserve ipython history between docker-compose runs (for local/development usage). diff is only approximately two lines
View _preserve_ipython_history_TLDR.diff
diff --git a/local.yml b/local.yml
index b587373..73684bf 100644
--- a/local.yml
+++ b/local.yml
@@ -3,6 +3,7 @@ version: '2'
volumes:
#...
+ ipython_data_local: {}
services:
@hangtwenty
hangtwenty / owasp-risk-rating.html
Created Sep 20, 2017 — forked from ErosLever/owasp-risk-rating.html
This is a quick and dirty OWASP Risk Rating Calculator. (demo: https://tinyurl.com/OwaspCalc )
View owasp-risk-rating.html
<!-- access this at: https://cdn.rawgit.com/ErosLever/f72bc0750af4d2e75c3a/raw/owasp-risk-rating.html -->
<html><head>
<style>
#main{
width: 1200px;
}
table {
width: 98%;
font-size: small;
text-align: center;
@hangtwenty
hangtwenty / docstring_for_tests.py
Last active Sep 21, 2019
simple HOWTO docstring to paste at top of test packages/modules, i.e. on teams less familiar with pytest
View docstring_for_tests.py
""" Tests for `foo` package.
uses pytest. pytest resources:
* Docs: https://docs.pytest.org/en/latest/
* Book! https://pragprog.com/book/bopytest/python-testing-with-pytest
also uses `responses`, for mocking HTTP exchanges with `requests` library:
* https://github.com/getsentry/responses
@hangtwenty
hangtwenty / remove_punc.py
Last active Sep 21, 2019 — forked from kissgyorgy/remove_punc.py
Python: Remove punctuation from string (quickly)
View remove_punc.py
#http://stackoverflow.com/questions/265960/best-way-to-strip-punctuation-from-a-string-in-python
import re, string
table = string.maketrans("","")
regex = re.compile('[%s]' % re.escape(string.punctuation))
def test_re(s): # From Vinko's solution, with fix.
return regex.sub('', s)
def test_trans(s):
@hangtwenty
hangtwenty / SanitizedString.py
Last active Sep 6, 2017
(OLD; newer version is here: https://github.com/hangtwenty/presswork/blob/master/presswork/text/clean.py ) I wanted to "ensure" strings had been sanitized (avoid running redundantly). This is ONLY ONE type of sanitization, removing control chars (BESIDES NEWLINES), because that is what my current project needed. But I thought the design could be…
View SanitizedString.py
""" throw your strings to SanitizedString and "ensure" they have been sanitized, such as removing control characters.
SanitizedString will avoid running redundantly, by checking type of the input (good for Very Big Strings)
>>> hello = SanitizedString(chr(0) + "hello")
>>> assert hello == "hello"
>>> assert chr(0) not in hello
>>> assert SanitizedString(hello) == hello
at time of writing there is only one sanitization filter in use:
@hangtwenty
hangtwenty / _fix_pip_import_error.md
Last active Sep 3, 2021
fix that pesky "ImportError: No module named packaging.version" problem. Or more generally, if you need to fix pip using pip, just make sure you do "python -m pip" instead of straight-up "pip".
View _fix_pip_import_error.md

It can come up while installing anything really. I'm not sure exactly which versions of pip are affected, I know I had 1.5.6 and it was affected.

These examples are grabbed from my system level Python, but of course you should use a virtualenv.

  Running setup.py install for simplegeneric
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/Library/Python/2.7/site-packages/setuptools/__init__.py", line 12, in <module>
        import setuptools.version
@hangtwenty
hangtwenty / sonarqube and gradle and analysis mode.md
Last active Mar 22, 2018
little note regarding sonarqube and gradle
View sonarqube and gradle and analysis mode.md

SonarQube not "uploading"? Be careful about sonar.analysis.mode=issues (or, if using Gradle, systemProp.sonar.analysis.mode=issues). This analysis mode seems required for some purposes (some plugins maybe?), but it was making Gradle not generate the report or upload it to SonarQube server. I haven't figured out the details yet but I wanted to leave this memo...

View omnifocus_solarized_light_fantastaque.ofocus-style
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>colorPalette</key>
<dict>
<key>ArchiveExpectationsBarBottomColor</key>
<dict>
<key>a</key>
<real>0.20000000000000001</real>
@hangtwenty
hangtwenty / ipython_embed_example.py
Last active Sep 7, 2018
memo - how to drop into an ipython shell at any time
View ipython_embed_example.py
# -*- coding: utf-8 -*-
if __name__ == "__main__":
# Code code code...
# Code code code...
# Code code code...
from IPython import embed; embed()