Well, “on a budget” only if you’re already using Confluence.
I recently took on a team of my own at work and wanted to implement a Kanban board for us to organize around. I heard the FLOSS Weekly episode a couple weeks back which featured the devs from Taiga.io. I took a look at this and even signed up for a fee hosted account to demo it. Very nice software, but it occurred to me that there’s a task macro in Confluence that I’ve used on occasion in the past. So I created a new page in our private space, inserted some columns with task macros; one for Backlog, one for In Progress, and one for Done. It’s not fancy by any means, and is certainly not scalable beyond the few of us, but it’s getting the job done for now and only took a few minutes and no additional $$$ to setup i.e. no budget approval.
It’s likely that there’s similar solutions in other CMS systems. If you think something up, let me know.
Years ago, I read Joe Maller’s web focused git worflow article. I thought it very interesting, and was actually my catalyst to start playing around with Git. And while the wonderful world of Git started to open to me, I never actually implemented it for my blog. I tried a few things at the time, but it felt far more clunky that useful.
Fast forward a bit and I’ve now been using Git as a standard part of my toolset at work for a couple of years now. Nothing too fancy, but I feel much more comfortable with the general workflow of multiple branches, automating actions with hooks, multiple clones, remotes, etc. So, once I got my — seemingly anual — clean-up-my-site bug this year, one of the things I implemented was something similar to what Joe had outlined.
Not only has this workflow simplified the deploy process for me, especially as I have multiple devices on which I hack my site, but it saved me from near “disaster” last weekend. I was mucking around on my server (why oh why do I still do that?) and
rmed my production web root rather than a temp copy I had in
/tmp/. But, no biggie. In just a matter of seconds I had my site back online with a simple
git clone and build. There were a few things I hadn’t included in my repo, most notably the little magnifying glass image in my search button; easy enough to replace. A nice lesson learned on a non-critical system.
And on that note, happy Backup Awareness Month!
So I’ve been obsessing with my site design over the last few weeks. It started with some big changes at first, followed by a seemingly non-stop stream of little tweaks (including some that will get committed with this post). One thing that’s irked me for awhile was that when clicking between most of my pages and my contact page, the width alignment of the content would change due the the absence of a scrollbar. At first, I played around with some CSS to remove the scrollbars from all pages. I only use a MacBook Pro or my phone, so I’m always scrolling the page with a page grab rather than a scrollbar grab. However, removing the scrollbar would likely cause usability issues for those who instead prefer to use their mouse to grab the scrollbar. Further, I couldn’t find an elegant cross-browser solution.
overflow-y:hidden worked in most browsers, but it made the page unscrollable with the mouse wheel in Firefox. So, I went the other route and forced a scrollbar on all pages, whether there was a need for one or not. Now all pages size the same which means there’s no longer that jumpy resize problem with going to the contact page, or any other minimal page.
After playing around with my bash prompt for a bit, I’ve settled on the below. For me, it’s a nice mix of bling and useability enhancements
export PS1="\n\[\e[0;33m\]\d \t\[\e[m\] \[\e[0;36m\]\u \h \w\[\e[0m\]\n\\$ "
export PS1="\n\[\e[0;33m\]\d \t\[\e[m\] \[\e[0;36m\]\u \[\e[0m\]\[\e[0;35m\]\h \[\e[m\]\[\e[0;36m\]\w\[\e[0m\]\n\\$ "
Roll a Repo Back to a Given Commit
git reset --hard <commit_id>
git push -f
Find files that have changed in the last 2 days
git log --pretty=format: --name-only --since="2 days ago" | sort | uniq
View the history of a file
Push a new local branch to a remote Git repo
git push -u origin branch_name
Move uncommitted changes to a new branch
git checkout -v <branch-name>
make your changes
git add --all .
git commit -m "<message>"
now you can switch back and forth and see the changes
Get System Info
salt '*' pillar.items
salt '*' grains.items
Downgrade a System
git clone git://github.com/saltstack/salt
git checkout v<version number>
sudo python setup.py install --force
It might be a little late to the party, but I finally got around to putting together some responsive stylesheets. This site should now be rocking out on the iPhone like it’s 2007! The old stylesheet scaled well enough, but the updates should hopefully make things a bit more elegant on small screens while at the same time make better use of the additional real estate on larger screens.
So I needed a handy, low overhead way to test bandwidth between myself and a remote server. SCP was handy and was able to give me a relative thumbs up or down, but the overhead distorted the figures. dd and netcat to the rescue.
Open socket on machine “A”
while [ True ]; do nc -v -l 2222 > ddTest; done
Push a file from machine “B” to machine “A”
dd if=/dev/zero bs=50M count=1 | nc <ip of machine A> 2222
Finally got a chance to get down and dirty creating Chef recipes for use in OpsWorks. These are primarily just some notes for myself.
- opsworks-agent-cli allows you to view logs, manually run setup scripts, etc
- not as useful a tool as one might want
- probably its ability to spit out the entire stack config into a json file is its the most useful feature
- the show_log log it presents is in /var/lib/aws/opsworks/chef/ if you’d prefer to tail it directly
- Other logs are in /var/log/aws/opsworks, though I haven’t found those very informative or useful
Kudos to a dzone blog post (link below) for help in testing cookbooks. In short, it was much easier to debug the cookbooks from an instance in a dev OpsWorks env:
- made my edits to the cookbooks on the dev instance
- tested until desired results were achieved
- copied the final changes back to my source
committed source to repo for automation use
opsworks-agent-cli get_json > /tmp/attributes.json
# edit /tmp/attributes.json as needed
bin/chef-solo -c conf/solo.rb -j /tmp/attributes.json -o <cookbook::recipe>
was only able to get "setup" recipes to run, and not "deploy" scripts, when executing a recipe with a "stack command" from the OpsWorks web UI