#웹개발
Did you know that the transformer—the architecture underlying nearly every modern AI model, including physical AI—was originally developed for machine translation 1 ? It has been almost five years since I launched this website and I've written more than 100 posts since then. But my foreign friends probably don't know that, because unlike the rest of the website, the blog has only been in Korean. I haven't had the time to translate every post as I write it. So ever since translation was one of the few things AI could do reasonably well, years before it became capable of nearly everything, I've wanted to build a pipeline that would leverage it to translate my posts automatically. I put it off for more than two years, not being able to even find the time to do so. But finally after spending a little time and some tokens, I just added it to the website as a new feature. Coding agents really have gotten good—I built it in no time. Now, if you set the site language to English, you'll see translated posts instead of the Korean originals. It will be a different experience from simply running the originals through Google Translate or DeepL. The translations follow instructions I've tailored to my preferences and I review them afterward. More importantly, I believe there's a big difference between having a post that is already readable and having to press a button to make it understandable. That's probably why X (formerly Twitter) recently made the big decision to translate all posts and replies proactively. This will be the first post translated that way. Earlier posts will be translated soon, too. To all my friends around the world: let's make use of modern technology to bring us a little closer together. 1 More precisely, sequence transduction, which includes machine translation.
1y ago · #CS #웹개발
Lately, I’ve been working on a side project alongside my startup team’s work. The frontend and backend have each come far enough that it’s time to connect them (I’ll probably write about what the project is when I release its MVP). I didn’t want to pay for EC2, and sharing the Raspberry Pi that runs gunh.ee seemed complicated, so I reinitialized and booted up the other Raspberry Pi I’d set aside because of an Ethernet cable issue in my previous post . The Ethernet interface still isn’t showing up, but speed isn’t an immediate concern, so I’ll deal with that later. Raspberry party To distinguish inbound traffic directed at our home’s single public IP address, the two servers need to use different external ports. Port numbers have conventional uses: 22 for SSH, 80 for HTTP, and 443 for HTTPS, for example. So I left those external port numbers as they are for the gunh.ee server, added 10000 to each for the side project, and configured the router to translate traffic headed for the side project to the corresponding conventional internal port numbers by subtracting 10000. The top three entries are for gunh.ee; the rest are for the side project. Every time I do something like this, I’m reminded how much taking Intro to Computer Networks has helped. Thank you, Professor Moon. ︙ I already went through the Ubuntu setup process when setting up gunh.ee, but there are still a few points that trip me up sometimes, so I’ll jot them down here. (On a Mac) The entire process of downloading an Ubuntu image, writing it to an SD card, and booting from it is described in detail here . To format the SD card, select it in Disk Utility, click ‘Erase,’ and choose ‘MS-DOS (FAT32)’. To write the downloaded image file to the SD card, use the following command. Leave the image file compressed. sudo sh -c 'gunzip -c ~/Downloads/ | sudo dd of= bs=32m' Once it has booted, enter your Wi-Fi details in /etc/netplan/50-cloud-init.yaml as described here , save the file, and reboot. /etc/network/interfaces is a file used by ifconfig , but ifconfig isn’t installed in the initial Ubuntu setup, so entering the information there won’t help.
3y ago · #CS #웹개발

