Monday, June 17, 2019

Some Thoughts About GNUstep

Since 2004, when as a high school junior I was first exposed to Unix-based operating systems such as Linux and Mac OS X, I've been interested in GNUstep.  GNUstep is a free, open source implementation of the OpenStep API from NeXT, which later evolved into the Cocoa API, which is used for the creation of macOS applications.  Over the years, GNUstep's mission has evolved to striving to keep up with the additions made to Cocoa in each passing version of macOS.  However, as of this time of writing, GNUstep only guarantees compatibility with up to Mac OS X 10.4 Tiger, which was released 11 years ago; the current version of macOS is macOS 10.14 Mojave, with macOS 10.15 Catalina coming out later this year.

Since GNUstep's conception in the mid-1990s, many people have envisioned a Linux desktop environment powered by GNUstep, whether that be a faithful modern-day workalike of either NeXTSTEP or macOS, or perhaps a completely different desktop environment such as Étoilé, which has its own design and UI guidelines.  However, as of 2019, this vision still remains a dream, with GTK+-based desktops such as GNOME, Mint, and Cinnamon being dominant among Linux desktop users, as well as the original Linux desktop environment: Qt-based KDE.  Some people, including myself, have lamented the fact that GNUstep's progress has been slow relative to these more popular desktops.

This is my opinion, but I believe the following are the reasons why KDE and GNOME ended up taking off while GNUstep's development has been relatively slow for the past two decades:

  1. KDE was announced in 1996 during GNUstep's infancy.  Out of all of the GUI toolkits that were available for free, open source software developers for Linux in 1996, Qt was the only one available that satisfied Matthias Ettrich's needs.  Work ended up starting on KDE, and according to Wikipedia, KDE 1.0 was released in July 1998.  Unfortunately, Qt's license at the time was incompatible with the GNU General Public License, one of the major licenses used by many free, open source software projects.  While many Linux users did not find this objectionable, other Linux users felt otherwise, which ultimately led to the announcement of the GNOME desktop project in August 1997, which was based on the GTK+ toolkit, which was based on The GIMP image editing application and which released its first stable version in April 1998.  GNOME would eventually release its first version of its desktop environment in March 1999.  However, while all of this was taking place, GNUstep was still not finished with implementing the original OpenStep API.  Had GNUstep been ready in 1996 or 1997, there's a strong likelihood that someone like Matthias Ettrich would have built a desktop around it.
  2. Cocoa is a moving target, with changes being made to the API once every year or two on average.  Unfortunately, GNUstep does not have the personnel needed to keep pace with Apple's changes, similar to how the Wine and ReactOS projects are perennially behind Microsoft Windows or how long it took Haiku, a clone of BeOS made by volunteers, to reach beta status (and BeOS has been dead for nearly 20 years!).  My understanding is that GNUstep has been developed entirely by volunteers throughout its history.  By comparison, the GNOME desktop has a long history of corporate backing, and the aformentioned Qt framework used by KDE is commercially developed.  Unfortunately, the fact that GNUstep is over a decade behind macOS in terms of compatibility with Cocoa deters developers who want to use modern, up-to-date GUI frameworks.
  3. GNUstep, being based on OpenStep, is an Objective-C framework, while GTK+ is based on C and KDE is based on C++.  When the GNUstep project started, Objective-C was considered a niche language, and even to this day Objective-C is mostly used by developers of NeXT/Apple platforms.  The pool of Objective-C developers is considerably smaller than those of C and C++ developers.  Plus, with the increased importance of the Swift programming language, there's a chance that Apple may deprecate Objective-C in favor of Swift in the future, further reducing the pool of Objective-C developers.
Even with the challenges that GNUstep faces, I'm still holding out hope that GNUstep will increase in popularity and that GNUstep will one day reach API compatibility with newer versions of macOS, which would make the framework more attractive to developers.  I also hope that the Étoilé project will get restarted in order to bring a modern GNUstep-based desktop to Linux.  Given the increased discontent that some macOS users have over the state of their platform, it would be nice if there were a similar alternative available based on GNUstep.

Tuesday, June 11, 2019

My 2019 Mac Pro Disappointment and Thoughts of a New Operating System


