Imgur: Best Image Hosting
Name: Imgur (Visit Imgur)
Type: Photo Hosting
Best Website For: Entertaining Image Hosting
Reason it's on The Best Sites:
Imgur is Reddit's image hosting platform. It is a well-known free way to host shareable images and animated gifs.
This edition of our Spotlight blog is totally transparent; we’re talking with the incredibly talented, and friend to manatees: the owner and operator of SeeThroughCanoe. Becoming a regular feature in Most Viral, SeeThroughCanoe has been sharing his awesome footage with the community, exploring the waters of his native Florida and all the amazing wildlife that glides beneath his transparent canoe.
SeeThroughCanoe made his way to Imgur after one of his videos hit Most Viral, and he quickly became a much loved member of the community. When asked what got him hooked he said, “Watching my first post make the front page. I never would have guessed there were so many nature lovers here. I had an Imgurian take the time to comment on one of my posts, ‘Your posts get my kids asking questions, and that leads to us doing research together. Thought you’d like to know you’re helping teach my kids.’ That comment was heartwarming, and was a perfect example of why I love sharing my videos with people.”
There’s no doubt that SeeThroughCanoe’s posts are unique, and offer (literally) an incredible view into the lives of these animals. The Imgur community have embraced the aquatic adventure, with SeeThroughCanoe’s posts becoming commonplace in Most Viral “Almost every one of my posts gets at least a couple of very positive comments that make me smile. I’m the owner of the company whose product is featured in many of my videos, but I’m really not here to sell anyone anything, and I tell people on my profile page and occasionally in my post comments that: Getting out and taking these videos is the best part of what I do, and I enjoy sharing them with other nature lovers. And I would still be taking and sharing these videos even if I didn’t have the company.”
Imgur has always loved original content (also known as OC), it showcases the most talented users, the breadth of skill and creativity that our community possesses. SeeThroughCanoe is no exception, we asked him what we can expect in the future, “I’m just going to keep posting my own, always original content.” he explained, “Although most of my videos will be about dolphin and manatees because that’s what I see the most, I realize we’ve all seen a dolphin before, so I’m not just going to show you another dolphin or another manatee, I’m going to try to show you wildlife doing something unusual or from an unusual perspective.”
With his passion for nature, and the dedication to his work, there is no surprise that this has become a full time hobby, as well as a business; “I own See Through Canoe as a company and spend as much time as possible canoeing, exploring new places, and spending time with wildlife of any sort.” He builds and sells the canoes on his website, offering other nature enthusiasts the chance to explore their local waters.
With summer just around the corner we can’t wait to see what’s next from SeeThroughCanoe, we can be sure it will be fantastic regardless.
This article first appeared on Medium, by Tony Guglielmi.
The team at Imgur is always excited for new web technologies that will improve our site’s experience. The most notable newcomer in the past year has been the addition of Service Workers. Naturally, after we migrated all traffic to HTTPS everywhere, we dove head first into experimenting on our mobile web site with offline support and caching strategies.
Long story short, we landed on a “Cache First” strategy that vastly improved load times:
No Service Worker (Slow 3G)
Service Worker with Cache First Strategy (Slow 3G)
Woah! The “DOMContentLoaded” event was reduced from 2.77 seconds to 395 milliseconds (85.7% improvement). The “Load” event was reduced from 7 seconds to 4.91 seconds (30.4% improvement). Beyond the numbers, the visual load difference is apparent as you can see below.
No Service Worker, Browser Cache Disabled (Slow 3G)
Service Worker Cache First Strategy, Browser Cache Disabled (Slow 3G)
Awesome, so what now? Just ride off into the distance on the back of a unicorn like the heroes we are? Not quite.
We found out quickly this strategy has draw backs. Due to how service workers replace each other (read here about “worker in waiting”), it doesn’t allow for fast recovery when we push a bug to our production code. While one can argue: “Hey, you shouldn’t push bugs to production,” that just isn’t realistic since, excluding our office dogs, our whole team is human.
So that was our next hurdle we had to solve: fast recovery when a bug fix is deployed. After some research, we landed on a strategy that allowed us to keep cache first, but to prompt a user when there is a major update worth having.
Prompt for updated version of site.
Why not just auto refresh the page? I felt it was better to let the user decide, they may be in the middle of an action that is not relevant to the bug and we could let them finish.
In our final implementation, we decided since this was only to be used when a huge site breaking bug occurs; it made more sense to auto refresh the page when a user first comes to the page with an update.
For those of you interested in how this is done, I want to dive a bit deeper into our code. As with any project, it is good to start with a diagram of what you are building in order to get feedback. The flow diagram of what we built looks like this:
Below are a few snippets outlining the changes needed for the implementation, but for brevity I excluded nonessential parts relating to our mobile site. The goal of this code is to be as decoupled as possible from the app code itself.
It is important to note, we implement the service worker with the Offline plugin for Webpack.
We updated our webpack.config.js with the necessary plugin changes. events: true in Service Worker properties ended up being the only change (aside from initial installation) to implement the strategy.
Update the entry.js to have the install logic and event functions for the service worker.
In our sw-entry.js, we add the listener for the post message that the client sends to the service worker.
Post message listener in the service worker to broadcast back to clients the version.
With all these changes in place and deployed, to start a bug recovery process we need to deploy the fix with an updated timestamp to swversion inside of the service worker entry file.
This project really outlines a core value of the company: Always Learning. It would have been easy to shy away from this technology when this issue came up. By taking the time to do the research and learning from our mistakes, we have given our users a better experience, which is always worth it in the end.
This April Imgur brings you the hottest new technology from our secret R&D Labs deep below the streets of San Francisco.
ImgurTV is the revolutionary new way to enjoy the magic of the internet. Harboring the might of the GIF, we have achieved what was once only thought possible in our most fevered dreams – GIFs with sound! By combining GIF and sound we have created a unique audiovisual experience that will be a gift for the ages.
On Sunday April 1st ImgurTV will roar into life bringing you 24hrs of the raddest community made magic – all streaming live, with sound, to your PC and mobile device.
ImgurTV will feature some of Imgur’s best loved users, including Imgur’s own Swimgurian – Olympic Gold Medalist Cody Millar (@BatmansBreastroke)
An exclusive one-on-one interview with purveyor of OC, and Most Viral’s most frequent denizen, one1deuce
And so much more!
We hope you’ll tune in for this inaugural streaming of ImgurTV.
1.The community rallied together to help Hailee, who the OP described as “one of my favorite people in the world and coworker at a Publix Supermarket in Florida.” She is a wheelchair user and cannot stand on her own for very long, which makes being a cashier and standing for hours at a time especially challenging. She’s always wanted to get one of those fancy electric wheelchairs, the ones that can stand it’s user up and sit them back down, all while their legs are strapped in safely. Sadly they’re quite expensive which is where the Imgur community came in. Spoiler alert! They raised over $9,000 and are ordering her the chair she has always wanted.
Favorite comment by lookwhatimade: Donating. Only thing I ask in return (as an imgurian) is a gif of her reaction when she receives this and stands.
2. Imgurian grmpfl made us dream of travelling as he shared his journey from Switzerland to Australia, completed on motorbike!
Favorite comment by mojojojoo: Did you destroy the ring, though ?
3. We sadly said goodbye to Stephen Hawking who fittingly passed on Pi Day. The community shared their favorite moments and quotes from the brilliant man.
Favorite comment by https://imgur.com/gallery/XIvFv/comment/1296709613: Can we launch his remains toward the center of the galaxy and hope he’s swallowed by a black hole and emitted as Hawking radiation?
3. Meet your new favorite destination in Toronto; the Mana Pool cafe and store! It stocks everything your nerdy heart desires and is run by Imgurians.
Favorite comment by PompatusOfLove: I’ll have the lasagna. “Anything else”? Oh, and a Black Lotus. “That would be $4,512.50”
5. Never let others stop you from doing your thing.
Favorite comment by xMrJNCx: That is some fine stitching. I’m a 36 year old covered in jail tattoos and love me some meditative medicine in knitting. Keep it up man.
6. This post is a great reminder to bee kind.
Favorite comment by AnonymouslyGratifying: Welp, I just cried over a bee on the internet.
7. To celebrate being ten years cancer free, Imgurian X grew his hair out to give it to charity. Every photo in this post is glorious.
Favorite comment by miasmicmonky: Wise words of my grandfather who had cancer late in life “Grow it while you have it, eventually it all moves to your arms.”
8. An Imgurian shared a personal story about their time at Honor Academy, an Evangelical Christian youth organization located in Dallas, Texas.
Favorite comment by FuledByGrace: Let me, as an ordained pastor, say this is cult level and isn’t something Jesus would be a fan of. This is manipulation and it’s sickening.
9. Some days you need to see an entire post of butt drawings. Today is that day.
Favorite comment by KrystinaM7: I have gotten away from my art/creativity the last 5 years. Thanks for reminding me that art doesn’t have to be serious to be good. Love it
10. We had to feature one of the most amazing photographs we’ve ever seen on Imgur.
Favorite comment by SirBillium: I do not understand what you said in the title but this picture is absolutely magnificent!
That’s all for another month, folks! Stretch your wings and enjoy Spring.
As we continue our series getting to know some of Imgur’s most talented users, we found Kevin, the genius behind ArcaneKani Cosplay. Cosplay, for the uninitiated, is a widely loved hobby where fans recreate the costumes, gear and accessories of their favorite characters; with 3D printing, high fidelity replicas and an impassioned fan base, we’re quite possibly living in the golden age of cosplay.
With his doppelganger appearance and dedication to the character, ArcaneKani has set a high bar in the cosplay world. “I’ve been cosplaying since 2006. I had no idea such things existed until then! It was such a breath of fresh air to be in an element of like-minded people,” he told us. There is, however, a secret to keep the hobby interesting. “My biggest rule, and probably the only reason I’m still in the game, is that I keep it fun by my standards. I don’t enter any contests, I stick to characters I like, and I’ve made no attempts to monetize it. I like to keep my hobby as a hobby. I go to conventions to see old faces, meet new ones, cosplay, party, and make some memories for myself and those I interact with.” It all started for ArcaneKani with a Final Fantasy 7 cosplay. “Barret Wallace from FFVII was my first cosplay at the request of a friend. I knew he was asking for me to be Barret, but I didn’t take offense, we laughed about later; I haven’t looked back since.”
There can be no doubt of level of effort that goes into ArcaneKani’s outfits, but he explains he struggles to contain his excitement to any one project. “I usually don’t have too many deadlines, so I really just work when it’s convenient. I do tend to suffer from new cosplays causing me to shift gears on a whim, which can put something – that was previously in the works – on the back-burner indefinitely. Independence Day was talked about for years before I got serious about it; even then it was such an ordeal figuring that cosplay out.” On the topic of his Independence Day cosplay, he gave us a glimpse at the lengths he went to to accurately recreate the costume. “It took me forever to learn the names of all the flight gear the pilots wore in the film, and even longer to wrangle it all together! Just know when you see it, while it’s definitely not a screen worn costume, it’s as authentic as it comes.” When it comes to a fan favorite film, detail can make or break a cosplay, “I try to be a stickler for details (the devil’s in the detail, after all), but sometimes a ‘close enough’ works out just as well.”
Many cosplayers feel they are taking on the role of the character they’re portraying, some as a way to show off their artistic prowess, and some just for fun, Kevin is all about the experience, as he tells us, “We all cosplay for personal attention to some degree, but there’s nothing quite like hearing that your cosplay really made someone’s entire weekend; I can’t tell you how many times people would come up and share fond memories because my cosplay brought them back. It’s all about the experience, and if I can bring out the smiles and good times for others while doing what I enjoy, I’m all about it.” Among all of these outfits, there has to be a favorite, right? His likeness to Will Smith has certainly helped with his cosplays, cropping up multiple times throughout his career, but in Hancock lies Kevin’s best-loved character. “My personal favorite is Will Smith’s Hancock. While the second half of the movie was woefully lackluster – the first half was amazing. My likeness to Will Smith coupled with walking around and day drinking? Can’t beat it.”
Another hit favorite is the flamboyant radio host from The Fifth Element, portrayed originally by Chris Tucker, “I can’t beat Ruby Rhod. He’s a hit everywhere I go! For example, I wore him to the Jacksonville Jaguars’ last home game and even in an environment almost the polar opposite of the convention scene, the reception from the masses was just killer. I’m sure that’s because The Fifth Element is one of those timeless Sci-Fi movies that almost everyone remembers” Freeze those knees, my chickadees!
The cosplay community is full of great creators, from bedroom sized 3D printers, to creator superstars who make whole arrays of outfits. Like most cosplayers, ArcaneKani uses a mix of his own skill, and those of the community, “Joyce ‘Lystrade’ Cosplay is beyond amazing with her sewing skills! She’s the one that created both outfits for Ruby Rhod, and she’s typically my main go-to for anything needing sewn. I commissioned my Deadshot armor from Josephiroth Cosplay – he’s so legit at armor making that it’s ridiculous. I also work randomly with Make Me Designs for a number of 3D printing capabilities that they offer; a special shout-out to Afterlife Modelworks for his absolutely stunning work on recreating Ruby Rhod’s staff from still images from the film. Various others do help out with odds and ends, and I try to credit ‘em where applicable.”
No passion is without its ups and downs, and cosplay is no exception; “I’ve certainly done stupid things like using superglue instead of Spirit Gum to attach a fake mustache,” he explained.“The coolest thing so far? Getting recognition from the actual source material, as well as going viral of course. Louis, from Left 4 Dead, was one of the first cosplays that picked up a lot of internet steam and having the creators actively approve, and share, my content was just incredibly awesome. The cream of the crop, which hasn’t happened yet, is to get Will Smith’s attention. A like, share, or acknowledgement of some type would make my day and then some! I’d love to meet him and have a beer or something, but I feel that’s way too ambitious for being such an unknown in the grand scheme of things.”
Finally, we wanted to know what we can expect from him in the future. “I will say, now that Bright is out of the way, I’ll get back to work on Will Smith’s “Wild Wild West”. While I can’t spoil everything, I have some pretty ambitious ideas with that one!”
With his dedication to both accuracy, and more importantly fun, we can’t wait to see what comes next from ArcaneKani.
In 2017, we launched new features on iOS as part of our vision of lifting the world’s spirits for a few moments every day. Today, we are excited to announce they’re being rolled out to Android users over the next couple days. Having these features on all platforms is the next step in building the world’s greatest community-powered entertainment platform. We saw great traction on iOS, including double digit week over week growth, and we’re excited to deliver new ways to discover the magic of the Internet for Android users.
Our new features are called Snacks and Feed, and they showcase our community’s amazing ability to surface the most entertaining stuff in the world. Snacks and Feed will allow you to discover more of the content that makes you laugh, makes you learn, and leaves you feeling better than when you arrived.
First, the Feed. It’s a great way for comic lovers, DIY enthusiasts, classic car fanatics, and anyone passionate about, well, just about anything, to dive into more of what they love on Imgur. It lives at the top of your home tab, right next to the Most Viral grid, and lets you explore specific content by choosing tags and Imgurians to follow.
Cure your hunger for bite-sized GIFs with Snacks — an immersive, full-screen GIF experience that you can digest quickly during any moment of the day.
Every day we’ll highlight new themes that are sure to cure your cravings to be entertained. Cats in Space? Got ‘em. Perfect loops? Yup. Mind-blowing chemical reactions? You betcha. The perfect GIF to make you laugh on the toilet? We got you, fam. Find new Snacks daily at the top of the Search & Explore tab.
We hope these features keep you laughing, make discovering new posts even easier, and bring a little magic to your day. We can’t wait to hear what you think!
1. It was the Winter Olympics and all eyes were on South Korea where the world’s best athletes competed to become Olympic champions. An Imgurian who trains with the Team USA figure skating team offered to answer any questions the community might have and it ended up being an awesome learning experience.
Favorite comment by Conflict: @OP as you are now the face of Imgur Figure Skating I wish you the best of luck in getting on the next Olympic team! Hope to see you join.
2. When you do something for your local town, the whole community gets to benefit from one act of kindness.
Favorite comment by TheMightyElk: Omg!! I had wondered where it went, my kids loved that thing. And yay!! My hometown on imgur!! Upvote richland. And woo hoo the instrument!
3. Ever dreamt of working at a Dog Daycare? Us too. This post gives a realistic view of what a typical day might look like. Hint: it’s a lot of fur.
Favorite comment by Valhallabarkeep: Can we all just take a moment to appreciate @OPs user name?
4. This touching post showed us the important of giving back to those who raised us.
Favorite comment by ToTheKing: Cool story bro. But seriously, that’s incredible. +1 for giving back some time to your pops
5. After a devastating accident in Hawaii left Imgurian pilotmandan‘s father a quadriplegic, he shared the magical moment his Dad was able to stand on his own power.
Favorite comment by somethingfunnysomethingwitty: Working in healthcare this warms my heart. We live for these moments, truly. Thank you! All the best to you and your dad!
6. All tattoos have a story behind them, but this one stands out as being extra special.
Favorite comment by itscomplikatied: I love that tattoo, one of the most meaningful ones I have ever seen.
7. The real winner of this year’s Superbowl were the Tide commercials. An Imgurian who worked directly on the project made this post offering an amazing insight into how they ran the campaign from start to finish.
Favorite comment by BillogUncle: Dude, this is amazing I’m studying this type of production at University and it’s great to see someone who i wanna be, still use Imgur.
8. Gillan, @thepancakewarrior shared the story of his wife Kerryann, who was battling ocular melanoma uveal, a rare and aggressive cancer of the eye, for a year now. He asked the community to help her complete her bucket list by sharing items from it so she could experience them through others. Read the full story in this blog post.
Favorite comment by Alekazam1988: If it’s any consolation her dreams of life outweigh any life most people actually live. She’s truly the most elegant person I’ve ever seen.
9. The Imgur community dug deep to help Hailee, a Publix Supermarket in Florida. She is a wheelchair user, due to being born with cerebral palsy, and cannot stand on her own for very long, so her coworker made this post to ask for donations to help buy her a new chair.
Favorite comment by lookatwhatimade: Donating. Only thing I ask in return (as an imgurian) is a gif of her reaction when she receives this and stands.
10. No matter how old you are; if you like Star Wars you’re going to love this bedroom.
Favorite comment by MrSovietMudkips: When nerds get married to other nerds, magic like this happens.
Bonus post! It was our 9th birthday on February 23 and we had the best party an Imguraffe could ask for as the entire community was invited
Since this blog was published, we were informed that Kerryann passed away on Monday 26th February. Our thoughts are with her family and friends. We are so glad our community was able to brighten her final days.
Cancer will affect an average of 1 in 3 people worldwide, and there are few of us who can say we have not been affected by the insidious condition either directly, or through our families. When cancer strikes a young family, there is a particular poignancy to the ordeal; which is what one husband shared with the Imgur community on Saturday. Gillan, @thepancakewarrior shared the story of his wife Kerryann, who has been battling ocular melanoma uveal, a rare and aggressive cancer of the eye, for a year now. With husband and their young daughter by her side, she has remained stalwart in the face of fear, forming a bucket list of goals she’d like to achieve.
Recently, as Gillan explains, she has not had the strength to complete her list; it’s here where some incredible Imgurians step in.
“We tried to raise money to let her achieve her bucket list but unfortunately now she is just too weak. The only thing I can think of is to let Kerryann have the experience through yourselves; the stranger, friend or simply anyone kind enough to help. Have a look at the bucket list, if you have it in your heart to help complete this for Kerryann. That alone will bring a smile to her face.” So the tag #forkerryann was born, and Imgurians have been sharing their experiences from across the world, lending whatever they could to brighten the day of a total stranger. Users @pparker, @Benegesseritwitch75 shared their views of Scotland, Kerryann’s homeland, for her request to see more of the country.
Our very own @sarah hit a twofer sharing the day she spent shooting AND bumping into Danny Trejo in LA.
Swimming with dolphins was featured on the list, with user @WWAMW delivering in spectacular fashion
More celebrities followed thanks to @VoiceSnacks with Mary Poppins ya’ll, a.k.a. Michael Rooker, @dandan83184 with the internet’s sweetheart, Bill Murray and @Guffawingloudly with the legendary Alan Tudyk.
There are many more than we could possibly hope to list, nearly 800 at the time of writing. We can’t thank our beautiful community enough for going out their way to brighten the day of a total stranger in their darkest days. To see all the experiences shared with Kerryann, visit imgur.com/t/forkerryann.
We are continuing our series spotlighting awesome Imgurians by talking to the man behind the infamous RepostStatistics bot. By day he’s a freelance coder and bug hunter, by night he’s at the helm of one of Imgur’s most famed commenters – Love them or loathe them, reposts are part of the natural cycle of images on the internet – as ideas and memes spread they are bound to resurface.
One Imgurian, backed by some solid technical knowhow, decided to track these posts as they resurfaced across Imgur. The RepostStatistics bot is able to recognize when a post has already been shared at an earlier time on Imgur. When it detects a repost, it leaves a comment on the post detailing the original link and title similarity; and has dropped that infamous “Last Seen…” comment a whopping 215,000 times to date.
RepostStatistics first found Imgur as a repository for entertaining images and GIFs linked elsewhere on the web, “Someone on IRC [Internet Relay Chat] posted a funny GIF hosted on Imgur. That led to me becoming a lurker for some time.” he told us, “RepostStatistics was the reason for me to create an account.” With a long and illustrious spell on Imgur, he has a multitude of fond memories. “Secret Santa posts are pretty nice. I love to see how much thought and work went into some of these presents,” but more importantly, “I have to confess I loved the parrots. There is some magic when a community decides collectively to do such stupid stuff.” Ah yes, The Great Parrot Takeover of 2016, you can read all about that here: https://blog.imgur.com/2016/08/02/the-great-parrot-takeover-of-2016/
When asked what inspired him to create the famed bot, he told us: “I’d like to say that one day I was bitten by a groundhog, put my underwear over my trousers and decided to fight reposts. But the truth is, I read a nice blog about local sensitive hashes to search for similar images and hadn’t enough images on my computer to properly test. I never thought the bot would run as long as it does now (4 years is a suuuper long time in internet terms).” With Imgur approaching its 9th birthday, we’re no strangers to that sense of awe.
Not everyone is a fan of the bot, the reception has been mixed, he said, “I’d say it’s about half and half. There are annoyed users from time to time, but also folks only wanting to say thanks. Most PMs ask to be blacklisted or asking for the bots source code.”
Looking to the future, we discussed what’s next for RepostStatistics, and what he’d managed to achieve with all that data “’I’d like to rewrite it, but sadly I’d have to reindex all images I’m not sure I will find the time to do that. At one point in time I may rewrite it all, but who knows what the future brings. I’m currently working with https://rps.gnutp.com/ which would log the most reposted images on Imgur.”
Next time you see a repost, spare a little thought for the hardworking bot whirring away behind the scenes to keep tabs on the wealth of posts submitted every day.
Blog last seen 34 weeks before at https://blog.imgur.com/2017/07/20/spotlight-on-an-awesome-imgurian-outofcontextwikihowbot/ Title similarity: ★☆☆☆☆ (1/5)
This blog first appeared on Medium on February 12, 2018, written by Muts Inayama, VP Engineering at Imgur.
Back in April 2017, our CEO/CTO Alan Schaaf, our Engineering Leadership team, and I set out to re-establish and document what we felt was important as engineers at Imgur. We noticed that some software that we built successfully surpassed the test of time while other solutions somehow missed the mark because they were brittle, buggy, or simply failed to address business needs. We distilled our observations of how to build better software into a draft and circulated our thoughts across our engineering team for feedback. This quickly became an all team effort as we incorporated tons of input from almost everyone across the org. We wanted principles that were applicable to all of our teams, so one of the challenges was that they needed to be high-level but still relevant. Nothing we list are novel — I believe they serve more as good reminders rather than new concepts. After several revisions with the team, we solidified what we think of as our guiding principles as Imgur engineers.
Every week, during our Engineering Leadership meeting, one of the leaders will read an excerpt from the guide and discuss an engineer that lived out one of our principles. For instance, this past week, Aaron Wynn mentioned that Bjorn Tipling exemplified “iron sharpens iron” by reviewing the architecture and code behind the Vertical Feed project.
Engineering at Imgur
The purpose of this document is to help you develop a mental framework for how we perform software engineering at Imgur, identify what we believe is core to software engineering, and to ultimately avoid common pitfalls of software engineering and bad software design. It will also allow us to all be on the same page about how we build things, and ease tensions between teams. Following and being aligned with this document will allow Imgur to achieve its vision of lifting the world’s spirits for a few moments everyday, and continue to be a successful organization.
Planning is integral to good software and process
We aim to have a systematic process for creatively solving problems.
- Understand the problem
- Plan a solution
- Carry out that plan
- Examine your results for accuracy
Most of the significant effort goes into the first two parts of the process. If you fail either of those, it hardly matters whether you’ve carried out your plan perfectly or accurately. If you want to be a successful engineer at Imgur, understand your problems fully BEFORE diving into the implementation of your solution.
This is easier said than done — engineers often love diving right into building something interesting instead of making sure they’re solving the right problem. A similar principle applies to engineers writing code — if you find yourself coding mostly because building is fun and you didn’t fully explore the problem or plan your approach ahead of time, then you will waste a lot of time.
Imgur Engineering Beliefs
Put users first
We believe that our users and community always come first. Never hold back on doing what’s right for the user because it’s easier for yourself. Don’t assume that your user has the same level of technical competency or product familiarity as you do.
Our job is to improve Imgur. We want our Imgurians to be happy and make Imgur an awesome destination. Technology is merely a means by which we make that happen. Our mission is to add value, by implementing features and services to make our Imgurians’ experience as awesome as our content!
Act as a leader
Think about how you can enable the team to move fast collectively, before thinking about how you can get the task quickly for yourself. We call this optimizing for the global maximum instead of the local maximum. (Optimize for the bigger picture, not the specific problem you’re solving). Going off on your own and doing your own thing slows the team down in the long run, no matter how fast you’re personally moving at the time. (#behumble)
Assume positive intent
It’s very easy to misunderstand each other, especially over Slack. Whatever is said or done, assume positive intent. When you look for positive intent, you give people the benefit of the doubt and you give yourself the chance to learn the details of the situation. Similarly, you may encounter implementations or decisions that you do not like or simply understand. Rather than assuming that something is wrong or done poorly, perhaps there are other circumstances that you are unaware of that led to the solution.
Iron sharpens iron
We elevate ourselves as a team by sharpening each other’s craft and professionalism as engineers. No one else is going to push us to become better engineers except ourselves. We are committed to helping each other grow by giving honest and constructive feedback to each other (e.g. through code reviews and 360 feedbacks). We will always sharpen each other in a supportive and nurturing manner (assume positive intent.) We will also sharpen each other’s critical thinking by debating passionately over technical choices until we reach a decision that we stick with as a team.
When starting a project
THINK: Think about the project holistically before you try to implement a solution, and have a clear vision for the project. Simply the most important thing you can possibly do. Seriously. You can’t just rush into a solution with guns blazing. We’re solving some pretty complex problems, so you need to be mindful of taking a logical and thoughtful approach to solving them and a rigorous approach to managing your projects or they’ll quickly get away from you.
INPUT: You may own the project, but make sure you also include input from others. Have you talked to the consumers of your API endpoint? Have you consulted DB experts on your query’s performance? Have you solicited feedback on the design you just came up with?
KISS (Keep It Simple, Stupid!): We acknowledge our tendencies to build overly complex systems at times, but we admit that simplicity makes our solution so much better. Don’t overthink logical problems and come up with strange and novel solutions when the simple way is simply better.
UNDERSTAND the impact to the business: It’s always best to understand the impact your project has to the business. What metrics is it trying to move? What will it do for the company in the long run? The answers to those questions may end up changing the way you code or architect, or how you problem solve. Make sure what you’re doing make lines up with what the company is trying to achieve. If you don’t understand the impact to the business, just ask!
Design Traits to Avoid:
A piece of software that fulfills its requirement and yet exhibits any or all of the following traits can be considered to have “bad design”:
- Fragility: When you make a change, unexpected parts of the system break.
- Immobility: It’s hard to reuse a chunk of code elsewhere because it cannot be disentangled from its current application/usage.
- Viscosity: It’s hard to do the “right thing” so developers take alternate actions.
These symptoms nicely encapsulate things you really want to avoid, and most of the principles that people throw around, and that are outlined in this document, are just some of the guidelines to avoid going to the house of bad design.
When writing code
It is easier to do things in a familiar context. This serves two purposes: first, it makes reading the code easier; second, it allows programmers to automate skills required in coding. This frees the mind to deal with more important issues. We aim to have as much consistency in the tools that we use as possible.
Function before fashion
First, make it WORK. Then, make it work RIGHT. Finally, make it pretty. Even if it’s held together with string and duct tape, see if it’s worth investing the time to make it work right. In the final phase of the process should you actually optimize your solution to “look” good (e.g. refactoring your code).
YAGNI (You Ain’t Gonna Need It!)
Too many times, there is a strong temptation to build code that could respond to every future eventuality by being incredibly flexible and “perfect”. Don’t do it! You’re wasting effort because you really aren’t going to need all those extra features or options or flexibilities. Just build what you need. Trust us and every other engineer who’s looked over old code and facepalmed at all the wasted effort anticipating situations that never materialized.
DRY (Don’t Repeat Yourself)
One of the best things about code is how reusable it is. If you write a cool bit of code that solves a useful problem in one place, refer back to it when the problem comes up in other places as well. From your perspective, any time you find yourself manually typing something in multiple times, there’s a way to combine it all into a single task that gets run multiple times.
Don’t Reinvent The Wheel: Any time you’re building code to do something general that’s not directly related to the fundamentals of your application, someone else probably already wrote that code and better. It’s either posted on a blog somewhere, on Stack Overflow, or open-sourced as a module. Learn from and use their code instead of wasting your time reinventing the wheel. We are “lean startup” and have limited “innovation tokens” we can spend. We must invest them wisely.
Kaizen (leave it better than when you found it)
Fix not just the bug you’re trying to solve but the code around it. A band-aid bug-fix doesn’t help if the real problem is a design flaw (which it usually is).
Separation of Concerns
Separation of concerns is a recognition of the need for human beings to work within a limited context. Concerns are the different aspects of software functionality. For instance, the “business logic” of software is a concern, and the interface through which a person uses this logic is another. The separation of concerns is keeping the code for each of these concerns separate. To take this further, we separate entire systems. Microservices and separate repositories are examples of this. Separating systems into their own isolated environments helps prevent one system from affecting another, and eases monitoring, deployment, and development.
Write code to be read
Even if you don’t intend anybody else to read your code, there’s still a very good chance that somebody will have to stare at your code and figure out what it does: That person is probably going to be you, twelve months from now. Always make sure you’re writing code that makes reading it easier for yourself and others in the future.
As You “Ship Early, Ship Often”
Be proud of your code
Never ship code that you’re not personally proud of. Chances are that if you’re not proud of your code, it’s probably bad code and you shouldn’t ship it.
Be your own QA, and test your code
Never ship code or make pull requests unless you’ve personally tested the heck out of it. It’s not good enough to just refresh the page / build the app and see that the error is gone. You have to actually test it thoroughly yourself.
Ask yourself “How will this break?” not “Will this break?”
Before shipping, if you ask yourself “Will this break?”, you’ve fallen into a mental trap where you will almost inevitably tell yourself “naw, it will be ok”. Instead, try asking yourself “How will this break?”. Framing this question correctly will open your mind to think of all the possible ways your software could go wrong and you’ll end up uncovering things that you otherwise would have missed.
It will fail one day
We build our systems with the expectation that one day it will eventually fail. When it does, it should never impact more than itself, and we should know immediately when it happens. We should also have the proper backups and procedures in place to get the failed system back online.
Incremental Development & Continuous Deployment
Build software in small increments; for example, adding one use case at a time. If you develop software by adding small increments of functionality then, for verification, you only need to deal with the added portion. A carefully planned incremental development process can also ease the handling of changes in requirements. To do this, the planning must identify use cases that are most likely to be changed and put them towards the end of the development process. Incremental development and continuous deployment is a means of how we Ship Early and Ship Often. It aims at building, testing, and releasing software faster and more frequently.
Be like a router (have outstanding communication)
A router takes information and sends it to the right person. When making a decision, always ask yourself “who else should know about this?”. Do this with emails, slack messages, and everything else that comes to you. The only way you can get into trouble while making decisions at Imgur is if you don’t end up telling the right people. Remember to be a router and let others know about the decisions you’re making!