The Blog of Justin Loutsch

I don't know the question, but the answer is 42!


I'm Justin, and I live in Boston. I'm a huge geek into process automation and work reduction, and am also an editor at Eat Your Serial. Thanks for dropping by!

Most ebooks these days have some of DRM scheme in use to protect the rights of copyright holders. EPUB files from Sony and Google use Adept while Barnes and Noble has yet another scheme, and Amazon has several schemes depending on the file format.

These schemes effectively lock the buyer into buying from only one company, but there are several drawbacks to this: Amazon has removed books from devices remotely (1984 incident), but the bigger problem is if one of these companies goes out of business you will lose all of those ebooks that you paid for. Another important item to consider is availability of titles. Perhaps Barnes & Noble has the newest book in a series you love, while Amazon doesn’t, but you have a kindle. I guess you’ll just have to wait.

This is where we have some good news: all the major ebook DRM schemes have been broken (with the possible exception of iBooks, not 100% sure on that). Not only have they been broken, but over the last 2 years the process has become extremely simple. It began as several sets of python scripts, one that acquired the encryption key (to verify you own the file) and then the second to use that key to remove encryption. They had to be run in a terminal and were somewhat complicated if you’ve never done it before. Fast forward to now and there is a wonder ebook library program called Calibre which has plugins available for DRM removal which make it a simple case of adding in your kindle serial number or B&N credit card number (used as the encryption key with your account) and then once the device is plugged in and connected to Calibre all you need to do is right click the file on the device and choose add to library and not only is it added instantly but the DRM is removed at the same time, leaving you free to convert the file to any format needed and own it as long as you wish.

So, on to Pottermore. They went a different route, and instead of choosing DRM they applied a digital watermark to these files to identify anyone who might have shared them after purchase. The files are completely unencrypted but still identifiable. I for one was excited to check out how this watermark was implemented, and bought the first Harry Potter book for $7.99 the minute I got the invitation from Amazon. Upon purchasing one book, you are given multiple downloads (I think 7) which allows you to download the books in multiple formats.

I downloaded the epub and mobi formats of the books and unpacked them to look at the file contents. EPUB files are just zip files and can be renamed to .zip and opened with any archiving utility. Then it’s just a matter of looking through the various files searching for a watermark tag and removing it, as well as the HTML file with the text of the book itself.

For MOBI it’s slightly more complicated as the mobiunpack script is required to unpack the contents of the file, but the same process applies. Just edit the HTML to remove the identifying watermark line and save it, then use Amazon’s kindlegen to create a new mobi file from the edited files. Add it to Calibre and you’ve got a brand new unsecured, unidentifiable ebook.

This was done for educational purposes and I haven’t uploaded the ebook anywhere (they existed in eformat ever since publication anyway thanks to HP fans) but altogether I expected something a lot more complicated when hearing about a watermark but I think this was just the easiest way to explain the identifying line with an analog that we all understand today.

I’ve lived in East Somerville for 8 months now, and have noticed a few things about it that differentiate it from Somerville proper. First, there’s the pejorative nickname “Slumerville” use to denote what looks like a poorer area of the city. This area of Somerville is also underserved by the subway (as compared to Davis Square) and relies chiefly on buses and cars for transit needs.

In my neighborhood alone I can take the 89 or 101 to Sullivan Square subway station or the 80 close to Davis station or right to Lechmere, within a 5 minute walk. 15-20 minute walk would bring me to the 88 bus line which also runs to Davis but up and down Highland. This is convenient to that entire neighborhood as well as anyone going to the Somerville public library.

I have many friends who either have lived in this area, or live close by and consider it “far” from Davis, the most hopping/trendy part of Somerville (with Union Square a close second, in my opinion).  In actuality it’s a 20 minute walk, or 5-10 minute busride if you can stomach the long waits during off-peak hours. So essentially, this area is most convenient to live in during rush hour when the buses stop every 10-15 minutes rather than once every hour and a half or so. For all other times, various bus tracking apps allow you to see how many minutes til the next bus will arrive, which makes that waiting slightly more variable.

I believe another reason this area is referred to as “Slumerville” is because, the further down Winter Hill you go, in the direction of Sullivan Station (southeast) the poorer the area begins to look. I think this is largely attributed to the various immigrant groups that live in this part of East Somerville, an observation based on a few things. First, every morning at the local park there is what appears to be a large number of immigrants standing around waiting to be picked up for work (I’ve even seen painting vans picking them up on my way to work once in a while).

