Birthday Bash: Providing Bash with a bit more pizazz


Today I turn 31. Before the day is through, I'll have ended up celebrating with family and coworkers. And Bash, because as it turns out, Bash can be a bit festive. I find most default Bash prompts to be rather boring. Sure, they vary from platform to platform, but they all seem a little too lite on info that I care about. A few years ago I decided to liven it up a bit.…
Read more ⟶

Clojure-Snake: Bringing my desk ornament to my desktop


Lately I've been exploring the world of Clojure. I'm not sure whether it was the siren song of functional programming that started driving me, the simplicity of Lisp, or my curiosity about this language that was being promoted by the likes of Uncle Bob. Whatever the cause, I needed to explore this strange world head first. I needed to try out this language for myself. I spent much of time just dipping my toes in and writing little toy programs here and there.…
Read more ⟶

Musical Impostor: I made a thing. And I like it.


I wrote a song this morning. I feel really good about it. I tend to record music, frown a little and then hide it far away from human ears. It isn't that I don't like it. I just don't want anyone else to realize how amateur it is and that I, by extension, must be an amateur. A fake. An imposter. So, I'm doing the imposter syndrome post? About time, I suppose.…
Read more ⟶

Snake-duino: Hey look, a side project!


My desk has a new ornament on it: an Arduino powered lamp. And why does that merit a blog post? Because I built it. After combining the Rainbowduino kit with some 600-ish points of solder, I found myself ruler of a 16MHz processor, 30Kb of instruction storage, 2Kb of data storage, and 64 tricolor pixels. And what does one do with 64 pixels, no inputs, and processing power reminiscent of a vintage entertainment console?…
Read more ⟶

Getting to Know Fiddler: Part VIII: It isn't all rainbows and unicorns


Roughly a year ago I posted what I expected to be the last entry in my Fiddler series. Each of the seven entries had focused on various ways that Fiddler could help improve our development life cycle. They represented the highlight reel. All isn't perfect though, and where there is a highlight reel, there tends to be outtakes as well. So, here goes: here's a few ways you can use Fiddler to slow down your development process.…
Read more ⟶

Passing Static Credentials Upstream through NGinx: Making NGinx add credentials to upstream requests


Just over a year ago we went over how to setup a reverse proxy that would require our users to authenticate. In our original proxy article, we generated some NGinx configuration that looked a bit like… location / { proxy_pass http://jira; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } And it worked. And everyone was happy. Until the day the request came in that NGinx should add a fixed set of credentials to all upstream web requests.…
Read more ⟶

Redirecting Requests with NGinx: Using NGinx configuration to quickly redirect traffic


A while back, I announced that I had moved my blog over to HTTPS. What about HTTP though? Do I serve content over HTTP still, or did I doom existing links to be forever broken? As you could guess by the title of this post, neither of those was satisfactory. Instead, I added four lines to our NGinx configuration telling it to listen on port 80 and respond to every request with a permanent redirect pointing to the same path under https://joshuarogers.…
Read more ⟶

Why Casting List(T) Isn't a Thing: Examining an 'obvious' upcast that really isn't.


From time to time I hear a certain question floating around through the office, along the lines of “Why won't .NET let me pass my List<Thing> as a List<IThing>?” The tone of the question usually suggests that someone is annoyed that .NET isn't smart enough to make such a simple inference. The reality though is that the compiler is smart enough to know that it can't. You're kidding, right? If Thing is an IThing, then all the Thing in a List<Thing> must also be IThing.…
Read more ⟶

SOCKS Proxy Over SSH: If you have access to SSH, then you have access to run your own proxy server


Back in May we looked at how to setup Access Controls with NGinx. I didn't mention how I test it though. In order to test the different rules, the requests needed to originate from different IP ranges, which in turn meant that I would need to send the requests from different networks. As I find the idea of fidgeting with cables or hotspots to be more than slightly annoying, I opted to tunnel request out of my internal network using a SOCKS proxy.…
Read more ⟶

Securing SSH: Just because it has secure in the name doesn't mean that it's secure out of the box


My server had an unauthorized login attempt today. Really, it was more along the lines of 2,000 login attempts. Why is my server under attack? Simply because it is on the internet. See, this is actually a normal day for a small server. Last week, there were just over 12,000 attempts. So, business as usual for a server looks something like walking through a zombie filled wasteland armed only with a cowbell and a belt made of bacon.…
Read more ⟶