I’m writing this to celebrate successfully connecting the gunh.ee server to Ethernet today. Here’s a shocking fact about gunh.ee: the server hosting it is a Raspberry Pi behind the TV in my living room. A photo I took when I first plugged it in on December 13, 2021 With so many hosting services available, why did I take the hard route and set up a server computer myself? Well... Hosting services fall into two broad categories: shared hosting and VPS hosting. The former is the cheapest way to launch a website, and it’s what I used for my first site, which I launched in the fall of my freshman year of college. The trouble is that the low price comes with limited flexibility. It supported everything needed to run a basic website, but I couldn’t run anything else. Of course, I didn’t know much back then, so it was plenty useful to me. I had a great time experimenting with and learning from the tools it provided. By the end of my senior year, I wanted to do much more with my new server. I wanted to write and run my own web server in node.js, create APIs, and use it for things beyond the web. For that, I needed VPS hosting. With a VPS, I wouldn’t have the physical machine, but I could install and use whatever software I wanted within the space allocated to me. The company I’d used as a freshman offered VPS hosting too, but this time I decided to try AWS EC2 for its flexible resource allocation and reputation, among other things (though EC2 differs somewhat from a VPS in how it handles virtualization , they’re similar enough here). The temporary landing page I put a fair bit of work into I created an EC2 instance, connected my domain, and put up a temporary landing page. A month or two later, the instance fee came out of my bank account. I don’t remember exactly how much it was, but it wasn’t unaffordable. Still, the thought of another monthly expense bothered me, and I wanted to avoid it if I could. That’s when I remembered the Raspberry Pis lying around my house. It’s harder to bring myself to pay for something intangible They were two Raspberry Pi 3 Model B+ boards I’d picked up in my department’s student room about a year earlier. The boards were in a box with some sensors and wires, and the lid said anyone who needed them could take them. They must have been left over from a major course or side project. I hadn’t brought them home with this in mind, but they seemed perfectly suitable as servers. Their performance was bound to be lousy, but each was a complete computer. And since they weren’t particularly powerful, it would be a shame to leave them sitting unused. As soon as the semester ended, I got to work setting up the server. There was far more to do than with EC2. With EC2, I could choose an operating system, set a few port rules, and connect remotely over SSH right away. With the Raspberry Pi, I had to do everything myself: format the SD card that would serve as its main storage, download an Ubuntu image and boot it, connect to the network, and set up port forwarding for SSH. The Raspberry Pi has no screen, and I didn’t have an external monitor, so I connected it to the living-room TV over HDMI and sat on the floor to work. It ended up behind the TV partly because the router was nearby and things there rarely got moved, but mostly because I had to do all the CLI work on the TV until I could connect over SSH. I spent three or four days doing almost nothing else. I obtained an SSL certificate, got HTTPS working, built the Vue.js project I’d been developing locally, and uploaded it to the server. I can’t tell you how happy I was when I finally confirmed that I could access the site on my iPhone. December 18, 2021 A screenshot I took then. The post page looks a little different now: there’s no longer a cover image or an emoji in the header. I wanted the site to feel modern but understated. When I started developing it, I thought Notion’s design was excellent, so I exported a Notion page as HTML and copied out its entire stylesheet. I made some changes where needed, but as I built the pages while largely keeping that style, I suddenly wondered: is this really understated? The emojis that often appear on Notion pages felt youthful and fresh, but they could also be distracting. On a site centered on writing, they would make the text feel less compact. So I kept refining the pages, using emojis and images only where necessary and minimizing the use of color to preserve that understated feel. While building the site, I also thought the design of the Chosun Ilbo website was good (regardless of politics). And when I visited New York late last year, I felt that the websites for MoMA and the Whitney Museum were aiming for something similar. Take a look at all three and you’ll probably get a sense of the look I’m after. Actually, the development story above was supposed to go in this site’s first and second posts . But I tried to fit everything I’d learned and felt at the time into a single post, ran out of steam halfway through, and abandoned it. Only now, after forgetting so much, can I sit down and sum up the whole process in one go. I might as well dump my notes on reference sources here, too ⋮ The point is that this site runs on a tiny Raspberry Pi behind my living-room TV. In other words, every time you visit gunh.ee, your request comes through my house before the response heads back to your device. ... Back to today. Since the server went live, I’ve used it for quite a few things besides publishing blog posts. Above all, it’s been incredibly convenient for testing web-service deployments. Deploying something under a new domain meant buying that domain, finding a hosting service, and waiting for DNS propagation—all of which took time and money. Creating a new subdomain on gunh.ee solved all of those problems. Today’s idea to connect the Raspberry Pi, which had been relying on WLAN, to Ethernet came to me while I was planning to test a new service on gunh.ee. Before testing a whole lot of request-response exchanges, I figured I should optimize the server’s connection. This wasn’t my first attempt to switch to Ethernet. I’d long felt that images in my blog posts loaded too slowly. At first I thought the Raspberry Pi’s processing speed was to blame, but the more I thought about it, the more likely it seemed that image sizes and connection speed were the problem. I was u
3y ago · #CS #웹개발
It's been ages since I last came to Anam 🍓🍓🍓 Aw, I'm honored 🍓🍓🍓 At Hongdoya, it's fried peppers and makgeolli Hahaha, it's still freaking hilarious even when I'm sober Collected 1 and 2 That 601 is the bus I need to transfer to Ran like crazy and made it on board
4y ago · #CS #웹개발 #해커톤
Hello! We're Team Bokumjari Strawberry Jam. ... We logged back in on another device, so our team name became Apple Jam But they actually sell apple jam? Why is my hair such a mess? --> --> Timeline by Role Planning & design Backend Frontend Planning Design Frontend/backend (me) Frontend/backend Frontend 19th 16:00 Check in, travel (Toyoko Inn → Times Square) 16:30 17:00 Dinner (Ongijeong, Times Square branch) 17:30 18:00 Travel (Times Square → All That Mind) 18:30 19:00 Theme announcement, brainstorming, sharing ideas 19:30 20:00 20:30 Settle on the idea <Service for Sharing Upcoming Vacant Subway Seats>, detailed planning 21:00 21:30 22:00 Detailed planning and design, writing user stories and preparing the idea presentation Set up AWS RDS Set up AWS RDS Initial React project setup 22:30 Prepare presentation 23:00 Team idea presentations 23:30 20th 0:00 Midnight event <Bingo> 0:30 1:00 Create wireframes (colors, fonts, page views) Plan MySQL table schema Plan routes 1:30 2:00 Travel (All That Mind → Toyoko Inn) ? 2:30 Get ready ? 3:00 Sleep 3:30 4:00 4:30
4y ago · #CS #웹개발 #해커톤