Another good indication of this demographic is the amount of ethnic restaurants and shops in the area. Mexican, Brazilian, Creole, Italian, Ethiopian, and more. I for one think that the inhabitants of this area benefit from having such a wide selection of food choices in a very small area.  Another benefit is that immigrants make better neighbors, leaving the areas they live safer in a bid to succeed and live safely. What does Davis have? Joshua Tree and upscale bars, JP Licks, McDonalds, barber shops and cafes, a homestyle restaurant with a bit of everything, and a burger joint. Oh and some Indian restaurants, Japanese restaurants, and a BBQ place.  All definitely a bit more upscale than you can find in East Somerville, even if not far away.

I think what this mainly comes down to is gentrification. The areas close to subway stops are obviously coveted and therefore more valuable, causing rents to go up. When I looked at my apartment the realtor told me it was much cheaper because it’s not convenient to a subway station. What did he mean by cheaper? Oh, $975. The people who live closer to the subway pay a premium for the privilege, while those live further away pay less for the same or better accommodations, but make up for it by having to take the bus before getting on a train.

I hear rumors of gentrification coming east Somerville fairly often, starting with nice French restaurant a few blocks away from Sullivan Station, and I worry that at some point this will push out the local businesses already there and provide the residents with less choice but I think that time is slow to come. Perhaps as the green line construction progresses more businesses will choose to move further into Somerville, but some have already tried this banking on construction starting only to be burned when the MBTA delayed the project due to funding.

So what does that live us with in East Somerville vs the rest of Somerville?

East Somerville has a Super Stop and Shop grocery store and Sullivan Station T stop, Rite Aid/Walgreens/CVS, bars, liquor stores, Dunkin Donuts, myriad restaurants and 2 convenient libraries.  Davis has hipsters and more well-to-do folks, and Union Square has homeowners who complain about a public housing building project that will supposedly block their marvelous view of Boston even though it’s blocked by a tree 6 months out of the year anyway despite the fact that it will house firefighters, police, and other low income earners.

Hi Chris

December 21st, 2011

Feel free to comment! Miss you buddy.

So southie taxi is pretty lame. They have spiders that look for any blog posts with the word Boston in it, and then steal that content and add it to their own website. I mean I know I wrote that I’m in Boston, but that’s no reason for Southie Taxi to go and steal content, is it Boston? Boston does not appreciate this.


August 28th, 2011

So looks like I survived Irene just fine, there was worse damage further inland than on the coast and on Boston. Afterwards I went down to a liquor store and bought myself a celebratory pack of rolling rock and also discovered that half of my neighborhood is without power. I thankfully am not part of that group.