I believe that Apple's announcement of the 2019 Mac Pro at the 2019 Apple Worldwide Developers Conference has finally brought much clarification regarding Apple's position on the Mac.  During the years of 2016 and 2017, Mac users like myself felt that Apple has abandoned the desktop Mac market, particularly for pro users.  After all, the Mac Mini went for years without a refresh after the 2014 model was released, and the previous-generation Mac Pro hadn't been updated since its release in 2013.  But after years of silence, Apple finally broke its silence in April 2017 by doing something that hasn't been done since unrealized murmurs of a PowerBook G5 back in 2004 and 2005 before the Intel switch occurred: Apple announced that a new, modular Mac Pro was in the works and that it would be released at a later date.  2017 and 2018 did not come with any Mac Pro product releases other than a drop in price for the 2013 Mac Pro, but it did come with the release of the iMac Pro and the long-awaited refresh of the Mac Mini.  Finally, on June 3, 2019, Apple finally announced the highly-anticipated new Mac Pro model, which is a user-serviceable, upgradeable, and expandable tower computer that is reminiscent of the Power Mac G5 and the 2006-2012 Mac Pro.


While I believe that this announcement has shown that Apple is still committed to the Mac and that Apple is willing to make very powerful machines for its most technologically demanding customers, I also believe that the new Mac Pro is a disappointment for some Mac users (including myself), and that the implicit statements that Apple is making about its Mac product line has some unfortunate implications for users such as myself.

For about two decades, Apple sold entry-level Power Macintosh and Mac Pro models at the inflation-adjusted price point of $2,500-$3,000.  The Power Macintosh and the Mac Pro were (and still are) Apple's models that provide user-serviceability, upgradability, and (with the exception of the 2013 "trash can" Mac Pro) internal expandability.  Starting with the 2008 MacBook Air and the 2012 Retina MacBook Pro, Macs gradually became less user-serviceable.  RAM started to get soldered onto the motherboard, and batteries became more difficult to replace.  This then started to spread to Apple's consumer desktops: the 2014 Mac Mini has soldered RAM, and many models of the iMac also have soldered RAM.  The 2016 MacBook Pro was the first Mac to have soldered storage, making it impossible to remove the storage device from the computer, which is important for data recovery.  The 2018 Mac Mini thankfully no longer has soldered RAM (although RAM installation must still be done by an Apple-authorized repair center), but it has soldered storage.  Users who wanted user-serviceability and upgradability were pointed to the Mac Pro, Apple's only model that offers these things.

