Learning to play mahjong

Growing up, there were a lot of big family gatherings, and in the basement there were usually 3 or 4 tables set up for mahjong. When all four tables were going, it made for quite a racket especially when the tiles were being shuffled. I watched a lot of mahjong games when I was a kid, but never learned how to play. It was more interesting watching people play, or stacking up the tiles to build things when nobody was playing.

We shopped around locally, but didn’t really see a set of tiles we wanted to get. Found a pretty nice set on Amazon though and ordered it.

Mahjong case
Mahjong tiles case
Mahjong case
Mahjong tiles case
Mahjong tiles
Mahjong tiles

The tiles are nice and big, feel solid, and the symbols are engraved nice and deep. They feel just like the tiles I remember playing with when I was a kid.

The rules for mahjong are relatively simple (I’ve seen it described as kind of a combination of poker and rummy) but with lots of variations. The basic idea is to get pairs, sequences, or 3/4 of a kind of particular tiles in your hand. The complexity and strategy comes into the kinds of hands you build, and that certain types of winning hands are worth more points than others.

Character tiles
Character tiles – 1 through 9
Flower tiles
Flower tiles
Wind tiles
Wind tiles – East, South, West, North

I’ve got the basics figured out, but I’m still working on remembering what some of the character and tiles are.

Now we need to find two (or more) people to play with. Interested?

Charleston Eats: 843 Korean BBQ & Sushi House

843 Korean BBQ & Sushi House has been open for a little bit under a year now, and today we got around to trying it out.

There was a bit of a wait to get into the Korean BBQ side of the restaurant, but not too long.

This was the first Korean restaurant I’ve seen in the Charleston area with grills in the table since Kim’s in West Ashley (although by the time I had started going there in the early-mid 2000s, they weren’t being used anymore).

Having a grill in the table and cooking your own food there is definitely an experience.

Grill surface
Grill surface in the middle of the table

They offer an all-you-can-eat option which comes out just marginally less expensive than ordering off the menu. Everyone at the table has to order it though and there ends up being a whole lot of food. Something to consider if you’re in a group with big appetites.

The japchae came out first, Delicious combination of rice noodles, zucchini, carrots, green onions flavoured nicely with sesame oil. Very tasty.


Then the Korean BBQ came out all at once: bulgogi, chicken, pork belly, and the banchan

Korean BBQ
Korean BBQ

The waiter fired up the grill for us, and we placed the meat onto the hot surface. Everything is thinly sliced, so the cooking only takes a couple of minutes on each side. You can make lettuce wraps with everything if you choose, or just eat. The bulgogi was the winner for both of us.

Banchan was yummy, with several different kinds of kimchi and this odd dish of peanuts and small fish.

Peanuts and fish
Peanuts and fish

Wasn’t a big fan of this one.

Overall, 843 Korean is definitely worth a visit. Can be a bit on the spendy side, but very delicious and fun. Definitely will be going back again.

New in the podcast list: Internet History Podcast

There’s a new podcast on my listening list: Internet History Podcast.

I learned about it when a couple people in the Charleston Tech Slack mentioned it a few weeks ago. After reading a little bit about the podcast, I added it to the list.

Although it’s called the Internet History Podcast, after listening to the first few episodes, it’s really more the World Wide Web History Podcast.

The 20th anniversary of the Internet Era as we know it is this year, 2014.

I know, the Internet was invented long before, and even the web was born a few years previous… but 1994 was when Netscape was founded. And I think we can all agree that Netscape, and the Netscape IPO represent the birth of the Internet Era (in capital letters) as we’ve all lived through it the past decades.

I’m only 7 episodes into the series so far, but it’s been pretty good listening. It’s pretty neat hearing the stories of the people who were at the bleeding edge of developing and creating the Web

RadDB: Radiology Equipment Tracker

Long ago, when I first started at MUSC, I inherited a stack of binders that contained all the reports for the imaging equipment that needed to be tested annually.

There was a total of about 50-55 or so  units, and for the first couple of years, I’d find a few units here and there that weren’t in the binders, but still needed annual testing. By the time I was reasonably sure I had all of them accounted for, there were around 70 units.

