Your principles can’t be extinguished unless you snuff out the thoughts that feed them, for it’s continually in your power to reignite new ones…. It’s possible to start living again! See things anew as you once did—that is how to restart life! —Marcus Aurelius, Meditations, 7.2
Archive
January 2025
Finished reading: Shift by Hugh Howey 📚 Book 2 of the Solo series. Was a good book to spend a Sunday reading. I very much lean into the idea that we should face our past and process our traumas in order to grow as a species. Masking it, hiding it, drugging ourselves to forget will just lead us to …
.tap https://ruby-doc.org/3.4.1/Kernel.html#method-i-tap tap {|x| block } → obj Yields self to the block and then returns self. The primary purpose of this method is to “tap into” a method chain, in order to perform operations on intermediate results within the chain. What a weird method, but a …
notes purchased a computer to support my deep work this year as a “grand gesture” to help support and ensure i do the thing. it’s a work machine, for work and study. Went with a System76 Thelio Spark Premium with a slick racing stripe so you know its gonna be fast :P morning runs …
Second Week: Second week and the momentum is still there :D January is all about strengthening willpower. The linchpin to all of this is going to bed earlier. And that seems to be true. I am consistently going to bed early and waking early. Consistently meditating when I wake up. I am meeting the non-negotiables …
Im learning that the answer to the question, “if a tree falls in the forest and no one is around to hear it does it make a sound?”, is: it does not matter.
why not. why shouldn’t i build my own personal github
LA fires are terrifying. we have family mere blocks away from the devastation. feeling very helpless being so many miles away. ktla was helpful this morning though, really grateful for their live stream
4 hours into my work day and I have done maybe 30 minutes of real meaningful work so far. I have spent 90 minutes dealing with slack messages and reminders. Then another 30 minutes handling emails. I have meetings spread out throughout the day and so there’s little ability to do any meaningful …
well I do have an opinion on go lang. It is pleasant to write. Like Ruby. It just makes sense. Big fan I want to do more go work in my future. now how do I convince my job (which is a wordpress shop) we need to do more go projects 😂
It is in our power to have no opinion about a thing, and not to be disturbed in our soul; for things themselves have no natural power to form our judgments. —MARCUS AURELIUS, MEDITATIONS, 6.52 something i really want to make part of my self. aspiring to not give a fuck when i dont need to give a …
January is not for getting into the deep work. BUT I have been taking advantage of the morning and doing some foundational drawing practice. Kinda preparing myself to tackle some figure drawing deep work in February. I’ve also had time for coding practice so again, not the point of this month, …
First week.: It’s feeling really good. My intention for this month is to build willpower. To grow this muscle so that I can start to tackle the deep work later. And to break some bad habits. How am I developing the willpower muscle? By implementing a level of discipline and routine I have never had in my …
ssh’ing into a server to create a git repository is so 2005 im going to build a tool that will let me create and manage repositories from my workstation. we don’t need github. I want to do something like: gitrepo new [name] gitrepo sync [githubrepo] [name]
Finished reading: Kingdom Come by Mark Waid 📚 Art by Alex Ross, who is just excellent. His classic realism adds such a cool element to the superhero thing. Makes it feel epic and human in a way that no one else can quite do. Story was also pretty good ;)
The only race to run is against yourself 🏃 💪
A Scanner Darkly is so good I believe God’s M.O. is to transmute evil into good and if He’s active here, he’s doing that now. Although our eyes can’t perceive it. The whole process is hidden beneath the surface of our reality. It will only be revealed later. And even then, the people of the future, …
Watching Surveillance Cinema on #CriterionChannel - look, i am obsessed. this is the best movie streaming platform
Good start. Good sleep. Up at 6 am. 25 minutes of drawing forms. 10 minutes meditation. All of the non-negotiables were handled. Even got some coding practice in.
December 2024
A sketch book for January has been acquired. There is a space to do drawing. There is desire to do this.
First post.: January 2025 is going to be a time for doing nothing. No new projects. No new clients. No learning paths. The only thing I will be doing, is strengthening my willpower. Willpower is an exhaustible resource. I will develop the muscle so that I can set myself up for success in 2025. Small steps and …
Animal Well is a 10/10 game it’s pure madness. go deep into the well. learn to speak bunny code 🐰🐇 goty for me top 5 all time for me too probably
Hitting a wall isn’t failure - it’s a signal to adjust your approach to challenges.
Been developing with cursor ai editor a lot in the last couple of weeks and have thoughts - the tool is amazing, they’ve done an excellent job. cursor is good. ai is, fine? the ai pit of death is all too real. the plateau of death also very real. ai seems best suited to me for rubber ducking
November 2024
Running a docker registry in my homelab: Home labs are a great place to learn and tinker with systems. I love it because I get to wear my systems administrator hat. I’ve been doing a lot of application development lately as well as tinkering with various build & deployment tools for those applications. The best way, in my …
Choose one camera. Choose one lens. Choose one software. Choose one subject. Explore within the boundaries of limitation
It’s a trance pants kinda day Discovering mix tapes, dj mixes, promos, is difficult for some reason, so I am reaching way back in the bag for some oldies and classics
I don’t normally use this word, but this track is fire. On rotation since it was released. JID might have the best verse, which is rare on Eminem features. Regardless, both killed it.
October 2024
Darktable is a sharp knife. Gotta learn how to not cut yourself :D darktable is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It manages your digital negatives in a database, lets you view them through a zoomable lighttable …
One of the key shifts in Mindfulness-Based Cognitive Therapy is moving from a doing mode to a being mode. Or to say it another way; moving from trying to fix or control everything to accepting things as they are in the moment. If there is any lesson to take from this program it is that. “You …
By reading less I have actually been reading more. : By reading less I have actually been reading more. Something I learned about myself this year is that, while I love reading, I would speed through a book just to get it done. I was not allowing myself to enjoy the words on the page. I wasn’t immersing in the world. I wasn’t participating …
DHH was right (again) -> world.hey.com/dhh/autom…
Super timely Marcus Aurelius quote popped up in the discover feed: Thanks to gregmorris.co.uk/2024/10/0… for sharing you are distressed by anything external, the pain is not due to the thing itself, but to your estimate of it; and this you have the power to revoke at any moment.
September 2024
Thursday, September 26, 2024 →
Cant stop thinking about building something with NextJS so I guess i just have to do that. Feeling a bit of a hyperfocus brewing on this as a new shiny toy and dopamine source so just gonna lean into that and learn this shit 🤓
wow… wpengine.com/wp-conten… Matt Mullenweg needs to step down. What a disgrace 🍿
switowski.com/blog/i-li… I too also like Makefiles. Love that consistent tooling and dev interface on projects :)
Initial thoughts on WordPress : The creator of WordPress throwing shade at other companies because they are not contributing back enough is a bad look. To make his point, Mullenweg compared the Five For the Future contributions from Automattic and WP Engine, a competitor of similar size. Automattic contributes 3,786 hours per …
Saturday, September 14, 2024 →
morning jogging music 🎧
I am working with WordPress a lot more. And so that has me thinking about WordPress a lot more. One thing I cannot shake is how messy the platform feels. And how poor of a developer experience that WordPress provides. It could be better. I watched this video from Pantheon Developer Advocate, and …
My boring regular-ass take about Linux adoption is this: it aint for everyone and that’s totally fine. Why don’t more people use it? Let’s be honest, Linux asks way more of you than MacOS or Windows does. That’s a tall barrier to entry for many people. I use MacOS, because I …
Huh, saw a comment that said the USPS should provide email service and allocate citizens email addresses. It just makes a lot of sense to me. So many services require an email address and it is super weird that we offload that critical responsibility entirely to companies like Google.
AWS has historically been pretty good for me as a hosting solution… but there are so many landmines and gotchas to navigate that I am starting to look elsewhere
August 2024
Hmm I am writing some Go code but I have no idea if it is idiomatic Go code or even okay Go code. Gonna need to introduce myself to some GoLang folk at the next local dev meeting
My executive function is shot today 🤪 🚨
TIL that you can configure apple notes to just be a body with no title. Its a small thing, but it is really nice for my second brain. less to think about just type note and be done with it
Dont make things harder than they need to be. Make a choice. You can always make changes later. Like, get the first draft out thats the hard part. Anyways i just went with Google workspace because i didnt want to think about email that much. It works 😂 and if it doesnt ill change it later
Trying to setup a google workspace account this morning, and it keeps funneling me into a plan I do not want with no option to change it during sign up. Allegedly the steps are to just accept the much higher plan and then downgrade, but like, why this user hostile approach? I specifically chose to …
how can we stop nagging users to subscribe to a newsletter when they have already subscribed? I don’t want to annoy folk. I think we can design better experiences here
Today I learned that Affinity Designer has a QR Code drawing tool. What a time saver!
I think there is a third audience to think about when doing SEO - the LLMs. So it’s not just search engine optimization, it’s language model optimization. What does that even look like?
The conflict I have with SEO is that I am trying to speak to two different audiences. Trying to be authentic and speak to people like humans vs trying to game the search index and speak to the bots, it’s ridiculous.
my order of Segfault ☕️ arrived last night that I ordered from terminal.shop made a pot this morning and it’s pretty good! hoping it gives me super neovim coder powers today 😂 🤓
love this! blog.jim-nielsen.com/2024/impr… It will no longer be enough to blog in order to merely “put out content”. The key will be what has always been key to great blogging: expressing your unique, inimitable impression.
Be CI/CD agnostic. Develop your build system to operate outside of any specific CI system and you can then easily use any CI system that your clients may be using 🧑💻
If it weren’t for breakdancing and skateboarding I wouldn’t be watching the olympics this year 🤷 so I dunno, it totally worked to bring in some new viewers. the soundtrack has been incredibly good too
I quit smoking 12 years ago. When anyone asks how I did it, I usually respond that I used a cessation device, a shitty little cigarette sized vape, for like 3 months. But I forget to mention that I had a second cessation device - a huge bag of DumDum lollipops. Those were the real MVP in my opinion. …
The more i use TailwindCSS the more I love it. Such a good tool
If there’s a task that’s been on my todo list for a while and I can’t bring myself to do it… maybe I just shouldn’t? yes this 100% more: https://adhdftw.com/youre-not-lazy.-youre-just-bored./
Paqui Chips: Every time my wife and I go grocery shopping, I keep an eye out for my favorite snack chip. I am pretty moderate about it and only grab a bag once in a while, but for the last few months, they just have not been available. Good for the waist but sad for the soul. Seriously, Paqui chips were the best …
July 2024
time for ☕️ gonna brew up some monsoon medley and do some drawing
Golang is fun. I am not proficient with it yet, but I will be. Perfect companion language for me
CrowdStrike: It’s truly remarkable how much a failure this was from an ops perspective. Bypassing client rules for staging and force pushing directly to production without adequate testing coverage or protections in place to ensure a smooth deployment? Wild. Lessons to be learned from this? Test Test …
Took my time this morning on a walk with our little corgi Olive. I let her lead, basically that means I let her stop and smell every rock and bush and explore evey yard on our way. So i followed suit and explored the neighborhood as well
Make buying music a thing again. I bought some records recently from Amoeba in LA and it was fucking amazing like this physical thing in my hands has real weight and real value and is something I can listen to without an active internet connection or monthly subscription.
It’s funny how saying something out loud can change the energy around it, and you realize that it’s not actually a deeply held belief. Anyways I deleted a bunch of VMs and apps and distractions from my life.
Blogging for me is also in building the blog, at least that's what I want to believe: What are your goals as a blogger? I am asking that question myself and what is coming up is that half of the fun of blogging for me is the public facing side of this, the community, the knowledge sharing. But the other half for me is actually building the blog. It’s cultivating, and caring …
June 2024
Rails is a joy to work with: Ruby on Rails is an absolute JOY to work with
Elden Ring: Shadow of the Erdtree: The Shadow of the Erdtree DLC, or really, the giant expansion to the base game, is so good. It feels almost like Elden Ring 2. How is it going so far? I have almost explored the entirety of the Gravesite Plain and am working through Scadu Altus. I one-shot the Divine Beast Dancing Lion, and Rellana …
I listened to "Dr. Jonathan Haidt: How Smartphones & Social Media Impact Mental Health & the Realistic Solutions": I listened to the podcast from Huberman Labs, "Dr. Jonathan Haidt: How Smartphones & Social Media Impact Mental Health & the Realistic Solutions". Highly recommend Dr. Hubberman podcast for deep dives into a wide array of topics, from ADHD to Fitness, Sleep Hygiene, and more. Really insightful …
RSS Club: I love this idea - https://theunderground.blog/ an experimental blog that is only available to read through a feed reader. I just love blogging though too, and think RSS is an under utilized delivery system. I am currently subscribed to a lot of blogs via RSS and it's just such a joy to see what …
Ruby on Rails Love In: I am doing so much more Rails work on my own time and I just love this framework! I feel fast with it. Ruby's composability and flexibility powers up Rails and it really shines when you embrace doing things the "Rails" way. Though there are some things I think I will continue to keep to a min, like …
Form Objects in Ruby on Rails: In Ruby on Rails, a Form Object is a design pattern used to handle the complexity of forms that don’t map directly to a single model or have unique/complex validation and business logic. It encapsulates the logic related to form processing, validation, and data persistence, often combining …
Variable swapping in Ruby: Swapping variables is a fundamental concept in programming, often encountered in algorithm development and problem-solving scenarios. While the process is straightforward in many languages, Ruby offers its own particularly elegant and concise syntax for this task. Let’s first explore the more …
Quirky Ruby Feature - Mixing Code and Data: Ruby has some fun quirky features. One of them is that you can mix code and data in a single file using the special keywords __END__ and DATA. This is a weird concept, but Ruby allows you to use the script itself as a source of data. References: https://docs.ruby-lang.org/en/3.0/Object.html#DATA …
May 2024
Momentum: Started a new project. Super excited. All in. So much momentum and so much progress being made. Wow. First week in and I am feeling really good about this project. Nothing is more imprtant. Every thing is electric. And then I wake up at the start of week two, and, nothing. I just don’t care about …
Addicted to Learning: Watched a really fantastic video from Healthy Software Developer about how unchecked learning can be a dangerous addiction that can actually damage your software development career. The bit that resonated with me, and had me feeling deeply personally attacked, was the bit about using tech learning …
April 2024
How to change a Users Password via Tinker in Laravel: Laravel has a pretty great console through a REPL called Tinker. From Tinker you can interact with your models. $user = App\User::where('email', 'their@email.com')->first(); $user->password = Hash::make('their new password'); $user->save(); Super convenient! You just need SSH access to a …
A docker based setup for testing with Laravel: I experienced some annoying issues while running integration tests in a Laravel app. The official MySQL docker image will create a user and a database for you which is very convenient, but that user does not have permission to create new databases. I configure my applications to use a separate …
Add taggable support to my personal blog: Today I added taggable support to my blog. I do have blog posts tagged, but it's a simple comma-separated list in the database. I want to have a more robust system that allows me to query and filter by tags. I used the ruby gem acts-as-taggable-on to add taggable support to my blog. First thing was …
Trying to Dispatch Jobs via Tinker with Laravel and SQLite: I've been learning Laravel queues and jobs. While creating some jobs I wanted a quick way to test by executing the job. I just want to see it run. There wasn't a super clear path for me here so my first thought was let's just quickly create a one off controller action. To replay that job over again …
Use Ansible to Configure your Workstation: Let me show you a simple and easy way to manage your MacOS workstation using Ansible. Ansible is awesome, and we should automate all the things. I tinkered with doing this myself from scratch with some success, but I've discovered Jeff Geerling's incredible collection of Ansible roles and …
March 2024
DevOpsDays LA & SCaLE 21x: Once upon a time, I was fortunate enough to attend DevOpsDays Denver. It was incredible, I had so much exposure to so many informative talks, community leaders, and great ideas. It was inspiring. I came home fired up. I was missing that, then Covid hit, and I just didn’t try to get involved. …
Develop for Environment Specific Configuration: There is a pattern I see often among junior/associate developers when it comes to handling environment-specific configuration. The observed pattern could be summarized as junior developers creating separate fields for development and production environments in the application, misunderstanding the …
Managing Jumpstart Pro Updates: Jumpstart Pro is a Ruby on Rails SaaS template that lets you quickly deliver and ship business-ready web applications. It takes care of so much boilerplate and common configuration. I’ve been using it to build a small app for myself and love how easy it is to build production-ready …
November 2023
Simple Database Seeder for WordPress: I’ve been doing some WordPress development at my day job and have come to the conclusion that the development life-cycle of WordPress is kinda bad, actually. However, there are systems & processes we can implement to improve the developer and development experience. We can make it more …
September 2023
Turbo Will Call Stimulus `connect()` Twice: When you click a link to return to a page, or use your browsers back button to return to a page Turbo will render a cached preview of the page. It will then fetch an updated version of the page. If you have a stimulus controller on the page what will happen is the controller is initialized twice. …
April 2023
The Three Core Principles of DevOps: If you ask a group of people "what is DevOps?" you are likely going to get a variety of different answers. Some think it's just the automation of a pipeline. Some people may say it's just developers doing operations work. I subscribe to the idea that DevOps is a mental model for how to think about …
March 2023
How To Use Docker Compose Effectively as a Development Tool: Let's use Docker Compose to help us build software! If you are new to the world of containers then I hope you will find this tutorial insightful. We will explore setting up a new Ruby on Rails project, creating a docker-compose.yml file, then will add services like PostgreSQL and Redis, and finally, …
February 2023
Running Ruby on Rails on Docker: I have been developing Ruby on Rails apps in Docker for several years now. I couldn't imagine not using Docker at this point! An Introduction to DockerDocker an open-source project for automating the deployment of applications as portable self sufficient containers that run in cloud or on premises. …
November 2022
Getting Familiar with RSpec in Rails: I spent some time over the weekend getting familiar with RSpec. Gonna brain dump (with just a little bit of structure) the process and what I did and learned. To start I set up in a new rails project and kinda tweaked it into a place where I can be productive. What is RSpec though? It is a testing …
September 2022
Execute Workflows with Path Filtering in CircleCI: As I often love to tell people, I love monorepos and I use a monorepo for my own projects. But there is not really an out of the box solution for monorepos so you often end up having to write scripts to glue everything together. Sometimes it really does feel like wadding up a bunch of projets into a …
The difference between length, size, and count in Ruby on Rails: I was asked recently if I could explain the difference between length, size, and count for ActiveRecord models in Ruby on Rails. Unfortunately I had no answer. But I wanted to really understand so I dug into the API docs. On a Ruby Array the methods size, count, and length are as such; size is an …
AWS ACM Terraform Module with Variable SANs: Here is a a flexible terraform module for creating an AWS ACM with a variable number of additional SANs. Our infrastructure architecture is such that we have application load balancers that may serve multiple apps, and there was a need to create SSL certificates with multiple SANs to support those …
A Terraform Directory Structure: Here is a directory structure that I am using for Terraform that I think works pretty well. The quick and dirty of it is to think of your configurations in terms of a organizational and systems hierarchy, and to design your plans to support that hierarchy. Each tier depends on and builds upon the …
Enforcing Interfaces in Ruby: Ruby doesn't have the concept of an interface. Unlike say, PHP. In PHP you can specify that a class has to act like or implement specific methods. If your class fails to honor the contract of that interface and does not implement the methods of the interface, you get an error during runtime. Ruby …
August 2022
Multi-Platform Git Diff and Merge Tools: Maintain a single .gitconfig between different operating systems by using proxy scripts for git diff and git merge tools. We first need to know which operating system we are using. I do this by by extracting the value from uname and then setting the value to an environtment variable. On MacOS this …
February 2022
My Personal Monorepo & Pipeline: A monorepo is a software development strategy where code for many projects is stored in the same repository. The code doesn't necessarily have to be related. Okay, but why use a monorepo? Gathering all of my personal projects into a single repository makes it easier for me to manage and maintain the …
March 2021
Deploying a Simple Rails App with Ansible: Ruby on Rails is quickly becoming my framework of choice for my personal websites and projects. It's a pleasure to work with and has been easy to learn. But no framework is without its challenges. One of those challenges is of course deploying the app to a server. There are a lot of options for …
How to Run Rails App Server with Systemd and Ansible: Create a systemd service to run your rails app server. Ansible tasks to create the service: --- …snip… vars: rails_root: “/myapp” rails_user: “webuser” tasks: - name: Setup Rails Web Service template: dest: /usr/lib/systemd/system/rails-web.service src: …
Simplify Terraform By Generating Configurations: Terraform is an awesome tool. To make it more awesome though we have wrapped it with some custom Ruby ERB templating to generate our terraform configurations from Yaml configurations. Terraform uses a declarative language. You describe the state you want and it figures out how to get there. The …
February 2018
Profiling and Debugging a PHP app with Xdebug and Docker: Profiling and Debugging a PHP app with Xdebug and Docker I have started using an IDE again (PHPStorm) so that I could debug some applications and do some basic app profiling. I want to use Xdebug to profile my PHP apps. I am using Docker Compose on Windows 10. I have made this very complicated for …
January 2018
WP Transients must be used responsibly: We ran into an interesting issue with WooCommerce at work. First, here is the subject of the support request we got from our hosting provider: The site is generating ~150MB/sec of transaction logs, filling 500GB of diskspace Holy. Shit. A WordPress site should not be generating that much data. …
July 2017
Order Posts via: A request we are getting more often is to show a list of posts, to elevate some of those posts above others, and to show the posts in a random order. Imagine a post type called "Sponsors". Sponsors are tiered, like "Platinum", "Gold", "Silver", etc. We want the Platinum sponsors to appear before …
December 2016
Regular Expression of the day: (?!(([1,2,3,4,5,6,8,9,0])\2{9}))(?!((1234567890|0987654321)))(((\+?\d{1,2}[\s.-])?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4})|(\d{10,})) Match generic US phone numbers. Ignore 1-9 repeating (ie: 4444444444, 1111111111, (except 7, we want 7777777777 for testing)). Allow for spaces, no spaces, dashes, or …
October 2016
Technical Documentation for a Web Development Project: Working on a large web development project requires that you have clear direction and good technical documentation. The designer needs to understand the functional requirements and the data model in order to deliver a successful design. The themer need to understand the UI/UX spec in order to …
September 2016
Wednesday, September 21, 2016 →
TLS Peer Verification w/PHP 5.6 and WordPress SMTP Email plugin: We ran into an issue after upgrading from PHP 5.5 to 5.6. We were no longer able to send email via the awesome WordPress SMTP Email plugin. Turns out that PHP 5.6 introduced some enhancements to its OpenSSL implementation. Stream wrappers now verify peer certificates and hostnames by default. This …
June 2016
Whitelist IPs in Nginx: I want to whitelist my clients IP addresses (and my office IPs) to allow them to view a site, while the rest of the world will be redirected to another site, using Nginx. My Nginx server is behind a load balancer. Using the geo module I am able to do this rather easily. By default, geo will use …
May 2016
Capistrano tasks for Magento: Custom tasks for Capistrano that I am using to help manage a Magento website. set :linked_files, %w{app/etc/local.xml .htaccess robots.txt} set :linked_dirs, %w{sitemap var media} namespace :mage do task :restart do on roles(:app) do execute "cd #{current_path} && rm -f maintenance.flag" end …
Creating link tags with hreflang attributes in CraftCMS: I want to preface this with the following; I think CraftCMS is a poor CMS. I dislike many things that it does and cannot recommend it as a professional CMS. Having said, that, I am working with it a lot these days at work and recently had to add link tags with hreflang attributes to the head. For …
February 2016
Setting up Git HTTP Backend for local collaboration: You want to share a topic branch with a colleague but do not want to push that branch upstream to Github/BitBucket/GitLab, etc. How do you do this? You could create a patch and email it. Or you could do it in the most crazy way possible and use Apache and allow your colleague to pull from your repo …
June 2015
Enable status for php-fpm: Accessing the PHP-FPM Status screen is easy enough. First, enable pm.status in your php pool: pm.status_path = /status Then add the following block to your Nginx vhost conf: location ~ ^/(status|ping)$ { access_log off; allow 127.0.0.1; allow 192.168.1.0/24; ##### YOU WILL WANT TO CHANGE THIS TO …
May 2015
My Pantheon + Jenkins Process: Here is a rough outline of my Pantheon + Jenkins process. I like my code in BitBucket. I also like Pantheon (check them out). The Pantheon workflow is all about being the source of truth for your code. This is fine, and actually I dig it because it promotes good practices. However, I, and my …
A WordPress ajax handler for custom themes: Something I have been noodling on is a better way to handle ajax requests in my custom themes. Seems to me that a relatively complex theme ends up with a lot of add_action calls for custom ajax handlers, and this could be simplified/reduced. Every time a new endpoint is required we have to add two …
My VagrantFile: This is the Vagrantfile I am using for my development box at home and work. It is determines how much ram is available and how I want to allocate, how many CPUs are available, and configures the VM for me. I use NFS for shared folders. Finally, starting to use "hostupdater" to keep my host machines …
April 2015
Ohai Plugin for OpenVZ VMs to get public IP Address: Media Temple uses the OpenVZ virtualization system and I have quite a few Media Temple servers under Chef management. The one thing that has made management difficult is that by default during a Chef run ohai returns 127.0.0.1 as the default IP address which means I cannot run knife to execute …
February 2015
Wednesday, February 18, 2015 →
What to do when your website is hacked/exploited: So your website has been "hacked"? You load your website in your browser, and are redirected to some spammers website, or maybe you google'd yourself (naughty), and found a few thousand indexed pages for knock off prada gear? Ok, so how do you fix this, and more importantly, how do you learn how …
September 2014
Thursday, September 25, 2014 →
Virtualbox Bug related to SendFile: I have been doing more web development with Vagrant and VirtualBox. It's a nice way to keep my dev environment nearly the same as my production environments. Recently I was doing some front-end coding and was running into the most bizarre errors with my JavaScript. It pays to read the documentation. …
July 2014
Setup Development Environment with Vagrant & Chef: I use Chef to manage and provision new staging and production servers in our company. It takes a lot of the headache out of managing multiple servers and allows me to fire up new web & data servers for our projects with ease. I have several cookbooks that I use to configure servers and to …
Trying to Troubleshoot extremely high MySQL CPU Usage: MySQL CPU usage was spiking upwards of 1000%. Load average was around 50-60. I could not SSH into the machine though, not immediately. Since I could not actually get into the machine I had it restarted. Just as soon as the machine came back up MySQL CPU usage jumped right back up to 1000%. Once I …
Securing Git repository from accidental exposure using Chef: It was brought to my attention at the office that a few of our recently launched websites had publicly exposed .git repository information. Unscrupulous users could use the exposed data to pull down the entire commit history, giving them unfiltered access to what is basically the blueprint for the …