Painting: Five Birch Trees

April 11, 2017 at 10:00 pm (acrylic painting, Art, painting, Rant) (, , )


I’ve finally gotten some time to paint again. I ended up psyching myself out and getting frustrated with a couple paintings several months ago, and never really made it back. I decided to ease into it with a very small 5″ by 7″ masonite board piece. I only spent a short while on it, but I wanted to get the feel for painting again. Here’s what I came up with:

Permalink Leave a Comment

Latest Project: Node.js + Bootstrap + D3

July 3, 2016 at 5:07 pm (Computer Science, JavaScript, NodeJs, Programming, Rant) (, , , , , )


I’ve started putting together an app I’ve been planning for a while. I’ve been trying to select a tech stack that would allow me to focus on the “meat” of my idea instead of spending too much time setting up boilerplate stuff. In the past, I’ve ended up wasting days just setting up technology stacks and libraries just to find a limitation that would eat up even more of my time or even flat-out block further progress. This time around, I think I should be okay; I’ve selected Node.js and Express for my launch point.

I’ve decided not to bother with MEAN.IO right now since I won’t need MongoDB right now and I’ll be using D3 (the visualization library) instead of Angular. Express provides me with the basics for routing and serving web content (more stuff I don’t have to do). I’m still not really a fan of Jade/pug as a template engine, but it’s workable.

I’ve also added an REST API on top of it for accessing my Trello account (via it’s own REST service). I’d like to do some sort of interesting visualization of my content using D3, so now that I can serve up the data I’ll need, I can actually start building the good part.

One of other boilerplate tasks coming up is to set up a client-side package manager (Bower) to manage my dependencies. I will likely also need a task-runner to build my project stuff, although I’d like to consider using NPM for that instead of Gulp/Grunt.

Permalink Leave a Comment

Story time: Lessons Learned from Contract Work

June 11, 2016 at 3:21 pm (Computer Science, Rant, Thinking) (, , , , )


A while ago, before I started my Masters degree, I tried to find contract work for the summer. I figured I’d need some extra cash when I would move to the east coast to do my Master degree later that year. One of the companies I approached needed a new website; their current one had information crammed in every inch of the view space and it only served up static data. I met with them to figure out exactly what they were after and then set out to build a prototype for them. It was very clear that they knew very little about technology or even what a new web site could do for them.

I took a week to build this prototype for them. It was an ASP.NET web portal with a database back-end, and the whole site was localized as they had a lot of international clients; which I saw as their most important requirement. For the front-end, I scraped most of their base website as their needs were mostly to provide clients with a private access portal, where they could manage their accounts and services. I contacted the company again and set up a meeting to show them what I had made. It had some rough edges (mostly because re-vamping their business-specific pages was a monstrous task that required subject expertise), but it met their needs and was maintainable. More-over, the prototype actually worked; users could sign in, register for services, and communicate using an internal messaging system.

During that second meeting, I received criticism and sarcasm over my prototype. His comments were along the lines of “why would I pay you for a website I already have”. Despite my explanations, he seemed unable to grasp the idea that his $10/month static website hosting was not capable of any of the things his company needed to provide. Because the interface consisted of the same content that he already had, he didn’t understand the amount of new functionality that he would have had with this new piece of software. I was pretty baffled that he couldn’t understand what I had created for him just to GET the contract; not even as a final product.

After several more days of back and forth and modifications to the front-end, I had made a very professional-looking product prototype. I spent effort to make sure it was organized and easy to follow (as far as a mock-up could go), and it still functioned very well for what his needs would be. As it turns out, he loved what it did (finally), but he decided to change his offer: his new offer was on the scale of $10 an hour (citing a bad economy). In addition to creating the whole thing, he also wanted permanent support for it, and he announced that since he was already paying for [static] hosting, he wasn’t going to pay a cent more for it.

At that point I decided I was done with trying to chase this contract. I very politely declined his new offer, and excused myself from his office. I had wasted about two weeks working on this prototype as well as the cost of parking for all of the meetings. I learned a lot of valuable lessons from the whole situation. Firstly, not everybody is capable of understanding vision; some people are just moving objects, not able to see where they’re going. These people need to be dealt with very carefully with “kid gloves” to avoid them from getting in the way of themselves.

