When debugging a problem make sure you test your assumptions, especially when stuck. I just spent a while debugging something I "did" not working until I eventually realized I hadn't done it at all.
Hello human, my name is Aaron. I'm a nerd living in Boston focused on continuous learning, and enjoying life while working hard. Working on my #100days challenge here.
3,088 wordshttps://www.agundy.com @agundy_ Guestbook
Code reviews are super important for keeping track of changes, learning from team members and improving the quality of your code base. They take a lot of effort and can sometimes be hard to get right. I have compiled a list of things I like to keep in mind when prepping my code for review or doing a review of other's work.
Some things to keep in mind when getting your code ready for review by others:
- Review your code with a fresh set of eyes before assigning some one else. I struggle to do this one sometimes but it's a great thing to do to respect your teammate's time and help you catch things too.
- Make sure to let your reviewer know expectations of what kind of feedback you need. If it's just a draft and you want feedback on approach it will be different than a final review before shipping.
- Try to keep your changes small and atomic. Sometimes this can not be helped but when this happens try to chunk the review into pieces. I try to create commit chains that can be stepped through.
- Separate the code that you wrote from your ego as much as possible. This is hard to do and most people struggle to do this completely but it's important that you realize getting feedback should not reflect on you as an individual entirely.
Things to think about when reviewing:
- Do not nitpick. Try to recognize when things are personal design opinions versus actual issues. If there are small stylistic suggestions, make clear that it is that and not an actual problem. I like to preface comments like these with
- Take your time. To do a good review it might take some digging and work on your end. I sometimes end up digging into documentation, sample code libraries and more before giving advice.
- Do not dismiss choices or make vague suggestions, instead be clear with the problem you see and try to make strides to fix the issue with an alternative name, library or example code.
- Be careful to balance your remarks with calling out things you like too. Remember there is a person on the other end with feelings.
Obviously these are not exhaustive lists, there a lot more things to consider but these are some of the big things I try to keep in mind when reviewing or publishing code to be reviewed.
An important way that I stay up on top of news that is important to me is through RSS feeds. RSS is old school tech that has been around since 1999. It's an open standard that almost every blog and news site supports. I subscribe to a variety of professional news outlets, blog aggregators and individual bloggers.
There are a bunch of different RSS feed readers out there. Two of the big ones I've used are Newsblur and Feedly. They both let you browse sources to follow or add your own. I currently pay for Newsblur which though not as pretty as Feedly is more functional for my use case.
I group the blogs I follow by category. The main categories I have are:
- Science & Technology
- Software Leadership
If you are looking for some blogs to start following here are some of my recommendations:
- Derek Sivers: eclectic blog with entrepreneurship, tech, productivity and other random musings.
- Brandur: engineer at Stripe who does some great technical deep dives into Postgres, distributed systems, websockets and more.
- Julia Evans: a tech blog with a mix of technical tips, comics, career tips and more. Example great post: Get your work recognized: write a brag document
- Signal v. Noise: blog about company culture, tech, remote work, managing etc. Started by the people behind Basecamp
- Kalzumeus: Finance, banking, tech and entrepreneurship.
- Hayley E. Frerichs: not a tech blog but a dear friend of mine who writes fun zero waste tips and has creative bullet journals I drool over.
A RSS feed reader is a key part of how I feel on top of news without being over whelmed. Any blog recommendations for me?
I have been sold on developing a personal knowledge base for a long time. If you don't know what a knowledge base is, the main idea an electronic storage place for all your projects, ideas, notes, etc that makes retrieval and association between topics simple. I first stumbled upon this back in college from the tool https://github.com/noqqe/cmddocs.
I used cmddocs for a while and even had a shared folder with Seve and Kiana but I eventually gave up on it. Without easy image and file integration it didn't fit every need. Evernote has been the closest knowledge base tool I have used with years of notes from college through my time at BookBub. Evernote has a few weaknesses but the main one is it's more of a note taking application then a knowledge base.
I am still struggling with the medium to do this well. The tool needs to encourage data ingress, have support for rich media files and types, encourage daily use, be easy to modifying, tag, have great search and more. I think there is a tool here that would find a solid niche. DEVONthink may be it but it's Mac only so no bueno. This tool would hopefully be helpful in making decisions and systematizing my knowledge.
After finishing Ray Dalio's Principles this week I have a lot to dissemble but one thing they talked about was expert systems for decision making. I am also curious if some personal expert system could fit into a knowledge base too.
Do you have a personal knowledge base, wiki or note taking strategy you think works well? I am interested in hearing about it. Especially if it works well on Ubuntu!
Maintenance is a super interesting topic and I’ve been following @The_Maintainers with great interest.
In software especially maintenance is a constant struggle and shifting base. Things that worked well yesterday often do not work today. I hit this just today with apt packages which was held back causing something to fail to install. Even though it worked previously.
How do we make sure the software that we write lasts? Something I’m not super sure we have a clear path forward in but I think is super important to think about. Minimizing dependencies can help but how far can you take that? How do we update existing systems to be easy to maintain and make sure new systems are being built for the long road ahead.
I’m working at a super small start right now with lots of new code to write and existing code to hone and improve. It’s a constant struggle figuring out some of the balancing points here. How do you make maintenance and upkeep tractable long term?
Whoa I did not break the streak in the first week! Still going strong publishing something every day for 100 days. I didn’t run out of things to say yet either. I have a lot more to cover but tonight is late, since I went climbing after work.
The last few weeks have been busy with demos, integration and other project work and my fitness has been slipping. It felt good to get back on the rock wall though. Hopefully next week I’m back at it on a regular schedule.
How do you get back in the fitness habit? Or do you never have problems?
I am not sure the day I removed Facebook but I deleted it at one point about a year ago and have not regretted it. I am still active on Twitter, mostly professionally, and I download Instagram ocassionally to see what I missed but I have a lot less social media in my life. I found I felt further from my friends at first but long term I think it was healthier.
When catching up with family and friends the conversations are a lot more interesting and lively. It also means having more conversations. To figure out how people have been doing I have to have a conversation and not just like a photo once a month. Social media let me feel connected without having a relationship with the person on the other end.
Do I miss out on some opportunities and connections, absolutely, but I have strengthened the existing ones more. And I'm still a text, email and phone call away. Not far in these modern times.
Gitlab has been growing on me over the past 8 months. Work had previously been using Github but we were evaluating what continuous integration to start using, and Gitlab CI seemed to be just what we needed.
After evaluation I wanted us to switch but switching all your source control endpoints needs a reason. We then had a visiting engineer start and wanted to add them to a group of projects. Digging through Github it seemed like we would have had to create a group and then individually add that group to the repos we wanted access too. Gitlab's subgroups made a lot more sense, so that day we did the switch and have not looked back. Gitlab is not as popular or stylish as Github and doesn't provide the social network feel but it kicks butt for managing code and continuous integration.
Over the last few weeks I've been exploring Gitlab issues and I am hitting edges I do not like. Issues are great and have everything I need for now but the viewing and managing them is sub-par. We have a few groups for different isolated projects and a few projects that span groups, with this setup the lists and milestones get hard to track. Milestones only show up at one level, you can not see them from a subgroup milestone page even if the projects there are part of the milestones. Lists can be at any level but you can only add milestones from that level. No milestones from projects below yours can be displayed. This hinders making boards across projects.
Milestones are a little click heavy to work with. You click on a milestone and get a slick page with a nice chart and your total issue counts, deadlines etc but seeing the issues involves clicking a tiny link at the bottom of the milestone page. The milestone link on the issues list also drags takes you to a filtered list of issues with that milestone on the repo the issue belongs to, not back to the milestone page, yeah I'm confused too.
Now some of these problems with issue lists and milestones would hopefully be addressed by upgrading to the tier that includes Epics. The problem is we aren't hooked yet, and Gitlab needs to hook us into their project management tools at the $20/user/month tier before we jump to the next tier at $100/user/month. That's a lot of money for unproven value, especially if we can not build solid workflows and have bad experiences with lower tiers.
Over all I have really enjoyed using Gitlab. Container registries per repo, deploy tokens, Gitlab runners, the code review tools and branch management are all great, and I really, really want to buy in more to some of their features but the usability is sometimes lackluster especially in more advanced features. They definitely go for the checking all the enterprise feature boxes over sleekness and performance once you get past code and CI. What are your thoughts on Gitlab vs Github?
I have been back on Linux full time for almost a year now and there are a few things I miss.
I love, use and even contribute occasionally to open source software but it does not work well for a lot of tools.
I miss some of the excellent apps on MacOS:
There is also a some software I would like to be able to try for personal use:
Reliable graphics and hardware
Screen tearing, displays disconnecting from my dock and draining battery when it should be sleeping are all issues that I really wish I did not have to deal with.
Gnome window management does not make sense to me. Their is either multiple workspaces on one screen and a single workspace on the other. Or workspaces that span both displays but when you hit the meta the illusion breaks. Instead of seeing just the windows for the open workspaces, one display shows what you expect of only the programs open in that workspace on that display, but the other display shows every single window open on that monitor. This drastically reduces the nicety of having two displays.
Work requires that I have Linux given the tools we rely on, but I really miss some of the polish of the Mac ecosystem. For personal usage I will probably buy a Mac laptop when I can justify a reason to get a new personal computer. For now I have a Linux desktop and an old personal laptop at home.
If you join a team who has you working alone, do not be afraid to push back. Some groups especially when small have large silos of isolated work that all need being tackled. Putting one person on each thing is a poor strategy for long term team health and velocity. Even as a new developer, you can contribute across the team. Some ideas to get started:
- Ask your manager what they are working on.
- Read through other systems documentation or even just launch it and click around
- Volunteer to help review or contribute across projects.
This will be incredibly helpful for you and for your team. As a new developer you can offer new insights and reaching across teams helps others improve by encouraging less overly complex solutions. You will also begin to level up and pick up on where changes need to be made to improve confidence.
Consumption and happiness is a huge discussion that I can’t breakdown completely in a short post, but to summarize consumption does not generate genuine happiness.
Travel is often lauded as a way to find happiness and I want to dissuade you of this opinion. Travel is just another form of consumption. And traveling for the sake of traveling or to create happiness is not a viable strategy. This does not mean you can not get happiness from traveling. It just means it has to come from a second order effect of traveling, mainly challenging yourself or your comfort zone, learning new things and renewing or making personal connections.
Travel is also a form of consumption that is much easier to share and flaunt on social media. When seeing this consumption and getting jealous realize that you can generate similar rewards to them without the same consumption in many other ways, though they may not fit well in a square photo.
Today was a busy day at work, but it didn’t have to be. I fooled myself by doing work but not the important work. When planning your day make sure you do the important tasks first.
A lot of people with personal websites like to keep a "now" page, listing what they are up to focused on. For day #2 of #100Days here's an update that will go on www.agundy.com/now.
I'm living in Cambridge, MA, with Michelle. I'm working at Skylla Technologies as a software engineer. Outside of work I still enjoy reading, climbing and have been occasionally running.
My fitness has been slacking with a lot at work the last few weeks but I've been gym climbing a fair amount and even got outside a few times over the last few months. I hope to get back into running soon and start training for a half marathon.
Reading wise I often keep a few books in the air at a time. I'm currently working my way through:
- Principles by Ray Dalio
- The Manager's Path by Camille Fournier
- Semiosis by Sue Burke
I recently finished:
- Assassin's Fate by Robin Hobb
I've been at Skylla for over 10 months now and it's been growing great. Work is super varied but my focus has been pulling together our systems and processes and team. As it's a start up I wear a bunch of hats but my most frequent hats are devops guru, full stack web developer and project manager.
Ever searching for the best note taking application on Ubuntu I stumbled upon Standard Notes today and then the #100Days writing challenge they suggest. I thought it was a great idea and something that would kickstart me back into writing, recording my thoughts and making them more public. So starting today I'm committing to doing it for the next 100 days. With 95 days left in 2019 this seems like the perfect time to start, wrap up my thoughts for the year and experiment with a new habit to consider keeping in 2020.
For the first day of the challenge the easiest and most useful first post is to document my intentions and maybe list some intended outcomes.
Public record: I intend to force myself into committing my thoughts to the "paper" aka the internet. I have a blog but with I often over analyze and try to make sure the posts are solid before posting. On Twitter the medium and most of my thoughts don't fit well into 140 characters so here I can be flexible with that. I have a big backlog of ideas for topics to talk and this challenge should empty them.
Improve communication: Writing my thoughts out and getting feedback from you all will help improve my writing ability.
Improve thoughts: I hope to self-evaluate and improve my thinking process as well as stretch myself to hone some of my skills, document things I know and write down questions I want to know the answer to.
Want to follow along? This will be terrifying for me and poor entertainment for you. Maybe you can join the challenge with me.
This is my first test post.