However, when Apple announced the 2019 Mac Pro, it announced a starting price of $5,999, which is double the $2,999 starting price of the previous-generation Mac Pro, making it the highest-priced entry-level Power Macintosh or Mac Pro since the mid-1990s.  For users of previous-generation entry-level Mac Pro models (like myself; I own an entry-level 2013 Mac Pro that I bought in April 2017 after Apple discounted its price), this news is disappointing since $5,999 is a tremendous leap from $2,999.  I was prepared for a $2,999 or even $3,499 announcement, but not for a $5,999 one, which is well beyond my budget for a computer.  Unfortunately, I'm left with the following options when it is time to upgrade, none of which are appealing for me:
  • Sacrifice user-serviceability and upgradability by purchasing a Mac Mini or iMac.  However, user-serviceability and upgradeability are very important for me.  I would like to take advantage of falling prices over time in order to upgrade my computer whenever its necessary over time instead of having to guess my anticipated needs for the next few years and having to buy the upgrades up front at today's prices, not to mention that Apple charges a considerable sum for upgrades.  Moreover, non-serviceability precludes easy repair and easy data recoverability.
  • Scrimp and save for a 2019 Mac Pro.  Don't get me wrong; the 2019 Mac Pro is an excellent machine.  I would love to have one if I had the money.  But $6,000 is steep for a personal computer even on a Silicon Valley computer scientist's salary.
  • Switch to Windows 10 or Linux.  After the controversial 2016 MacBook Pro was released, I actually promptly purchased a refurbished ThinkPad T430 at Fry's for less than $150 in order to reacquaint myself with Windows, which I haven't used regularly since the Windows XP days.  My assessment of Windows 10 is that while its technical underpinnings are solid and its Windows Subsystem for Linux had made it possible for me to do Unix-style programming on Windows (which is one of the reasons why I use macOS: the fact that it is Unix underneath), unfortunately I find the interface gaudy (and the fact that my ThinkPad had a 1366x768 screen didn't help matters since Windows 10's interface seems to be optimized for high-resolution displays), and I find the advertisements, telemetry, and mandatory updates very annoying.  I also tried various Linux distributions, including KDE Neon and Linux Mint (which I currently use).  While I can be productive in Linux, I still find myself missing macOS.  I miss programs like Dictionary.app and Photos.app, and a recent update to Linux Mint 19 has somehow made Japanese text input no longer work with Firefox (although it works with other applications).  I prefer the various Linux desktops like MATE and KDE to Windows 10, but I love the Mac's attention to detail, especially when it comes to font rendering.  I can make do with either Windows 10 or Linux, but I find myself more productive in macOS.  I find that macOS provides a more polished, more consistent, less buggy, and far less annoying experience than Windows 10 or Linux.
  • Build a Hackintosh.  While I find the prospect of using macOS on PC hardware intriguing, unfortunately this is a non-starter for me.  I don't want to sound sanctimonious, but as a professional in the tech industry, I want to respect software licenses, even though I feel that users should be able to have the freedom to install whatever operating system they want on their hardware.  Also, for users who have no qualms with violating the macOS EULA, there are other challenges such as getting iCloud and iPhone integration to work properly on Hackintoshes, and there's also the prospect of Apple rendering Hackintoshing extremely difficult or impossible to do in the future through the use of Apple's T2 chip, which has been included in every Mac that has been redesigned since 2017 with the introduction of the iMac Pro.
Given these options, I'll express a lament about the state of personal computing these days: you can legally have a polished OS tied to restrictive hardware (unless you have $5,999 to shell out for a Mac Pro) or an unpolished OS running on a wide variety of hardware with varying degrees of freedom regarding user-serviceability, upgradeability, and expandability.  However, you can't have both (unless you want to build a Hackintosh): a polished OS running on the hardware of your choice.

What would it take for a new competing operating system to emerge, one that is not restricted to a particular vendor's hardware and yet is polished?  Unfortunately it will take a very large amount of work in order for it to be at par with even Windows 10 and desktop Linux distributions.  Below are the most formidable problems such an effort will bring:
  • There's the classic chicken-and-egg problem of software availability and user adoption: developers are less likely to develop for a new platform unless they're convinced it will attract a significant amount of users, and users are less likely to adopt a new platform if there are no software tools available for them to do their desired tasks.
  • There's the sheer amount of time and resources needed to create a modern operating system from the ground up.  All of our modern desktop operating systems (macOS, Windows 10, desktop Linux distributions) were evolved over many decades.  I believe the last semi-successful example of a consumer OS being built from scratch was BeOS, which was built in the 1990s; I say "semi-successful" because it did gain a cult-following among the users it attracted but it ultimately failed in the marketplace.  Apple's Taligent and Copland projects, both from the 1990s, were radical attempts to build new consumer operating systems from the ground-up, but they were never finished despite the amount of resources these projects were given.
  • Obtaining hardware support for a new operating system is challenging.  Many hardware vendors do not publicly provide the documentation needed for independent developers to write device drivers supporting their hardware, and many vendors are only willing to provide closed-source drivers for popular operating systems (see the chicken-and-egg problem above).  It is possible to perform reverse-engineering to create device drivers, but this is difficult to do with complex hardware and sometimes requires substantial resources.
  • Even though the rise of the Web and mobile computing has made platforms less important today than they were in the 1990s, there is still a need for native software, and there's also still a need to interact with dominant file formats and protocols.  Part of the reason why desktop Linux (and even the Mac for that matter) has struggled for adoption is compatibility with certain, more popular software packages.  Consider how long projects like GIMP and LibreOffice have existed and how they still struggle against more dominant products like Adobe Photoshop and Microsoft Office, respectively.  Part of these struggles include dealing with the files created by dominant software packages, which are often encoded in proprietary formats.  And projects that work specifically on application interoperability, whether at the source or binary level, tend to struggle.  Consider the long struggles of projects such as Wine (a Win32 compatibility layer for Unix-like operating systems), ReactOS (a Windows clone), and GNUstep (a reimplementation of the Cocoa API used in macOS, which is derived from the OpenStep API from the NeXT era).  Now, Windows and macOS are moving targets and thus those aforementioned projects will continue to need to play catch-up and with fewer resources than their corporate counterparts, but unfortunately it took a long time for projects like FreeDOS (a FOSS clone of MS-DOS) and Haiku (a FOSS clone of BeOS) to become mature enough to be useable, largely due to the small amount of resources these projects have relative to the resources that were available to develop the original systems.
  • If the new operating system is commercial, then how do we develop a sustainable business model, especially in a world where people expect software such as operating systems to be free?  If the new operating system is open source, then how do we attract and retain developers?
