Code Review Lamp
Code Review Lamp
A colorful lamp to notify the developer team for pending code reviews.
What?
Code Review Lamp is a Neopixel-based, WiFi-enabled gadget that reminds developers to peer-review their colleagues' code. For each submission that has not been reviewed enough, it dims up and down at a color that is specific to the developer who is trying to introduce a new functionality to a project. The lamp stops shining once the code has either received enough reviews by the team, been merged or designated as Work In Progress. Currently, it is configured to work with Gerrit (v.2.15) but it could be programmed to fetch data from different tools such as Jenkins, GitHub, GitLab etc.
The gadget is comprised of an ESP8266 microcontroller module that connects wirelessly to the internet, as well as a Neopixel ring which displays various colors.
Why?
At work, we are a fast-paced team that likes to commit (relatively) small and often. Every commit does not only have to pass the various tests that are being run by our Continuous Integration machinery, but also gets extensively code reviewed before allowed to be merged. Since we are five in total and our internal code of conduct dictates two positive approvals for each new submission, the lack of responsiveness when it comes to reviewing, can impede the development process and speed.
In an ideal world, developers would check their notification emails and would proceed on with reviewing their peer's code. However, as they are too absorbed by their ongoing work and perhaps slightly overwhelmed by the amount of emails they receive, these emails tend to be ignored. The common thought is that someone else in the team is going to review the code, but often no one does.
We have employed two different techniques so far to solve the problem. The first one includes shouting CODE REVIEW loudly and the second placing color-coded bean bags (I am not kidding ) on each others' desks. The third that hopes to rule them all is the Code Review Lamp!
Its advantage is that it continuously, and discretely, reminds developers that the team needs to review code and thus someone's work is being blocked as long as the lamp is shining. Additionally, they can see who is requesting the code review and how many reviews need to be conducted.
How?
Reaping the benefits of the Code Review Lamp is simple for the development team member. They merely need to push code to Gerrit, add the group which includes all team members to the review and set the review to Work in Progress or Ready for review depending on whether they want the team to start or stop reviewing the code.
We have included a special user in our team's Gerrit group, representing the lamp, which is added along the team to each review. This user is being utilized by an ESP8266 microcontroller which connects to WiFi and queries Gerrit for open reviews where this "lamp user" is a reviewer. Of course, it is not necessary to have a separate user for the lamp. Any team member's already existing account can be used and this way Code Review Lamps can be personalized. However, since we consider code reviews a team activity and the foundation of cross-functionality and knowledge-sharing, we have opted for the "team approach".
Next, for each review the user is assigned to, we determine how many reviews have been conducted and if they fall short of our agreed threshold, a color that corresponds to the owner of the review is displayed on the Neopixel ring.
Software
The firmware, compatible with ESP8266 microcontrollers, utilizes the Adafruit Neopixel library to control the Neopixel ring. The JSON response from Gerrit is parsed manually, as existing solutions which would nicely serialize the whole stream would frequently cause heap overflow.
Hardware
The gadget is rather simple to source and assemble. The only "custom" part is the PCB which merely connects the ESP8266 module with the Neopixel ring.
Components
Code Review Lamp PCB
330Ohm resistor
470uF/16V capacitor
M3x40mm screws (4)
M3 nuts (4)
Micro USB cable
Code Review Lamp
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.
- Comments(0)
- Likes(0)
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Dimitrios Platis
- Smartcar - Modules board rev.2 For more information about the project, please visit: https://github.com/platisd/smartcar_shield/Des...
- Hackathon trophy # Hackathon PCB trophyA cool trophy for the winners of your Hackathon![trophies](https://i.imgur.com...
- ToeTap USB Controller ToeTap is a minimalist USB keyboard and mouse that you control by tapping your toes.It's designed to...
- Smartcar - Motors board Smartcar shieldA versatile and easy to use vehicle platform for hobby-grade projectsDescriptionThis ...
- Smartcar - Modules board Smartcar shieldA versatile and easy to use vehicle platform for hobby-grade projectsDescriptionThis ...
- IoTink: Your portable e-paper dashboard IoTinkYour portable & connected, e-paper dashboardWhat?IoT + E-Ink = IoTinkIoTink is a portable ...
- SmartCar Shield rev. 2 The Smartcar, is a vehicular educational platform, which enables the user to develop various robotic...
- Code Review Lamp Code Review LampA colorful lamp to notify the developer team for pending code reviews. What?Code Rev...
- Scrumtato: Make daily-standups agile again (rev.3) ScrumtatoScrumtato is an ATtiny85-based gadget to keep overly passionate developers from excessively...
- Nevma: Gesture control for the masses NevmaA USB gadget to transform your gestures to keyboard and mouse events.OverviewNevma (means "...
- Scrumtato: Make daily-standups agile again (rev.2) ScrumtatoScrumtato is an ATtiny85-based gadget to keep overly passionate developers from excessively...
- SonicDisc - A 360° ultrasonic scanner (rev.1) SonicDiscA 360° ultrasonic scanner that talks over I2C using an Atmega328P and eight HC-SR04 ultraso...
- SonicDisc - A 360° ultrasonic scanner SonicDiscA 360° ultrasonic scanner that talks over I2C using an Atmega328P and 8 HC-SR04 ultrasonic ...
-
-
-
kmMiniSchield MIDI I/O - IN/OUT/THROUGH MIDI extension for kmMidiMini
110 0 0 -
DIY Laser Power Meter with Arduino
162 0 2 -
-
-
Box & Bolt, 3D Printed Cardboard Crafting Tools
153 0 2 -
-
A DIY Soldering Station Perfect for Learning (Floppy Soldering Station 3.0)
554 0 2