Secondly, assertive communication is of paramount importance. If I had forced the questions that I knew needed to be asked, I could have perhaps avoided the whole situation. I wasn’t prepared for others trying to take advantage of me, and I definitely did not ensure we were on the same page. Always be assertive, especially in business.

Lastly, never underestimate the power of idle time. I ended up taking the rest of the summer off to relax and mentally prepare for the stress involved in moving across the country and starting a new endeavor. I finally understand how critical it is to step away from life and take time to clear one’s head.

Permalink Leave a Comment

Updates: June 10, 2016

June 10, 2016 at 10:55 am (Art, Java, memory palace, Programming, Rant, Thinking) (, , , , , , , , , , , , )


I’ve been working on a number of different things as well as thinking about my next steps and goals for the year. Here is a point-form list of some of the projects and endeavors I’ve been spending effort on in the past couple weeks:

  • I set up a home Linux server. I wanted a local, private Git repository as well as a machine to host some automated processes and apps. Things have been working out very well on this front. It’s been a great learning experience on top of it as well as I haven’t really used Linux in a decade or more. I installed a desktop version of Ubuntu, but I’ve been sticking to using the terminal as much as possible to expand my sphere of knowledge.
  • I’ve been working on my coding skills and algorithm knowledge. I always have some sort of coding project on the go, but recently I’ve been so focused on my front-end skills that I’ve let my core skills droop a bit. To get back up to par, I’ve been solving a lot of coding problems in Java as well as figuring out some algorithms that I haven’t touched in a while. I decided to start basic with heaps and heapsort, then moved on to KMP string matching, and now I am working on suffix tries/trees. I’m going at a slow pace with this though so I can not only code solutions, but also store them in my mind palace.

   Preparing an algorithm for long-term mind palace storage pretty much consists of tearing the algorithm down to its basic elements in your mind and trying to make a story out of it. For example, I’ve decided to store the KMP string matching algorithm in a kitchen in one of my mind-rooms, so I compared the process to making spaghetti. Comparing noodles of different length was the basis of the story. I also had to work in the generation of the prefix table for the search pattern. For this, I’ve been toying around with adding some sort of “sauce” to the story to indicate the comparisons of the prefix to suffix for each length of the pattern noodle.

   I think that I’m finally starting to outgrow the hub room I’ve been using for my computer science mind palace. It was a good index for classes of algorithms so I could always see what tools were at my disposal, but it’s getting too cluttered now.

  • I’ve also been doing a lot of general-purpose reading. I visited the library not long ago and “accidentally” walked away with between 10-15 books. Some of these were painting-related so I could learn some new techniques and composition skills, but I also picked up some interesting biology books. One of these is a book on viruses (the non-computer version). I’ve been learning a lot about how they operate as well as how they’re being used/manipulated today. Bacteriophages are being produced to one day replace antibiotics, and I find the whole thing fascinating (phages are a type of virus that goes after bacteria instead of humans).
  • In addition to practicing my coding/problem solving skills, I’ve also been working on learning and using some new technologies; at least new to me. I’ve been fiddling with the Play framework, which is a web platform. I wasn’t really impressed with it at the start as you have to use a self-hosted web app just to create a project structure, but beyond that it seems really nifty. My next area of interest within this framework is the Ebean integration, which allows for a fun way to connect objects to databases without having to write scripts and stored procedures. There are also some features to allow syncing a database to ElasticSearch automatically, which will be fun.
  • The Android platform is another area I am learning about lately. I’ve set up my development environment and I’ve been learning about the SDK for creating apps. It seems like there are a lot of different approaches to building Android apps, especially as the SDK has been evolving. It has made things a little awkward to get started (as there are many references on the internet to doing things the “old” ways), but I think I’m past that hurdle now. My only real problem now is that I haven’t been spending enough time on this project.

Permalink Leave a Comment

