Tips for my next trip to Korea
I recently returned home after a memorable 3-week trip to Korea with my parents and my youngest child. This was my 7th trip back to Korea after immigrating t...
Do you remember how in college there were classes that were actually below 100-level? The classes that some folks were required to take but they didn’t count for any credits? Well, in trying to come up with a decent title for this blog post, I thought I’d throw in a 090 at the end of the title there since this post will be, in some ways, kinda like those sub-100 level classes. Simple (or simplistic, even), easy, basic-knowledge kinda stuff.
I have to tell you, I was in such a good mood at work today. I finished up a small project which I had begun last week (it feels so very good to make your final code commits… even though you know that bugs will be found, requirements will change, and something will inevitably be wrong with your code), and today I had to come up with a UI design for a filtering component in our application. To put it simply, our application has various “list” screens that list a lot of records and each of these list screens have a filtering component that can filter the records that are displayed to the user. They pretty much function as search pages. Anyhow, I was asked to come up with a design so that our users can not only search for records (existing functionality) but can also perform CRUD (create/read/update/delete) operations with their search settings.
Sounds like a ton of fun–was my first reaction. I was enthused about taking on this task because I saw this new functionality as being such a useful functionality for everyone–end-users, QA folks, us developers, business analysts, etc. I knew that anyone and everyone who uses the application would benefit from this functionality and find it extremely handy. Another reason why I liked taking on this task–I was told only the very high-level requirements–namely, that this functionality should allow the users to perform CRUD operations with their search settings. There was no story (i.e. requirements) written for this functionality and no mock-ups. It was all up to me. I love such freedom.
Well… without further ado, here are the steps I took to tackle this task. The last step is still in progress. I call this my “User Interface Design 090”:
1.Screenshots: Since this was going to be an addendum to our existing search dialogs and list screens, I took screenshots of all of the screens that were going to be affected. I then opened the images up in Gimp, cropped them so that only the parts I want are captured and then copied them into Open Office. I always find that to be a handy way of printing out screenshots that fill up as much of the paper as possible. There’s just something special about doodling on papers as opposed to staring at the monitor–it lets me be a little bit more creative.
2.Research: It didn’t take me too long to realize that I’m not the first person in the world to implement this functionality. This has been done many times before. Originality is good but why waste time trying to be original when there are already perfectly fine existing implementations of this functionality? I looked at various implementations of this–Bugzilla (opensource bug tracking software we use), Twitter (did you know you can now save your search settings in Twitter?), eBay, and even my BlackBerry Bold–the email application. I spent some time playing around with all of these applications. I made mental notes of things I liked and didn’t like, things that made me happy as an end user as well as things that made me scratch my head a little bit.
3.Doodling: After my research was completed, I went to the hard copies of the screenshots and simply stared at it for some time, trying to come up with a mental image of how I want this functionality to be implemented. Slowly, little by little, I started drawing the necessary components–checkboxes, text fields, buttons, etc. I also made various written notes on it–things that can’t be explained by drawing alone.
As I was doodling away, I tried my best to get into the mindset of the end user. To me this is such a crucial step in UI design work. In the end, when it comes to the UI, it is my end users that I need to please. I can build UIs that make my boss super impressed, the QA folks really happy, and my fellow developers envious, but if my end users aren’t gonna like it then I have failed. And that not only makes me look bad, but it makes my team look bad and the company look bad. I tried (as best as I could) to get into the mindset of our end users who use this software–for folks who have absolutely no aptitude nor interest in building software. And to be honest, I wasn’t exactly sure how I could most effectively accomplish this other than to simply take my time asking the What Would the User Do? question with every single doodling element I added on those screenshots.
One more thing to note–as I was doodling, I didn’t give too much thought to the limitations of the architecture/APIs. As long as I knew I wasn’t doing anything crazy I was let myself doodle away. I think it’s a bad idea to be bogged down with such limitations in your creative thinking stage. I’m not saying ignore all limitations. I’m just saying don’t worry about such things too much too soon. I can’t see how that’s going to help you come up with a good UI design.
After I got done doodling, I imagined myself as an end user accessing my doodle-turned-UI. As I went along this step, I made a few adjustments I thought were necessary.
I then went to Chipotle and rewarded myself with a 1110-calorie (yes, I did check my facts online) chicken burrito. SO GOOD.
4.Mock-up: Scribbles you’ve got written down on pieces of paper are useful but it’s even better (and more useful) if you can get them down electronically. After lunch, I made use of the Pencil Firefox add-on, which is a tool built specifically for UI mock-up purposes. You can drag and drop various UI-related items such as checkboxes, text fields, dialogs, fieldsets, and many more. It’s super easy to use. You can then export your finished work into a .png file.
This step took me no more than an hour to complete. Pretty impressive considering the fact that it was my very first time using this tool.
5.Consultation: After I finished mocking everything up, I sat down with my boss and discussed my mock-up with him. A lesson to be learned here: It’s a good idea to run your UI (or anything else, for that matter) ideas by someone. It doesn’t have to be your manager obviously, but it should be someone who is familiar with the software as well as the end users’ uses of the software. My discussion with him proved to be valuable since during our conversation a few things came up that I hadn’t addressed in my original mock-up.
6.Requirements: I got to write up a user story which details the new functionality. We make exclusive use of Google Docs for such purposes at the office. This is the first company I’ve worked for where that’s been the case and I’ve been really happy with doing it that way (What would we, software developers, do without Google?!?). I included the mock-up (exported as .png files) in the story. I tried to be as detailed as possible without specifying the implementation how-to’s of the new functionality in the mock-up. Even though I will most likely end up working on this feature set, the right thing to do when writing user stories is to leave such details out. Let others worry about the implementation details.
7.Review: Perhaps this should be bundled with the above step, but for emphasis-sake, I thought I’d make this into a separate step. It’s never a bad idea to review. If there’s one thing that being in seminary for 4 years taught me, it’s that you almost always discover mistakes when you’re re-reading through your essays. I read through what I wrote down in my user story. Surely, some minor edits were in order. I then printed out a hard copy of it so that I can take it with me and re-read through it before I arrive at the office tomorrow. As of now, the printouts are sitting on my desk next to me. If I finish this blog post up soon enough I’ll be sure to read through it before I go to sleep. :)
And this concludes User Interface Design 090.
I recently returned home after a memorable 3-week trip to Korea with my parents and my youngest child. This was my 7th trip back to Korea after immigrating t...
After 4 weeks of very aggressive job searching, I was able to wrap up my job search late last week and I decided on an offer yesterday. Hooray! This is the f...
I spend a lot of time at work in meetings. I regularly think about having effective and efficient meetings and here’s a list of things that I think are impor...
Several weeks ago I wrapped up conducting employee performance reviews for the 2020 calendar year and it’s the first time that I can remember in my career wh...
Over the last several months I’ve become increasingly convinced that one of my most important responsibilities as an engineering manager is to provide clarit...
Something that is personally very important to me is that I stay fit and healthy for as long as possible in life. While I wouldn’t label myself a “fitness nu...
Being organized is a skill I personally value and at least for me - it’s a no-brainer that being organized can help everyone do their jobs better. It was imp...
During my time at Venmo as an engineering manager (since October of 2019) there are some note-taking / documentation things that I started doing that I hadn’...
I drove about 2 hours west to Stockton, IL - to a place called Christ in the Wilderness (CITW), to spend a few days (Friday evening - Sunday morning) to myse...
I recently returned home from attending Deconstruct along with a bunch of my co-workers. I thought I’d jot my thoughts down while the experience is still fre...
I recently had a need to write a simple script that writes to a Google Sheet document once a day. I decided to write the script in Ruby and host it on Heroku...
When I started at Braintree I was given a new 2017 15” MacBook Pro with Touch Bar. It’s a really nice laptop overall and I don’t mean to sound ungrateful… bu...
I’ve been at Braintree now for almost 3 weeks and I can’t believe it’s only been a few weeks because I’ve experienced a ton of new things and have met a lot ...
In the last several weeks I’ve had the opportunity to speak with numerous companies as a job candidate. While the experience is still fresh in my mind, I tho...
I started 2017 with a ton of excitement over the opportunity to build Cappex’s very own college application product. I knew it was going to be an extremely c...
A very large chunk of my life from the very beginning of this year until the end of July was focused on launching a new college application product. Thanks t...
I’ve had several people ask me over the years what’s a good & cheap way to set up a static or a dynamic website on a custom domain. One of the best thing...
Coming into 2017 I had a lofty goal of hiring 10 people by the end of February. 10 is the number of people I had hired up to the end of 2016 when I had been ...
I’ve done what I think is an insane amount of phone screens since December (well over 100) and in the last few weeks there’s something I’ve been noticing whe...
Once I built out my custom dashboard using Google Sheets (read my blog post on this topic) I decided that I wanted to look at the data for only the last 30 d...
I was looking for a way to build a custom dashboard that’s relevant for me and the team (especially my DevOps team), which at the very least, includes the fo...
I think this is going to be a pretty short post.
Yep, hiring is tiring. Very much so.
NOTE - This is a blog post that I started writing when my wife and I were at the hospital this past August waiting for our daughter to be born. I started wo...
Ever since I started managing people several years back I’ve practiced giving Christmas gifts and a hand-written Christmas card to everyone on my team. I in...
I know that it’s often convenient to have your personal files stored on your work computer, especially If you’re like me and you spend a lot more time on you...
Since landing my first programming job when I was a junior in high school until now, I recently realized that I’ve now worked at 10 different companies, incl...
I really wish Daylight Savings Time would cease to exist. I can’t possibly imagine that DST would go away in my lifetime due to the sheer complexities and c...
Last 2 weeks at work have been rough. This most recent sprint as well as the release ended up being much more difficult than what my team is normally used t...
Stop forcing your programmers to perform mindless manual tasks that could be handled via programmatic means. And if you’re a programmer who is in the unfort...
If you’re looking to upgrade from Java 7 to Java 8 you may not be aware that there are some rather significant differences to how ordering is maintained for ...
Lately I’ve been thinking about the simplest possible ways to distinguish between different levels of engineers, which are typically something along the line...
When I was promoted to my current role of VP of Technology a little over 2 years ago, one of my biggest fears was that my technical chops would quickly deter...
I just finished “converting” my music website from Heroku to utilizing Jekyll + GitHub Pages. And by “converting”, I mean I killed off a project that was se...
Earlier today I attend a webinar hosted by Gradle, Inc. where Gradle Build Scan was introduced. If you’re already using Gradle as the build tool for your pr...
I recently discovered Spark, which advertises itself as a “micro framework for creating web applications in Java 8 with minimal effort”. Like many developer...
I’ve been working on a rather massive refactoring work that involves changing how Java properties files are organized. It’s vitally important that the prope...
I decided to conduct some simple page load speed testing. I hope the following info might be of some value to some folks out there.
I was running low on my 13” mid-2012 MacBook Air’s SSD, which had me pretty concerned. Thankfully I recently discovered that the SSD inside this thing is re...
Yesterday at work I had a need to copy a single from an existing Git repository to a newly created Git repository while maintaining all of the commit history...
I’ve been busy doing a lot of phone screens and interviews as of late. Actually, I’ve been doing a lot of interviewing during my time at Cappex. Since join...
One of the things I hate the most about my job is having to deal with losing good people on the team. I run a small organization (currently 10 people includ...
I’ve been reading through the book ‘Lightweight Django’ by Julia Elman and Mark Lavin and I was having a lot of trouble getting the final example in Chapter ...
Here’s something I just posted on Hacker News - https://news.ycombinator.com/item?id=11643390
At Cappex.com, we do formal employee reviews twice a year and being that it’s already May, I’m starting to think about writing reviews for folks on my team. ...
I spend roughly an hour and a half Monday through Friday commuting to and from work and my laptop is tethered to my phone probably 90% of the time I’m on the...
I had a couple of AWS Glacier vaults that I had been meaning to permanently delete for awhile. When I tried deleting them via the AWS dashboard, I got the f...
One of many things I had been wanting to accomplish in the 2nd half of 2015 was to start making some hands-on contributions to my team’s functional test auto...
I was curious as to the performance improvement of Arrays.parallelSort over Arrays.sort.
Whoops. I started working on this blog post all the way back in mid-February and it’s now mid-April. Life has been busy. Work is busy. Being a dad to a 9...
Android sucks. At least my experience of it has. Now, I’m NOT saying that Android-sucks-therefore-Apple-is-way-better. All I’m saying is that I’ve had 3 A...
Something I’d like to start doing in 2015 is to write a blog post after finishing a book, provided that there are at least a few key takeaways. I’m thinking...
I saw in Google Analytics that I’ve been getting a lot of hits on junhopark.com/index.php, which isn’t a valid page. I decided that it’d be best to set up a...
In July of last year, I stepped into my role as the VP of Technology at Cappex where I oversee software engineering, QA, operations, and corporate IT. Now th...
My first album Acoustic Worship is now available for purchase on CDBaby.com! Recording an album is something I’ve wanted to do for a very long time and I’m g...
I upgraded both my MacBook Air and MacBook Pro to Yosemite over the weekend and I saw that both my laptops were unable to connect to internal systems at the ...
Being that I’m a Ruby on Rails newbie, I was looking for a way to add page-specific JavaScript files on a Ruby on Rails (Rails 4) project. Here’s one way to...
A few days ago, I phone screened a QA Manager candidate that ended up being extremely memorable. It went something like this:
Ever since my son was born in late June, it’s been a challenge trying to find time to work out. Since I record every one of my workout sessions, I thought I’...
A couple of weeks ago, I had to merge one codebase into another codebase and after a lot of searching for solutions on the web, I came across a solution that...
My wife and I met through a (very) random suggestion from a mutual friend 3 and a half years ago. It was suggested to us that we should meet up, get to know...
Here are some pictures I took while I was in Turks and Caicos earlier this month with my wife.
A skill that is often overlooked amongst developers and development managers is the ability to write good comments in code, which is understandable I suppose...
I frequent Hacker News (news.ycombinator.com) pretty often throughout the day and I realized that my eyes were almost always drawn to posts on the first page...
I’ve been meaning to get something up on GitHub and here it is at last:
I thought I’d give Adobe Lightroom a try and play around with editing some pictures. Well, here are the results.
I noticed that Heroku supports Java applications running on Jetty and since I’ve never worked with Jetty previously, I thought I’d give it a go. Please note...
Just paid off my student loans, which took me about 9 years and 3 months. I was planning on letting it drag on and on because of the super low interest on i...
I got hold of some really nice looking single page website templates earlier last week (from here) so I thought I’d go ahead and redo the website for my pare...
After years and years of writing software for the web, I decided that it’s about time I start tinkering around with mobile apps. I decided to use the follow...
Thanks to Plugable I’ve now got 2 monitors hooked up to my Lenovo laptop at work and I’m absolutely loving it. I definitely should’ve done this way sooner.
My wife recently decided that she wants to learn how to code and of course, I’ve volunteered to be her teacher. She has absolutely no experience with progra...
It’s been quite awhile since my last blog post and I had a sudden itch to write about things I’ve been learning (mostly at/through work) over the course of, ...
I purchased a Synology NAS DS213 last week and here are my thoughts after using this device for about a week now:
Big things I want to accomplish in 2013:
I’ve got a lot to be thankful for. Here are some that stand out for me:
Last Thursday, my team made a successful transition from Subversion to Git. Here are some thoughts after having been on Git as a team for about a week now:
I just spent 30 minutes on Google trying to figure out how to debug my Play application in IntelliJ when it should’ve taken me 1 minute, tops.
Earlier today, I had a web design candidate who informed us that he would be able to provide us with an up-to-date portfolio of his design work for a flat fe...
Here are my notes from ChicagoWebConf 2012 (Oct 6, 2012).
This coming Sunday will be my last Sunday at Lakeview Church. I’ve been a part of this church since summer of 2006 and I’ve been blessed to experience such ...
Yesterday I got to represent Cappex at a career fair that was being held at the Illinois Institute of Technology in Chicago. I had only attended a career fa...
As I noted in my blog post from 9/15, I decided to recreate my site using Ruby on Rails + Postmarkdown and deploy to Heroku. FYI, my site is a super simple ...
Decided to ditch PHP + WordPress + Lithium Hosting for Ruby on Rails + Postmarkdown + Heroku.
It’s been about 6 weeks since I started working at cappex.com and while I’ve been really enjoying the work, I’ve also been guilty of bringing work home. I’v...
Earlier this year I decided that it’s time for me to look for another opportunity outside the company. The company executives decided on being acquired by O...
I gave moodyshoerepair.com a (much needed) facelift over the course of this past week and it’s now live online. This is the first project completed on my n...
I wish I had waited to get the new iPhone (whatever is gonna come after the 4S) instead of picking up the Galaxy Note.
I shall never ever fly Spirit Airlines again. My reasons why?
I’ve had my Samsung Galaxy Note for about a month now and I’ve been loving it. It was a HUGE upgrade over my old phone (Blackberry Bold 9000) and it beats t...
The last time I wrote in this thing was 10/22 of last year, which is also the time when wedding preparations got crazy. Well, thank God the wedding is now ov...
I arrived in San Francisco last night with Jenny and a friend of ours at around 10:30 local time to attend Jenny’s friend’s wedding which takes place later t...
One of the main purposes for keeping this blog is for me to think through and reflect upon things and to remind myself of the lessons that I’m learning. I k...
My office moved from Westmont to Chicago about 2 and a half months ago and ever since then I’ve been taking the Metra train to get to work. There are some t...
While reading my Bible this morning before work I came across the following question:
This past Wednesday, I paid a visit to my alma mater (UIC) to be among the panelists to share my post-college experiences of working in the corporate world. ...
One of the main motivations behind why Jenny and I wanted to start this blog in the first place was so that this blog would (eventually at some point once th...
On Saturday, I got engaged to the most amazing girl I know. :) It still hasn’t quite hit me yet. To be honest, I’m guessing it’ll hit me once I get used to...
I’ve been wanting to convert my site to a single-page design and after working on this on & off for the last several weeks, I’m glad to have the site fin...
It sure has been a long time since the last time I updated my blog. Here are the different things that have been occupying me in these last couple of months:
One of the things I’ve been enjoying about work since I made the switch last November is being able to get my hands dirty with front-end web development and ...
For some time now I’ve been really interested in going overseas for the purposes of doing missional philanthropic work. And by “missional philanthropy” I am...
Do you remember how in college there were classes that were actually below 100-level? The classes that some folks were required to take but they didn’t coun...
So… I’m scrounging around the internet looking for some TDD-related tidbits and I came across the following at www.artima.com.
Band rehearsals–some love ‘em, some hate ‘em, but there’s no denying that they are very much necessary, even for bands that are comprised of phenomenal music...
At work we have a huge product release coming up very soon. There are a lot of new features to the application, which means that there has been a ton of cha...
Over the weekend I started re-recording a song which I had written a few years back. Vocals, acoustic guitar, electric guitars, bass, keyboards, drums-via-k...
After lunch @ Sweet Tomatoes with some friends I came back home and took a much needed nice, (too) long nap. Fast forward a few hours and it was around 11: ...
This upcoming Sunday is going to be a pretty big & important day at the church I’m serving as a worship leader–it’s the grand opening day at our Vernon H...
I have a few minutes to spare while my Ubuntu workspace is being patched up with some security updates so I thought I’d share a little blurp or two about Rim...
Almost every Sunday morning, I am needed to provide live background music, either on the guitar or the piano, at church worship services. Usually this takes...
Yet another rendition of junhopark.com is done… at last! I decided to forsake my old Blogger posts since it’s been quite awhile since my last blog update an...