Now, it is possible to mitigate some of these concerns by building on the work of others.  For example, we can use Linux or one of the BSDs in order to avoid having to write an operating system kernel and also to dramatically reduce the number of drivers that would have to be written.  In fact, this is what Google and Apple did to create Android and macOS, respectively; Android uses a modified Linux kernel, while macOS, derived from NeXTSTEP, was built on Carnegie Mellon University's Mach microkernel and 4.3BSD (later upgraded to FreeBSD in the Mac OS X days).

Another way of decreasing the amount of time needed to embark on such an effort is to take advantage of computer science research that was not available in previous decades.  For example, Viewpoints Research Institute worked on a project named STEPS that sought to dramatically reduce the amount of lines of code necessary to write a full-fledged operating system by using domain-specific languages to write various subsystems.  An implementation of an operating system inspired by the STEPS project may encourage the rapid development of useful applications for it in a style similar to STEPS, thus potentially revolutionizing software development.

I've been thinking a lot about another canceled Apple project from the 1990s called OpenDoc, which was an attempt to make GUI application development more component-based rather than monolithic, which is similar to the Unix philosophy of using small utilities that interact with each other using pipes and I/O redirection.  The ultimate realization of a component-based GUI would be the Smalltalk environment from Xerox PARC, where everything in the environment is an object that can be manipulated by other objects in the system.  I read an insightful comment from the Hacker News forum (https://news.ycombinator.com/item?id=13573373) that states that the Linux desktop might have been more competitive had it embraced an OpenDoc-like style of component-based software instead of trying to fight Microsoft, Apple, Adobe, and other major software companies head on by building large, monolithic software packages like LibreOffice and GIMP.

The challenge with component-based GUIs, though, is maintaining a common standard of UI conventions across components.  UI consistency across applications is one of the strongest suits of macOS, and this is also true of its ancestors: both the classic Mac OS and NeXTSTEP.  For example, although the pipes-and-redirection approach of Unix command-line utilities works very well, unfortunately there isn't a lot of consistency between Unix tools, with argument flags often differing between utilities despite having similar meanings (for example, whether to use -r or -R to recursively search a directory tree depends on the tool).

Despite these challenges, I believe the time is ripe for a polished desktop operating system that serves as a competitor to macOS, Windows 10, and desktop Linux distributions.  This OS should attract users who are dissatisfied with today's current OS offerings and who desire consistency, usability, and reliability.

Saturday, September 20, 2014

I'm Back!

Hello, readers!  I've decided to resume blogging!  A lot has changed during the past three years that I haven't been updating this blog.  However, many things are still the same.  I am still a grad student, hopefully finishing up within the next 21 months.  I am still studying Japanese, although my progress has regrettably slowed due to the demands of grad school.  And I am still highly interested in the things that I have posted about in the past, including old Macs.  In fact, I'm happy to announce that I just bought a NeXTstation Turbo Color on eBay, which I'll be posting about in upcoming weeks.

Looking forward to writing again!

Monday, November 14, 2011

My Japanese Learning Plan