Progress Update: May 24, 2016

May 24, 2016 at 6:39 pm (Computer Science, Java, Programming, python, Rant) (, , , , , , , )


I know I’ve recently posted about a few of my upcoming goals, but since then I’ve fiddled with a number of things since then and have some updates on my progress.

  • Python Learning. Thanks to a suggestion on the Halihax Slack channel, I picked up a pretty decent IDE for my Python projects (PyCharm). Unfortunately, I learned the hard way that Windows is not the ideal platform for using Python. I wanted to work with a packaged called “sklearn” that I saw during a Google I/O session on machine learning, but it depends on SciPy; a package for scientific calculations. Unfortunately SciPy has some dependencies that do not install cleanly on Windows (LaPack and BLAS are a couple examples). I was really looking forward to toying with the code snippet from the presentation, and I’m sure there are plenty of equivalent libraries I could try out, but the fiddling process wore on me.
  • Android Learning. I’ve been learning about making apps on the Android platform. There was a fair amount of setup and configuration for getting the IDE to work as well as setting up the right emulators to run code on. The annoyances were further compounded by the fact that I don’t want anything installed on my C drive. I use a smaller SSD drive for my C, and then put everything else on another drive; it allows my OS to run lightning fast and lets me get going faster. This guide ended up being really useful in moving the hefty emulators and other odds & ends to my storage drive: http://www.littlecpu.com/android-studio-c-drive.

  I’m in a pretty good “hacking” state right now on this front after some effort. I’m learning about the UI-data model binding within Android page components as well as other architecture aspects. The architecture is fairly straightforward (activities, services, etc) but there seem to be a lot of conventions and gotchas.

  • Java Experiments. I’m also back experimenting with Java as well. I’ve been using Derby (JavaDB) as an embedded database, and it’s pretty simple so far. I had toyed with MapDB a bit, but I’d like something a bit better supported so I can use Hibernate with it to avoid having to do my own schemas. I’ve also been using ElasticSearch in parallel. It’s kind of it’s own document-based database, but without the reliability – it’s usually used in conjunction with a real database and you just sync the data in batches so that Elastic can index the data to make it searchable. These components are all pretty straightforward, but I want to build a decent non-trivial demo project. I was also considering using Akka for the concurrency management to control the batch operations to ES.

Permalink Leave a Comment

Updates: May 2016

May 15, 2016 at 7:03 pm (Computer Science, Java, memory palace, Programming, Rant, Thinking) (, , , , , , , )


It’s been a while since I’ve posted about my recent endeavors outside of painting (this is by design). There’s been a fair amount of things keeping me busy and stressed. That being said, I’ve started putting together and working on my goals for the next several months. A large part of this will be getting my full-stack technical skills back up to a competitive level. I’m going to be focusing mostly on my Java skills as well as commonly-used libraries, since it’s been a while.

As part of this, I spent a bit of time building a small app to back up my development files. Mostly because I needed a good, automated process and didn’t want to go shopping for an app. I needed something that can backup different sets of files at different times, so I could selectively backup specific projects and images, but also my full dev repository. It seems to be working according to my tests, but I’ll be trying it out soon to find out.

I also plan on picking up Python. I think I will use Python 3, although I want to be knowledgeable of the differences from 2 to 3 as well so I can read/port existing code. It shouldn’t take long to pick it up, but I have to learn the specific syntax and rules such as scoping, etc. Some sort of project would help, so I’ll be trying to think of more home automation tasks I could fulfill with Python apps.

Lastly (for this post), I plan on giving my memory palace an upgrade. I need some more rooms, and I need to finish storing algorithms in it. I’m missing tree and graph algorithms (which are pretty important), and I wouldn’t mind adding some more details for implementation as well. This should ensure that I don’t have to review algorithms, data structures, and design patterns when I need to use them; I’ll have them permanently stored.

Permalink Leave a Comment

Improve Your Memory and Never Forget

September 28, 2015 at 2:27 pm (Rant, Thinking, Uncategorized) (, , , , , , )