Work in progress. From the 19th to the 21st, I participated in <Korea University Summer Hackathon: A Voyage Together>, hosted by Korea University’s [ software development and research society DevKor · Design and Formative Arts Emergency Committee · Business School Student Council ]. I learned about it from a promotional post in the KAIST School of Computing class of 2018 group chat. I’d wanted to try a hackathon at least once, and the dates didn’t conflict with my lab internship, so it was a great opportunity. The application asked for some basic personal information and a portfolio in any format. I hadn’t written a CV or portfolio recently, so I took the opportunity to make a new page on my website. My education and work experience had been sitting, not quite organized, near the bottom of the homepage; moving them to a separate page made everything look much cleaner. If you’re interested, take a look ~ . I remember struggling to find anything substantial to put in personal statements in my first and second years of college, so it feels good to have something to write about now. Each team had five members—one planner, one designer, and three developers—and with twenty teams, the hackathon had around 100 participants in total. I considered gathering a few friends interested in development and forming a team together, but that didn’t fit the spirit of the event. I also thought working with entirely new people would be worthwhile, so I applied on my own. Each team had one leader, regardless of their role, and the application asked in advance whether you wanted to lead. I didn’t have a strong preference either way, so I selected “Not sure.” After my participation was confirmed, though, the organizers contacted me personally to ask if I could be a leader. I guess fewer than twenty people had volunteered. Since they asked, I couldn’t bring myself to say no, so I agreed. On the evening of the 13th, a week before the event, there was an online pre-event to form teams that would plan and develop services together at the main event. Team leaders gave idea pitches introducing themselves and the kinds of services they wanted to make, and the other participants listened and applied to join a leader’s team. Idea pitches. Pitching an idea without knowing the theme was a bit funny, but it was unavoidable for a hackathon where advance work wasn’t allowed and the theme would be revealed on the day. So instead of proposing a specific idea, I introduced things I’d developed and described the motivation they shared: an eye for problems across different fields and the drive to act on them. To be honest, I didn’t prepare very hard for my pitch. The allotted time was quite short—two minutes and thirty seconds—and I’d only agreed to be a leader the day before the pre-event, so there wasn’t much time to prepare. Above all, as a fifth-year undergraduate who’d been around the block, I can’t deny that I rather arrogantly assumed my fellow undergraduates couldn’t have done all that much (the event was open only to undergraduates). But wow, the moment I heard the first leader’s presentation, alarm bells went off. They were far better prepared than I’d expected! And it wasn’t just the first person. The second did well, and so did the next. Some had remarkable accomplishments; others, even without those, had a clear philosophy and conveyed it remarkably well. As I listened, I was suddenly afraid that, far from having the upper hand as a leader in this team-building process, I might be the one desperately hoping to be picked. My turn was fourth or fifth from last, and while I waited, I hastily worked a philosophy of my own into my pitch. I finished with a presentation I wasn’t ashamed of, though I wasn’t entirely satisfied with it either. A reminder not to let my guard down or get conceited: I need to step out into the world now and then and remember how small I am.
4y ago · #CS #웹개발 #해커톤