I’ve been very busy since the last time I posted, sorry about that. Mostly I’ve been busy with work, or meeting up with friends, or with a girlfriend (we broke up when she went home to Korea in June, so that’s no longer an issue.

I’ve not only been working at my normal job for, but have also begun one-on-one tutoring sessions by answering an ad I found in a restaurant.  This has netted me about $550 in 2 months, and that was with only 2 students. I’m currently down to one since the other left, but I’m going to focus on Korean students in Boston who need help understanding their English class readings, as their parents seem to be willing to pay anything for their children to succeed.  I’ve witnessed this first hand with the girl I dated and am also seeing it with the current people I’m tutoring, and it seems there’s lots of demand for this kind of service so that’s one thing I’ll be focusing on in the coming months.

I also just recently accepted a new position at work: processing.  This has been keeping me very busy. Basically we have spreadsheets full of product data concatenated into SQL insert scripts, and it is my job to run them to enter everything into the system (one of the main tasks).  I also gather project materials, put them together, and send the work out to be done.  I have just now started to get comfortable with the position after a week, but I know there’s a lot more I can do.  Many nights I’ve had to stay late to get the work done on time, but yesterday I was shown some organizational steps that will help out a great deal.

I was asked to take this position because my new boss would like to improve the process, make it more efficient, reduce steps, etc, and that is exactly what I was doing in my previous position.  So far I’ve really impressed my new boss, which is awesome since it’s been only 1 week since I started the position.

In my next post I’m going to write more about how exactly I do this, but I’d like to wrap this one by letting everyone know that I moved into my new apartment on August 1st. I left the previous place a month early to get out of the September 1st lease cycle, which is just awful with all the students moving in on the same day.  I now live in Somerville, MA, just a few miles north of Boston and it so much nicer.  I’m very happy with it so far.

Finally, I’m all prepared for hurricane Irene to hit tomorrow so we’ll see how that goes. Good luck to all my other friends on the east coast!

So now I’d like to take some time and illustrate how you can use excel and firefox extensions to fill in data for you, create scripts, and generally reduce the amount of work you have to do.

First, if you’ve never used CONCATENATE, make it your friend. It’s super easy.  Type in =CONCATENATE to any cell and then follow it with (“your input goes here”).  Remember to use quotations around the text just like that there.  This is useful for SQL scripting since you have defined columns which can be pasted directly from the database output into your spreadsheet.  Ex: Product Name (Cell C1), Product ID (Cell B1), NewProductName (Cell C1).

You can write a script to update this information by typing: =CONCATENATE(“Update <ExampleTbl> set ProductName ‘”,C1,”‘ where ProductID = ‘”,B1,”‘”)

So the ‘ on either side of the cell info is to tell SQL that you are using variable characters, and the quotes and commas are how Excel knows what cell you’re referencing.  The very last quotation mark is simply to close the quotes from the beginning of the concatenate formula. You can then drag that down and automatically fill in new names for all the products that need updating.

Another useful formula is the IF statement, which can be combined with many others and is very versatile.  One of my favorite uses is when you have to changed a command at the very end of a list of scripts.  For example, every single query needs to have “union all” at the end save the last one.  Let’s say there’s a list of product IDs from A1 to A20. The IF(ISBLANK) formula needs to be used to do this, and you would tell it to see if the cell below the first one in the list is empty or not, which defines if you’ve reached the end of your list.

So now you’ve updated those product names and you want to make sure they’re succeeded.

Formula: =IF(ISBLANK(A2), CONCATENATE(“select from ExampleTbl with (nolock) where ProductId = ‘”,A1,”‘”), CONCATENATE(“select from ExampleTbl with (nolock) where ProductId = ‘”,A1,”‘ union all”).

This formula essentially looks to see if A2 is blank. If it is, the if commands tells Excel to use the first statement if the given criteria are met. But if not, the second command will be used. This will automatically fill in union all to all queries but the last one.  If statements are also useful to make sure data matches:

=IF(A1=C3, “Names Match”,”Names Do Not Match”) which can make comparing data entered into the system and the original product info as easy as dragging and seeing if anything doesn’t match. Useful when you have lots of data entry to check.

My new position at work involves a lot of file manipulation and folder creation/moving.  To make this as easy as possible, the best way is to start with VLOOKUPs.  VLookup stands for vertical lookup, and will look up information from a table arranged vertically. A typical formula looks like this: =VLOOKUP(C2,A2:B20, 2, False).  This is telling the vlookup to look for the information from cell C2 in columsn A2:B20 (your table, the first cell on top left and last on bottom right), and to return the corresponding information for whatever is in cell C2 from the 2nd column of the table.  False tells the command to return only exact matches, while true will look for any matching words. For every category we may have, there is a standard directory (ex: Pet Items\Cats) and so you build out a list of all category names and their corresponding directories. In one cell of your template you will always have to paste the category name(C2), and then the next cell would have a vlookup like this: =VLOOKUP(C2,A2:B20, 2, False). A, the 1st column of the table, would be the names of your categories, and B (2nd column) would be the directory of each category.

I also make brand new folders, and you can concatenate the directory name to add the new names like this. D2 is directory lookup cell, E2 is new folder name: CONCATENATE(“”,D2,””,E2,””) which would get you Pet Items\Cats\NewFolderName in cell F2.

Say you want to create that new folder. Again you can use concatenate, this time with windows command line commands: =CONCATENATE(“CD “”Pet Items\Cats & MKDIR “”,E2,”””) which would essentially create a new folder  in that category for every new name you need.  This drastically reduces the time spent creating new folders and is much simpler than right click, new folder, copy name, paste name, hit enter, do it again. It typically takes me about 30 seconds to create 80 folders in this way, if that long.

You can also use the windows command line and concatenate to copy new files to these folders. Again, this requires standardized file locations for the files in question.  I recommend making one if you don’t have it already, and then adding a new column for the filename itself. The easiest way to get the file names is click start, click run, then type cmd and hit enter. In the command prompt box type this: CD “DirectoryName” and hit enter to change to the needed directory. then type dir > FileList.txt. Dir lists all the files in a directory, and > tells it to make a file out the output (in this case, a text file). Next just open the text file, and paste it into excel. Using text to columns, choose standard width, and move the line between the filesize and the file name, then next and finish. It will create a new column with all names which you can then add into cell F2

Then simply concatenate together the directories with the file names and you’re all set: =CONCATENATE(“XCOPY “”Pets\”,FilenameCell,” “”Pets\Cats\NewFolder”” /s /i”) this command will add in all needed info to copy any files you may need, and you can then select and paste all commands at once to run multiple copy actions at one time. I actually recommend doing 3-5 at a time as you cannot view all error messages after a certain amount.

Moving on to firefox, some of the extensions I use most at work are iMacros, AutoCopy, and Clippings. iMacros basically records all mouse clicks and input into text boxes, which you can save and run again over and over. Think of it like this: If you are constantly pasting in data, then clicking a button, and then typing in something else, that can be recorded once and then when you double click a macro the whole thing is run before your eyes, kind of like watching a ghost use your computer.

What makes this even more powerful is that you can edit the scripts, simply by right clicking on them. The most useful edit I’ve found is telling it to paste from your clipboard, instead of whatever value was used when you first made the macro.  To do this, make a macro and save it.  Then right click it, choose edit, and find the line with the copied information. Highlight the copied info and replace it with this: {{!CLIPBOARD}}  This will tell it to paste whatever’s on the clipboard.  This works really well unless you happen to have copied info your system won’t recognize, like your girlfriend’s phone number or an essay 😀

Other times, you can find out how webpages and dropdown menus were built by editing the macro. For example, at work when we choose a name from a dropdown, we just type it in. But each of those names actually has an ID associated with it, and when viewing the macro after saving it I found that it was not a name that showed up, but actually the matching ID.  Knowing this, you can again replace that ID with {{!CLIPBOARD}} and then quickly get to the info you need just by copying an ID.

Autocopy will automatically copy highlighted text after a user-determined amount of time, and clippings allows you to save your most used responses, like “Hey , here’s the thing you wanted” where you can just copy and paste in the person’s name in the greeting.  It may not be personal but it sure is quick and means you don’t have to do any more typing of repetitive forms and letters.

The uses are endless but your time is not, so try out these commands and make excel and firefox do all the hard work so you don’t have to!

Improving at my job

May 16th, 2011

So I had a review back in February which was basically everything I expected it to be.  It boiled down to that I needed to be more consistent in my work, and that the improvements that I had made to speed up the process didn’t really matter.  I had made a spreadsheet with some SQL scripts to pull values from the system and paste the ones that the offshore team had to enter next to each other to compare if they are correct.  Not only is this much faster than looking at the spreadsheet, the website, and back and forth hundreds of times, but it also reduces the number of pages you have to load to get to the info and the time you have to wait for those pages. To make things worse, our IT department has stuck us with IE as the default browser, and we are unable to change the homepage due to restricted settings.  I ended up dragging all the links I use to the bookmark bar, but pretty much everyone else I work with clicks the new tab button, waits for that load, and then clicks the homepage button, and from there click the “production tool” button which brings you to a page with a hundred links for every department within the company where they get to choose the ones they need at the time.  So basically 3 pages load just to get to the page you actually need.  I despise this and it makes me sick every time I see someone do it this way.  I suggested a simple change only to find out that everyone has a different style and some people apparently prefer to do unnecessary tasks.

Well, I do not. I got firefox installed, changed my home, and installed the following extensions: lastpass (for autologin when the site logs me out), autocopy (no more ctrl+c), Clippings (for canned responses) and iMacros (no more entering of repetitive information).  I’ve also made keyword searchers for ID numbers of suppliers and manufacturers, allowing me to simply type in “s ###” and be brought to the correct page. With iMacros this is even easier: I simply copy the ID and doubleclick the macro I recorded which pulls the ID I copied from the clipboard and brings me right there.  Other things I’ve gotten rid of include entering required names and statuses, instead option to copy a list of items and paste it directly into the box to have them all pulled up automatically.  Pricing? Don’t we type the same things into those boxes all the time?  OK, that’s now a double click.

But wait, I also have to answer questions and solve problems for the customer service reps, mostly when they request products be changed or new ones added.  This is where Clippings comes in.  I created a template message, highlight and choose make new clipping from selection, and then add a keyboard shortcut to paste the standard response to the most common issues.  I’d say this works about 95% of the time.  I’ve even improved upon this by recording it as an iMacro and copying the product name they had requested and adding in a line of code so not only is the message added with a double click but the product ID is also pulled from my clipboard.

So now pretty much all the repetitive tasks of my job are done with a simple copy, highlight, or double click.  I’m amazed when I look back at my first month, I was somewhat annoyed with the amount of work that needed to be done by hand, so I went and learned about SQL and Excel and then automated away those parts.  Now I’ve gone even further which, at least in my mind, allows me to do more work throughout the day but with less effort than my coworkers.

I have a progress check-in coming up on Tuesday where I plan on bringing up these improvements as well as letting my boss know I’d like to take part in training the new hires we will be bringing on shortly.  And as for my consistency?  My February review was just the kick in the pants I needed to get myself into gear.  I went from getting pages of edits back (and some times having to do them twice) to getting just a few lines or none at all, allowing me to move onto the things I’m doing now.  Very excited to see what the future holds (especially if it holds a raise)!

Living in Boston

May 16th, 2011

So I’ve pretty much decided that I hate Boston.  The main reason is that my standard of living has decreased considerably.  What I mean to say by this is that Boston is so expensive it prevents me from living like an adult.  I’m forced to rent a shitty apartment that I have to share with 4 other people just to make it affordable.  In Minneapolis I paid $635 per month for my very own studio apartment. In Boston I’m paying $600 per month for a basement bedroom (upstairs rooms are $750) and I have to share the place with some pigs.  As I’m sure you’ve all seen on my twitter and facebook, dishes sit for weeks at a time.  It’s all one person, but none of us are going to clean up after him.  Apparently he does major cleaning once a month because, as he told one of my housemates, “it needs to be done.”  The thing about that is, if he cleaned up regularly it wouldn’t be even half as bad.

This is also the guy who has our internet account.  It is in his name and we pay him for it.  Last month it was shut off for almost 3 weeks because he had not paid the bill in more than 2 months.  Which is funny when you consider that he only has to come up with $12 of his own money IF HE ACTUALLY HAD OUR MONEY.  Turns out though he’s stealing our money and buying booze, take out food, cigarettes, and whatever else dirty-hipster-skater-biker kids waste their money on.  We just recently had a new internet bill posted on the fridge and the price had gone up by about $11, with the previous price scribbled out.  However on the back comcast posts a breakdown of all charges, and the $11 charge was for reactivation and late fees. I simply wrote on the bill that these charges were his fault and that I was not paying them, as did the rest of us in the house. This guy is just absolutely ridiculous to expect us to not only finance his vices, but then to subsidize his mistakes.

So anyway, I’m in the process of finding a new apartment, which is no easy task.  I’d like to live somewhere relatively close to where I am now, yet away from all the rowdy college students but also close to public transportation. Turns out the area I’m considering right now is a tad pricey for a 2 bedroom.  Enter REDDIT.  I’ve met with some folks from Reddit who would like to get an apartment together and I think this is much more to my liking as we would be forming an intentional community rather than being thrown together randomly.  I need harmony in the place I live in, not constant discord where it feels like we’re all at each other’s throats for the stupidest of transgressions.

My other option is to send out an email to my company and see if anyone will be in need of a roommate come September 1st. That would be ideal because then I know at least that I would be living with responsible people who all have jobs and similar hours so there will never be late music or parties like I’ve had to put up with since moving here.

Hello, Internet

February 7th, 2011

It’s been a long time. I apologize for that. I’ve not had it in me to write on the blog for a long time.

I’ve been busy but mostly with the same old things. Dated a girl, broke up after a month due to some lying on her part. Had a holiday party at work that was kickass, A+++, would go again.

I still hate the place I’m living, and while I talk to everyone I really would want to live with only one of them if given the choice. I’m starting to save money to move to a new place when my lease is up (it will cost at least $2000 with first month/last month/security deposit). Ideally I would live with people from my company who are also looking for roommates, people who have stable jobs and care about living in a clean house.

On top of the issues with the housemates is the house itself, which is more than 100 years old. There were mice, though they seem to be gone now. The basement wall is basically just bricks cobbled together, probably the original foundation, and it leaks whenever the snow melts. Just called the landlady a 2nd time about that, but I really want it to get taken care of BEFORE all the snow starts melting for good.

I also just last week interviewed for a new position within my company on the German-speaking linkbuilding team, basically contacting German blogs and providing incentives for them to link to the company’s German products.

Oh and I’m working on paying off some credit cards and saving some money. I already accidentally paid one off this month by feeing it money from 2 accounts when I thought I was only paying out of one. So ya, now I can use some money I never missed to pay off something else!