Memory is key to living. How can you operate if you can’t remember who you are, what you’re doing, and where you’re going? Consider this quotation from Hugh of St. Victor: “The whole usefulness of education consists only in the memory of it”. Essentially, you could pay thousands of dollars to go to school for years and obtain a doctorate, but how useful is it if you don’t remember anything of those years?

Often I hear people explain that their memory isn’t what it used to be, and they just can’t seem to retain anything. Unfortunately, there is no magic cure to help us instantly improve our memories and remember everything we’d like to. However, I’d like to introduce you to a technique I make use of: the memory palace. Honestly, you don’t have to be a genius or a brilliant detective to take advantage of this technique, but it will take some deliberate practice and effort to get used to it.

Brief Background on Memory Palaces

This technique is also known as the “Method of Loci”, the “Journey Method”, or the “Roman Room” method. All of these names essentially point to the idea of associating items or concepts with a physical location. You might not even realize this, but your brain is exceedingly good at remembering locations. You’re able to remember the rooms in your house, where your furniture is, and where the bathroom is at your place of employment. I bet you can probably remember the journey you took to get to work today as well.

The general idea of this technique is that you associate the things you want to memorize with areas of these locations using vivid images. When you imagine yourself walking through your location in your mind, you will “see” these images and they will remind you of the items you’re trying to remember.

See the Memory Palace in Action

As a trivial example to illustrate my point, if I wanted to remember a grocery list consisting of bread, milk, eggs, and butter, I could do something like the following:

I choose to use the journey from my apartment to the nearest bus stop; I live pretty close to it, but my list is very small. As I exit the lobby of my apartment, my spider-sense tingles to let me know I’m in danger! I quickly duck to avoid being hit by a French baker swinging a baguette at me. He shouts profanities at me as I run around the corner to avoid him. Whew! Bread is the first item on my list.

As the next part of my journey, I have to cross over the exit to the underground parking lot for my building. Unfortunately, just as I walk up to it, a stampede of cows rush out of the parking lot. Their cow bells are clanging as they run past me, and I notice that they definitely smell like cows. Milk is the second item on my list.

Once the stampede is over, I continue down the street to a stop sign so I can cross the road. I wait to ensure the cars are going to stop for me before I begin to cross. As I start to walk, I hear honking from the jeep that stopped for me – what is their problem? I look over and there are chickens driving that jeep! They look really angry with me that I had the nerve to cross the road and they start throwing eggs at me. I cover my head and run to get to the other side. Eggs are the third item.

It finally looks like I’ve made it; I can see the bus stop from here. As I fist-bump the air to celebrate, I realize I’ve made a grave mistake – I’m no longer watching the sidewalk. Somebody has smeared butter all over the sidewalk and I slip and fall! Now I’m covered in grease and everything will probably stick to me now. Butter is the last item on the list.

At this point, you need to practice walking through this journey in your mind. If you only need the list for a short period of time, you don’t need to practice that much. However, if you are storing information you’ll need for a long period of time, you’ll want to refresh the journey periodically to make sure it doesn’t degrade.

What Can You Store in a Memory Palace?

Honestly, I haven’t been able to find things that can’t be memorized using this technique. It has been used for hundreds of years by some very famous people (as a homework assignment, I encourage you to do a little research). Essentially anything can be stored, but it depends on the amount of effort and creativity you have. Here is a short list of different types of information you can store; everybody likes lists, right?

  • Sequential Lists of data such as processes, instructions, or ordered data
  • Sets of unrelated data such as concepts within a field or shopping lists
  • Speeches or stories. These have an ordered sequence of plot points

Ways to Improve the Quality of these Associations

On a final note, I should discuss some things to make the whole process easier. There are certain types of memories that your brain will have an easier time storing. If you think of images for your memory palace that involve these concepts, you’ll find that they will become more vivid and therefore more memorable. The following is a short (but not exclusive) list of these concepts:

Laughter. Create funny images that you can laugh at. Instead of some ultra-realistic image, throw in some comical things like chickens throwing their eggs at somebody.