For a while, I could keep track of all the units and when they needed testing in my head for the most part. I knew I was going to need a better system to keep track of things though.

Around mid-2001, I came up with what seemed to me to be a reasonable database schema to store everything in, and cobbled together a bunch of PHP scripts (back when PHP was used mostly for templating and generating dynamic HTML pages) to serve as the front end.

It worked pretty nicely, but adding anything new was a fair bit of work and my scripts didn’t really interact with each other. On my list for a long time was to rewrite the whole thing as a more self-contained web application that would be easier to maintain and enhance. Work and life kept me busy, and my scripts worked well enough that there wasn’t a whole lot of motivation to revamp everything (“If it ain’t broke…”).

Fast forward 15 years later to 2016. With my equipment inventory at around 175 units, people discovering my project, and asking for new functionality, there was significantly more motivation to rewrite everything. I spent a few months in early 2016 checking out various PHP frameworks before settling on Laravel.

The RadDB project kicked off around May of 2016. With most of my programming time happening during short windows between testing equipment, and after work, I managed to replicate about 80% of the functionality of my original hodge podge of scripts by the end of 2016. With the start of the new year and a new round of testing, I decided that RadDB was ready for production, so I set it up on my desktop at work and released it into the wild.

I use it to:

  • keep an inventory the imaging units and x-ray tubes I need to lay hands on each year
  • add/edit new imaging units and tubes
  • generate reports on the types of machines, where they’re located, and who made them
  • track when they were tested
  • track any problems I might have found during testing
  • tell me what machines
    • still need to be tested
    • which ones have been scheduled for testing
    • which ones have already been tested
  • store test reports and service reports
  • track calibration dates for my test equipment

Still a lot of work that needs to be done on the project. Most of the other features I want to implement involve learning other parts of Laravel (authentication, services, unit testing) so I don’t think those will be too hard to get done.

I’ve really enjoyed working on this rewrite, and learning how to use Laravel in the process. It’s a pretty cool framework and easy to learn. For the most part, I can imagine what I want, think about how to do it and then code it up without having to do a lot of mental gymnastics and translating to get it to work. I’m looking forward to doing other projects in Laravel.


Trying out Jamaican Blue Mountain Coffee

During the stop at Falmouth, Jamaica on our cruise last month, I picked up a couple pounds of Jamaican Blue Mountain coffee. It has a reputation for being one of the best coffees in the world, and also pretty pricey. At $88.10/kg ($40/lb), it’s probably the most expensive coffee I’ve purchased so far. Not sure how much it would be purchased in the US though. Next time I’m out wandering around, I’ll have to look for some.

A bag of Jamaica Blue Mountain coffee beans
A bag of Jamaica Blue Mountain coffee beans

Inside the burlap bag, the coffee beans were encased in a sealed gold foil pouch. The beans themselves don’t look too unusual, and have a nice roasted coffee aroma to them.

Jamaica Blue Mountain coffee beans
Jamaica Blue Mountain coffee beans

Put a few scoops into my grinder (a Hario hand grinder) set to a medium-ish grind.

Ground Jamaica Blue Mountain beans
Ground Jamaica Blue Mountain beans

First thing I noticed was that these beans had quite a bit less chaff than other beans I’ve ground. Nice aroma of freshly ground beans. Into the Aeropress they went.

Ready to brew in the Aeropress
Ready to brew in the Aeropress

My regular Aeropress method is inverted, add water (just off the boil) to the top, stir, 60-90s brew time, press.

Brewed coffee
Brewed coffee

Normally I press into a mug that has a bit of chocolate milk in it (heated up in the microwave first). For this first brew, I went straight up black, so I just topped off the mug with hot water.

Brewed coffee ready for drinking
Brewed coffee ready for drinking

I’m far from a coffee snob and my coffee palate isn’t very refined so I can’t offer any tasting notes or anything like that. I can say that I ended up with a very nice, mild and tasty mug of coffee without much of the bitterness or strange after taste I get with some other coffees.

Maybe later I’ll try some taste testing to compare with some other coffees that I usually drink.