This upcoming December will mark the 12th anniversary of my beginning studying the Japanese language. I started learning Japanese back in December 1999. It's been nearly twelve years later, and I am unfortunately still not fluent in the language. To make a long story short, I actively studied the language between 1999 and 2005 and even attended a Japanese language school named Sakura Gakuen from 2003 to 2005. However, I took a sort of break during my undergraduate career at Cal Poly due to the demands of my coursework. But, upon getting an offer to do an internship at Fujitsu Labs in Japan, I started to take Japanese much more seriously. My Japanese skills improved dramatically during my time in Japan in 2010, and since I've returned to America I have spent a good chunk of my spare time studying Japanese vocabulary and kanji, as well as watching Japanese dramas and movies and also browsing Japanese websites (with the help of Rikaikun).

My goal is to become fluent in Japanese in 2014, which is around the time I should be finished with my PhD program. I am interested in working in Japan after I graduate, either in an industrial research lab or perhaps at a Japanese university (although I have a lot to learn about how academia works in Japan). Of course, I would need to be fluent in Japanese in order to qualify for a full-time research position out there. Suppose I become a professor at a Japanese university, for example. I would need to be fluent in Japanese in order to convey the course material effectively to my students.

Below is my study plan for the foreseeable future (not in any particular order):
  • Finish Remembering the Kanji I, which is a book that covers the basic 1,945 kanji taught in Japanese public schools, as well as some additional characters.
  • Study the "Core 6000" deck, which is a deck that consists of the 6,000 most commonly used Japanese words. I am almost done with studying the Core 2000 deck, which is the top 2,000 of these words (I only have about ~250 words remaining in my deck; I should be finished studying it next week).
  • Study All About Particles, The Handbook of Japanese Verbs, and A Dictionary of Intermediate Japanese Grammar. After I pass JLPT Level N2, I plan on purchasing A Dictionary of Advanced Japanese Grammar and studying it.
  • Read the stack of manga, magazines, novels, and other Japanese books that I bought while I lived in Japan.
  • Continue watching more Japanese movies and dramas.
  • Study for the JLPT. I plan to take Level N2 of the JLPT in December 2012, and Level N1 of the JLPT in December 2013.
  • Take a trip to Japan on vacation sometime in 2013 (okay, so this isn't exactly "studying" per se, but I will get a chance to use my Japanese again).
Hopefully this works out!

Wednesday, May 25, 2011

Words with Similar Meanings in Japanese

Right now I am studying the Core 2000 Japanese vocabulary list, which consists of the 2,000 most commonly used words in Japanese. I have been working my way through the vocabulary list for almost a month; I spend about 10-20 minutes or so a day studying the list via a flash card program called Anki, which is an excellent program for studying Japanese (or any other language for that matter). While many of the words that I've encountered are words that I was already very familiar with, there are other words that I did not know until I encountered them when studying the vocabulary list. Right now I have gotten through the first 513 words in the collection; many of those words I am now comfortable with. I should be finished studying the word list by the end of the summer.

One very interesting thing I discovered through my studies is that Japanese has a lot of words that are very similar to other words, but have a slight variation in meaning. For example, back when I was at Fujitsu, I learned the difference between 完了 and 終了, which both mean "to finish" but have slightly different connotations (the former implies that a task was completed, while the latter implies that something ended [but not necessarily completed], e.g., プロジェクトを完了しました [I completed the project] and プログラムが終了しました。[The program ended]).

Here are some additional groups that I noticed:
考える (to think, consider) vs. 思う (to think) vs. 検討する (to consider)
仕事 (work, job) vs. 作業 (work)
完了 vs. 完成 (both meaning "to finish, complete")
去年 vs. 昨年 (both meaning "last year")
変える vs. 変わる vs. 変化する (all meaning "to change")
大統領 vs. 社長 (both meaning "president")
開く 「あく」 vs. 開く 「ひらく」 (both meaning "to open"; notice that they are written exactly the same but pronounced differently)
行く 「いく」 vs. 行く 「ゆく」 (both meaning "to go"; same situation as above)
見せる vs. 示す (both meaning "to show")
閉める vs. 閉まる vs. 閉じる (all meaning "to close, to shut")
必要する vs. 要る (both meaning "to need")

It would be very interesting to see the differences between these words.

Thursday, May 5, 2011

Nebulousness of Graduate School (and Life in General)

Have you ever noticed that the further you go in your educational or professional career, the more nebulous the future seems?

Consider the following. In high school, there are clear, clean-cut requirements for graduation and clear, clean-cut requirements for getting into a university. I clearly remember being a high school student, stressing out about taking challenging courses, preparing for the SAT and stressing out over my scores, doing extracurricular activities, and making sure that my record was polished enough for me to get into the university of my choice. Obtaining an undergraduate degree and getting a job or an admission offer to graduate school is very similar. It essentially requires taking the right courses, earning the right GPA, networking with the right people, completing a few internships, and either doing a great job on the applications (for graduate school) or performing well on the interviews (for getting a job).

Of course, there are no guarantees in life. Having exceptional performance in high school does not guarantee admission to an exceptional university, and having an impressive CV or résumé does not guarantee a seat in a graduate program or a desk at a company. Competition for desirable universities and jobs is stiff, and the axiom of life not being fair also plays a role (you most likely don't know who are reviewing the applications and what their thoughts and possible biases are, after all). However, the probability that one could advance to his or her desired next step is high given that he or she fulfilled the requirements for that step. And the probability that one could fulfill those requirements, provided that he or she makes the necessary effort, is also high.

However, the path from graduate school to a research position, whether it is employment in an industrial research lab or a professorship at a research university, is a bit more nebulous, and the destination is more uncertain. Now, graduate school and obtaining a research position do have requirements. The coursework and examination requirements in graduate school are crystal-clear, and employers have expectations about what they want from prospective employees. However, there are a few of those expectations that are a bit nebulous, and sometimes being able to meet those expectations is uncertain. Even the ability to obtain a research position is uncertain.

One such expectation is that graduate students are known by the research community and that they make an impact in their fields. This can be determined by evaluating a student's publication record. If a student's publications tend to be frequently cited, and if the resulting research is adapted by other researchers, the student is deemed to have made an impact to the research community and thus has a better chance of obtaining a research position. However, if the student's publications are not cited much, did not generate much interest at the conferences that he or she presented them in, and overall seem to be ignored by the research community, then the student will have a harder time obtaining a desirable research position and may have to settle for a less desirable job.

Even though this expectation of making an impact in the field is known, the trouble is that there is no guarantee that one's research would make an impact on the field. While knowledge and hard work are necessities in pursuing any research topic and are exhibited in many researchers, luck is another important factor that could decide whether a researcher's work is deemed important enough to have made an impact on the field. Many factors that are outside of an individual researcher's control exist, from changes in the popularity of certain research topics to competition amongst researchers from different institutions. These factors play a role in determining the impact of one's research.

Another area of uncertainty is one's future employment. Unlike applying to graduate school, where there are a few slots open per year at nearly all graduate programs, not every university or company has research positions available each year. While in computer science (my field) the location of most industrial research positions is certain (the Silicon Valley, since most of the research labs of the world's major software companies are located here), for all fields a researcher hoping to be a professor needs to be prepared to make a move anywhere in the country where there is an open position. In some fields (such as the liberal arts) where there is very few industrial employment, demand for professorships is so intense that an advertisement for a position at a university in the middle of nowhere could receive hundreds of applications. It's a little less intense for computer science where there is a lot of industrial hiring, but there is still competition for professorships. But no matter the job, a researcher would have to stand out in his or her field in order to secure a position, and the researcher would need to be willing to move anywhere where there is a job.

Despite the uncertainties, I am still sticking to my plan. The major reason why I decided to attend graduate school is because I want to obtain a research position. I enjoy doing computer science research. To have a good chance at securing a research position in America, one must have a PhD. (I heard of people with MS degrees working in research labs, but they are the exception, not the norm.)

Besides, the nebulousness and uncertainties are not limited to the research world. Consider working in industry, for example. The criteria for being promoted may be nebulous at some companies, and, unlike school where there is "academic probation," one could be laid off or fired without warning at a company. My friends who are working right now are not shielded from this at all.

But, back to graduate school and the future, I hope that everything will work out for me. In the meanwhile, I'll work on doing research that will hopefully make an impact in the field. We'll see!

Friday, December 17, 2010

My Learning Plans for 2011

Hello, everybody. I apologize for not updating this blog; a lot has been going on in my life during this past year and I haven't had much time to update it during then. However, I hope to be updating this blog much more frequently from now on. There are a lot of things on my mind that I would like to share and to write about.

One of my core interests is learning new things. I have a love for learning and I have a desire to learn as much as I can about the subjects that I am interested in. Sometimes I can spend hours upon hours reading articles on the Internet about various different topics, whether it is about computer science, politics, Japan, Christianity, academia, or something else. Because I have just started a PhD program in computer science, I will need to use my free time much more efficiently, since free time is increasingly becoming a scarcer resource in my life. To avoid wasting my free time, I would like to apply much of it to a few learning pursuits of mine. Below are the things that I would like to focus on learning during my spare time in 2011:

Computer Science:
  • Aside from my coursework (I plan on taking courses in programming languages, machine learning, and data mining during the rest of this school year, and I still need to decide what to take next year), I also plan on learning more about large-scale storage and data management systems during this year. My PhD advisor has already given me some introductory work to do during the break, which will introduce me to this field and will prepare me for some exciting research work in this area later in the school year.
  • I want to develop system administration and computer networking skills. I realize that those skills are very important to have when working in a computer science research lab where we fellow students help maintain the lab's machines.
Japanese:
  • I will commit myself to studying Japanese at least one hour per day next year. While my language skills have improved a lot during my stay in Japan from January to August, I still have a lot to learn before I gain fluency. I am currently about halfway done with the book Remembering the Kanji I, which is an excellent way to learn kanji. I should be finished with the book in March 2011. In the meanwhile, I will be studying some of the Japanese grammar books and guides that I've found.
  • I also have a large collection of Japanese reading material that I need to, well, actually read. I hope that my technical Japanese improves tremendously once I finish reading my collection of Software Design magazines. (I even have the 20th anniversary edition of Software Design, which contains a DVD containing all of the back editions from 2000 to 2009). I also have a biography of Satoshi Tajiri (the creator of Pokémon), 1Q84 (a bestseller in Japan), a book about an World War II interrogation center near Tracy, CA, a book about Christianity in Japan (more on that later), and some other reading material that I need to get through.
  • I also want to buy a Japanese drama DVD box set to help me with my Japanese listening skills. I heard that there is a DVD store in San Francisco's Japantown that sells boxed sets of dramas. I'm going to have to check it out soon. Some of my friends from Japan recommended a drama named 「結婚できない男」, or "The Man that Can't Get Married." I also enjoyed the episode of 「ゲゲゲの女房」 ("Gegege no Nyobo" or "Gegege's Wife"; Gegege is the nickname of a famous manga artist) that I watched this summer. There is also a movie currently in theaters in Japan with the same title; I want to see it once it's out on video.
Christianity
  • I want to be much more serious about studying the Bible. Currently I am doing a cursory read over the Old Testament (I am currently in the middle of Isaiah). Once I finish this initial reading of the Old Testament, I want to start studying the Bible in-depth, in a manner similar to how seminary students or others really serious about understanding the Word. I plan to begin with the first four books of the New Testament and start examining the life and actions of Jesus. I will develop a "plan for action" soon.
  • I am very interested in learning more about Christianity in Japan. As mentioned above, I have a book called "Japan's Christianity" 「日本のキリスト教」, written by Yasuo Furuya and published in 2003. It's 282 pages long and is written in Japanese. Since I am not fluent in Japanese, it will take me a while to finish it. However, I am determined to read the book. The book contains a brief history of Christianity in Japan, comparisons between Japan, the United States, and Korea, and many other facets of Christian life in Japan. I will share some of my findings as I progress through this book.
Academia
  • I am interested about learning about the history of academia. Since I may become a professor once I finish my PhD, I would like to learn more about how academia works and about how it grew and evolved over time.
  • I would like to read some biographies or autobiographies of some scientists and mathematicians. I enjoyed reading Surely You're Joking, Mr. Feynman and What Do You Care What Other People Think, which are both books on Richard Feynman, a prolific and very interesting 20th century physicist.
Other:
  • I want to learn Korean for a variety of reasons. I know some hangul, but the only words that I know are food-related terms like 김치 and 비빔밥. Hopefully that changes soon!
Hopefully I will be able to commit to this plan this year! I'll keep you all posted!