Exaggeration. Make things larger than they have to be or more intense. An angry French baker dueling with bread is more memorable than a grocery store rack of bread loafs (to me anyway).

Your senses. Memories that include multiple senses have a lasting effect. What do things smell like? What do they sound like? Do they have tactile textures?

Positive Thinking. This is an underestimated factor of memory. You have to have a positive opinion of what you’re trying to remember. Your subconscious will always try to protect you by trimming out unhappy memories when it can. Keeping things positive will put you in a better state when you revisit your memory palace and will reduce stress (which creates chemicals that are not helpful for thinking).

I hope you’ll give this a shot; I’ve had some great success using this technique to remember some really tedious and detail-oriented concepts over the years. It’s great for never forgetting, and it’s also an excellent creativity exercise. Happy remembering.

Originally posted here: http://www.linkedin.com/pulse/improve-your-memory-never-forget-jake-seigel

Permalink Leave a Comment

Convince your Brain to Inspire you with a Memory Palace

September 10, 2015 at 11:22 am (Innovation, Rant, Teaching, Thinking) (, , , , )


If you haven’t heard yet, memory palace techniques are amazing ways to store vast amounts of information in your brain! It has even made its way into popular culture through the BBC show Sherlock and the CBS show Elementary, although the good news is that it’s accessible enough that you can use it without being Sherlock Holmes.

The basic idea of it is that your brain is really great at remembering places; just think about how well you know your own house, your place of work, and the routes to get from one to the other. The trick is that you associate images of things you’d like to remember with difference areas of these locations or routes. The technique is known as the “Method of Loci” and has been used for centuries, although I won’t bore you with the details right now.

I highly encourage you to try out the “Method of Loci” when you get some time, but I’d like to share a specific version of this technique that I make use of every day; I call it the “inspiration room”. You know how some things can get you fired up with ideas? Have you ever walked out of a movie and thought to yourself “wow, that really got me fired up about that concept”? If you have no idea what I’m talking about, I probably sound foolish, but you should probably find more things in this world that interest you.

Anyway, I’ve built up a room in my “memory palace” where I store all of these images that inspire me and make me feel creative. Whenever I need to come up with an original idea or I need to get into a mindset to be creative, I just imagine myself walking around this place and looking at all of the interesting things in this room. It makes sure that I will never forget the things that inspire me and that I can recall them whenever I need to.

Here’s an example of what I’m talking about in case what I’m talking about makes no sense. I begin by thinking about a specific building that I’ve worked in at one point in my life. I’ve spent a lot of time in this building, so I know the hallways and rooms pretty well. I know what the cubicle walls feel like and how sound seems to get absorbed by them. Essentially in my memory I’ve made this place very real by remembering the smells, the sounds, and the feel of things.

So I walk through the hallways of this building, and look in each room; the rooms are where I store my inspiring memories. For example, in one of my rooms I store a scene from the film Iron Man. There is a scene where the main character is building out an upgraded version of his suit of armour that can fly, and he is assisted by his computerized assistant J.A.R.V.I.S. When I first saw this movie, I stayed up until 4am attempting to build my own version of his AI assistant so I could have him organize my life. My memory from that movie and my experiences are something that help me to stay focused and productive. I store Tony Stark in one of the rooms in my mind so I can watch him work productively on his armour.

In case you were curious, I actually did build a basic version of an AI assistant that used natural language processing to activate various tasks. It was fairly successful, but I eventually abandoned the project a couple weeks later. Now it seems that AI assistants are all the rage… whoops…

Hopefully by now I’ve sold you on how useful this idea is. It’s something that I use to stay productive with my time and to get rid of those “blah” feelings when I’m tired. The actual technique of building up this type of room is actually pretty straightforward. First, write down the images that inspire you; you need to know what you’re building before you start. Then pick a location that you know very well. It should be fairly large so you can add new images later on, but it needs to have memorable features such as windows, furniture, or colours.

