<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ reddit - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ reddit - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 31 May 2026 05:06:25 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/reddit/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ How to make a custom Reddit notification system with Python ]]>
                </title>
                <description>
                    <![CDATA[ By Kelsey Wang Don’t you just love automated emails? I know I do. I mean, who doesn’t enjoy waking up to 236 new messages from Nike, Ticketmaster, and Adobe Creative Cloud every morning? What a fantastic way to start my day! ?? Anyway, today I’ll be ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/make-a-custom-reddit-notification-system-with-python-4dd560667b35/</link>
                <guid isPermaLink="false">66c35ac871e87702d4e5b6fb</guid>
                
                    <category>
                        <![CDATA[ Heroku ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                    <category>
                        <![CDATA[ reddit ]]>
                    </category>
                
                    <category>
                        <![CDATA[ tech  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 08 Apr 2019 16:27:21 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*jwiUzuo1t9kRdDdqTdoYbw.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Kelsey Wang</p>
<p>Don’t you just <em>love</em> automated emails? I know I do. I mean, who doesn’t enjoy waking up to 236 new messages from Nike, Ticketmaster, and Adobe Creative Cloud every morning? What a fantastic way to start my day! ??</p>
<p>Anyway, today I’ll be showing you how to drown your inbox in more clutter, for God-knows-what reason. We’re going to be <strong>using Python to create a custom Reddit email-notification system.</strong> That means we’ll be writing a script that looks for Reddit posts matching some keywords and then emails us when such posts appear.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*jwiUzuo1t9kRdDdqTdoYbw.png" alt="Image" width="800" height="427" loading="lazy">
<em>Want quality email content like this? Read on!</em></p>
<p>There are a few reasons that you might be doing this. Maybe you’re really excited about some topic on Reddit. Maybe you’re trying to discover a new karma-farming technique because Internet points are important to you. Maybe you want to send annoying emails to your friends. Or maybe you just want more emails in your inbox to deal with your crippling loneliness. Oops, sorry — went too far. Let’s get started.</p>
<h3 id="heading-looking-through-reddit">Looking through Reddit</h3>
<p>Reddit has a <a target="_blank" href="https://www.reddit.com/dev/api/">nice API</a> that you can do a lot with. To make things even easier, we will be using <a target="_blank" href="https://praw.readthedocs.io/en/latest/">PRAW</a>, the Python Reddit API Wrapper.</p>
<p>You’ll need a Reddit account first. Once you have one, go <a target="_blank" href="https://www.reddit.com/prefs/apps">here</a> to create an app. Name it anything, and make sure “script” is selected. As per the docs, you can just put <code>[http://localhost:8080](http://localhost:8080)</code> for your redirect URI.</p>
<p>Now, you’re ready to start that nifty script! In the code below, <strong>I look through a subreddit, picking out posts that match my needs.</strong></p>
<p>I consider a post a <em>match</em> if it is relevant enough and if it is popular enough. More specifically, the post is relevant enough when it has a <code>keyword_count</code> that’s not -1 (I’ll explain this below) and popular enough when it has a <code>weighted_score</code> greater than a predefined <code>MIN_RELEVANT_WEIGHTED_SCORE</code>. The weighted score simply factors in the score of the post and the number of comments on the post. Anyway, this is what best fit my needs, so feel free to better define what a match means to you.</p>
<p>Now, I promised you I would talk about the <code>keyword_count</code> party going on. Spoiler: it’s not really a party. I just devised this simple way of assessing relevancy: there are required terms and secondary terms. A post is relevant if and only if all the required terms are in the title, and at least X number of secondary terms are in the title (where X is some predefined number). Again, this part can be re-imagined in infinitely different ways, but this is just what I did.</p>
<p>Now we have everything to comb through our subreddit and tease out the good stuff about conspiracies or whatever. Cool. So, like my homie Ariana says, “thank u, next.”</p>
<h3 id="heading-emailing-notifications">Emailing notifications</h3>
<p>Time to start spamming. In the code below, I’m using <a target="_blank" href="https://docs.python.org/3/library/smtplib.html">smtplib</a> (the Simple Mail Transfer Protocol client) to help me send my emails. I then craft the beautiful email with HTML, using the info from Reddit that we got above to populate it. And the best (or worst?) part is, if you want to notify everyone you know about the latest and greatest Reddit posts, you can simply add more email addresses to the <code>email_list</code>.</p>
<p>Important side note: make sure the email you use to send the emails have <a target="_blank" href="https://support.google.com/accounts/answer/6010255?hl=en">less secure app access</a> enabled if it’s a Gmail address, or this will not work.</p>
<h3 id="heading-make-it-run-forever">Make it run forever</h3>
<p>If you don’t have time to continually browse Reddit, you don’t have time to continually run this script. I used Heroku Scheduler to run this script every 10 minutes, as suggested by this <a target="_blank" href="https://stackoverflow.com/questions/39139165/running-simple-python-script-continuously-on-heroku">Stack Overflow</a> answer. It’s pretty easy to follow: add in a few additional files and a dummy web server, push to Heroku, add the Heroku Scheduler add-on, and <em>BAM!</em> You’re set until you run out of free dyno-hours. ??</p>
<p>Is this the best solution? No. But is it sufficient for my purposes? Yep. If you know of a similarly trivial way to do this, please let me know!</p>
<h3 id="heading-in-conclusion">In conclusion</h3>
<p>That’s pretty much all to this project. This <a target="_blank" href="https://github.com/kelseyywang/reddit-notifs">GitHub repo</a> contains all my code. Because of all the work that literally everyone else has already done, it’s quite a simple task to build this custom Reddit notification system. Gotta love the ✨magic✨ of software development.</p>
<p><img src="https://cdn-media-1.freecodecamp.org/images/1*bhzl5sep8VGmZTjM7bWe8Q.jpeg" alt="Image" width="800" height="533" loading="lazy">
<em>Me after setting up my custom Reddit notifications</em></p>
<p>If you made it all the way down to here, please comment “North Dakota is the top producer of barley in the USA” in the box below.</p>
<p>Thanks for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What I learned from reviewing 50 portfolios on Reddit in 3 crazy days. ]]>
                </title>
                <description>
                    <![CDATA[ By James Y Rauhut I’ve always enjoyed critiquing applicants’ portfolios at the design studio where I work. And I also often ask for feedback on my own designs on Reddit’s webdev subreddit. So one day, I thought it’d be fun to unofficially review the ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/i-reviewed-fifty-portfolios-on-reddit-and-this-is-what-i-learned-e5d2b43150bc/</link>
                <guid isPermaLink="false">66d460f838f2dc3808b790e7</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ reddit ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 07 Oct 2016 01:47:35 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*kWDEvEcGmI9gjsKInrbQrg.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By James Y Rauhut</p>
<p>I’ve always enjoyed critiquing applicants’ portfolios at the design studio where I work. And I also often ask for feedback on my own designs on Reddit’s webdev subreddit.</p>
<p>So one day, I thought it’d be fun to unofficially review the portfolios of anyone who requested a critique. I had no idea what I was getting myself into.</p>
<p>I kicked things off by <a target="_blank" href="https://www.reddit.com/r/webdev/comments/508dys/want_your_portfolio_reviewed/">extending my services for free</a> to the 120,000 people who read the subreddit.</p>
<p>Things started out quiet. I would play a round of Rocket League, and then there would be one or two portfolios to review. Then I went to sleep.</p>
<p>When I woke up, I had twenty requests. And these kept coming for three days straight.</p>
<p>In the end, I was able to recognize some common patterns and high/low points across the board. Let’s highlight these.</p>
<p>Note that this post is specifically talking about front end developers who want to join a design studio. If you have a different goal or audience for your work, this article may not be applicable.</p>
<h3 id="heading-what-were-the-worst-things-i-saw">What were the worst things I saw?</h3>
<p>Truth be told, the <a target="_blank" href="https://www.reddit.com/r/webdev">r/webdev</a> community did a lot better than my studio’s overall applicant pool. I think that speaks to how dedicated the community members are to their craft.</p>
<p>This doesn’t mean everyone’s portfolio was perfect, though. There were some common mistakes that were absolute no-no’s.</p>
<h4 id="heading-always-remember-keyboard-and-contrast-accessibility">Always remember keyboard and contrast accessibility.</h4>
<p>Accessibility was the biggest mistake made throughout the review. One of the first things I physically do with a portfolio is to try to navigate it without using my mouse. If that’s not possible, I know that the applicant doesn’t have accessibility on their mind.</p>
<p>Color contrast for text is also a big factor. I used to love putting white text on yellow backgrounds. I thought I was being hip!</p>
<p>But I quickly learned in the industry that users with low vision struggle to read text with poor color choices. If your eyes are not trained to watch out for low contrast yet, refer to the Center for Persons with Disabilities’ <a target="_blank" href="http://webaim.org/resources/contrastchecker/">Color Contrast Checker</a>.</p>
<blockquote>
<p>Tip# 1: Some members of your target audience will have disabilities. Before writing any styling, make sure your HTML is accessible.</p>
</blockquote>
<h4 id="heading-stop-trying-to-rate-your-own-skills">Stop trying to rate your own skills.</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/zvv6TNrph-YbTgNE-50jL7W4QmFMD4Kjdwmy" alt="Image" width="800" height="365" loading="lazy"></p>
<p>One trend that has plagued portfolio sites for years has been skill progress bars. You say you are 85% proficient at Angular? What does that mean? How does that compare to your 80% skill at Node? Most reviewers are only going to understand three skill levels:</p>
<ul>
<li>You don’t know the skill at all</li>
<li>You’re still learning the skill</li>
<li>You feel confident in the skill</li>
</ul>
<p>Don’t worry about the first one. Just quickly tell me what you’re learning and what you feel confident in. All of this will be proven in your projects, anyway.</p>
<h4 id="heading-go-mobile-or-go-home">Go mobile or go home.</h4>
<p>Want to know what many reviewers’ favorite thing to do with your portfolio is? We love opening your website and then immediately adjusting the browser window width back and forth. This tells us whether you give consideration to the plethora of devices your site could be browsed on.</p>
<p>Want to go beyond that minimum threshold? Then have your CSS written <a target="_blank" href="https://www.sitepoint.com/introduction-mobile-first-media-queries/">mobile-first</a>. Writing mobile-first styling tells us that you like writing the smallest amount of code needed. When you stop at merely having media queries with a <code>max-width</code> property, it tells us that mobile devices were an afterthought in your design.</p>
<h3 id="heading-what-did-people-need-to-prove">What did people need to prove?</h3>
<p>Actual projects are the real meat of a portfolio website. They prove to me that you have the relevant work experience.</p>
<p>A resume or list of previous jobs is a nice timeline. But as a maker, your creation is the ultimate validation.</p>
<p>Here are parts of peoples’ project sections that made my life easier as a reviewer.</p>
<h4 id="heading-show-me-the-code-and-the-live-site">Show me the code and the live site.</h4>
<p>You have a project description, process write-up, and talk about the technology used. That’s great, but where’s the code?</p>
<p>It’s common for industry hires to get caught up in private work projects. But without any opportunity to inspect your code, you’re making the reviewer’s job tougher. We’ll struggle to know whether it’s worth our time to move you on to the next step in a recruiting process.</p>
<p>If the code is proprietary, where’s the live site? If I can see your code, why would you not have a live version running?</p>
<blockquote>
<p>Tip #2: Work on side and personal projects related to the same tech you use at work. Not only does it help you train for your current role, it also allows a portfolio reviewer to know where your skills are.</p>
</blockquote>
<h4 id="heading-tell-me-what-youve-actually-contributed-to">Tell me what you’ve actually contributed to.</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/n3vM1vvvu1goDjC3qzJr7VQ8qNtYdPyq2GFU" alt="Image" width="800" height="123" loading="lazy"></p>
<p>Group projects are great to show how well you collaborate. Most projects will require teamwork skills.</p>
<p>With portfolios though, you need to be clear about what work you yourself have contributed. Github repos can provide a clear history for me to review your work and understand this group dynamic.</p>
<p>Honesty in your project write-ups is always appreciated. Don’t exaggerate your role within a project, because the people reviewing your portfolio will dive into a project’s Git history to double check ourselves.</p>
<h4 id="heading-prove-you-dont-need-bootstrap-or-jquery">Prove you don’t need Bootstrap or jQuery.</h4>
<p>It’s understandable if you started learning CSS with Bootstrap or JavaScript with jQuery. The problem comes when <strong>all</strong> of your projects contain Bootstrap and jQuery.</p>
<p>Even though Bootstrap is convenient, I need to know that you have a clear understanding of CSS. I also need to know whether you have a solid foundation in plain JavaScript. This ensures that I’ll be able to onboard you onto a project with any combination of front-end tools already being used.</p>
<p>In fact, we don’t allow Bootstrap or jQuery at all during our interviewing process. So you’ll be more prepared for the future interviews and challenges if you have the appropriate CSS and JavaScript skills.</p>
<h3 id="heading-what-stood-out-the-most">What stood out the most?</h3>
<p>So we’ve gone over the things your portfolio needs and the ways portfolios can go wrong. What about the stuff that gets a reviewer excited about an applicant?</p>
<p>The following advice might seem a less concrete than my previous suggestions, but take it to heart.</p>
<h4 id="heading-step-away-from-the-norm">Step away from the norm.</h4>
<p>Almost everyone had the standard Intro &gt; Skills &gt; Projects &gt; Contact flow to their site. Almost everyone had the ex<a target="_blank" href="http://jamesarcher.me/the-hamburger-menu/">act same hambu</a>rger menu for navigation.</p>
<p>Do you want to get your reviewers’ attention? Get experimental and make small changes that do not harm the design.</p>
<p>One of the slightest differentiators had placed their navigation on the right side instead of the left. I knew it was time to focus more because the navigation was not on the cookie-cutter left or top of the layout. Simple, but effective.</p>
<h4 id="heading-speak-towards-your-dream-job">Speak towards your dream job.</h4>
<p><img src="https://cdn-media-1.freecodecamp.org/images/xVl6WsFLvxGO3W-9AlK3oo99CSfOIOtUQ1Fx" alt="Image" width="355" height="256" loading="lazy"></p>
<p>Have you seen that one position that you absolutely want? Build your portfolio around that job’s requirements and responsibilities.</p>
<p>It’s tough for me to understand why you want a job at our studio when your portfolio is full of WordPress themes. It’s also hard to think of you as a good fit for the role if your main focus seems to be a whole different industry.</p>
<p>We love generalists, but it’s a great plus to show that your speciality is also what the role prescribes.</p>
<blockquote>
<p>Tip #3: A lot of portfolios are used both for job applications and freelance clients. Don’t do this. The best practice is for a professional to design separate portfolios for each of those audiences.</p>
</blockquote>
<h4 id="heading-every-little-detail-matters">Every little detail matters.</h4>
<p>Here is the toughest point for a lot of people: you can’t control what your reviewer sees on your portfolio.</p>
<p>We’re constantly scanning the website instead of reading it top-to-bottom. So make sure you have your layout styling perfected, each sentence proofread, and no broken links.</p>
<p>There’s no telling what part of your site the reviewer will actually take the time to look at.</p>
<h3 id="heading-youve-got-this">You’ve got this.</h3>
<p>I was proud of all the great portfolios I was able to provide feedback on, and the discussions that followed.</p>
<p>The most encouraging part was when front end developers were not yet up-to-par for our role, and I was able to give them feedback. These aspiring professionals took the critique seriously and positively.</p>
<p>That is exactly the kind of attitude I look for later in the process when I interview applicants.</p>
<p>My hope is that these people will improve, and I’ll have a chance to review their work again in the future.</p>
<p>P.S. I’m <em>still</em> getting back to late requests for portfolio reviews. Also, all of the portfolios in my opening image asked for the review publicly, and scored highly!</p>
<p><em>For further information: Feel free to contact me by the comments, <a target="_blank" href="mailto:james@seejamescode.com">email</a>, or <a target="_blank" href="https://twitter.com/seejamescode">@seejamescode</a>. I work in ATX for IBM Design and always love conversation with the web design community. Also be sure to share your own or favorite portfolio in the comments!</em></p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
