first commit
This commit is contained in:
parent
2ac1fc332a
commit
73734e273c
1
.gitignore
vendored
1
.gitignore
vendored
@ -166,3 +166,4 @@ cython_debug/
|
|||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/python
|
# End of https://www.toptal.com/developers/gitignore/api/python
|
||||||
|
|
||||||
|
output/
|
||||||
|
@ -2,7 +2,8 @@ Python Progress Bar
|
|||||||
###################
|
###################
|
||||||
:date: 2011-12-21 03:52
|
:date: 2011-12-21 03:52
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Python
|
:category: Tech
|
||||||
|
:tags: Python
|
||||||
:slug: python-progress-bar
|
:slug: python-progress-bar
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Custom Django URLField
|
|||||||
######################
|
######################
|
||||||
:date: 2012-01-05 03:55
|
:date: 2012-01-05 03:55
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Python
|
:category: Tech
|
||||||
|
:tags: python, django
|
||||||
:slug: custom-django-urlfield
|
:slug: custom-django-urlfield
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ You can un-expire a GPG key.
|
|||||||
############################
|
############################
|
||||||
:date: 2012-01-13 03:54
|
:date: 2012-01-13 03:54
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Linux
|
:category: Tech
|
||||||
|
:category: linux, gpg
|
||||||
:slug: you-can-un-expire-a-gpg-key
|
:slug: you-can-un-expire-a-gpg-key
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
15
content/2012-02-08_vertical_bars_in_graphite.rst
Normal file
15
content/2012-02-08_vertical_bars_in_graphite.rst
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Vertical Bars In Graphite
|
||||||
|
#########################
|
||||||
|
:date: 2012-02-08 15:10
|
||||||
|
:author: tyrel
|
||||||
|
:category: Tech
|
||||||
|
:tags: graphite, txStatsD
|
||||||
|
:slug: vertical-bars-in-graphite
|
||||||
|
:status: published
|
||||||
|
|
||||||
|
I am working with txStatsD and Graphite. I was having the hardest problem looking through the txStatsD code today finding how to graph something as an event, not a data point. I eventually went into every option on the graphite dashboard and found an option to make a bar.
|
||||||
|
|
||||||
|
.. figure:: {static}/images/2012-02-08_graphite_menu.png
|
||||||
|
:alt: menu in graphite showing draw nonzero as infinite
|
||||||
|
|
||||||
|
This is the option that you must use when you want to mark events. For example we want to know “Server restarted”, we would use this technique, as it doesn’t make sense to aggregate “server restarted”. Using nonzero as infinite is a good way to show an event took place.
|
25
content/2012-02-17_hubspot.rst
Normal file
25
content/2012-02-17_hubspot.rst
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
Hubspot
|
||||||
|
#######
|
||||||
|
:date: 2012-02-17 15:10
|
||||||
|
:author: tyrel
|
||||||
|
:category: Personal
|
||||||
|
:tags: hackathon
|
||||||
|
:slug: hubspot
|
||||||
|
:status: published
|
||||||
|
|
||||||
|
I was invited to a Hackathon that one of our client’s client was throwing. Being that I love programming and learning, I decided I would go.
|
||||||
|
|
||||||
|
The event was in Cambridge, MA. I arrive early, (my friend said there would be a lot more traffic than there was at that time of day) so I got a tour of office. It’s situated in an old, what I believe to be, factory building. The coolest part of the office was that they had whiteboard paint on every wall surface, complete with markers of course.
|
||||||
|
|
||||||
|
The event started and people who were attending had tossed up ideas on the white board. A couple people wanted to integrate LinkedIN with HubSpot. Another person wanted to integrate Eventbrite with HubSpot, to get information to/from event goers after the event ends. I didn’t like any of those ideas and my only experience with HubSpot is their Leads API, so I stuck to what I know.
|
||||||
|
|
||||||
|
I had an idea for an app the second I walked in the door, it was like magic. My main hassle was that HubSpot’s Canvas integration REQUIRES HTTPS. Now, my web host is DreamHost and I am kind of cheap, so of course I don’t have any way to host a HTTPS site immediately. A big part of me wanted to bite the bullet and order a secure server from DreamHost, or setup another linode, but I felt that I’ve been spending a lot of money lately and that I would figure out a way. Adrian, my contact at HubSpot, of who I am working with on the PPC project(more on that later), walked by and saved me.
|
||||||
|
|
||||||
|
He asked if I had ever used GoogleAppEngine. Of course I hadn’t because I was under the belief that it cost money to use, but then I realized I was thinking of Amazon’s EC2. I sign up for GAE and within an hour I have a HelloWorld site setup. The slow part was installing Python2.5 so I could use the same version that GAE used and not have to fix a lot of backwards compatibility errors between 2.5->2.7.
|
||||||
|
|
||||||
|
After I had a site up that could do HTTPS I dove into programming for my HubSpot app. The app I am doing for work graphs leads per day combined with Google AdWords data per day. I decided to do something different. My app is still a graph, as graphs are fun and easy to understand by everyone.
|
||||||
|
|
||||||
|
This app graphs a set of leads and shows how many leads happened in a given hour for the previous day. Given extra time I would have added an interface to specify the day to graph leads, but last night my time was severely limited by the fact that I had to setup my environment for GoogleAppsEngine.
|
||||||
|
|
||||||
|
Improvements I can and want to do to this app are database, faster processing, and being able to select a date. I almost wanted to break down and learn NodeJS for this, because from my understanding of the event driven nature of NodeJS would be a lot easier to load data over a longer period of time, than to just load it all at once and timeout with HubSpot’s Jakarta Commons-HttpClient.
|
||||||
|
|
@ -2,7 +2,8 @@ Some BASH tips
|
|||||||
##############
|
##############
|
||||||
:date: 2012-03-08 03:56
|
:date: 2012-03-08 03:56
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Linux
|
:category: Tech
|
||||||
|
:tags: bash, linux
|
||||||
:slug: some-bash-tips
|
:slug: some-bash-tips
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
20
content/2012-05-04_ganymede_twilio.rst
Normal file
20
content/2012-05-04_ganymede_twilio.rst
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Ganymede, Twilio
|
||||||
|
################
|
||||||
|
:date: 2012-05-04 23:30
|
||||||
|
:author: tyrel
|
||||||
|
:category: Tech
|
||||||
|
:tags: nodejs, twilio
|
||||||
|
:slug: ganymede-twilio
|
||||||
|
:status: published
|
||||||
|
|
||||||
|
Last night I wrote the beginnings of my first NodeJS application. Is application even the correct word?
|
||||||
|
|
||||||
|
I’ve been meaning to try out the cool API by Twilio, which is used for SMS and VoiceCalling. I decided to design a system that will be two+ endpoints. One is the main server which will listen for UDP messages. When it receives the correct UDP message, configured in the config(`konphyg <https://github.com/pgte/konphyg>`_) files, it will fire off a message to Twilio and send me a text message.
|
||||||
|
|
||||||
|
The next steps, which I should be getting to tonight, are to create the Arduino portion and the serial listener. The Arduino will have a button that will send a message over serial to another NodeJS listener. This will decide if the press was good enough, if it passes the debouncing filter, and then fire a message to the main Ganymede server.
|
||||||
|
|
||||||
|
This could be used as a little text message doorbell for when you have your music on too loud. I don’t believe I will ever sell this, as it’s just for me to get into NodeJS, but It would be fun to share with friends.
|
||||||
|
|
||||||
|
The source so far is located on my github at [DEADLINK].
|
||||||
|
|
||||||
|
I will write more as the project continues about the different technologies and comment on my choices in the source a little bit.
|
27
content/2012-05-07_hypertherm.rst
Normal file
27
content/2012-05-07_hypertherm.rst
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Hypertherm
|
||||||
|
##########
|
||||||
|
:date: 2012-05-07 23:30
|
||||||
|
:author: tyrel
|
||||||
|
:category: Personal
|
||||||
|
:slug: hypertherm
|
||||||
|
:status: published
|
||||||
|
|
||||||
|
For the past three months I have been upgrading and rewriting version 2 of my software for Hypertherm. I am under a contract for my father’s company. His company is developing a machine to test how well air flows (laminar flow) through a plasma cutting torch head, and how much air leaks out over a certain time (delta pressure loss).
|
||||||
|
|
||||||
|
This has been a nice adventure. I am talking to the tester over serial, reading in a hand scanner (barcodes and acts as a keyboard easy), talking to a DYMO printer and using a database.
|
||||||
|
|
||||||
|
The serial communication was pretty straightforward. I started a new thread and listen for serial all the time. The tricky part with that was that because it was on another thread, I needed a delegate to talk to my UI when I did things like change the picture from blank to a big red X, or update a label.
|
||||||
|
|
||||||
|
The hand scanner wasn’t even a factor that took longer than 10 minutes, I just pop up a dialog box asking for input.
|
||||||
|
|
||||||
|
The DYMO printer was the hardest part. This took me a month to figure out, I kept fighting with the printer. I could figure out how to print to the left roll, the ones we setup as as the passing labels, but I couldn’t for the life of me figure out how to get it to print to the right label, using a custom label. I tried to load the labels into data and use a StreamWriter/StreamReader object to treat that as the label, but it kept printing one that had, for reasons unknown to me, been locked into the printer. I finally gave up on using the interface they provided and am writing the label to a temporary file. The file is in the user’s %appdata% directory in a sub directory that it will not be mistakenly written to, so I feel safe doing it this way. Granted, the machine is a single purpose machine, once this program is installed it will only run this program day and night.
|
||||||
|
|
||||||
|
Once I got the printer working, I checked it in to github and realized it took me way longer than anticipated. I learned a lot about .NET development (by no means everything, or even most things, just a lot compared to what I did know before [nothing].)
|
||||||
|
|
||||||
|
Tonight while developing I decided to video some aspects of the Program.
|
||||||
|
|
||||||
|
The following four links are videos, showing parts of the program and machine in action.
|
||||||
|
|
||||||
|
* [Hosted on Qik - no longer available]
|
||||||
|
* [Hosted on Qik - no longer available]
|
||||||
|
* [Hosted on Qik - no longer available]
|
@ -3,6 +3,7 @@ Harry Delmolino
|
|||||||
:date: 2012-05-25 03:56
|
:date: 2012-05-25 03:56
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Personal
|
:category: Personal
|
||||||
|
:tags: friends
|
||||||
:slug: harry-delmolino
|
:slug: harry-delmolino
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ CFEngine3 Install on CentOS 5.7
|
|||||||
:date: 2012-11-07 03:57
|
:date: 2012-11-07 03:57
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: outdated
|
:category: outdated
|
||||||
|
:tags: cfengine, centos
|
||||||
:slug: cfengine3-install-on-centos-5-7
|
:slug: cfengine3-install-on-centos-5-7
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Getting started in Python Part 1
|
|||||||
################################
|
################################
|
||||||
:date: 2013-07-02 03:59
|
:date: 2013-07-02 03:59
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Python
|
:category: Tech
|
||||||
|
:tags: python2, pip, virtualenv
|
||||||
:slug: getting-started-in-python-part-1
|
:slug: getting-started-in-python-part-1
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Help, I have too many Django ManyToMany Queries [FIXED]
|
|||||||
#######################################################
|
#######################################################
|
||||||
:date: 2013-08-06 04:00
|
:date: 2013-08-06 04:00
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Python
|
:category: Tech
|
||||||
|
:tags: python, django, bugs
|
||||||
:slug: help-i-have-too-many-django-manytomany-queries-fixed
|
:slug: help-i-have-too-many-django-manytomany-queries-fixed
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ How to not trigger a post_save in Django, but still modify data.
|
|||||||
################################################################
|
################################################################
|
||||||
:date: 2013-11-13 03:58
|
:date: 2013-11-13 03:58
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Django
|
:category: Tech
|
||||||
|
:tags: django, python
|
||||||
:slug: how-to-not-trigger-a-post_save-in-django-but-still-modify-data
|
:slug: how-to-not-trigger-a-post_save-in-django-but-still-modify-data
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Readline
|
|||||||
########
|
########
|
||||||
:date: 2014-06-21 04:01
|
:date: 2014-06-21 04:01
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Linux
|
:category: Tech
|
||||||
|
:tags: readline, linux, cli
|
||||||
:slug: readline
|
:slug: readline
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
@ -12,29 +13,30 @@ Let me first backup and explain what Readline is. From the GNU Readline Document
|
|||||||
|
|
||||||
Here are a couple of the commands I use daily:
|
Here are a couple of the commands I use daily:
|
||||||
|
|
||||||
|
|
||||||
Movement
|
Movement
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
|
|
||||||
- To move to the beginning of a line, you press **^a** :sup:` ` `note: 1 <#sup1>`__
|
- To move to the beginning of a line, you press **C-a**
|
||||||
- To move to the end of a line you press **^e**
|
- To move to the end of a line you press **C-e**
|
||||||
|
|
||||||
Killing and Yanking
|
Killing and Yanking
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
- To cut the rest of the line from where your cursor is, to the end, you press **^k**
|
- To cut the rest of the line from where your cursor is, to the end, you press **C-k**
|
||||||
- To delete one word you press **^w**
|
- To delete one word you press **C-w**
|
||||||
- To paste either of the two previous back you can press **^y**
|
- To paste either of the two previous back you can press **C-y**
|
||||||
|
|
||||||
Miscellaneous
|
Miscellaneous
|
||||||
~~~~~~~~~~~~~
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
- To clear the screen and get to a fresh start, you can press **^l**
|
- To clear the screen and get to a fresh start, you can press **C-l**
|
||||||
- To end your session you can send a **^d** (This will send an end of file character)
|
- To end your session you can send a **C-d** (This will send an end of file character)
|
||||||
- To search for a command you typed recently, press **^r** and start typing, it will search backwards. **^r** again will search for an earlier match.
|
- To search for a command you typed recently, press **C-r** and start typing, it will search backwards. **C-r** again will search for an earlier match.
|
||||||
- The inverse of **^r ** is **^s**, they function the same.
|
- The inverse of **C-r ** is **C-s**, they function the same.
|
||||||
|
|
||||||
Finally, don’t forget about **^c**. While not specifically Readline, it’s very useful because it sends the SIGINT signal to the program, which if just on the command line, will not execute the line you have type, and give you a new line with nothing on it. A nice clean start.
|
Finally, don’t forget about **C-c**. While not specifically Readline, it’s very useful because it sends the SIGINT signal to the program, which if just on the command line, will not execute the line you have type, and give you a new line with nothing on it. A nice clean start.
|
||||||
|
|
||||||
|
To find out a lot more, read the documentation at `the Readline Commands Docs <http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html>`__ I even learned some things while writing this up, apparently pressing **C-x $** will list off all the possible usernames. Good to know, and good to always keep learning.
|
||||||
|
|
||||||
To find out a lot more, read the documentation at `the Readline Commands Docs <http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html>`__ I even learned some things while writing this up, apparently pressing **^x $** will list off all the possible usernames. Good to know, and good to always keep learning.
|
|
||||||
|
|
||||||
*1* `#sup1-back <#sup1-back>`__ *Also, if you are unaware, the convention I use is ^ to represent control, the documentation on Readline uses C- representing the same thing.*
|
|
||||||
|
20
content/2014-10-01_first_day_java_college.rst
Normal file
20
content/2014-10-01_first_day_java_college.rst
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
First day back in Java since college
|
||||||
|
####################################
|
||||||
|
:date: 2014-10-01 04:03
|
||||||
|
:author: tyrel
|
||||||
|
:category: Tech
|
||||||
|
:tags: java
|
||||||
|
:slug: java-2014
|
||||||
|
:status: published
|
||||||
|
|
||||||
|
Recently I decided I wanted to learn Java again. I last programmed in Java when I was in College and that was the main language they taught in. I wouldn’t say I was a great Java developer, although I completed every Java course well enough to get an A or better.
|
||||||
|
|
||||||
|
I want to relearn Java because for the past four years I have primarily focused on Python. While it is a great language, I feel I need a change from what I’m focusing on now with primarily web based programming.
|
||||||
|
|
||||||
|
I decided to refresh myself with Java and read a “Java for Python developers” guide, which was a great refresher. After that I sat around wondering what to program, inspiration wasn’t coming quickly. I settled on a SSH Configuration Manager, which is something I’ve wanted for a while now.
|
||||||
|
|
||||||
|
This Configuration Manager will read in your ~/.ssh/config files, and show you what hosts you have in a GUI interface. The great part of it will be that you can also create new ssh configurations, without having to remember every little detail. There will be a lot of help tooltips, and pre-fills as well. I have a pretty basic idea of what I want it to look like. Ideally a list on the far left with +/- buttons to add a new Host, and to the right of that will be another hierarchy list of all the key groups you can change, with the most common (that I or people I talk to) being in a “General” or “Common” list. To the right of that will be the actual keys and values you change. I think I would like to be able to “favorite” keys that you use frequently. This way when you create a new host entry, you can quickly fill out your usual configurations be it only adding an IdentityFile and User. Another feature I thought of would be copying/templating, for example being able to create a new “work based server” configuration by just copying one you already have.
|
||||||
|
|
||||||
|
Some of the options will be a bit tricky, a couple of them are along the lines of allowing “yes”, “no”, “ask”, or an integer, and I haven’t figured out exactly how I want to manage that yet.
|
||||||
|
|
||||||
|
Currently I have a model that only has getters/setters and toString support, there’s a lot of them so it’s already a 1050 line file last I checked. Next time I work on this project I want to start with data validation and learning how to write tests in Java. I think learning good BDD or TDD habits while learning a “new” language would definitely benefit me.
|
@ -2,7 +2,8 @@ SSH Agent on “boot”
|
|||||||
###################
|
###################
|
||||||
:date: 2015-01-09 04:03
|
:date: 2015-01-09 04:03
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Linux
|
:category: Tech
|
||||||
|
:tags: linux, ssh
|
||||||
:slug: ssh-agent-on-boot
|
:slug: ssh-agent-on-boot
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Python Debugger
|
|||||||
###############
|
###############
|
||||||
:date: 2015-01-13 04:02
|
:date: 2015-01-13 04:02
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Python
|
:category: Tech
|
||||||
|
:tags: python, pdb
|
||||||
:slug: python-debugger
|
:slug: python-debugger
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Too many open files
|
|||||||
###################
|
###################
|
||||||
:date: 2015-01-28 04:02
|
:date: 2015-01-28 04:02
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Python
|
:category: Tech
|
||||||
|
:tags: python, linux, ulimit, bugs
|
||||||
:slug: too-many-open-files
|
:slug: too-many-open-files
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ Hello, world!
|
|||||||
#############
|
#############
|
||||||
:date: 2021-10-31 19:10
|
:date: 2021-10-31 19:10
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Hello
|
:category: Blog
|
||||||
:slug: hello-world
|
:slug: hello-world
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Python3 GitHub CLI tool as a refresher
|
|||||||
######################################
|
######################################
|
||||||
:date: 2021-11-04 01:29
|
:date: 2021-11-04 01:29
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Python
|
:category: Tech
|
||||||
|
:tags: python, cli
|
||||||
:slug: python3-github-cli-tool-as-a-refresher
|
:slug: python3-github-cli-tool-as-a-refresher
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Finished my GitHub CLI tool
|
|||||||
###########################
|
###########################
|
||||||
:date: 2021-11-05 00:08
|
:date: 2021-11-05 00:08
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Python
|
:category: Tech
|
||||||
|
:tags: python, cli
|
||||||
:slug: finished-my-github-cli-tool
|
:slug: finished-my-github-cli-tool
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Postmortem of a fun couple bugs
|
|||||||
###############################
|
###############################
|
||||||
:date: 2021-11-11 14:55
|
:date: 2021-11-11 14:55
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Go
|
:category: Tech
|
||||||
|
:tags: Go, dbus, bugs
|
||||||
:slug: postmortem-of-a-fun-couple-bugs
|
:slug: postmortem-of-a-fun-couple-bugs
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
@ -10,7 +11,7 @@ Story at my previous job:
|
|||||||
|
|
||||||
Tieg: Hey Tyrel, I can't run ``invoke sign 5555``, can you help with this?
|
Tieg: Hey Tyrel, I can't run ``invoke sign 5555``, can you help with this?
|
||||||
|
|
||||||
This is How my night started last night at 10pm. My coworker Tieg did some work on our `CLI <https://tidelift.com/cli>`__ project and was trying to release the latest version. We use `invoke <https://www.pyinvoke.org/>`__ to run our code signing and deployment scripts, so I thought it was just a quick "oh maybe I screwed up some python!" fix. It wasn't.
|
This is How my night started last night at 10pm. My coworker Tieg did some work on our `CLI <https://tidelift.com/cli>`_ project and was trying to release the latest version. We use `invoke <https://www.pyinvoke.org/>`_ to run our code signing and deployment scripts, so I thought it was just a quick "oh maybe I screwed up some python!" fix. It wasn't.
|
||||||
|
|
||||||
I spent from 10:30 until 1:30am this morning going through and looking into why Tieg wasn't able to sign the code. The first thing I did was re-run the build on CircleCI, which had the same error, so hey! at least it was reproducible. The problem was that in our Makefile scripts we run ``tidelift version > tidelift-cli.version`` and then upload that to our deployment directories, but this was failing for some reason. We let clients download this file to see what the latest version is and then our CLI tool has the ability to selfupdate (except on homebrew) to pull this latest version if you're outdated.
|
I spent from 10:30 until 1:30am this morning going through and looking into why Tieg wasn't able to sign the code. The first thing I did was re-run the build on CircleCI, which had the same error, so hey! at least it was reproducible. The problem was that in our Makefile scripts we run ``tidelift version > tidelift-cli.version`` and then upload that to our deployment directories, but this was failing for some reason. We let clients download this file to see what the latest version is and then our CLI tool has the ability to selfupdate (except on homebrew) to pull this latest version if you're outdated.
|
||||||
|
|
||||||
@ -22,7 +23,7 @@ Pumped about this new revelation, I started looking at our ``keychain`` dependen
|
|||||||
|
|
||||||
Would you know it, the problem was elsewhere. Tieg was running ``dtruss`` and saw that one time it was checking his ``/etc/hosts`` file when it was failing, and another time it was NOT, which was passing. Then pointed out a 50ms lookup to our ``download.tidelift.com`` host.
|
Would you know it, the problem was elsewhere. Tieg was running ``dtruss`` and saw that one time it was checking his ``/etc/hosts`` file when it was failing, and another time it was NOT, which was passing. Then pointed out a 50ms lookup to our ``download.tidelift.com`` host.
|
||||||
|
|
||||||
Tieg then found https://github.com/golang/go/issues/49517 this issue where someone mentions that Go 1.17.3 was failing them for net/http calls, but not the right way.
|
Tieg then found `Issue 49517 <https://github.com/golang/go/issues/49517>`_ this issue where someone mentions that Go 1.17.3 was failing them for net/http calls, but not the right way.
|
||||||
|
|
||||||
It turns out, that it wasn't the keyring stuff, it wasn't the *technically* the version calls that failed. What was happening is every command starts with a check to https://download.tidelift.com/cli/tidelift-cli.version which we then compare to the current running version, if it's different and outdated, we then say "you can run selfupdate!". What fails is that call to download.tidelift.com, because of compiling with go1.17.3 and a ``context canceled`` due to stream cleanup I guess?
|
It turns out, that it wasn't the keyring stuff, it wasn't the *technically* the version calls that failed. What was happening is every command starts with a check to https://download.tidelift.com/cli/tidelift-cli.version which we then compare to the current running version, if it's different and outdated, we then say "you can run selfupdate!". What fails is that call to download.tidelift.com, because of compiling with go1.17.3 and a ``context canceled`` due to stream cleanup I guess?
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ Garage Door Opener
|
|||||||
##################
|
##################
|
||||||
:date: 2022-01-09 22:46
|
:date: 2022-01-09 22:46
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: HomeAssistant
|
:category: Tech,
|
||||||
|
:tags: HomeAssistant, home
|
||||||
:slug: garage-door-opener
|
:slug: garage-door-opener
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ An Update On Flying
|
|||||||
:date: 2022-05-07 01:15
|
:date: 2022-05-07 01:15
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Personal
|
:category: Personal
|
||||||
|
:tags: flying
|
||||||
:slug: an-update-on-flying
|
:slug: an-update-on-flying
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
#######################################################
|
#######################################################
|
||||||
:date: 2022-06-02 16:54
|
:date: 2022-06-02 16:54
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Linux
|
:category: Tech
|
||||||
|
:tags: Linux, raspberrypi
|
||||||
:slug: 2016-monitoring-a-co2-tank-in-a-lab-with-a-raspberry-pi
|
:slug: 2016-monitoring-a-co2-tank-in-a-lab-with-a-raspberry-pi
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ Scrollbar Colors
|
|||||||
:date: 2022-10-13 12:07
|
:date: 2022-10-13 12:07
|
||||||
:author: tyrel
|
:author: tyrel
|
||||||
:category: Website
|
:category: Website
|
||||||
|
:tags: css
|
||||||
:slug: scrollbar-colors
|
:slug: scrollbar-colors
|
||||||
:status: published
|
:status: published
|
||||||
|
|
||||||
|
21
content/2022-10-16_pelican.rst
Normal file
21
content/2022-10-16_pelican.rst
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
New Blog - Pelican!
|
||||||
|
###################
|
||||||
|
:date: 2022-10-16 23:30
|
||||||
|
:author: tyrel
|
||||||
|
:category: Blog
|
||||||
|
:tags: python, pelican
|
||||||
|
:slug: pelican-new-blog
|
||||||
|
:status: published
|
||||||
|
|
||||||
|
If you have read the previous post, and then looked at this one, there are a LOT of changes that happened.
|
||||||
|
I was recently exploited and had ``heysrv.php`` files everywhere, so I have decided to forego wordpress for now.
|
||||||
|
I am now using `Pelican <https://getpelican.com>`_!
|
||||||
|
|
||||||
|
It's very sleek, and only took me a few hours to port my Wordpress export to Pelican reStructuredText format.
|
||||||
|
|
||||||
|
All I have to do is run ``invoke publish`` and it will be on the server.
|
||||||
|
No PHP, no database.
|
||||||
|
All files properly in their right places.
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
content/images/2012-02-08_graphite_menu.png
Normal file
BIN
content/images/2012-02-08_graphite_menu.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 31 KiB |
12
content/pages/contact.rst
Normal file
12
content/pages/contact.rst
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Contact
|
||||||
|
#######
|
||||||
|
:date: 2022-10-15 00:00
|
||||||
|
:author: tyrel
|
||||||
|
:category: Contact
|
||||||
|
:slug: contact
|
||||||
|
:status: published
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
To Contact Me: `Email <mailto:email@tyrel.dev>`__
|
||||||
|
|
@ -1,10 +1,12 @@
|
|||||||
AUTHOR = 'Tyrel Souza'
|
AUTHOR = 'Tyrel Souza'
|
||||||
SITENAME = 'Tyrel Site'
|
SITENAME = 'Tyrel Site'
|
||||||
TWITTER_USERNAME = "tyrelsouza"
|
TWITTER_USERNAME = 'tyrelsouza'
|
||||||
SITEURL = ''
|
SITEURL = ''
|
||||||
SITESUBTITLE = 'Code, Home Automation, Personal Blog'
|
SITESUBTITLE = 'Code, Home Automation, Personal Blog'
|
||||||
MENUITEMS = [
|
MENUITEMS = [
|
||||||
("Blog", "/")
|
('Home', '/'),
|
||||||
|
('Tags', '/tags'),
|
||||||
|
('Categories', '/categories'),
|
||||||
]
|
]
|
||||||
PATH = 'content'
|
PATH = 'content'
|
||||||
|
|
||||||
@ -22,12 +24,16 @@ AUTHOR_FEED_RSS = None
|
|||||||
# Blogroll
|
# Blogroll
|
||||||
LINKS = (
|
LINKS = (
|
||||||
('Code', 'https://gitea.tyrel.dev/'),
|
('Code', 'https://gitea.tyrel.dev/'),
|
||||||
|
('Wiki', 'https://tyrel.website/wiki/'),
|
||||||
|
('Flying Blog', 'https://k3tas.radio/airband/'),
|
||||||
|
('Photos', 'https://tyrel.website/photos'),
|
||||||
|
('LinkedIN', 'https://www.linkedin.com/in/tyrel-souza/'),
|
||||||
)
|
)
|
||||||
|
|
||||||
# Social widget
|
# Social widget
|
||||||
SOCIAL = (
|
SOCIAL = (
|
||||||
('Twitter', 'https://twitter.com/tyrelsouza'),
|
('Twitter', 'https://www.twitter.com/tyrelsouza'),
|
||||||
('Instagram', 'https://instagram.com/tyrelsouza'),
|
('Instagram', 'https://www.instagram.com/tyrelsouza'),
|
||||||
)
|
)
|
||||||
|
|
||||||
PLUGINS = [ ]
|
PLUGINS = [ ]
|
||||||
@ -36,4 +42,4 @@ DEFAULT_PAGINATION = 10
|
|||||||
DISPLAY_CATEGORIES_ON_MENU = False
|
DISPLAY_CATEGORIES_ON_MENU = False
|
||||||
DELETE_OUTPUT_DIRECTORY = True
|
DELETE_OUTPUT_DIRECTORY = True
|
||||||
|
|
||||||
STATIC_PATHS = ("images",)
|
STATIC_PATHS = ('images',)
|
||||||
|
@ -7,7 +7,7 @@ sys.path.append(os.curdir)
|
|||||||
from pelicanconf import *
|
from pelicanconf import *
|
||||||
|
|
||||||
# If your site is available via HTTPS, make sure SITEURL begins with https://
|
# If your site is available via HTTPS, make sure SITEURL begins with https://
|
||||||
SITEURL = ''
|
SITEURL = 'https://tyrel.dev/pelican/'
|
||||||
RELATIVE_URLS = False
|
RELATIVE_URLS = False
|
||||||
|
|
||||||
FEED_ALL_ATOM = 'feeds/all.atom.xml'
|
FEED_ALL_ATOM = 'feeds/all.atom.xml'
|
||||||
@ -18,4 +18,4 @@ DELETE_OUTPUT_DIRECTORY = True
|
|||||||
# Following items are often useful when publishing
|
# Following items are often useful when publishing
|
||||||
|
|
||||||
#DISQUS_SITENAME = ""
|
#DISQUS_SITENAME = ""
|
||||||
#GOOGLE_ANALYTICS = ""
|
#GOOGLE_ANALYTICS = ""
|
||||||
|
21
requirements.txt
Normal file
21
requirements.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
beautifulsoup4==4.11.1
|
||||||
|
blinker==1.5
|
||||||
|
commonmark==0.9.1
|
||||||
|
docutils==0.19
|
||||||
|
feedgenerator==2.0.0
|
||||||
|
feedparser==6.0.10
|
||||||
|
invoke==1.7.3
|
||||||
|
Jinja2==3.1.2
|
||||||
|
lxml==4.9.1
|
||||||
|
Markdown==3.4.1
|
||||||
|
MarkupSafe==2.1.1
|
||||||
|
pelican==4.8.0
|
||||||
|
pelican-more-categories==0.1.0
|
||||||
|
Pygments==2.13.0
|
||||||
|
python-dateutil==2.8.2
|
||||||
|
pytz==2022.4
|
||||||
|
rich==12.6.0
|
||||||
|
sgmllib3k==1.0.0
|
||||||
|
six==1.16.0
|
||||||
|
soupsieve==2.3.2.post1
|
||||||
|
Unidecode==1.3.6
|
Loading…
Reference in New Issue
Block a user