<?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" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Claire Nguyen on Medium]]></title>
        <description><![CDATA[Stories by Claire Nguyen on Medium]]></description>
        <link>https://medium.com/@clairenguyen?source=rss-c44dfff5db82------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*lBrbaryoij66jFRQPFiOvg.jpeg</url>
            <title>Stories by Claire Nguyen on Medium</title>
            <link>https://medium.com/@clairenguyen?source=rss-c44dfff5db82------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 18 May 2026 09:11:20 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@clairenguyen/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Hack for LA]]></title>
            <link>https://medium.com/@clairenguyen/hack-for-la-c1b9ab28b359?source=rss-c44dfff5db82------2</link>
            <guid isPermaLink="false">https://medium.com/p/c1b9ab28b359</guid>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[civictech]]></category>
            <category><![CDATA[civic-engagement]]></category>
            <dc:creator><![CDATA[Claire Nguyen]]></dc:creator>
            <pubDate>Wed, 19 Jun 2019 05:39:39 GMT</pubDate>
            <atom:updated>2019-06-19T05:39:39.758Z</atom:updated>
            <content:encoded><![CDATA[<p>The two biggest levers for improving people’s lives at a scale are through technology and government. At Hack for LA, we aim to solve the LA region’s biggest challenges through technology. In this article, I will share a brief overview of some civic-hack projects that are currently being built at Hack for LA, which I have been attending for about 2.5 months now.</p><h3>Who We Are</h3><p>Hack for LA is one of many “brigades” under the Code for America umbrella. We are a network of people making government work for the people, by the people, in the digital age. We care coders, designers, entrepreneurs, students, government staff, activists, and other civic-minded people. We are like an incubator trying to solve civic issues!</p><h3>What We Do</h3><p>The goal of Code for America and Hack for LA is to build technology with and for governments to serve communities. We are all volunteers who empower other volunteers to be part of the solutions! The three high-impact focus areas include Criminal Justice, Social Safety Net, and Workforce Development.</p><p>Too often, governments are dependent on unreliable surveys and snapshots of historical data. They are unable to identify missteps until years after the fact, if at all. At Hack for LA/Code for America, we aim to drive government policy and operations around delivery and users using delivery-driven government principles. This includes understanding and meeting the user needs, using real-time user data, not years-old estimates, and through lots of iterations, from intention through implementation.</p><h3>Projects</h3><p>Here are some current active projects at the Hack for LA downtown location.</p><p><strong>Hack for LA Website</strong></p><ul><li>PURPOSE: Provide info about Hack for LA!</li><li>TECH: Jekyll, JavaScript, CSS/SASS, Google Calendar API, Action Network API, GH-Pages</li><li>SITE: <a href="https://www.hackforla.org/">https://hackforla.org/</a></li><li>GITHUB: <a href="https://github.com/hackforla/website">https://github.com/hackforla/website</a></li></ul><p><strong>Metro On-Time/RailStats LA</strong></p><ul><li>PREMISE: How reliable is the LA Metro Network ?</li><li>GOAL: Keeps Metro accountable and allows anyone to easily review and analyze the on-time performance of LA’s 6 train lines.</li><li>STAKEHOLDER: LA Metro</li><li>TECH: React, JavaScript (D3), Python, Pandas, Material UI, LA Metro API</li><li>SITE: <a href="https://la.railstats.org/">https://la.railstats.org</a></li><li>GITHUB: <a href="https://github.com/metro-ontime">https://github.com/metro-ontime</a></li></ul><p><strong>Jobs for Hope</strong></p><ul><li>PREMISE: Difficulty navigating for jobs with homeless service providers</li><li>GOAL: Aggregate job listings; Integration with County site</li><li>STAKEHOLDER: Los Angeles Office of Homelessness Initiative</li><li>TECH: React.js, Node.js, PostgreSQL, AWS, Python</li><li>SITE: <a href="https://jobs-for-hope.herokuapp.com/">https://jobs-for-hope.herokuapp.com</a></li><li>GITHUB: <a href="https://github.com/hackforla/jobs-for-hope">https://github.com/hackforla/jobs-for-hope</a></li></ul><p><strong>Criminal Sentencing Project</strong></p><ul><li>PREMISE: Lots of data on crimes committed, but none on sentences passed</li><li>GOAL: Make criminal sentences into an open dataset</li><li>LEAD STAKEHOLDER: Tim Urian (Community Activist)</li><li>HOW: Research into the gate keepers of information; Asking politely; Freedom of Information Act (FOIA) requests</li></ul><p><strong>311 Data</strong></p><ul><li>PREMISE: Lots of detailed 311 (non-emergency) Open Data</li><li>GOAL: Do something with it! Help neighborhood council, community leaders make decisions</li><li>STAKEHOLDERS: Department Of Neighborhood Empowerment</li></ul><p><strong>Shared Housing</strong></p><ul><li>PREMISE: To help address one of the issues in homelessness</li><li>GOAL: Provide a tool or some solution to enable a quicker matching process for those who are homeless and want to share housing</li><li>STATUS: Hashing out problem based on interviews with client</li><li>STAKEHOLDERS: LA Family Housing</li><li>GITHUB: <a href="https://github.com/hackforla/shared-housing">https://github.com/hackforla/shared-housing</a></li></ul><h3>Conclusion</h3><p>It’s been a great experience for me so far as I got to jump right into a project, Jobs for Hope. We’re in the process of finalizing our MVP and will be speaking to the county soon about integrating our web app with the Office of Homelessness Initiative website. I’m excited to see how that pans out!</p><h3>Resources</h3><p>If you want to get involved, check the meetup website. If it’s on there, then that means we’ll be onboarding new people that day! In the mean time, check out our slack, website, and github to learn more.</p><p><a href="https://meetup.com/hackforla/">https://meetup.com/hackforla/</a></p><p><a href="https://hackforla.slack.com/">https://hackforla.slack.com/</a></p><p><a href="https://www.hackforla.org/">https://hackforla.org/</a></p><p><a href="https://github.com/hackforla/">https://github.com/hackforla/</a></p><p><a href="https://www.codeforamerica.org/">https://codeforamerica.org/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c1b9ab28b359" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Three Months After Bootcamp]]></title>
            <link>https://medium.com/@clairenguyen/three-months-after-bootcamp-5d909475d71?source=rss-c44dfff5db82------2</link>
            <guid isPermaLink="false">https://medium.com/p/5d909475d71</guid>
            <category><![CDATA[codingbootcamp]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[bootcamp]]></category>
            <category><![CDATA[bootcamp-experience]]></category>
            <dc:creator><![CDATA[Claire Nguyen]]></dc:creator>
            <pubDate>Wed, 12 Jun 2019 00:32:51 GMT</pubDate>
            <atom:updated>2019-06-12T00:32:51.721Z</atom:updated>
            <content:encoded><![CDATA[<h3>Three Months After Boot Camp</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tLTC29PSmvgUeRNWQgxyKA.jpeg" /><figcaption>stock photo from unsplashed.com</figcaption></figure><p>It’s three month and a week since I graduated from Flatiron School’s Full Stack Web Development program. I’m still currently jobless. Here’s a little bit about my journey.</p><p>The last three months have had its ups and its downs. A month after graduating from the school in Houston, I moved back to the LA area to start looking for jobs. I figured it would be a bit easier to look for jobs where I can physically meet people in person. I mostly grew up here and had a network of friends and colleagues here — either from my university, work, or old connections. I immediately did what I could to get involved in the coding community. I’ve volunteered at various conferences and hackathons, attended various meetups, and participated in open source projects. I’m even doing a short talk at a Linux meetup coming this Thursday.</p><h3><strong>Going Through the Front Door</strong></h3><p>While there are some successful boot camp grads who are able to get jobs fairly quickly, the reality is that it’s still extremely difficult for junior devs coming out of a boot camp. I even got advice from a TechHireLA/YPI, a non-profit that helps people enter the tech field, to never put that you came from a boot camp on your resume. They also told me to write that I was a freelancer to explain the gap in my resume. While I chose to ignore this advice, I still think it’s strange and something to think about regarding today’s job market.</p><p>In addition, there are many boot camps popping up that do not have a system in place to ensure they are graduating quality graduates who are ready for the job market. Many of them will give certificates to anybody who pays for the program and makes it to the end. Sometimes these people leave a bad impression for the rest of us trying to get in the job market.</p><p>The cold truth is that it’s very difficult to land even an interview, let alone a job, without doing some work behind the scenes. This is especially the case if you choose not to fabricate your resume like many do, and if you’re going through the front door, i.e. applying for jobs on job boards. Additionally, it is difficult for people who do not have professional experience to back them up, those who do not have a bachelors degree (of any kind, even if you have work experience in other fields), or if you move from your boot camp’s location.</p><p>Coming back to LA and going to various meetups, I got the opportunity to talk to many other boot camp grads from other schools: Dev Mountain, Hack Reactor/Galvanize, Sabio, UCLA Extension, and a few more whose names I forgot. 90% of the ones I met are still struggling to find a job. Some of them were in the same situation as me where they moved away from their boot camp, and so they lost some access to job fairs that were on campus. Some also do not have a bachelors degree so they were automatically eliminated. Oneof those guys decided he was going to go back to school to get a bachelors degree after many rejections due to the lack of the degree.</p><h3>Advice to New Coders Considering Boot Camps</h3><p>Here are some things I did or wish I knew before attending my boot camp. Definitely do your research for any boot camp you are considering!</p><ol><li>Start making Linkedin Connections with people you know, recruiters, and professionals in the field as early as before boot camp. Keep at it during boot camp and after boot camp. Connect with people, be genuine, and follow up.</li><li>If you’re the type to look at stats and reports like I am, check to see if they are using numbers from a specific campus. This is the number one thing I wish I had been more careful about especially since I do like to look at ratings. I had looked at Course Report for Flatiron School and saw high ratings on there. In addition, they claim to have a high employment rate after graduation. Little did I know, the stats were all for their New York campus. I was in Houston at that time and they had just opened a campus 3 months prior. While I did learn a lot at my boot camp, there were many things that were unorganized, unprofessional, and unstable — which all come with a new organization. In addition, my cohort especially had a unique experience. For one, our lead instructor left half way through the course for a different job; while our replacement instructor was phenomenal, the change in style and expectations had a hit on many of our students.</li><li>Check to see if holidays off are going to be made up. My cohort started on November 19 and we had the most holidays out of any cohort: Thanksgiving, Black Friday, Xmas-New Years, MLK, Presidents Day. It may sound like all fun and games, but the holidays were not made up. Instead, we got video lessons to substitute the days, which does not do them justice at all.</li><li>Connect with boot camp grads from the school you are considering on Linkedin and ask about their experience. Ask when did they graduated, how long it took them to get a job (or not get a job), what their career services looked like and has it helped them.</li><li>Check what tech stack they are teaching and compare it to what is in the market. Our curriculum included Ruby, Ruby on Rails, Javascript, and React. Now that I’ve looked at so many job descriptions, I would have rather chosen a school that taught Node.js, Python, or Java for the backend. Additionally, one that used MongoDB and/or PostgreSQL for the database. At Flatiron, we used SQLite3 because that was the default database that came with Ruby on Rails but it’s not scalable in the very least and no one uses it in the market. You can’t even use it to deploy on Heroku.</li><li>Consider how much time they spend preparing you for a job while you’re still physically at the boot camp. For example, helping with resumes, and building your portfolio site while you are still in school. Flatiron did not do any of this while we were still in school. I’ve learned that some other boot camps actually help those things the last week or two of school. Not a huge deciding factor, but something to consider.</li><li>Consider finding a boot camp that PAYS YOU to learn and be in their program. There are some who will pay you. The caveat for some of these programs is that you have to have a 1–2 year commitment with their program. But hey, at least you’ll have a job right away and a new experience! There are even some that won’t pay, but that’s still better than you paying $12000+ on top of living expenses.</li><li>Consider going to a boot camp that does not make you pay up front. You pay a portion of your salary when you get a job. I wish I had gone this route. The boot camp has an incentive to ensure you get a job and so they will try to help you find a job quickly with as much pay as you can get. Don’t be skimpy on the fact that you have to pay a portion of your salary for a few months. They helped you with your education and got you a job.</li></ol><h3>Advice to Recent Boot Camp Grads</h3><p>If I could rewind and start again, here are the things I’d do right after graduating:</p><ol><li>Like many other advice you’ll hear in any market: Network network network. But in my case, use your existing network first! Hit up old friends, old coworkers, old colleagues. While I did attend a lot of events and met lots of people (which I loved and learned a lot!), they did not lead to much. It definitely helps to use an already cultivated relationship. In all honesty, most of my leads have been from those I already knew. The best way to go is through the backdoor! For newer connections, definitely prioritize cultivating the relationships. There are definitely people out there who are willing to help a stranger but it is always better if you’ve developed some level of trust.</li><li>Start learning about data structures, algorithms, and Big O notation. And start doing coding challenges on Leetcode, HackerRank, etc. All of my coding challenges involved those three ideas. One developer I met has a C.S. Degree and even said that those are the only classes that he took at his university that are relevant to his jobs.</li><li>Contribute to open source projects. What’s important is that you are working with real projects that are out in the world.</li><li>This one’s a random advice I got from another developer that worked for me: Change your job title on your Linkedin Headline to a specific stack. When I added “React/Rails” to headline, I immediately got more recruiters contacting me. Since many of them do not bother looking at your profile before sending you a message, this will help filter people who are using their specific stack. (Unfortunately for me though, they are always look for Senior Developers….)</li><li>Advice specific to Flatiron Grads: Do these things even if you aren’t planning to declare your “job search” right away. It will help prepare you in the long run. I also wish I knew that the “money back guarantee” was just specific to software developer jobs. I personally should have asked to confirm if I could still work full time in other positions to make money, while still being eligible for the money back program. (Basically, if you don’t get a software job in 6 months of declaring your “job search,” you get your money back. Some requirements have to be met per week.) For some reason, I thought I wasn’t eligible to get money back if I took a different job. It was my bad for not asking.</li><li>This article also has pretty good advice: <a href="https://blog.usejournal.com/how-i-got-7-job-offers-in-8-weeks-part-1-please-interview-me-21e6f4ded106">“How I got 7 Job Offers in 8 Weeks (Part 1: Please Interview Me?)”</a></li></ol><h3>Conclusion</h3><p>All in all, my experience so far has had its ups and downs. I know I mostly named the negatives in this article but many article out there do not mention these things so I wanted to share my experiences. I have definitely learned a lot over the past 6–7 months while in school and out of school. I take everything as a learning experience so at the end of it all, I honestly don’t have any regrets. But if one were to ask me about my experience and for advice, I would lay out the truth with all its pros and its cons.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5d909475d71" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[My Journey to and thru Boot Camp]]></title>
            <link>https://medium.com/@clairenguyen/my-journey-to-and-thru-boot-camp-81bf8199f13d?source=rss-c44dfff5db82------2</link>
            <guid isPermaLink="false">https://medium.com/p/81bf8199f13d</guid>
            <category><![CDATA[personal]]></category>
            <category><![CDATA[codingbootcamp]]></category>
            <category><![CDATA[choices]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[projects]]></category>
            <dc:creator><![CDATA[Claire Nguyen]]></dc:creator>
            <pubDate>Fri, 22 Mar 2019 04:20:08 GMT</pubDate>
            <atom:updated>2019-03-22T04:20:08.349Z</atom:updated>
            <content:encoded><![CDATA[<blockquote>This following was originally posted on my personal Facebook account but I wanted to have a public version to share.</blockquote><p>I made my first mobile app! This definitely still needs A LOT of work as it’s something I made over the course of two weeks, but I wanted to share my little victories.</p><p>Shoutout to the <a href="https://www.facebook.com/JacksonCollectiveOfficial/?__tn__=%2CdK-R-R&amp;eid=ARCqA--bO8Esw7uN9Dby3yl1Pm0OImQK4AbNvYdiCY5x8A1K6KtYlLOISs1m3P6hVbdyuRuEfk4xk0lD&amp;fref=mentions">Jackson Collective</a> for the inspiration! It started out as a joke but I went along with the idea of creating a “Tinder”/Social app for the upcoming <a href="https://www.facebook.com/events/350993738963496/?acontext=%7B%22source%22%3A108%2C%22action_history%22%3A%22%5B%7B%5C%22surface%5C%22%3A%5C%22post_page%5C%22%2C%5C%22mechanism%5C%22%3A%5C%22surface%5C%22%2C%5C%22extra_data%5C%22%3A%5B%5D%7D%5D%22%2C%22has_source%22%3Atrue%7D&amp;source=108&amp;action_history=%5B%7B%22surface%22%3A%22post_page%22%2C%22mechanism%22%3A%22surface%22%2C%22extra_data%22%3A%5B%5D%7D%5D&amp;has_source=1&amp;__tn__=%2CdK-R-R&amp;eid=ARCbl8r4TICGA8w5P9iWcV_fz7g87oFq8d99A6Jqh4Twd5nJ3qW4niJabDHDclmBfkantpZRMsrtgVq5&amp;fref=mentions">Jackson Tree Spring Gathering 2019</a> event. Hence, the name, “Jackson Treender.”</p><p>Unfortunately, the final product probably won’t be available by next week’s event due to my recent computer issues and time constraints. Nevertheless, this was still a fun and challenging project as I had never even touched a mobile app framework before this.</p><p>Check out my video demo below and let me know what you think!</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F1VYzxZ2uxXo%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D1VYzxZ2uxXo&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F1VYzxZ2uxXo%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/9f24eb7b7df929dc906b12023de5ea1e/href">https://medium.com/media/9f24eb7b7df929dc906b12023de5ea1e/href</a></iframe><p>If you’d like to come on a little journey to learn what I’ve been up to and how I got to this point, keep on reading!</p><p>After my last company went through a massive layoff last year, I had to make a few choices. I had been having an ache to get outside my bubble, to experience different cultures and communities, and to find comfort in discomfort. I wanted to live with more intention, develop meaningful relationships, and experience what the world had to offer. There was nothing holding me back from taking new chances.</p><p>And so I listened to those feelings. I chose to go on a journey to Southeast Asia for 3.5 months as a solo female traveler. When I came back to the states, I chose to move from LA to Houston to spend quality time with my grandmother and my maternal side of the family. I was almost ready to go back, but wanted to see if I could find additional reasons to stay in Houston. And so, I chose to pursue an education and future career in software development, an interest that was brewing inside me since my high school days.</p><p>There were many signs that led to that decision. I held roles as webmaster for two of my clubs in high school and college. I took 3 web dev/programming courses in college when my major was public policy. I interned under a UI Developer in college, when again, I majored in public policy. While I also loved my last project management role in IT, I wanted to have a creative platform. Again, there was nothing hold me back from taking new chances. I decided that since I was on a roll, it was the perfect time for me to learn and gain new skill sets in coding — something that I had been contemplating over 8 years.</p><p>For 3.5 months, I immersed myself in Flatiron School’s intensive full-time software engineering program. I engaged in a focused coding environment for over 60 hours a week where I learned full-stack web development focusing on Ruby/Rails for my backend and Javascript/React for frontend. In each three-week curriculum module, I developed my coding skills through interactive labs, lectures, and close collaboration, showcasing my progress through portfolio projects in the third week.</p><p>For my final project, I decided to take it a step beyond what was taught in school and created my first mobile app! I wanted to share the results after spending two hard weeks working on this. The styling of it (which is how it <em>looks</em>) could definitely be improved, I know. I also need to refactor and clean up the code itself. But! I wanted to share my little victories. I’m proud that I was able to make decently functioning app during that short time period, while also learning a completely new framework (which is React Native to make it mobile)! I graduated about two weeks ago and am definitely proud of how far I’ve gotten and how much I’ve learned after only 3.5 months of code!</p><p>If you made it this far, THANK YOU for reading and joining me on my journey. If you are a fellow coder or are interested in coding or heck, just want to catch up again, let’s *re-connect! (I’ve lost touch with many of my facebook friends and would love to connect again.)</p><p>I’ll be back in California next week, and will be on the job hunt! If you have any leads, please shoot them my way. I honestly would prefer to relocate to another metropolitan area like Austin or Seattle or even somewhere in another country. (Yes, I’m still seeking new cities and want to travel!) However, I am open to anywhere that I can learn and just be around good people.</p><p>Anyway, hope you enjoy the video and thanks again!</p><p>❤</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=81bf8199f13d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Intro to RegEx in JS]]></title>
            <link>https://medium.com/@clairenguyen/intro-to-regex-in-js-dce3c63297bf?source=rss-c44dfff5db82------2</link>
            <guid isPermaLink="false">https://medium.com/p/dce3c63297bf</guid>
            <dc:creator><![CDATA[Claire Nguyen]]></dc:creator>
            <pubDate>Tue, 12 Feb 2019 15:59:46 GMT</pubDate>
            <atom:updated>2019-02-12T15:59:46.979Z</atom:updated>
            <content:encoded><![CDATA[<p>When you first encounter Regular Expressions, aka RegEx or RegExp, they may seem like a random string of gibberish.</p><pre>var regex = /[bt]ear/;</pre><pre>console.log(regex.test(&#39;tear&#39;));<br>// returns true</pre><pre>console.log(regex.test(&#39;bear&#39;));<br>// return true</pre><pre>console.log(regex.test(&#39;fear&#39;));<br>// return false</pre><p>In the above example, it tests to see if any single character in string form is present inside the brackets. On the other hand, the following below negates the character set. It matches anything that is not enclosed in the brackets:</p><pre>var regex = /[^bt]ear/;</pre><pre>console.log(regex.test(&#39;tear&#39;));<br>// returns false</pre><pre>console.log(regex.test(&#39;bear&#39;));<br>// return false</pre><pre>console.log(regex.test(&#39;fear&#39;));<br>// return true</pre><p>While they might look awkward (with a somewhat confusing syntax), they are also extremely useful. The truth is properly understanding regular expressions will make you a much more effective programmer.</p><h3>What are Regular Expressions?</h3><p>Regular expressions are a way to describe patterns in a string data. Regular expressions can be used to perform all types of text search and text replace<strong> </strong>operations.</p><p>They form a small language of its own, which is a part of many programming languages like Javascript, Perl, Python, Php, and Java.</p><p>Regular expressions allow you to check a string of characters like an e-mail address or password for patterns, to see so if they match the pattern defined by that regular expression and produce actionable information.</p><p>In Javascript, regular expressions are also objects.</p><h3>Creating a Regular Expression</h3><p>There are two ways to create a regular expression in Javascript. It can be either created with RegEx constructor, or by using forward slashes ( / ) to enclose the pattern.</p><h4>Regular Expression Constructor:</h4><p>Syntax: new RegExp(pattern[, flags])</p><pre>var regexConst = new RegExp(&#39;abc&#39;);</pre><h4>Regular Expression Literal:</h4><p><strong>Syntax: </strong>/pattern/flags</p><pre>var regexLiteral = /abc/;</pre><ul><li>Here the flags are optional, which will later be explained in this next section.</li></ul><p>There might also be cases where you want to create regular expressions dynamically, in which case regex literal won’t work, so you have to use a regular expression constructor.</p><p>No matter which method you choose, the result is going to be a<strong> regex object</strong>. Both regex objects will have same methods and properties attached to them.</p><p><strong>Since forward slashes are used to enclose patterns in the above example, you have to escape the forward slash </strong><strong>( / ) with a backslash </strong><strong>( \ ) if you want to use it as a part of the regex.</strong></p><h4>Flags/Modifiers</h4><p>There are optional flags that you can append to your Regular Expressions.</p><ul><li>g : global : The given regular expression is matched multiple times</li><li>i : ignoreCase : Case is ignored when trying to match the given regular expression.</li><li>m : multiline : In multiline mode, the begin and end operators ^ and $ work for each line, instead of for the complete input string.</li></ul><h4>Meta-Characters</h4><p>There are many special characters that have special meaning in them that can be used with Regular expressions. You’ve probably seen a few, like /n, which means find a new line character, or /d, which means find find a digit. You can find a full list of these meta-characters <a href="https://www.w3schools.com/jsref/jsref_obj_regexp.asp">here</a>.</p><h3>Regular Expression Methods</h3><p>RegEx is used with the exec and test methods, and with the match, replace, search, and split methods of String.</p><h4>.test()</h4><p>The test method determines whether there is a match. It <strong>returns a boolean </strong>indicating whether the match succeeded.</p><pre>let RegExPattern = /a/;<br>RegExPattern.test(&quot;I am a Flatiron Student!&quot;);<br>//returns true</pre><pre>let RegExPattern = /z/;<br>RegExPattern.test(&quot;Wow!&quot;);<br>//returns false</pre><h4>.exec()</h4><p>The exec method is a RegEx method. It searches a string for a specified pattern, and <strong>returns the found text as an object.</strong> If no match is found, it returns an empty <em>(null)</em> object.</p><pre>let RegExPattern = /a/;<br>RegExPattern.test(&quot;I am a Flatiron Student!&quot;);</pre><pre>//returns [&quot;a&quot;, index: 2, input: &quot;I am a Flatiron Student!&quot;, groups: undefined]</pre><h4>.search()</h4><p>The search method finds the index of a match. Otherwise, it will return -1.</p><pre>&#39;Apples and Bananas&#39;.search(/b/i)<br>//returns 11</pre><pre>&#39;apples and bananas&#39;.search(/x/i)<br>//returns -1</pre><p>Note that the modifier ‘i’ tells it to be case insensitive.</p><h4>.replace()</h4><p>The replace method replaces a specified value with another value.</p><pre>let msg = &#39;Visit the Houston Flatiron School&#39;<br>msg.replace(/houston/i, &#39;Austin&#39;)<br>// returns &#39;Visit the Austin Flatiron School&#39;</pre><h3>C<strong>onclusion</strong></h3><p>This is just touching the basis of Regular Expressions. Understanding the capabilities will making you a much more effective programmer. For more information on the different modifiers, methods, etc, <a href="https://www.w3schools.com/jsref/jsref_obj_regexp.asp">W3Schools</a> is a great reference.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=dce3c63297bf" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[JS Reserved Words]]></title>
            <link>https://medium.com/@clairenguyen/js-reserved-words-f324beef93fa?source=rss-c44dfff5db82------2</link>
            <guid isPermaLink="false">https://medium.com/p/f324beef93fa</guid>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[es6]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[codingbootcamp]]></category>
            <category><![CDATA[keywords]]></category>
            <dc:creator><![CDATA[Claire Nguyen]]></dc:creator>
            <pubDate>Tue, 05 Feb 2019 15:01:00 GMT</pubDate>
            <atom:updated>2019-02-05T15:01:00.826Z</atom:updated>
            <content:encoded><![CDATA[<h3>ES6 &amp; JavaScript Reserved Words</h3><h3>Tokens</h3><p>A passage of text will include “tokens” of individual words and punctuation marks. Similarly, the smallest individual units in programming are also known as tokens. They may include constants, strings, operators, identifiers, separators, delimiters, and more depending on the language. These are part of the building blocks of programming.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/953/0*bUx8L3hFfTXzL7be.png" /><figcaption><a href="https://www.sencha.com/blog/ext-js-ecmascript-2015/">https://www.sencha.com/blog/ext-js-ecmascript-2015/</a></figcaption></figure><p>According to <a href="http://www.ecma-international.org/ecma-262/6.0/">ECMAScript 6 (2015),</a> “input elements [of ECMAScript Programs, like JavaScript] other than white space and comments form the terminal symbols for the syntactic grammar for ECMAScript and are called ECMAScript <em>tokens</em>.”</p><p>ES6 delves deeper into Tokens, Names, and Keywords in sections <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-tokens">11.5</a> and <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-names-and-keywords">11.6</a> where it lists <em>IdentifierName, Punctuator, NumericLiteral, StringLiteral, and Template </em>as part of their “common tokens.”</p><h3>Reserved Words</h3><p>Okay — Real Talk Time. While I was trying to find the proper definition of Reserved Words and Keywords, I honestly was confused with the jargon provided in ECMAScript’s documentation. Here is how it defines an <em>Identifier, IdentifierName, and ReservedWord.</em></p><blockquote>ReservedWord i<em>s an enumerated subset of I</em>dentifierName. <em>The syntactic grammar defines</em> Identifier<em> as an </em>IdentifierName<em> that is not a </em>ReservedWord <em>(</em><a href="http://www.ecma-international.org/ecma-262/6.0/#sec-reserved-words"><em>see 11.6.2</em></a><em>)</em></blockquote><p>It later goes on to say….</p><blockquote><em>A reserved word is an</em> IdentifierName<em> that cannot be used as an</em> Identifier.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/220/0*EA-uaQC7KReNpMAH.png" /><figcaption>Circular definition of “circular definition” (<a href="https://en.wikipedia.org/wiki/Circular_definition">Wiki</a>).</figcaption></figure><p>I feel like the above definitions are asking who came first, the chicken or the egg? To phrase it a little better…</p><p><strong><em>ReservedWords</em> are words that cannot be used as names of variables or functions.</strong></p><p>They are specifically reserved by the language for other purposes. This helps prevent confusion between the functionality of the code and potential user-defined names, such as for function declarations, function expressions, and variable declarations.</p><p>Note that when choosing identifiers, it is also important to avoid any words that are already the names of intrinsic JavaScript objects or functions, such as <strong>toLowerCase</strong> or <strong>integer.</strong></p><p>Many sources online will say use <em>ReservedWord</em> and <em>Keyword</em> interchangeable. Note that ECMA lists the following as subsets of <em>ReservedWords:</em></p><ul><li><em>Keyword</em></li><li><em>FutureReservedWord</em></li><li><em>NullLiteral</em></li><li><em>BooleanLiteral</em></li></ul><h4>Keyword</h4><p>In ES6, the following words are considered <em>Keywords,</em> and as emphasized, cannot be used as <em>Identifiers.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/852/1*4UNw4zrgC2cdh9Voon6K0A.png" /><figcaption>ES6 Keywords</figcaption></figure><p>Note: “In some contexts <strong>yield</strong> is given the semantics of an <em>Identifier</em>. In <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code">strict mode code</a>, <strong>let</strong> and <strong>static</strong> are treated as reserved keywords through static semantic restrictions (see <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-identifiers-static-semantics-early-errors">12.1.1</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-let-and-const-declarations-static-semantics-early-errors">13.3.1.1</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-for-in-and-for-of-statements-static-semantics-early-errors">13.7.5.1</a>, and <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-class-definitions-static-semantics-early-errors">14.5.1</a>) rather than the lexical grammar.”</p><p>Also, I went ahead and compared ES6 to the most recent ES9 (2018) update — it now includes <strong>await</strong> as part of its <a href="http://www.ecma-international.org/ecma-262/9.0/#sec-reserved-words">official <em>Keywords.</em></a></p><p>For those who don’t know, ES6 is the last big update to Javascript that happened back in 2015, which is the version most widely used today. However, ECMAScript is now updating the documentation every year and is now on ES9.</p><h4>Future Reserved Words</h4><p>The following are reserved for use as keywords as they may be included in future language extensions.</p><ul><li><strong>enum</strong></li><li><strong>await</strong> (only treated as a reserved word in modules)</li></ul><p>These words also cannot be used as identifiers!</p><p>As mentioned earlier, <strong>await</strong> has been added to ES9&#39;s official <em>Keywords.</em></p><h4>Strict Mode Future Reserved Words</h4><p>The following are only reserved when they are found in strict mode code:</p><ul><li><strong>implements</strong></li><li><strong>interface</strong></li><li><strong>package</strong></li><li><strong>private</strong></li><li><strong>protected</strong></li><li><strong>public</strong></li></ul><h4>Null Literal</h4><p>A <em>NullLiteral</em> is a <em>ReservedWord:</em></p><ul><li><strong>null</strong></li></ul><h4>Boolean Literals</h4><p>Similarly, <em>BooleanLiterals</em> are also <em>ReservedWords:</em></p><ul><li><strong>true</strong></li><li><strong>false</strong></li></ul><h3>Conclusion</h3><p>Before we end, I’d like to take this moment to appreciate this wonderful poem by <a href="https://stackoverflow.com/posts/12114140/revisions">Matt on StackOverflow</a>, where he creatively utilized Javascript reserved keywords — some new ES6 keywords, some older-soon-to-be-removed words.</p><pre>Let this long package float, <br>Goto private class if short.<br>While protected with debugger case,  <br>Continue volatile interface.<br>Instanceof super synchronized throw, <br>Extends final export throws.  <br><br>Try import double enum?  <br>- False, boolean, abstract function, <br>Implements typeof transient break!<br>Void static, default do,  <br>Switch int native new. <br>Else, delete null public var <br>In return for const, true, char<br>…Finally catch byte.</pre><p>Some — maybe all — of these keywords may be familiar to you. But I hope you appreciated this poem as much as I did!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f324beef93fa" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Javascript Quirks]]></title>
            <link>https://medium.com/@clairenguyen/javascript-quirks-a5cffbb49a0e?source=rss-c44dfff5db82------2</link>
            <guid isPermaLink="false">https://medium.com/p/a5cffbb49a0e</guid>
            <category><![CDATA[syntax]]></category>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[facts]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[programming]]></category>
            <dc:creator><![CDATA[Claire Nguyen]]></dc:creator>
            <pubDate>Tue, 15 Jan 2019 18:53:08 GMT</pubDate>
            <atom:updated>2019-01-16T04:16:15.481Z</atom:updated>
            <content:encoded><![CDATA[<p>When it comes to Javascript, people either love it or hate it. But there’s no denying that Javascript will continue to remain popular as the one of the three core technologies of the web, alongside HTML and CSS. With that said, let’s examine some fun quirks about Javascript!</p><p>Feel free to test out the codes in your <a href="https://developers.google.com/web/tools/chrome-devtools/console/get-started">Chrome Developer Console!</a> Press Command+Option+J (Mac) or Control+Shift+J (Windows, Linux, Chrome OS) to open the <strong>Console</strong>, right here on this very page. Now let’s get started!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xwrTR-hUffjNkEbXYwTEFQ.png" /><figcaption>Fun reference for any My Hero Academia fans out there :) image credit: <a href="https://www.youtube.com/watch?v=R1T5OzQEMN0">youtube</a>/<a href="https://i.ytimg.com/vi/R1T5OzQEMN0/maxresdefault.jpg">google images</a></figcaption></figure><h3>NaN is a Number</h3><p>NaN, which stands for “Not-a-Number” is actually a number. Don’t be believe me? Check out the datatype.</p><pre>typeof(NaN) //returns &#39;number&#39;</pre><h3>NaN Does Not Equal Anything</h3><p>NaN is not actually equal to anything, not even to itself.</p><pre>NaN === NaN //returns &#39;false&#39;</pre><p>A side effect is that you’ll never use indexOf if you want to find out the index of NaN into an array. It will return -1.</p><h3>Undefined Can Be Defined (sort of)</h3><p>According to Mozilla, “the global undefined property represents the primitive value undefined. It is one of JavaScript&#39;s primitive types.” Mozilla continues, “A variable that has not been assigned a value is of type undefined. A method or statement also returns undefined if the variable that is being evaluated does not have an assigned value. A function returns undefined if a value was not returned.”</p><p>But note, undefined is not actually a reserved word and can be reassigned within a function, either as a variable or as an argument.</p><pre>function someFn() { <br>    var undefined = &#39;foo&#39;<br>    console.log(undefined, typeof undefined); <br>}</pre><pre>someFn()               <strong>/</strong>/ logs &quot;foo string&quot;<br><br>function anotherFn(undefined) { <br>    console.log(undefined, typeof undefined); <br>}</pre><pre>anotherFn(&#39;foo&#39;)      <strong>//</strong> logs &quot;foo string&quot;</pre><p>There are a few other interesting return values with ‘undefined’ when declared globally. Inspect these out in your console.</p><pre>undefined = &#39;this is mostly undefined&#39; <br>//returns &#39;this is mostly undefined&#39;</pre><pre>undefined <br>//then, when called, returns &#39;undefined&#39;</pre><pre>var undefined = &#39;this is undefined&#39;<br>//returns &#39;undefined&#39;</pre><pre>let undefined = &#39;you would think this is undefined, but it&#39;s not&#39;<br>//returns SyntaxError: Identifier &#39;undefined&#39; has already been declared</pre><pre>const undefined = &#39;this also returns a Syntax Error&#39;<br>//returns SyntaxError: Identifier &#39;undefined&#39; has already been declared</pre><p>You also can’t name a function as “undefined” but you can name the local variables inside that function “undefined.”</p><pre>function undefined() { <br>   let undefined = &#39;bar&#39;<br>   console.log(undefined, typeof undefined) <br>}</pre><pre>undefined() <br>// returns &quot;Uncaught SyntaxError: Identifier ‘undefined’ has already been declared at &lt;anonymous&gt;:1:1&quot; for the function name.</pre><p>Note that the error above is for the function name and not for the variable inside the function.</p><p>It goes without saying, but I’ll say it anyway: it’s possible to assign values to a local variable called “undefined”, but please, just don’t.</p><h3>Null is an Object</h3><p>According to MDN, “The value null represents the intentional absence of any object value. It is one of JavaScript&#39;s <a href="https://developer.mozilla.org/en-US/docs/Glossary/Primitive">primitive values</a>.” It is supposed to be something that doesn’t exist. Yet, null is an object!</p><p>Compare null and undefined. They’re similar yet there is one key difference.</p><pre>typeof null                // object<br>typeof undefined           // undefined<br><br>null === undefined         // false<br>null == undefined          // true</pre><p>undefined and null are equal in value but different in type. You can “empty” an object by setting it to null but it will still be an object.</p><h3>Curly Bracket Positions Matter</h3><p>The position of your curly brackets matter. The return value of the two functions below will differ depending on the location of the curly brackets.</p><pre>function foo1() {<br>   return <br>   <strong>{</strong><br>      foo: &#39;bar&#39;<br>   <strong>}</strong><br>}<br>foo1()                           // returns undefined<br>typeof foo1()                    // returns undefined</pre><p>In the first function, the curly braces start on a different line than the return. The return statement does not recognize that it has anything to return so it returns nothing. The data type of the function here once invoked returns undefined.</p><pre>function foo2() {<br>   return <strong>{</strong><br>      foo: &#39;bar&#39;<br>   <strong>}</strong><br>}<br>foo2()                         // returns {foo: &#39;bar&#39;}<br>typeof foo2()                  // returns &#39;object&#39;</pre><p>The second function has the open curly braces in-line with the return keyword and recognizes that it will be returning an object, even though the key-value are on a different line. The data type of this function here once invoked returns an object.</p><h3>Floating Numbers: 0.1 + 0.2 !== 0.3 (true)</h3><p>Apparently, this is an oddity not just in Javascript, but also in many other languages. You would think that the equation 0.1 + 0.2 = 0.3 is true, but nope! 01. + 02 is actually 0.30000000000000004. Yet, if you add 0.1 + 1.2, it equals 1.3 as expected.</p><p>Here are a few more interesting cases that are “true” in Javascript.</p><pre>0.1 + 0.7 == 0.7999999999999999<br>0.1 + 1.1 == 1.2000000000000002<br>0.1 + 1.6 == 1.7000000000000002<br>0.1 + 1.8 == 1.9000000000000001<br>0.2 + 0.4 == 0.6000000000000001<br>0.2 + 0.7 == 0.899999999999999</pre><p>The general gist as to why: The computer basically tries to execute the lines above and convert the values to their binary equivalents. Computers can only natively store integers, so they need some way of representing decimal numbers. This representation thus comes with some degree of inaccuracy.</p><p>For more info, look up “Floating Point Math,” “Floating Point Arithmetic,” “Machine Precision.”</p><h3>Miscellaneous</h3><p>Here’s some more funky code.. I can’t quite explain how and why they work, but they work!</p><p>Check out the return values when you add objects and arrays. Order matters!</p><pre>{} + []                   // 0<br>[] + {}                   // &quot;[object Object]&quot;<br>[] + []                   // &quot;&quot;<br>{} + {}                   // &quot;[object Object][object Object]&quot;<br>{} + []  == [] + {}       // returns false.</pre><p>And then, when you try multiplying arrays of a string of a number….</p><pre>[[[[&#39;5&#39;]]]] * [[[[[&#39;5&#39;]]]]]       // returns 25</pre><p>Got something else for you. The crazy looking code below with all parenthesis, brackets, and bang operator will send an alert in your browser with “1”. Seriously, <a href="https://developers.google.com/web/tools/chrome-devtools/console/get-started">check it out in your console</a>!</p><pre>[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()</pre><pre>//returns undefined but sends an alert with &quot;1&quot;</pre><p>Now, let’s just take a moment to say “wow” all together…. WOW!</p><p>Okay, not sure about you but after looking and being wow-ed at the above code, I honestly just see more shapes and squiggles at this point…</p><pre>[]+(-~{}-~{}-~{}-~{})+(-~{}-~{})    //returns 42</pre><pre>//the above can also be written as:</pre><pre>[]+(-~function(){}-~function(){}-~function(){}-~function(){}) + (-~function(){}-~function(){})        //returns 42</pre><p>Shapes and squiggles aside, if you’d like to lear more about why the above code works, search up “Functional Arithmetic.”</p><h3>Another Strange Thing</h3><p>Last, but not least, one of the strangest things that I’ve learned and found are blocks of codes like the one below. Yes, it is actually valid and executable. What do you think it returns? Let’s scroll aaaalllllll the way down.</p><pre>([]+![])[+!+[]+!+[]+!+[]][([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([][([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]][([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]](([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+![])[+!+[]+!+[]+!+[]])())[([]+!![])[+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+![])[+!+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]]](([][([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]][([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]](([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+![])[+!+[]+!+[]+!+[]])())[([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+![])[+!+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]]](([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]])[+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[])+(+!+[]+!+[]+!+[]+!+[]+!+[]))+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([][([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]][([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]](([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+![])[+!+[]+!+[]+!+[]])())[([]+!![])[+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+![])[+!+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]]](([][([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]][([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]](([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+![])[+!+[]+!+[]+!+[]])())[([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+![])[+!+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]]](([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]])[+[]]+(+!+[]+!+[]+!+[]+!+[])+(+!+[]+!+[]+!+[]))+([]+![])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]]]()+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+![])[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+(+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]](+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+([]+[][+[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+[][+!+[]])[+!+[]]+([]+([]+[])[([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+[][+!+[]])[+!+[]]+([]+![])[+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+!![])[+!+[]]+([]+!![])[+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+([]+{})[+!+[]]+([]+!![])[+!+[]]])[+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]</pre><pre>//returns &quot;Strange Thing&quot;</pre><p>That’s right. The above code actually returns “Strange Thing.” Check it out in your console! The reasoning is unfortunately beyond my current understanding, but ain’t that cray?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/0*JJvHIV6Fmzz09YMh" /><figcaption><a href="https://www.reddit.com/r/ProgrammerHumor/comments/5m8kzb/javascript_in_2017/">credits: Reddit</a></figcaption></figure><h3>Conclusion</h3><p>With that, we can agree that Javascript definitely has its quirks, yet it will undoubtedly remain a dominant force for years to come. Hope you enjoyed this blog and were able to learn a few interesting facts about Javascript!</p><p><em>Sources: </em><a href="https://developer.mozilla.org/"><em>Mozilla,</em></a><em> </em><a href="https://www.smashingmagazine.com/2011/05/10-oddities-and-secrets-about-javascript/,"><em>SmashingMagazine</em></a><em>, </em><a href="https://hashnode.com/post/what-are-some-lesser-known-facts-about-javascript-ciibz8dk4000cj3xtxgaa395j"><em>HashNode,</em></a><em> </em><a href="https://0.30000000000000004.com/"><em>https://0.30000000000000004.com/</em></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a5cffbb49a0e" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tips & Tricks for Strong Passwords]]></title>
            <link>https://medium.com/@clairenguyen/tips-tricks-for-strong-passwords-d63c1629f7fd?source=rss-c44dfff5db82------2</link>
            <guid isPermaLink="false">https://medium.com/p/d63c1629f7fd</guid>
            <category><![CDATA[security]]></category>
            <category><![CDATA[passwords]]></category>
            <dc:creator><![CDATA[Claire Nguyen]]></dc:creator>
            <pubDate>Wed, 02 Jan 2019 18:31:37 GMT</pubDate>
            <atom:updated>2019-01-02T18:31:37.729Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/696/0*xj8WG-28V6Rzy3Lo.jpg" /><figcaption>PCMag: 123456 tops most common passwords again! (<a href="https://bit.ly/2F3y63e">https://bit.ly/2F3y63e</a>)</figcaption></figure><p>Password security (and cyber security, in general) is something we all know is important, yet most of us tend to put it on the back burner. Who wants to memorize a string of random characters and numbers that don’t make sense for every single site they visit? It can be a daunting task to create and memorize something like j8-B%dw^qM*3.</p><p>Passwords, in the simplest sense, are th; gates between an entity and a resource. Passwords allow us to ensure the correct person gains access to certain information or admission to something. They allow us to keep private information private and allow us to permit only the information we want to share be shared. They are the gates between users and their emails, account holders and their bank accounts, tweeters and their twitter, programmers and their programs.</p><p>Unfortunately, there are plenty of people who would like to gain access to information for malicious purposes, like stealing a private identity, credit card information, and social security number. With the right tools, knowledge, and careless users, they can hack into businesses systems and governments.</p><p>Hackers use three common methods to acquire people’s computer passwords:</p><ul><li>Brute Force (‘Dictionary’) Repetition</li><li>Social Engineering (commonly: phishing)</li><li>Administrator Back Doors</li></ul><p>Using stronger passwords won’t keep you secure from all the threats out there, but it’s a good first step.</p><p><strong>What is a Brute Force Attack?</strong></p><p>The term “brute force” means to overpower the defense through repetition. In the case of password hacking, brute forcing involves a program that recombines dictionary words with thousands of varying combination. It is a trial and error method used by application programs to decode data through exhaustive effort (using brute force) rather than employing intellectual strategies. It is the simplest method to gain access a site or server (or anything that is password protected).</p><p>Brute force dictionaries always start with simple letters “a”, “aa”, “aaa”, and then eventually move to full words like “dog”, “doggie”, “doggy”. It tries various combinations of usernames and passwords again and again until it gets in. These brute force dictionaries can make 50 to 1000 attempts per minute. This repetitive action is like an army attacking a fort and given several hours or days, these dictionary tools can overcome any password.</p><p><em>The secret is to make it take days to crack your password, but easy for you to remember.</em></p><p><strong>Traditional minimum requirements no longer cut it.</strong></p><p>The traditional password requirements on many websites include:</p><ul><li>minimum of 8 characters</li><li>include a minimum of one lowercase, one uppercase, one symbol, one number</li></ul><p>While these may be the bare minimum requirements for some sites, they are by no means secure, even with the random gibberish of characters and numbers. The key to making a strong password is length; the longer the better.</p><p><a href="https://howsecureismypassword.net/">Check out this website to see how long it would take to hack your password.</a></p><p><strong>Do’s and Don’ts</strong></p><p><strong>The “obvious” stuff…</strong></p><p>Here’s a list of the traditional recommendation we’ve all probably heard but maybe still don’t do.</p><ul><li>Don’t use common, single words like… “Password”. Just don’t.</li><li>Don’t use names of your families, friends, or pets</li><li>Don’t use identifying numbers like birthdays, anniversaries, postal codes, phone numbers, social security numbers, addresses of yourself or family members. A common example is using a last name + year of birth combination, like Smith1975.</li><li>Don’t use number substitutions that can easily be guessed, especially for short passwords, like p@ssw0rd or l3tm3in.</li><li>Don’t use consecutive numbers or numbers with a pattern, like 1234567890 or 3939393939.</li><li>Don’t use the same password, security question, and answer for multiple important accounts</li><li>Don’t write down your password</li><li>Don’t share your password with anyone.</li></ul><p><strong>The not-so-obvious stuff…</strong></p><p>One of the newest advice regarding passwords is to use a passphrase. A passphrase is easier for humans to remember but hard for computers to decipher. They should consist of seemingly random words strung together along with numbers, symbols, upper cases, and lower cases.</p><p>Something like… YellowChocolate#56CadillacFi$h is long, secure, and a lot easier to remember than fk-F83^*sU@sl=B.</p><p><a href="http://xkcd.com/936/"><em>Comic from XKCD</em></a><em>, often</em></p><p><strong>Here are some do’s…</strong></p><ul><li>Make sure the password is at least 15 characters long. Some sites say minimum of 12. Remember, longer passwords are harder to crack.</li><li>For passphrases, choose a minimum of four seemingly random words and put them together. (Some are even saying choose six random words.)</li><li>While the differing length of the words makes brute forcing the password very difficult, you could always complicate things even further with a simple-to-remember pattern — one that would also make the password pass the test for forms that check passwords for complexity. For example, take the sample password from that XKCD comic — “correcthorsebatterystaple” — and apply a pattern where you join words by alternating symbols and numbers like “^” and “2” and then capitalize the second (or whatever) character of each word. You’d end up with the password “cOrrect^hOrse2bAttery^sTaple” — long, complicated, and containing numbers, symbols, and capital letters. But it’s still much easier to remember than a randomized password.</li><li>Another common advice is to start with a base phrase or sentence and use their use the acronym, and add special characters. For example, “You know nothing, Jon Snow” could be <strong>yknjs:1776#Win10</strong></li><li>Swap in non-alphabetic and uppercase characters. Note that some advice online may say to not rely on obvious substitutions, like “H0use” — but usually they are referring to shorter passwords (not passphrases). Maybe somethinglike <strong>ykNjS:1776#Win10</strong></li><li>Change your password regularly. The common advice is change it every 3 months.</li><li>Consider using a password manager, like LastPass. If we can’t write them down, all your various passwords can be best stored on a secure site. You would only have to remember one very secure password.</li><li>Have fun and add emoticons to your password! Use basic smiley faces.</li></ul><p><strong>Debatable advice</strong></p><p>There are some advice online contract each other. Here’s some for you to consider….</p><ul><li>Some say not to use dictionary words for your passwords. This is usually from older advice, where users tend to use one word for their passwords. Again, newer advice suggestion minimum of four random words strung together with random characters in between.</li><li>Some say to avoid using common phrases and words that make grammatically and logical sense together, like “CatInTheHat” or “ToBeOrNotToBe.” Something like “purple turkey swimming sky” or “correct horse battery staple” is still easier to remember than a traditional random password. However, I think that if the phrase is varied enough, it can still be secure. (See below for examples.)</li><li>Some say do not use similar passwords where most of their characters are the same, for example, ilovefreshflowersMac, ilovefreshflowersDropBox, since if one of these passwords is stolen, then it means that all of these passwords are stolen. However, I think if the most of your password is strong enough applying the advice from above, you may apply some sort of additional pattern to help you remember which site is for which. (See below for examples.)</li></ul><p><strong>Here’s some examples of good passwords.</strong></p><p>(But don’t actually use these!)</p><ul><li><strong>2BorNot2B_ThatIsThe?</strong> (To be or not to be, that is the question — from Shakespeare)</li><li><strong>L8r_L8rNot2day</strong> (Later, later, not today — from the kid’s rhyme)</li><li><strong>4Score&amp;7yrsAgo</strong> (Four score and seven years ago — from the Gettysburg Address)</li><li><strong>John3:16=4G</strong> (Scriptural reference)</li><li><strong>14A&amp;A41dumaS</strong> (one for all and all for 1 — from The Three Musketeers, by Dumas)</li><li><strong>ABT2_uz_AMZ! </strong>(About to use Amazon)</li><li><strong>ABT2_uz_BoA!</strong> (About to use Bank of America)</li><li><strong>Pwrd4Acct-$$</strong> (Password for account at the bank)</li><li><strong>Pwrd4Acct-Fb</strong> (Password for a Facebook account)</li></ul><h4>The Take Away</h4><p>Putting some thought into your passwords can go a long way!</p><p>You’re now ready to create your own strong, long, memorable mixed-character passwords using one or more of these “<strong>T1p$ &amp; Tr1ck$ f0r $tr0ng P@$$w0rd$!</strong>” (See what I did with my title?) Or, if you want, create your own system — <strong>C?U2canCRE8Pwords;-)</strong> (See? You too can create passwords☺).</p><p>Have fun with it and create something silly that only you can remember!</p><p><strong>Sources:</strong></p><p><a href="https://www.lifewire.com/brute-force-dictionary-hacking-4061418">Lifewire</a>, <a href="https://www.howtogeek.com/195430/how-to-create-a-strong-password-and-remember-it/">How-To Geek</a>, <a href="https://www.webroot.com/us/en/resources/tips-articles/how-do-i-create-a-strong-password">WeBroot</a>, the internet, previous work experience in IT.</p><p><strong>More Resources:</strong></p><p><a href="https://passwordsgenerator.net/">PasswordsGenerator.net has many more do’s and don’ts on their website, not just on passwords.</a></p><p><a href="https://www.menshealth.com.au/most-common-passwords">Here’s a list of the top 25 most common passwords, according to hackers.</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d63c1629f7fd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Did Someone Say Foo(d) Bar?]]></title>
            <link>https://medium.com/@clairenguyen/did-someone-say-foo-d-bar-f280a3e6a9fa?source=rss-c44dfff5db82------2</link>
            <guid isPermaLink="false">https://medium.com/p/f280a3e6a9fa</guid>
            <dc:creator><![CDATA[Claire Nguyen]]></dc:creator>
            <pubDate>Tue, 11 Dec 2018 18:59:52 GMT</pubDate>
            <atom:updated>2018-12-17T00:31:47.347Z</atom:updated>
            <content:encoded><![CDATA[<p>Four weeks ago, I began my journey as an aspiring web developer when I applied to the Immersive Software Engineering Bootcamp at Flatiron School. The start date for the next cohort was 10 days away. I was forewarned about the amount of pre-work that was expected to first, pass my technical interview and second, be completed before the first day of class. However, the moment I decided to even apply was the moment I was determined to start as soon as possible.</p><p>I flipped my lifestyle 180 degrees, locked myself away, and filled weekend learning the fundamentals of javascript for my technical interview, and then fundamentals of ruby for the first day of school.</p><p>As I slaved away on my computer — immersing myself in this new realm of coding — I gained, what<em> felt</em> like, an immense amount of knowledge within that week.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iRF0fKfIpNxFkG1Oqp-6lQ.jpeg" /><figcaption>source: <a href="http://editimage.club/rapic.html">http://editimage.club/rapic.html</a></figcaption></figure><p>Fast forward a few weeks, I have learn the fundamentals of object-oriented programming, specifically in Ruby. From basic data structures, to classes and instances, to object relationships, my learning experience, so far, has been overall positive. But aside from all the technical concepts, syntax, and jargon, I had to quickly learn an important and invaluable skill: Googling.</p><p>As programmers, we will run into tons and tons of errors. We have a love-hate relationship with errors. But lucky for us, there are thousands of free resources for anyone at any level with any experience. The amazing open-source community allows us to gain and spread our knowledge to one another. We can share our joys and frustrations with other programmers; we can ask for help in various forums or shed our wisdom upon others; we can “Google” just about anything if we know what to search for.</p><p>Whenever I hit an error or want to learn about a new method, I would google the problem. Often times, it would lead me to the official Ruby documentation, Quora, or Stack Overflow. They would have various examples to show how a certain method is supposed to work. After visiting a number of sites reviewing a number of examples, the question that always pops to mind is: Why are programmers obsessed with “Foo?”</p><p>Sometimes, “Foo” is a name of dog. Other times he can count and do loops. Most times, he’s near a “Bar.”</p><p><strong>Did Someone Say Foo(d) Bar?</strong></p><p>“Foo” seems so versatile. He’s everywhere. But why?</p><p>With this question sneaking in whenever I had to reference coding documents, I decided to do what any aspiring web developer would/should be doing when they experience a problem: Google it! (See my theme here?)</p><p>I continued to hone my skills. Not only am I an aspiring web developer, I’m on my way to being an expert Google! I put my Google skills to the test: What is “Foo?”</p><p>To what extent should we be using foo, bar, and baz? Does it make sense?</p><pre>class Foo &lt; ActiveRecord::Base<br>  has_many :bazzes<br>  has_many :bars, through: :bazzes<br>end <br><br>class Bar &lt; ActiveRecord::Base<br>  has_many :bazzes<br>  has_many :foos, through: bazzes<br>end <br><br>class Baz &lt; ActiveRecord::Base<br>  belongs_to :foo<br>  belongs_to :bar<br>end</pre><p>To be continued…</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f280a3e6a9fa" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>