<?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 Prakrit Duangsutha on Medium]]></title>
        <description><![CDATA[Stories by Prakrit Duangsutha on Medium]]></description>
        <link>https://medium.com/@tirkarp?source=rss-a5db2b73d0c------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*ICRiUnp5Dq60vvGfVW3O7A@2x.jpeg</url>
            <title>Stories by Prakrit Duangsutha on Medium</title>
            <link>https://medium.com/@tirkarp?source=rss-a5db2b73d0c------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 09 Jun 2026 14:11:35 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@tirkarp/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[Understanding x86 Assembly]]></title>
            <link>https://tirkarp.medium.com/understanding-x86-assembly-5d7d637efb5?source=rss-a5db2b73d0c------2</link>
            <guid isPermaLink="false">https://medium.com/p/5d7d637efb5</guid>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[computer-science]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[x86-assembly]]></category>
            <category><![CDATA[computer-architecture]]></category>
            <dc:creator><![CDATA[Prakrit Duangsutha]]></dc:creator>
            <pubDate>Thu, 15 Aug 2019 14:01:01 GMT</pubDate>
            <atom:updated>2021-02-09T01:36:07.092Z</atom:updated>
            <content:encoded><![CDATA[<h3>Understanding x86 Assembly (Part 1: Registers)</h3><figure><img alt="Assembly is like a scaffolding to a building — it provides essential structure to any computer program" src="https://cdn-images-1.medium.com/max/1024/0*6FHlKS13w6x8LMn4" /><figcaption>Photo by <a href="https://unsplash.com/@samuelzeller?utm_source=medium&amp;utm_medium=referral">Samuel Zeller</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>You’re in a computer architecture class. The professor shows you a bunch of x86 assembly code, and you have absolutely no idea what is going on. Well, you’re in the right place!</p><p><em>This article is part of a planned series. Check back soon when the next part is posted!</em></p><h3>Memory Layout</h3><p>Memory is simply an array of bytes, each byte having its own address. When a program is executed, the operating system allocates a chunk of memory to the program. That memory (called <em>address space</em>) is divided into different segments as shown below:</p><figure><img alt="Memory layout of a process" src="https://cdn-images-1.medium.com/max/420/1*oLatmtP-JHDF8SSpoX2Nxg.gif" /><figcaption>Memory layout of a process</figcaption></figure><ul><li>The <strong>text</strong> section stores the program executable. When you compile a C program, the compiler converts your code to 0s and 1s, which represent instructions that the CPU will execute. Those 0s and 1s are going to be loaded into this <em>text</em> section when you run the program.</li><li>The <strong>data</strong> section stores initialized data (i.e. global variables that have been initialized).</li><li>The <strong>bss</strong> section stores uninitialized data (i.e. global variables that have not been initialized). In case you’re curious, it stands for <a href="https://en.wikipedia.org/wiki/.bss"><em>Block Started by Symbol</em></a>, named after an ancient assembler operator.</li><li>The <strong>heap</strong> section are memory that you can dynamically reserve from calling <em>malloc</em>. The heap typically grows upwards, which means it grows toward larger memory addresses.</li><li>The <strong>stack</strong> section are memory that your <a href="https://youtu.be/aCPkszeKRa4">functions</a> and the <a href="https://youtu.be/EXSijgdztCg?t=4700">local variables</a> inside your functions live. It is divided into <em>stack frames</em>, which grow downwards (i.e. grow toward lower memory addresses).</li></ul><p>Keep this memory layout in mind. We will come back to it later when we start programming in assembly.</p><h3>Registers</h3><p>It turns out that modern computers require more than a physical memory to operate. Inside the CPU, there exists a small piece of memory called <em>registers</em>. Registers are extremely fast, because it can be directly accessed by the CPU. Modern x86–64 processors have 16 general-purpose 64-bit registers, whose names can be overwhelming to understand at first. So I’ll provide some historical context to help you understand them better. But first, the overall layout of the x86–64 registers:</p><figure><img alt="Layout of 64-bit registers" src="https://cdn-images-1.medium.com/max/575/1*4ipwUzIWd4eqUvcEmZ5tMQ.png" /><figcaption>Layout of x86–64 registers</figcaption></figure><p>Okay. Ignore all the descriptions on the right. In fact, ignore the entire image above. Don’t try to understand it right now. I put it purely for reference. We can come back to this later.</p><h3><a href="http://learn-assembly.blogspot.com/2009/04/general-registers-ax-bx-cx-and-dx.html">Backstory</a></h3><h4>8-bit registers</h4><p>Long long time ago, in the age of the <a href="https://en.wikipedia.org/wiki/Intel_8080"><em>Intel 8080</em></a>, registers are only 8 bits in size. They are simply named <em>A</em>, <em>B</em>, <em>C</em>, <em>D</em>, <em>E</em>, <em>H</em>, and <em>L</em> registers.</p><ul><li>The <strong>A register</strong>, in particular, was used as a primary <a href="https://en.wikipedia.org/wiki/Accumulator_(computing)"><em>accumulator</em></a>. It accumulates (as you’ll see when we get to the actual assembly part) the result of most operations.</li><li>The <strong>B register</strong> stands for the <em>base</em> register, which historically was used to store the <a href="https://retrocomputing.stackexchange.com/questions/7627/is-bx-the-base-address-register-and-if-so-why"><em>base address</em></a> of something we want to reference in memory (think arrays in C, where the reference address would be the address of the first element).</li><li>The <strong>C register</strong> was the <em>counter</em> register, used to store counts just like the modern counter variables.</li><li>The <strong>D register</strong> stands for the <em>data</em> register. It was used to store the data of most I/O operations.</li></ul><figure><img alt="Intel 8080 (8-bit) registers" src="https://cdn-images-1.medium.com/max/1024/1*uF5wbetOgWjMu5lYV1Gw9w.jpeg" /><figcaption>Picture from <a href="https://en.wikipedia.org/wiki/Intel_8080">https://en.wikipedia.org/wiki/Intel_8080</a></figcaption></figure><p>In addition to general-purpose registers, we have <a href="https://en.wikipedia.org/wiki/Status_register"><em>status register</em></a>, or <em>flag bits</em>, which are a series of bits that represent the status of certain operations. For example,</p><ul><li>the <strong>sign bit (S)</strong> will be set to 1 if the result of the previous operation is negative, and 0 if the result is non-negative.</li><li>The <strong>zero bit (Z)</strong> will be set to 1 if the result of the previous operation is zero, and 0 if the result is non-zero, so on, so forth.</li></ul><p>And then we have some special registers, like the <strong>stack pointer (SP)</strong>, and the <strong>instruction pointer (IP)</strong> or the program counter, which we’ll get back to in a moment.</p><h4>16-bit registers</h4><p>Fast forward a few years later, the <a href="https://en.wikipedia.org/wiki/Intel_8086"><em>Intel 8086</em></a> came out. The architects of the 8086 added a slew of other registers, and made them 16-bit in size. Among all the changes, the original <em>A</em>, <em>B</em>, <em>C</em>, and <em>D</em> registers had a slight modification to their names. Since the registers are 16 bits now, we can divide the original registers up into two 8-bit registers like these:</p><figure><img alt="16-bit registers" src="https://cdn-images-1.medium.com/max/1024/1*hcw0-XNds2MWqKBTj6_pHQ.jpeg" /></figure><p>The <strong>AH</strong> and <strong>AL</strong> registers are called the <em>“high byte”</em> and the <em>“low byte”</em> respectively. Each of them are 8-bit (a byte) in size, but are <a href="https://stackoverflow.com/questions/2545192/what-does-x-mean-in-eax-ebx-ecx-in-assembly">paired up</a> to form the 16-bit <strong>AX</strong> register (<em>X</em> in this case just stands for <em>pair</em>).</p><p>For example, if I have 0100 1101 stored in <em>AX</em>,</p><ul><li><em>AH</em> would store 0100,</li><li><em>AL</em> would store 1101,</li><li><em>AX</em> would represent the entire 0100 1101.</li></ul><p>Same goes for the <em>BX</em>, <em>CX</em>, and <em>DX</em> registers. At this point, I should introduce two new terminologies. You are going to hear these terms a lot more often now: a <strong>byte</strong>, which just means <em>8 bits</em>; and a <strong>word</strong>, which means <em>16 bits</em>.</p><p>The 8086 also contains a couple of new <em>word</em> registers and flag bits, among them:</p><ul><li>the <strong>SI (Source Index)</strong> register, used as a pointer to a source in stream operations</li><li>the <strong>DI (Destination Index)</strong> register, used as a pointer to a destination in stream operations</li><li>the <strong>BP (Base Pointer)</strong> register, used as a pointer to the base of a stack frame (we’ll see examples of this)</li><li>the <strong>SP (Stack Pointer)</strong> register — okay, you have seen this one before, and it’s used as a pointer to the current position in the stack (we’ll also see examples of this soon)</li></ul><p>Here is a picture summary of what we learned so far.</p><figure><img alt="Intel 8086 (16-bit) registers" src="https://cdn-images-1.medium.com/max/1024/1*pnHI09kcqlX6HUXKp1P8jA.jpeg" /><figcaption>Picture from <a href="https://en.wikipedia.org/wiki/Intel_8086">https://en.wikipedia.org/wiki/Intel_8086</a></figcaption></figure><p>Don’t worry about the <em>segment registers</em> yet. We’ll probably never touch them in your class.</p><p>If you’re feeling pretty overwhelmed at this point, stop reading. Go take a break. Don’t look at the diagram above, but look at the diagram below instead, because things are about to get interesting.</p><h4>32-bit registers</h4><figure><img alt="32-bit registers" src="https://cdn-images-1.medium.com/max/960/1*kkrG2L61YUbGLxwv5UcoPQ.png" /><figcaption>Picture from <a href="https://www.cs.virginia.edu/~evans/cs216/guides/x86.html">https://www.cs.virginia.edu/~evans/cs216/guides/x86.html</a></figcaption></figure><p>Modern computers nowadays work on at least 32-bit (<strong>long</strong> or <strong>dword</strong>, short for <em>double word</em>) registers. This time, same concept as before, <strong>EAX</strong> (stands for <em>extended AX</em>) refer to the entire 32-bit value. If you want to access the lower <em>word</em> value of EAX, you can still use AX. Sadly, you won’t be able to access the higher <em>word</em> value of EAX this time.</p><p>To give an example, suppose EAX stores 1100 0100 1110 0010,</p><ul><li><em>AL</em> would be 0010,</li><li><em>AH</em> would be 1110,</li><li><em>AX</em> would be 1110 0010,</li><li><em>EAX</em> would be 1100 0100 1110 0010.</li></ul><p>It is important that you are familiar with all the registers you have learned so far, so study the diagram above!</p><h4>64-bit registers</h4><p>Here’s the fun part: if I show you the image I told you to skip in the beginning, it kinda starts to make sense.</p><figure><img alt="64-bit registers" src="https://cdn-images-1.medium.com/max/445/1*I8_t0-cmbo5cHPK59aYhdA.png" /><figcaption>x86–64 registers</figcaption></figure><p>Yes, that’s how 64-bit (<strong>qword</strong>, short for <em>quad word</em>) registers look like. You’ll notice that you can now access the entire 64-bit value with <strong>RAX</strong> (that <em>R</em> just stands for <em>register</em>, I guess they ran out of names…). EAX, AX, AH and AL are still there to maintain backward compatibility. Same goes for all the other registers.</p><p>You also have additional general-purpose registers, <em>R8</em> to <em>R15</em>, which can be used to store anything you like. In fact, this whole time, you can store anything you like in any register — like you don’t need to store counter values in RCX, because RCX is just a regular ol’ piece of memory!</p><p>You know the full names of those registers you learned earlier? They’re mostly archaic and meaningless now (except RSP). Modern conventions don’t use them the way their names suggest (as you’ll learn in later parts of this article), but knowing what those names stand for is still useful sometimes for organizational purposes.</p><p>Alright, time to learn actual x86 assembly. Check out <a href="#">Part 2</a> of the article!</p><p>🚀🚀🚀</p><p>Fun fact: <em>x86–64 is a superset of x86 architecture. It was created by AMD but it got so popular, Intel adopted it for their own use. You can read the history of how they got their names </em><a href="https://serverfault.com/questions/188177/why-does-x86-represent-32bit-when-x64-represents-64bit"><em>here</em></a><em>.</em></p><p><em>Pictures adapted from “</em><a href="https://www.cs.cmu.edu/~fp/courses/15213-s07/misc/asm64-handout.pdf"><em>x86–64 Machine-Level Programming</em></a><em>” by Randal E. Bryant and David R. O’Hallaron.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5d7d637efb5" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I closed my room door.]]></title>
            <link>https://tirkarp.medium.com/i-closed-my-room-door-dbc558bff24b?source=rss-a5db2b73d0c------2</link>
            <guid isPermaLink="false">https://medium.com/p/dbc558bff24b</guid>
            <category><![CDATA[bbc]]></category>
            <category><![CDATA[doors]]></category>
            <category><![CDATA[short-story]]></category>
            <category><![CDATA[internet]]></category>
            <category><![CDATA[meghan-markle]]></category>
            <dc:creator><![CDATA[Prakrit Duangsutha]]></dc:creator>
            <pubDate>Wed, 08 May 2019 05:20:47 GMT</pubDate>
            <atom:updated>2021-02-09T01:43:07.997Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*NbxUqUypirPLAu9c7yp5mg.jpeg" /></figure><p>Yeah, seriously. I closed my room door.</p><p>I went out to get breakfast, so I closed it, and locked it.</p><p>It’s also something I do when I want to go out to a party, go to school, or go to work. Simply put, I when I leave my room, I close my door (and probably lock it).</p><p>Meghan Markle does the same thing. Okay, not really.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ga3TO3wkfxC3yWL8iQ7PVw.jpeg" /><figcaption><a href="https://www.bbc.com/news/av/uk-45650976/meghan-closes-a-car-door">https://www.bbc.com/news/av/uk-45650976/meghan-closes-a-car-door</a></figcaption></figure><p>She didn’t close her room door — or maybe she did, I don’t know — but she closed a car door. That’s similar enough, right?</p><p>But when she did it, it’s on the BBC. “The internet was watching and had something to say.”</p><p>I get it, the Duchess of Sussex closing a car door is impressive. But look at what I did: I opened the door myself, then closed it even more gently than she did. Arguably, this is more impressive, right?</p><p>So, Internet. Do you have something to say too?</p><p>🥔🥔🥔🥔🥔</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=dbc558bff24b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bringing CS50 to Singapore High School]]></title>
            <link>https://tirkarp.medium.com/bringing-cs50-to-singapore-high-school-5848e411b03c?source=rss-a5db2b73d0c------2</link>
            <guid isPermaLink="false">https://medium.com/p/5848e411b03c</guid>
            <category><![CDATA[education]]></category>
            <category><![CDATA[computer-science]]></category>
            <category><![CDATA[harvard]]></category>
            <category><![CDATA[high-school]]></category>
            <category><![CDATA[cs50]]></category>
            <dc:creator><![CDATA[Prakrit Duangsutha]]></dc:creator>
            <pubDate>Sun, 02 Oct 2016 23:31:03 GMT</pubDate>
            <atom:updated>2016-10-03T10:48:59.173Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KokQrfHbmmRZcSJCd_xGZg.jpeg" /><figcaption>Culture. Image courtesy of CS50.</figcaption></figure><p>This year I’m excited to bring <a href="http://cs50.harvard.edu">CS50 </a>— an incredible, wildly successful computer science curriculum to Singapore’s high school setting.</p><p>CS50 is Harvard University’s introduction to the intellectual enterprises of computer science and the art of programming for those less and more comfortable alike. It is by far the most popular course in Harvard, Yale and on online education platform <a href="http://edx.org">edX</a>. The course prides itself in having a broad range of accessibility, inviting literally anyone to chime in irrespective of his or her prior background, all while maintaining the course’s historical rigor.</p><p>This year, CS50 has been implementing its own adaptation to high school environment — dubbed <a href="http://ap.cs50.net">CS50 AP</a> — allowing any teacher to have access to resources for teaching the course and organizing the course’s events, so we took the opportunity to jump right in.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FRVjHSAZdVJg%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DRVjHSAZdVJg&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FRVjHSAZdVJg%2Fhqdefault.jpg&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/95df9d88fa2eceedfd513d921d653adc/href">https://medium.com/media/95df9d88fa2eceedfd513d921d653adc/href</a></iframe><h4><strong>Adaptation</strong></h4><p>Since we’ll be conducting these sessions as part of a co-curricular activity, we generally only have a 2-hour contiguous class time each week for CS50. So we divided the class into two one-hour parts:</p><ul><li><strong>Section </strong>remains an essential core of our localized support, providing students with opportunities to learn topics at a more in-depth level and ask questions as they see fit.</li><li><strong>Office hour</strong>, meanwhile, does not only assist students with the harder part of the problem sets but also give them some time to get started on their homework. Office hour is scheduled on the second hour of the class, but special appointments can be made to get help on the problem sets during recess or after school.</li><li><strong>Lectures</strong> though, are given as additional weekly assignment for students to watch at home.</li></ul><p>You may have already noticed that we choose to adopt the 13-week structure and use most of the materials from the campus version of CS50, not very much unlike <a href="https://www.youtube.com/watch?v=UMVmbH1UfFM&amp;feature=youtu.be&amp;start=356&amp;end=1695">how Miami Dade College did it</a>, without the lecture and TF part. What we do provide is elaborate local support structure, to engage students and break down barriers that prevent them from completing the course on their own.</p><p>One of the components we also included is events, whereby students will have the experience of actively engaging in this exclusive community as opposed to doing so passively via the Internet. The <a href="https://medium.com/@cs50/this-was-cs50x-puzzle-day-2016-1b1519b77353#.vzzfanxeu">Puzzle Day</a>, <a href="https://manual.cs50.net/hackathon/">Hackathon </a>and <a href="http://docs.cs50.net/2016/fall/syllabus/cs50.html#cs50-fair">CS50 Fair</a> will remain a key tradition that we’ll continue to put forth. If time and resources permit, perhaps, we may even try out the new <a href="https://medium.com/@cs50/first-ever-cs50x-coding-contest-f3cbe1024b3d#.olujcbsg5">CS50 Coding Contest</a> just for fun.</p><p>In terms of problem sets, we’ll continue to use <a href="https://www.edx.org/course/introduction-computer-science-harvardx-cs50x">CS50x</a> materials, with the addition of personalized grading in compliance with the actual syllabus. We understand that the workload of the problem sets is sometimes an overwhelming responsibility on the student’s side given the stressful nature of the education system, hence we give students a 2-week time frame with requestable extensions when absolutely necessary.</p><h4><strong>Orientation Week</strong></h4><p>The first day kicked off with CS50&#39;s signature demonstration — phone book ripping. This is part of an introductory lecture to give students an idea of what CS50 and computer science in general is all about. Our students were thrilled. But because Yellow Pages is so rare nowadays, I was even more thrilled to finally be able to perform this demo for the very first time.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jbBswmuQ_6HmFIFaNSmssA.jpeg" /><figcaption>That’s me, tearing the phone book.</figcaption></figure><p>Claps and cheers aside, we moved on to talk about how else we can apply binary search in real life. I pulled another excellent demonstration of taking attendance in class. Fast forward 5 minutes later, I was walking through all the different components of CS50, including an overview of every problem set just to give them a glimpse of what awaits in the course.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uUcudBinpLm1CRSzP98Jgg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*S8D81Ebvv8xr9ohkheYAAg.jpeg" /><figcaption>Problem set 2 overview</figcaption></figure><p>I’m no professional teacher myself as you can see, so there were definitely missteps made. One was to invite a student up to play around with pset 3’s Game of Fifteen. The assumption was that classmates will join in and help solve the puzzle together. That didn’t happen, probably mainly because the overview was admittedly quite boring and the students were unfamiliar with the game in the first place. Clarity of the explanation also played a role. Perhaps that’s something to work on next time.</p><p>Nevertheless, as we progressed toward the end, I was glad the level of enthusiasm was still there. Students were excited to register themselves on edX and get their hands dirty. Slow internet connection was not a problem. Many dove right into watching the first lecture and some were already starting to explore Scratch on their own.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ttspZ9MNCEPksv17SAnzbQ.jpeg" /><figcaption>Puzzle Day announcement</figcaption></figure><p>The first day was a satisfactory start. Even though this is probably the first time our students are enrolling in a class this rigorous (given the short time span), I was able to set the tone and expectations with which (hopefully) we can keep up for the rest of the course. We know it’s not always going to be seamless, but with David’s superb job of hyping up the class and our effort to facilitate the student’s learning in the most comprehensive way possible, I am certain we will have the kind of energy, even as a high school student, to tackle the slope of the course with resilience and tenacity. Our journey has just begun.</p><p>This is CS50 for HIHS.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5848e411b03c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Beginner: Linux Navigation Manual]]></title>
            <link>https://tirkarp.medium.com/beginner-linux-navigation-manual-bbcfef365734?source=rss-a5db2b73d0c------2</link>
            <guid isPermaLink="false">https://medium.com/p/bbcfef365734</guid>
            <category><![CDATA[linux]]></category>
            <category><![CDATA[beginner]]></category>
            <category><![CDATA[bash]]></category>
            <dc:creator><![CDATA[Prakrit Duangsutha]]></dc:creator>
            <pubDate>Mon, 22 Feb 2016 13:46:01 GMT</pubDate>
            <atom:updated>2016-02-25T12:49:10.822Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*I3GgyZBTMMcKMfgrLzfqXg.jpeg" /></figure><h4>Comprehensive Bash tutorial for the absolute Linux beginner.</h4><p>Welcome to the Linux world! Whether you’re just starting on an intro to CS course or wandering through your very first UNIX-based home server, learning how to navigate around in Linux (more specifically, using the command line) is going to make your life much easier and much much more powerful.</p><h3>Getting Started</h3><h4>Linux</h4><p>There are many distributions of Linux out there. Each of them has their own variation of commands to work with. Specifically for this tutorial, I’m going to be using <strong>Ubuntu 14.04.2 LTS</strong> on <a href="http://c9.io">Cloud9</a>. Keep in mind that all commands demonstrated here will probably be usable on earlier and future versions of Ubuntu, as well as Debian and Debian-based <em>distro</em>s.</p><p>To check for the distribution and version number, simply type this into the terminal.</p><pre>cat /etc/issue</pre><h4>Bash</h4><p>Not only do different distros have different commands, they also have different default <em>shell</em> (scripting environment). What this means is that this window — often called the <em>terminal — </em>works differently.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*I3GgyZBTMMcKMfgrLzfqXg.jpeg" /></figure><p>In this case, I’m going to be using Bash (short for Bourne-Again Shell), which is the default shell for Ubuntu and Debian.</p><h4>Structure</h4><p>In Bash, you’ll typically be presented with this kind of prompt:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UEogQIjdTRZZbePT_4_l-w.jpeg" /></figure><p>where <strong>brillydev</strong> is my username, and <strong>~/workspace</strong><em> </em>is the directory I’m currently in, followed by a dollar sign (<strong>$</strong>), or depending on some user, a hash (<strong>#</strong>).</p><p>Because I’m lazy, I’m going to omit that <strong>brillydev:~/workspace</strong>, and leave only <strong>$</strong> when I show you my terminal window. You don’t need to type all of these <strong>brillydev:~/workspace $ </strong>when you type the command.</p><p>Oh, and keep in mind that Linux is case-sensitive. ‘A’ is different from ‘a’!</p><h3>Basic Navigation</h3><h4>pwd</h4><p><strong>pwd</strong> (print working directory) shows the current <em>directory</em> (basically, the folder) you’re in.</p><pre>$ pwd<br>/home/brillydev/workspace</pre><p>In case you’re wondering:</p><ul><li><strong>~ </strong>(tilde) means the user’s home directory, usually <strong>/home/username</strong></li><li><strong>. </strong>(dot) means the current directory you’re in</li><li><strong>.. </strong>(dot dot) means the parent directory of the current directory you’re in. For example, if you’re in <strong>foo/bar/</strong>, <strong>.</strong> will represent <strong>bar/</strong>, <strong>..</strong> will represent <strong>foo/</strong></li></ul><h4>cd</h4><p>The most basic command of all time, <strong>cd</strong> (change directory) means. Err, change directory.</p><pre>$ pwd<br>/home/brillydev/workspace/foo/bar</pre><pre>$ cd ..<br>$ pwd<br>/home/brillydev/workspace/foo</pre><p>You can see that the directory changes according to what you type after <strong>cd</strong>. Typing <strong>cd</strong> alone without any <em>argument</em> (without anything that follows it) will bring you to the home directory of the user.</p><p><strong>cd</strong> followed by a dash will bring you to the recent directory you were in.</p><pre>$ cd<br>$ pwd<br>/home/brillydev<br><br>$ cd workspace/foo<br>$ pwd<br>/home/brillydev/workspace/foo</pre><pre>$ cd -<br>$ pwd<br>/home/brillydev</pre><h4>ls</h4><p><strong>ls</strong> (list) list down all the content inside the directory.</p><pre>$ pwd<br>/home/brillydev/workspace<br>$ ls<br>apple.txt bar/ foo/ somefiles.txt</pre><p>A slash (<strong>/</strong>) post-fixed after a name indicates that it is a directory. In this case, <strong>bar</strong> and <strong>foo</strong> are directories. Anything not with a slash are all files.</p><h4>Flags</h4><p>In addition to performing a general task, a command may also contain <em>flags</em> to specify a specific task you want the command to do. A flag is anything prefixed with a dash (<strong>-</strong>) that follows the command name.</p><p>For example, you can type <strong>ls -l</strong>. In this case,<strong> l </strong>being the flag, to display the content of the directory in a nice list view.</p><pre>$ ls -l<br>total 8<br>-rw-r--r--  1 brillydev brillydev    0 Oct 22 13:18 apple.txt<br>drwxr-xr-x  2 brillydev brillydev 4096 Jan 31 03:55 bar/<br>drwxr-xr-x  2 brillydev brillydev 4096 Oct 22 13:18 foo/<br>-rw-r--r--  1 brillydev brillydev    0 Feb  6 14:08 somefiles.txt</pre><p>Flags can also be combined. <strong>ls -a</strong> display all content, including hidden files (files that are prefixed with a dot). When used with <strong>ls -l</strong>, we can combine them like this:</p><pre>$ ls -la<br>total 16<br>drwxr-xr-x  4 brillydev brillydev 4096 Feb 21 08:04 ./<br>drwxr-xr-x 10 brillydev brillydev 4096 Feb 21 07:55 ../<br>-rw-r--r--  1 brillydev brillydev    0 Oct 22 13:18 .hiddenfile.txt<br>-rw-r--r--  1 brillydev brillydev    0 Oct 22 13:18 apple.txt<br>drwxr-xr-x  2 brillydev brillydev 4096 Jan 31 03:55 bar/<br>drwxr-xr-x  2 brillydev brillydev 4096 Oct 22 13:18 foo/<br>-rw-r--r--  1 brillydev brillydev    0 Feb  6 14:08 somefiles.txt</pre><p>Some flags can also be more than one-letter long. Those that are multiple letters long can be written with double dashes in front. For instance, <strong>ls -a</strong> can also be written as:</p><pre>$ ls --all<br>./ ../ .hiddenfile.txt apple.txt bar/ foo/ somefiles.txt</pre><h4>tree</h4><p>For those who want more fancy visualization, <strong>tree</strong> is for you.</p><pre>$ tree<br>.<br>├── apple.txt<br>├── bar<br>├── foo<br>└── somefiles.txt</pre><pre>2 directories, 2 files</pre><h4>clear / reset / Ctrl + L / <strong>⌘ + K</strong></h4><p>You’re having fun playing around with all these commands when you realize you screen is really cluttered and you need some clean up. Typing <strong>clear</strong> or <strong>reset</strong> or input any of the key combinations mentioned will get your terminal wiped up.</p><h4>File Execution</h4><p>Suprisingly not many beginners know how to run a standalone binary/executable file. To execute a local file, simply type</p><pre>$ ./filename</pre><p>If you ever find yourself stuck in the program, simply press <strong>Ctrl + C</strong> to get out.</p><h4>Some Addition</h4><p>If shutting down the system is frustrating to you, here is the way to do it.</p><pre>$ shutdown -h now</pre><p>To restart the computer:</p><pre>$ reboot</pre><p>To log out:</p><pre>$ exit</pre><p>or simply press <strong>Ctrl + D</strong>.</p><p>If any of these don’t work, adding a<strong> sudo</strong> in front will probably help.</p><pre>$ sudo reboot</pre><h3>File Manipulation</h3><h4>mkdir</h4><p><strong>mkdir</strong> (make directory) is used to create a directory.</p><pre>$ ls<br>apple.txt foo/ somefiles.txt</pre><pre>$ mkdir bar<br>$ ls<br>apple.txt bar/ foo/ somefiles.txt</pre><h4>mv</h4><p>To move files, the command <strong>mv</strong> (move) is used.</p><pre>$ ls<br>apple.txt bar/ foo/ somefiles.txt</pre><pre>$ mv apple.txt foo<br>$ ls<br>bar/ foo/ somefiles.txt<br>$ ls foo<br>apple.txt</pre><p>Interestingly, it can also be used to rename things as well!</p><pre>$ cd foo<br>$ ls<br>apple.txt</pre><pre>$ mv apple.txt hello.txt<br>$ ls<br>hello.txt</pre><p>And if you’re tired of typing <strong>ls</strong> everytime after the command, a semicolon can condense your code into one line. This produces the same effect:</p><pre>$ mv apple.txt hello.txt; ls<br>hello.txt</pre><h4>rm</h4><p><strong>rm</strong> (remove) removes files. Take note that this action cannot be undone.</p><pre>$ cd ..<br>$ ls<br>bar/ foo/ somefiles.txt</pre><pre>$ rm somefiles.txt<br>rm: remove regular file ‘somefiles.txt’? (y/n) y</pre><pre>$ ls<br>bar/ foo/</pre><p><strong>rm</strong> cannot be used with directories, unless accompanied by <strong>-r</strong> flag (short for <em>recursive</em>). What this means is that <strong>rm</strong> will go into every directory in the specified path and delete files one by one, recursively up each directory inside. If you don’t understand this, it’s fine, unless you do programming. Just remember that it deletes all the files and directories in the specified path.</p><pre>$ ls<br>bar/ foo/</pre><pre>$ rm -r foo<br>rm: remove regular file ‘apple.txt’? (y/n) y<br>rm: remove ‘foo’? (y/n) y</pre><pre>$ ls<br>bar/</pre><p>If you’re tired of typing ‘y’s for all the files, <strong>rm -rf </strong>can help you. Be extremely careful, however, as this command-flag combination is incredibly dangerous. If you accidentally type the wrong path — boy, there’s no going back!</p><h4>rmdir</h4><p>If you try to use <strong>rm</strong> alone for directories, you’ll be faced with this:</p><pre>$ ls<br>bar/</pre><pre>$ rm bar<br>rm: cannot remove ‘bar’: Is a directory</pre><p>In this case, <strong>rmdir</strong> (remove directory) can be used instead. Note also that this command can only be used with empty directories.</p><pre>$ ls<br>bar/</pre><pre>$ rmdir bar<br>$ ls<br>$</pre><h4>touch</h4><p>When you wish to create new files, use <strong>touch</strong>.</p><pre>$ ls<br>$<br>$ touch file1 file2.txt file3<br>$ ls<br>file1 file2.txt file3</pre><h4>cp</h4><p>Copying is undeniably one of the greatest inventions of all time. To do that, use <strong>cp</strong> (copy).</p><pre>$ ls<br>file1 file2.txt file3</pre><pre>$ cp file2.txt file2copy.txt</pre><pre>$ ls<br>file1 file2.txt file2copy.txt file3</pre><p>To copy a directory recursively, use <strong>cp -r</strong>.</p><h4>ln -s</h4><p>You’ll encounter this quite often in the future. So it’s probably good to know it now. To create a <em>symbolic link</em> (Google for explanations), use <strong>ln -s</strong>.</p><pre>$ ln -s ~/apache ~/Desktop/apache</pre><h3>Working with Content</h3><h4>echo</h4><p><strong>echo</strong> prints out whatever you say to it.</p><pre>$ echo &quot;hello world&quot;<br>hello world</pre><h4>cat / more / less / head / tail</h4><p>To display the content of a file, use any of the commands above.</p><pre>$ cat hello.txt<br>hello, world! I am a little puppy.<br>Lorem ipsum blah blah blah.<br>Three lines are enough for a sample, aren&#39;t they?</pre><p>These commands don’t do exactly the same thing. Do some little experiments to find out how they differ :)</p><h4>grep</h4><p><strong>grep</strong> is an extremely powerful tool to search the content of a file. It prints out the line containing the word(s) specified, if it is present in the file. For example.</p><pre>$ grep &quot;blah blah blah&quot; hello.txt<br>Lorem ipsum blah blah blah.</pre><p>(actual result will have “blah blah blah” highlighted)</p><p>There are a lot more powerful tools out there, such as <strong>sed</strong> and <strong>awk</strong>, that will unleash your potential in Linux. We can’t cover all of them here, so be sure to do some research to find out more about them!</p><h3>User Manual</h3><h4>man</h4><p>If you happen to forget, or see a new command you’ve never heard of, apart from Google, your user manual will also be incredibly helpful. To use it, simply type <strong>man</strong>.</p><pre>$ man mkdir<br>[LONG INSTRUCTIONS ON HOW TO USE mkdir]</pre><h3>Piping and Redirection</h3><h4>Pipe</h4><p><strong>|</strong> (that vertical bar right above the <strong>Enter</strong> key) is called a <em>pipe</em>. It redirects the output of the left command to the input of the right. For example:</p><pre>$ echo “hello world\n<br>You’re really cute.” | grep “cute”<br>You’re really cute.</pre><h4>Redirection</h4><p>Redirections are similar to pipe; but instead of passing the output as an input, they save the output to a file, or read the content of a file.</p><ul><li><strong>&gt;</strong> saves the output to a file</li><li><strong>&lt;</strong> reads the content of a file</li></ul><pre>$ ls foo &gt; abc.txt<br>$ cat abc.txt<br>bar/<br>somefiles.txt</pre><pre>$ wc &lt; abc.txt<br>21</pre><p>Redirections do overwrite the files each time it is used. Use appends (<strong>&gt;&gt; </strong>and <strong>&lt;&lt;</strong>) should you decide to not overwrite them.</p><pre>$ ls foo &gt;&gt; abc.txt | grep &quot;bar&quot;<br>bar/<br>bar/</pre><h3>Working with Packages</h3><h4>apt-get</h4><p>Working with computers nowadays usually requires external software from the Internet. You can choose to download them manually, or use a package manager to manage all the stuff for you.<strong> apt-get</strong> (advance packaging tool) is the default package manager for Ubuntu and Debian.</p><pre>$ apt-get install vim</pre><pre>$ apt-get remove vim</pre><pre>$ apt-get update</pre><p>If you ever get stuck, <strong>sudo </strong>can help you.</p><h4>wget</h4><p><strong>wget</strong> is a tool to download files from the Internet.</p><pre>$ apt-get install wget<br>$ wget https://www.google.com/thefilethatIwant.zip</pre><h4>tar / unzip</h4><p>Sometimes you’ll get files in archived form. To extract them, use <strong>unzip</strong> or<strong> tar</strong>.</p><pre>$ apt-get install unzip<br>$ apt-get install tar</pre><pre>$ unzip thatfile.zip</pre><pre>$ tar -xzvf anotherfile.tar.gz</pre><h3>Text Editing</h3><h4>vi/vim</h4><p><strong>vi </strong>or <strong>vim </strong>(vi improved) is an awesome tool to do all things text. It’s incredibly difficult to use at first, but through time, you’ll realize that it’s one of the best out there.</p><pre>$ apt-get install vim</pre><pre>$ vim sometext.txt</pre><p>For instructions, I recommend this awesome interactive guide:</p><p><a href="http://www.openvim.com/">Interactive Vim tutorial</a></p><h4>nano</h4><p>If you’re kinda lazy to learn vim, <strong>nano</strong> is a simple intuitive backup.</p><pre>$ apt-get install nano</pre><pre>$ nano sometext.txt</pre><h4>emacs</h4><p>All-time rival of <strong>vim</strong>, here comes <strong>emacs</strong>.</p><pre>$ apt-get install emacs</pre><pre>$ emacs sometext.txt</pre><h3>Permissions</h3><h4>Overview</h4><p>Remember this?</p><pre>$ ls -l<br>total 8<br>-rw-r--r--  1 brillydev brillydev    0 Oct 22 13:18 apple.txt<br>drwxr-xr-x  2 brillydev brillydev 4096 Jan 31 03:55 bar/<br>drwxr-xr-x  2 brillydev brillydev 4096 Oct 22 13:18 foo/<br>-rw-r--r--  1 brillydev brillydev    0 Feb  6 14:08 somefiles.txt</pre><p>Those arcane characters on the leftmost column are where your permission settings lie. To characterize, there are three main permissions you can set for a file or a directory: <strong>read</strong>, <strong>write</strong> and <strong>execute</strong>, represented by <strong>r</strong>, <strong>w</strong> and <strong>x</strong> respectively.</p><p>The permissions are arranged in the following order:<strong> user</strong>, <strong>group</strong> and <strong>others</strong>.</p><p>For example,</p><pre>-rw-r--r--  1 brillydev brillydev    0 Oct 22 13:18 apple.txt</pre><p>This means that the user (owner of <strong>apple.txt</strong>) can <strong>read and write</strong> to <strong>apple.txt</strong>, the user group which the owner of <strong>apple.txt</strong> is in, as well as other people from somewhere else can only <strong>read apple.txt</strong>.</p><p>“Execute”, in the context of a directory, also means “access”. Hence if you deny permission to execute a directory, you can’t access it.</p><h4>chmod</h4><p>To change permissions, <strong>chmod</strong> (change mode) can be used. I leave it to you to interpret what this means :P</p><pre>$ sudo chmod 777 apple.txt</pre><pre>$ sudo chmod a-r apple.txt</pre><h4>chown</h4><p>Similar to <strong>chmod</strong>, <strong>chown</strong> (change owner) changes the owner of the file.</p><pre>$ chown root apple.txt</pre><h3>Fancy Little Features</h3><h4>history</h4><pre>$ history</pre><h4>cal</h4><pre>$ cal<br>   February 2016      <br>Su Mo Tu We Th Fr Sa  <br>    1  2  3  4  5  6  <br> 7  8  9 10 11 12 13  <br>14 15 16 17 18 19 20  <br>21 22 23 24 25 26 27  <br>28 29</pre><h4>ssh</h4><p>You can find out more about <strong>ssh</strong> (secure shell) from the Internet.</p><pre>$ ssh http://prakrit.d/</pre><h4>cowsay</h4><pre>$ sudo apt-get install cowsay<br>$ cowsay -f ghostbusters &quot;Hi, How are you&quot;</pre><h4>figlet</h4><pre>$ sudo apt-get install figlet<br>$ figlet &quot;Welcome&quot;</pre><h4>fortune</h4><pre>$ sudo apt-get install fortune<br>$ fortune</pre><h4>Star Wars</h4><pre>$ sudo apt-get install telnet<br>$ telnet towel.blinkenlights.nl</pre><h4>FHS</h4><p>Not a command, but helpful to know. If you notice, all the commands here are really just compiled binary files underneath the hood. To know where they stay, check out:</p><p><a href="http://askubuntu.com/questions/308045/differences-between-bin-sbin-usr-bin-usr-sbin-usr-local-bin-usr-local">Differences between /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin</a></p><h3>Cheat Sheet</h3><p>Phew! That was an awful lot of stuff! Use it often, and you’ll remember all the commands by heart. For now, this cheat sheet may be of help.</p><p><a href="https://fosswire.com/post/2007/08/unixlinux-command-cheat-sheet/">FOSSwire</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/460/1*3DaRml5vdPK_fCCCxBEHnA.png" /><figcaption>adapted from <a href="https://fosswire.com/post/2007/08/unixlinux-command-cheat-sheet/">https://fosswire.com/post/2007/08/unixlinux-command-cheat-sheet/</a></figcaption></figure><p>Keep in mind that there are still tons of things which I did not cover in this tutorial. In fact, I didn’t even go into details about how these commands work. Because this tutorial is only designed to be a broad overview (for absolute beginners), I encourage you to dive in further and actually <em>do stuff</em> with it.</p><p>But if you’re still not very confident, or maybe you got lost in this tutorial, that’s okay too! There are many alternatives out there on the Internet, but be warned that not a lot of them are beginner-friendly.</p><p>Except, maybe, this guy:</p><p><a href="http://ryanstutorials.net/linuxtutorial/">Linux Tutorial - Learn the Bash Command Line</a></p><p>First of all, his tutorials are fantastic. His explanations are extensive and filled with tons of tips and tricks along the way. He also covered many solid aspects of working in the command line — very helpful for those who want to understand how the command line works.</p><p>So you want more concrete explanations and use cases? Be sure to visit <a href="http://ryanstutorials.net/linuxtutorial/">Ryan’s site</a>!</p><p>Good luck :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bbcfef365734" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[จากสิงคโปร์สู่อเมริกา]]></title>
            <link>https://tirkarp.medium.com/%E0%B8%88%E0%B8%B2%E0%B8%81%E0%B8%AA%E0%B8%B4%E0%B8%87%E0%B8%84%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%8C%E0%B8%AA%E0%B8%B9%E0%B9%88%E0%B8%AD%E0%B9%80%E0%B8%A1%E0%B8%A3%E0%B8%B4%E0%B8%81%E0%B8%B2-948ce0fa5255?source=rss-a5db2b73d0c------2</link>
            <guid isPermaLink="false">https://medium.com/p/948ce0fa5255</guid>
            <category><![CDATA[america]]></category>
            <category><![CDATA[singapore]]></category>
            <category><![CDATA[stories]]></category>
            <dc:creator><![CDATA[Prakrit Duangsutha]]></dc:creator>
            <pubDate>Sun, 21 Feb 2016 01:03:40 GMT</pubDate>
            <atom:updated>2016-02-21T05:39:26.571Z</atom:updated>
            <content:encoded><![CDATA[<p>กะจะเขียนมาตั้งนานละแต่ไม่มีโอกาสซะที วันนี้ขอมาแนะนำตัวเลยล่ะกัน ไม่ได้แนะนำตัวเองหรอก แต่มาแนะนำพี่เราคนหนึ่งที่เรียนอยู่เมกา (เดะเราไปมั่ง อีกไม่กี่ปีก็จบมัธยมละ อิอิ)</p><h4>จุดเริ่มต้น</h4><p>ด้วยความที่ผมเป็นนัก research ยอดเยี่ยม บวกกับความใฝ่ฝันที่จะไปเยี่ยมชม Silicon Valley ให้ได้ครั้งนึงในชีวิต (ชอบ tech ละสนใจ american culture กะอยากไปเรียนต่อแถวนั้นด้วย) เราก็เลยค้นคว้าหาข้อมูลมาละเอียดยิบ ตั้งแต่จะไปเรียนต่อต้องทำอะไรบ้าง ต้องสอบอะไรบ้าง บลาๆๆ และด้วยความที่เราเป็นเด็กนอก (ผมเรียนอยู่สิงคโปร์ พี่ผมก็ตามมาเรียนด้วย) ภาษาเราไม่ใช่ปัญหาละหากจะไปต่อที่นู่น ดังนั้นเราจึงมีหลายเส้นทางมากหลังจากจบมัธยม</p><p>ตอนนั้นเรายังไม่ค่อยซีเรียสเท่าไร เพราะกว่าจะจบจากนี่ก็ยังอีกยาวไกล แต่พอเวลาผ่านไปเราก็เริ่มลังเลใจ (ทำไมคล้องจองกันวะ) พ่อก็ถามว่าเราจะต่อสิงคโปร์จนจบเลยหรือไม่ 555</p><p>คำตอบคือไม่แน่ๆ เพราะอยู่มาหลายปี ไม่ชอบสภาพแวดล้อมสิงคโปร์มาก ถึงมีคนให้ทุนมาเรียนต่อเต็มราคาก็ไม่เอาอะ</p><p>ตอนมาสิงคโปร์ตอนแรกมีคนบอกว่าพอจบมัธยมละเอาใบเกรดไปต่อมหาลัยที่ไทยได้เลย แต่จุดเปลี่ยนมาถึงเมื่อเรามาค้นพบเอาเองทีหลังว่า.. ไอ้ห่า เราโดนหลอกนี่หว่า จบ Secondary 4 สอบ ‘O’ Level แค่นี้ไม่พอ ต้องไปสอบข้อสอบอื่นเช่น SAT, CU-TEP, CU-AAT ถึงจะยื่นสมัครที่มหาลัยดังๆในไทยได้ แถมสมัครได้เฉพาะภาคอินเตอร์อีกต่างหากเพราะไม่มีโอเน็ตละแกตแพท เมื่อไปดูเว็บมหาลัยดังๆต่างๆ คณะที่เราอยากเข้า (computer science, economics) ก็เสือกไม่มีในภาคอินเตอร์</p><p>แต่ก็โอเคนะ ปีนี้ไม่มี ปีหน้าอาจมีก็ได้ ถึงไม่มีจริงๆเราก็หาทางเข้าได้เองแหละน่า แต่พอมาเห็นชื่อ SAT นี่สิ จุดเปลี่ยนของแท้</p><p>SAT เป็นข้อสอบที่เด็กเมกันปกติใช้สอบเข้ามหาลัย เราสนใจไปต่อเมกาอยู่แล้ว ในเมื่อมหาลัยที่ไทยก็ต้องใช้ ก็แจ๋วเลยดิ ทำไมเราไม่ apply แม่งทั้งสองที่เลยล่ะ ว่าแล้วเราก็เขียนๆๆ จดแพลนเอาไว้ ชักชวนเพื่อนที่สนใจมาร่วมอุดมการณ์ด้วย แต่เอ๊ะ เราว่าจะมาแนะนำพี่นี่หว่า เขียนร่ายมาซะยาวเลย 555</p><p>คืองี้ อย่างที่บอกว่าพี่ผมตามผมมาเรียนต่อที่สิงคโปร์ด้วย ละตอนที่ผมเขียนแพลนล่วงหน้าของตัวเองนี้ก็ประจวบเหมาะกะช่วงเวลาที่พี่ผมจะเลือกเรียนต่อมหาลัยพอดีเป๊ะ ผมกะพี่แตกต่างกันที่ว่าผมชอบค้นนู่นค้นนี่ อยากรู้อะไร research มันหมดจนกระจ่าง แต่พี่ผมอยากทำอะไรที ไม่ค่อยชอบค้นหาอะไรด้วยตัวเองเล้ยยยยยย ถามคนอื่นไปหมดทุกเรื่อง ละตอนนั้นพี่ผมก็มีอีกปัญหาคือคะแนนสอบไม่ค่อยดี จะไปต่อไหนก็ยาก แถมในใจไม่มีจุดมุ่งหมายว่าจะไปไหนอีกต่างหาก</p><p>คราวนี่พี่ผมเลยมาปรึกษาผม ละมาเห็นแพลนของผมเกี่ยวกับ SAT ก็เลยปิ๊งไอเดียมาเหมือนกันที่นี้ พี่ผมไม่เคยคิดจะต่อเมกามาก่อน จะต่อพ่อก็คงไม่ยอม แต่ในเมื่อคะแนนต่ำ เข้ามหาลัยไทยไม่ได้ จะอยู่สิงคโปร์ต่อก็ไม่ค่อยอยากจะอยู่ ทำไมไม่สมัครของเมกาล่ะ เขาอาจจะรับก็ได้นา (ยังมีความหวัง 555)</p><p>ว่าแล้วก็ลงมือสมัครโลด โดยมีผมเป็นผู้ช่วยเหลือเบื้องหลังอยู่เกือบตลอด (ชมตัวเองหลาย ฮ่าๆๆ) ผ่านช่วงเวลาความเครียด ความกดดัน ผ่านเวลาที่พ่อเรา (ที่ออกจะติดใจสิงคโปร์เกินเหตุหรือเป็นห่วงลูกว่าจะดูแลตัวเองไม่ได้เกินเหตุก็ไม่รู้) เคยบังคับพี่เรา และพาลมาถึงเราด้วย ว่าต้องต่อสิงคโปร์ จนพี่กะผมที่ไม่อยากให้ความฝันของตัวเองถูกทำลายเถียงหัวชนฝา แย้งไปว่าถ้ามหาลัยที่อเมริกาเขารับพี่ผมขึ้นมาล่ะ จนพ่อผมบอกเลยว่า</p><blockquote>ให้เขารับจริงๆก่อนเถอะค่อยว่ากัน</blockquote><p>จนในที่สุด ครึ่งปีผ่านไป โชคดีชิบหาย... San Jose State University รับพี่ผมเข้าไปจริงๆว่ะครัชช ละสุดท้ายก็ชนะพ่อ ละก็ได้ไปจริงๆ ถถถถ</p><h4>แหล่งรวมเรื่องราวชีวิต</h4><p>สมัยนี้แล้ว มีความรู้ ประสบการณ์ ไม่แชร์ก็คงน่าเสียดาย</p><p>พี่เราเขียนบล็อกเอาไว้ แชร์เรื่องราว แชร์ประสบการณ์ แชร์อุทาหรณ์ แชร์สิ่งของต่างๆนาๆ ทั้งที่อเมริกา ที่สิงคโปร์ ลาว ไทย ทุกๆที่ที่เธอไป แหล่งรวมเรื่องราวใหม่ๆ ใครสนใจ มีคำถามอะไร เชิญที่บล็อกหล่อนตามนี้นะจ๊ะ</p><p><a href="https://aminimalmint.wordpress.com/">Aminimalmint</a></p><p>ตอนนี้ข้างในยังไม่มีไรมาก หล่อนบอกว่าการบ้านเยอะมาก ขอจัดการตัวเองให้เสร็จก่อน แต่จะยังคงเขียนอยู่บ่อยๆ สำหรับคนที่ขี้เกียจเปิดไปดู ตอนนี้ข้างในมีอะไรบ้างน่ะเหรอ ก็ เอ้อ</p><ul><li><a href="https://aminimalmint.wordpress.com/2015/07/26/first-day-in-san-jose/">First Day in San Jose</a></li><li><a href="https://aminimalmint.wordpress.com/2015/08/22/ระบบการศึกษาของประเทศส/">ระบบการศึกษาของประเทศสิงคโปร์</a></li><li><a href="https://aminimalmint.wordpress.com/2015/06/04/ขอ-visa-f1-ที่สถานทูตอเมริกา-ลา/">ขอ Visa F1 ที่สถานทูตอเมริกา @ลาว</a></li><li><a href="https://aminimalmint.wordpress.com/2015/06/05/ร้านข้าวมันไก่ที่ต้อง-ห/">ร้านข้าวมันไก่ที่ต้อง ห้ามพลาด! เมื่อไปสิงคโปร์</a></li><li><a href="https://aminimalmint.wordpress.com/2015/07/26/เปิดบัญชีที่อเมริกา/">เปิดบัญชีที่อเมริกา</a></li></ul><p>ระบบ content linking ของ <a href="https://medium.com/">Medium</a> มันดีน่ะ อ่านแค่ headline คงดูรู้เรื่องใช่ปะ 555</p><p>ส่วนเราน่ะเหรอ หึๆ ทำงานต่อไปน่ะสิ 555 ทำงาน เรียน เขียนโปรแกรม อัพเดทบล็อก ช่วยพัฒนาโลกยังงี้ไปเรี่อยๆ พักบ้างเป็นครั้งคราว แต่หากคุณมีปัญหาอะไร ต้องการคำแนะนำ คำปรึกษาเกี่ยวกับทุกอย่าง ผมยินดีช่วยนะครับ :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=948ce0fa5255" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to study for the SAT]]></title>
            <link>https://medium.com/student-voices/how-to-study-for-the-sat-9fa7acb01b5c?source=rss-a5db2b73d0c------2</link>
            <guid isPermaLink="false">https://medium.com/p/9fa7acb01b5c</guid>
            <category><![CDATA[education]]></category>
            <category><![CDATA[study]]></category>
            <category><![CDATA[college-board]]></category>
            <dc:creator><![CDATA[Prakrit Duangsutha]]></dc:creator>
            <pubDate>Mon, 18 Jan 2016 10:59:03 GMT</pubDate>
            <atom:updated>2019-07-11T00:28:52.233Z</atom:updated>
            <content:encoded><![CDATA[<p><em>I can’t say much about this because I’ve never taken the test before, but from what I dissected from my sister’s prep books, this is what works best for me.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tz7HG7rM5CpqG9_-bPKoIQ.jpeg" /></figure><p>My sister was going through a period of intensive test preps last year as part of her to-do list to enter a college in the United States. She had taken the SAT not long before, and her score was pretty abysmal. So she decided to give it another try (actually, three more tries) and give more care into the preparation part.</p><p>She bought several SAT books, which now sit disorderly on her desk. Two of them were from Barron, one from College Board. Before the test she set herself a tremendous amount of time studying them, picking up difficult words and jotting down notes along the way. Despite all these painstaking and genuine efforts, she got a very low score. Her not-so-fondly relationship with The College Board triggered me to question the difficulty of the test itself.</p><p>Is the test really <em>that </em>hard? It’s almost my turn to take the test now, so maybe I should start investigating. And out I went. I flipped open the two-and-a-half inch <em>The Official SAT Study Guide by The College Board </em>from my sister’s desk and started learning it, page by page. It took me about a week till I got to the test practices at the end of the book. What I found out is that the difficulty level is really subjective. If you try hard enough to understand it, it’s not all that daunting.</p><p>What I like about The College Board is that they try to make the test as less scary as possible. From the beginning of the book, they explained all the process that go into the making and the marking of the SAT, the very helpful examples as well as many neat little tricks to use during the test. For example, in the Math section, there are things like:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/562/1*JV-bWlpN5lgjo1IOKF9PIw.jpeg" /></figure><p>and in the writing section there are things like:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/562/1*e6Ns8YbEOFzdO1M07m8MjQ.jpeg" /></figure><p>I like the book so much that I consider it to be the only book you should ever study for SAT. In sharp contrast with most other prep books in the market — which try to discredit The College Board by boasting about how deceptive the test questions look— this book actually gave me a lot of motivation and confidence in myself. And I truly believe that the SAT is not designed to trick you (even though they do have questions that trick you), but rather it’s designed to really test your understanding of high school work.</p><p>To prove my point, I took out another SAT book from my sister’s desk. This time from Barron. What’s in there is an extraordinary amount of “strategies” students can use during the test, a lot of which are common sense. If you look through the content page of Barron’s SAT 2400 book:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lGVlnnSxyh2DJQuPBnkj9g.png" /></figure><p>You’ll probably feel that nobody memorizes things like BLANKS strategy and 4Ps technique! For me, the best way to score high in any test is to understand what the question wants and utilize your knowledge to answer the question, not employ a nonsensical strategy which has <strong>nothing </strong>to do with the topic being tested.</p><p>The conclusion here is that:</p><p><em>* </em><strong>Barron sucks.</strong></p><p>Even though they do have quality test questions that are helpful to know, I simply hate the nitpicking strategic acronyms in the book. You can even find test approaches like these in the official guide from the College Board, except in a much much more sane manner. The difference here is that the latter is <em>official</em>. Realize that no matter how many strategies all other books presented, they’re just some kind of imitation from the official one. Period.</p><p>I’ve not tried Kaplan’s or The Princeton Review’s books yet (and I don’t plan to), so I don’t know how they compare to Barron. But my point still stays the same. The Official SAT Study Guide from The College Board is the <em>only</em> book you should ever need to prepare for the SAT.</p><p><strong>P.S.</strong> I’m one of those so-called valedictorians in the school, and my style of scoring is usually YOLO-ing through the tests and not care at all about the textbooks. So. Go ahead and hate me if this doesn’t work out for you.</p><p><em>* I mean, the book, not the company itself.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9fa7acb01b5c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/student-voices/how-to-study-for-the-sat-9fa7acb01b5c">How to study for the SAT</a> was originally published in <a href="https://medium.com/student-voices">Student Voices</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>