Originally posted on Instagram on July 27, 2019
7y ago · #인스타그램 #CS #웹개발

Not long ago, Nupjuk! passed 1,400 active users. Assuming only a small number of them are graduate students, that means about 40% of KAIST undergraduates are using it. To mark the occasion, I wanted to share a few stories about Nupjuk! today.* [4] As of the 21st, the record for active users is 1,420. The user count has grown by about 50 over the past month. That’s much, much slower than in early March, when it was growing by 100 a day, but it’s still climbing steadily. [5] Whenever a new version comes out, the program updates on all those computers within a day or two. Another interesting thing about this graph is how regularly the number of launches drops sharply and then recovers. Sure enough, those dips are weekends. There was barely a dip on the weekend in the third week of April, during midterms, while the following weekend saw the biggest drop. [6] Macs account for about 13% of the computers on campus running Nupjuk!. That’s much higher than their share nationwide (about 8%), but lower than I expected. Linux accounts for a full 2%—roughly three times its nationwide share. [7] In March, I got an email from someone overseas asking me to sell my extension. Nothing in the email specifically identified Nupjuk!, so it seemed like a mass email sent to the developers of promising extensions. I had no intention of selling, so I didn’t reply. Thinking about it now, though, I should at least have asked how much they were offering. [8] I haven’t made any money from it, but I’m grateful that a few people have sent me gift vouchers. Some sent them just after version 2.0 came out to say how much they enjoyed using the program; others sent them to thank me for adding features they’d requested. Thank you for all the vouchers—I’ve enjoyed them, or will soon! [9] I also got an email from the student council. They were planning to gather students’ complaints about the new LMS and pass them on to the university, and asked whether they could include Nupjuk! as a reference. Of course I said yes. They also asked if I had any other feedback. I’d been so disappointed while looking into KLMS that I wrote back with something bordering on a complaint. Now that I know who’s developing KLMS, I regret that a bit. I’d assumed some outside development company had been paid a lot of money to build it; I never imagined two university staff members were handling the development themselves. I hope the student council softened my feedback before passing it on, and that the university takes the LMS project more seriously going forward. [10] Finally, here’s one of the reviews Nupjuk! received. It’s the greatest compliment of my life. * For anyone who doesn’t go to our university: Nupjuk! is a Chrome extension that makes KAIST’s LMS easier to use. KLMS was revamped this semester and still has many unfinished parts. It will gradually improve, but students who use the system every day have to deal with the inconvenience in the meantime. So I added the features shown in [2–3], along with color themes, vectorized icons, and more, to the KLMS VOD Controller I’d developed late last year, hoping to minimize that inconvenience. I renamed it, too: the new name comes from Nupjuk[1], KAIST’s mascot. Originally posted on Instagram on May 21, 2021
5y ago · #인스타그램 #웹개발 #CS

Coming soon
4y ago · #웹개발
© 2026 Gunhee Yi