The last step is probably the hardest one: you have to practice walking through this location in your mind. You have to vividly remember the location and as you walk through it, you need to connect rooms or features with your images by imagining they are there. These instructions may sound a little vague, but your brain actually knows how to do this for you. It just needs to be programmed, and you do this by repeatedly walking through the room and looking at the images.

I hope to tell you about other mental techniques I use on a regular basis in the future. These are really useful for so many aspects of life, and don’t require that much effort to use. Let me know what you think about these or if you have any questions about the technique. I spend a lot of my time practicing these techniques and reading about how others do similar things.

Permalink Leave a Comment

How to Always Win Your Pitch (Within Reason)

August 12, 2015 at 2:58 pm (Innovation, Rant, Thinking) (, , , , , )


Whether you’re pitching an idea, interviewing for a job, or reporting on the outcome of a project, you need to communicate well if you expect a positive reception. Ideally you want to be able to not just manage to hold your audiences’ attention, but to have them be interested in what you’re saying.

Let’s think a moment about the first presentations we’ve attended in our lives. As a child, you’ve likely had a parent tell you a story or read from a storybook, right? This is exactly the same as a presentation; it has one party telling another about a situation with a goal in mind (granted, usually this goal is to get you to go to sleep after).

So here’s what we can take away from those experiences: always tell a good story. The pure facts are rarely enough (unless they’re all that’s required of course); you need context to explain why they’re important.

As an exercise, let’s take a look at a sales pitch. The first pitch is just the facts; they’re not wrong, but it is the bare bones.

“Our product helps customers protect against robot army invasions”

Now let’s look at an alternate version of this sales pitch. Here we tell a story complete with a relatable character and situation.

“Beth is a single parent who works hard at life. Between taking her son to soccer practice and running her business, she doesn’t have the time to wonder if her home is secure against a robot uprising. That’s why she trusts in our product to handle the burden of preparation against all forms of robot invasions, both planetary and interplanetary.”

Which do you think paints a more compelling picture for a product pitch? Sure, the first option gives me the facts without a big reading investment, however it lacks context. It doesn’t tell me how the product will actually affect my life beyond just insurance against robots.

The conclude this article, if you want to become more captivating, persuasive, and win your pitch, you have to learn how to engage your audience. Tell a good story that does more than just spew out facts. Everybody has facts; differentiate yourself.

For more articles like this one, follow my LinkedIn profile.

Permalink Leave a Comment

Unexpected Benefits from Reading

August 4, 2015 at 10:35 am (Innovation, Rant, Thinking) (, , , , )


Lately, I’ve been doing a lot of reading (a LOT of reading). I’ve been making a point of visiting my local library once a week this year and I can’t seem to leave the building without two or three new books. It has helped to sate my need to learn about different things, but it has also provided me with some unexpected benefits.

A couple of the topics that I’ve been reading about are leaf cutter ants and map making. These aren’t exactly topics that directly impact my daily life, however, they’ve been helping me expand my ideas to beyond just what has already been done. If you think about it, how can you be innovative and expand your field if your field is all that you study?

the benefit of reading isn’t necessarily learning about a topic;
it’s gaining perspective about the world of things you don’t know about.

At this point, it isn’t a secret that I prefer to do things a little different. I frequently file patents through the company I work for, and I’m always on the hunt for ways to improve the world around me in ways nobody has considered. I’ve been finding more and more that there is almost always some sort of alternate takeaway from even the most obscure subjects. They help to change the brain’s neural pathways to generate new combinations of ideas and make better contributions.

More importantly however, I believe the largest benefit is that it helps me see what I don’t know. Frequently, we only ever play in areas we’re good at: we read books and articles where we’re already familiar with the field, we cook foods that we know how to cook, and I bet over the years you’ve probably gotten good at your job. There’s rarely a chance to see just how much we don’t know.

In my opinion, the benefit of reading isn’t necessarily learning about a topic; it’s gaining perspective about the world of things you don’t know about. I’d like to go as far as to say that you can attempt to shrink that world, but perspective is the best we can do; you can’t shrink the infinite.

So, go forth and read something that is outside of your sphere of expertise; you might be surprised with the results.

Permalink Leave a Comment

Next page »