Friday, October 24, 2014

HandBrake Video Conversion Software

I've been working in my spare time recently on finishing up my Excel smart search app, and today I got to the point where I wanted to show it off to some friends. The problem is that it turns out it's rather difficult to find free software that also doesn't have malware, when it comes to screen capturing and converting video formats.

For capturing the video in the first place, I ended up going with a program called HyperCam 2. It's not the best software in the world, and it's not open source. It is free, though, and it works for what I need for the moment. One small problem with it is that it outputs in fully uncompressed AVI video. For a 2 minute video at 720p, we have a file that is 250MB. I began looking around for conversion software.

When you google "avi to mp4", you get a massive list of really crappy software which either costs money, is loaded with malware, or both. The problem is that these sites have gotten very good at SEO, and even places like cnet's doesn't really scan them well. On further research, though (involving actual forums), I found an program called Handbrake, and it's absolutely wonderful.

Handbrake is an open source project housed at It's a very small download, and it installed in 15 seconds (including the time it took me to click Accept Terms). It has a pretty simple interface. You select the source file, select the location and name of the new file. You choose what format you want to convert it into, and then click Convert. It took about 20 seconds to convert my 2 minute video. And file size went from 250MB to 5MB. That's a rather incredible reduction. (Granted, I did select Optimize for Web, and the new video is just very slightly more blurry because of that. When I didn't optimize, the video ended up about 30MB). See the screenshot below to check out what it looks like.

As someone who has written several WordPress plugins that I let people use for free, I very much appreciate kind words from someone who benefits from them, and in turn I try to give positive feedback for freeware that I benefit from myself. Hence this post. HandBrake is lightweight and works like a charm, plus it's malware free. Give it a try next time you need to convert video.

Thursday, September 11, 2014

How Far We've Come in 13 Years

It's been 13 years since extremists attacked the USA. 13 years, and the world seems just as dangerous as it was before. The heady days of the Arab Revolution, when waves of democracy and popular rule were sweeping the middle east, are long gone. Egypt is back where is started, Syria never finished falling in the first place, and Libya is in the middle of a new civil war. Not to mention ISIS. Oh and Ebola is slowly decimating Africa, country by country.

But consider this. Osama Bin Laden is dead, along with nearly every senior Al Qaeda commander from the time. The new World Trade Center building is almost complete. Unemployment is getting close to falling under 6%, and the GDP is up. Plus technology marches on. Direct brain to electrical connection, internet so fast you could download the Library of Congress in minutes, fully electric cars which go hundreds of miles between charges, and even reusable rockets which can land vertically, all coming down the pipeline.

The world is in a race. A race between technology and entropy, and I speak of entropy metaphorically. Entropy is the forces of chaos, the forces of destruction. Extremist religion (of all flavors), global climate change, diseases such as Ebola, poverty, and even just the natural slow progression of all governments into totalitarianism.

And it isn't new. History and human civilization are cyclical. The forces of chaos knock everything down, and then we slowly rebuild. We get knocked down, and we rebuild. 1200BC, 500AD, both times civilization collapsed. But each time, we retained more technology than before. The only question that remains is how far we can get before the next collapse. I have high hopes. I look around and see how fast we are progressing, and I think we can beat it. I think that my generation can be the first to permanently colonize something that isn't on Earth. We we can spread out, we can finally break the cycle, and then how far do you think we'll go?

Wednesday, September 10, 2014

Text in SVG: 3nd Attempt (Size Reduction)

Several days ago I wrote about finally solving the text in SVG problem. The key was to pick an open-source font, obtain the woff and svg font files, convert those files into base64 data streams, and plop the whole thing inside the actual SVG itself. And it works!

Problem is, I overlooked the file size. My original PNG logo file is 20KB. The new SVG is 400KB. That's 2000% increase in size! And completely unacceptable to me. I set out to find ways to decrease the size.

My first find was the tspan element. This is an element, similar to HTML's span, which can be embedded in a text element. Instead of having a new text element for every enlarged letter, I can just wrapper those letters in a tspan element and use CSS to apply the font. This helps in rendering time, but unfortunately doesn't significantly change the file size (409KB to 408KB).

I then tried removing whitespace. It screwed up the file and didn't really save space.

My final idea was to look at the cause of the large size. The current SVG had both an SVG and WOFF font file embedded. Looking at the font size, it turns out that the SVG font files were huge. 120ish KB each, for the two fonts I'm using. And an SVG font is readable if one opens it in a text editor. It's kind of odd to look at, but I found a pattern, and I found saw each letter and typical character. I simply removed all characters that I'm not using for the logo. Doing this for both fonts and reencoding in base64 netted me a huge size reduction. The SVG logo is now down from 408KB to 120KB. That is still far larger than 20KB, but it's a gain I can live with given the sharpness benefits of SVG.

This does mean that if the text ever changes in the logo, I'm going to have to go back to my original font files and add or subtract certain characters. But the text is a company name, meaning it won't change often. I've texted in Chrome and Firefox on Android, along with Chrome, IE11, and Firefox on Windows. Take a look at the 408KG and 120KB versions below:

SVG 408KB:

SVG 120KB:

Monday, September 8, 2014

Text in SVG: 2nd Attempt

Last week I attempted to convert a complex logo involving text into SVG, and failed. This was due to the fact that the logo in question used Palatino Tinotype, which is a font that seems to be completely safe because it's installed on all Windows and OSX machines. However, this is actually not an open source font, and Android phones don't come with it. The logo ended up using the default serif font for Android, which messed up the spacing and looks quite terrible.

Additionally, Chrome on Android doesn't support the CSS selector "first-letter", which I had been using to increase font sizes. I have since been able to address both of these problems. I split the "text" elements so that all first letters of increased size were in their own wrapper, which I applied a class to. Increasing the font size using this class works on all browsers. The font issue was more complex. The owner of the logo declined to pay $165 to buy Palatino Linotype, so I had to find a free alternative. After searching for a while, I came across TeX Gyre Pagella. This is a free font, and it looks extremely similar to Palatino Linotype. And so without further ado, I present the final product along with original PNG for comparison:


Original PNG:


It turns out at at the time I posted this, I was STILL missing something. When SVG files are embedded, they can't have any external dependencies. This includes referencing fonts. I therefore had to convert the fonts to a data URI stream. To be entirely honest I have no idea how it works, except in concept. It takes the entire file, converts it into a special text language, and I insert that text blog into the spot that I'd put the font address. I found a very nice tool, which let me upload the font files.

One issue I now see is that the SVG file is much larger. We are talking 400KB instead of 5 or 10. This somewhat destroys a large advantage of SVG in the first place, which is the smaller file format. However, it retains the perfect sharpness at all sizes, which is worth it. I've edited the file which is previewing above, so it should look great on all devices, finally. If it doesn't on whatever you are viewing it in, please let me know!


Turns out that IE9-11 screws up the SVG if it is resized. This is because IE requires an extra attribute on the SVG element, called "viewbox". Since my SVG width is 1220 and height is 200, I have to add this: viewbox="0 0 1220 200". More information here.

Sunday, August 31, 2014

Downside of SVG - Fonts

My third attempt at conversion to SVG is a logo with text. I spent about 4 hours doing it, because it's got 16 different SVG elements without counting the linear gradients (which are creating using elements instead of CSS it turns out). In the end, it looks really great, and the text resizes smoothly in a way that you normally requires javascript:


Original PNG:

Here's the thing. If you are reading this post via a Windows or OSX -based PC, then the two should look almost identical. If you are using Firefox on Android the same will apply. However, Chrome, Dolphin, and the Android browser itself, will all render this incorrectly. See the comparison below. The top is Firefox for Android, the bottom is Chrome on Android:

The problem is that the font I'm using is Palatino Linotype, which ships default with Windows and OSX (and somehow Firefox for Android??). Chrome doesn't have it though, and so pulls in the default Chrome serif font. It's thicker and so looks too big.

All of which leads me to a fundamental problem of SVG, which is that it's not prerendered, and because of that it relies on the browser having all rendering resources. If you notice in the comparison, there's another problem. The first letter of each word isn't a large size in Chrome. This is because Chrome doesn't support the CSS rule "first-letter" for SVG text elements. As I take SVG into more complex situations, I'm becoming less sure it is really read for primetime. Which is sad, because when I compare the SVG and PNG versions of this logo on my phone, the clarity difference is striking. I just have to find workarounds to all the things that Chrome is screwing up.

In regards to the font-face, I just need to embed the font or have the SVG pull from a hosted source. If one is using a commercial font, however, one runs into issues. Palatino Linoype costs 150 bucks, so for this particular logo I'm out of luck (unless someone knows a free alternative that looks close enough that most people won't tell the difference??). It can be mitigated by using open-source fonts. As to the first-letter issue, the alternative is to split the text elements into more text elements and apply the large size via classes.


I've started a StackOverflow question about workarounds to the first-letter issue. Hopefully someone will have a clever idea.

Monday, August 18, 2014 SVG Feature Request Update

Less than two weeks ago I submitted a feature request to, for the ability to embed a 'pen as an SVG image. Not only did they respond within a few days saying that they'd add it to their list, they actually got it working .... in less than two weeks. Take a look at the logo I converted to SVG a few days ago, emdedded below from CodePen. It looks and acts like a simple image. This is how I'd be calling it in a production site, as an image. It's really easy now to compare the difference between the two image types:



(Displayed at native resolution)

Now, if CodePen could add the ability to take snapshots and version history like JSFiddle does, I'd have everything I need in one service and wouldn't have to use both.

Sunday, August 17, 2014

Shift In Focus

Over the years, this blog has been somewhat of a scattershot of topics. Initially, it had a very political/civil liberties focus, but that branched into more theoretical topics, such as ethics and philosophy. As I moved into web development, and WordPress, those became topics of greater frequency. And scattered throughout have been posts on music, humor, and even poetry I've written.

You may have noticed that I haven't posted much about politics for some time, and the reason is that politics has become increasingly depressing to me. We live in a society which increasingly embraces constant surveillance, in which we daren't videotape a police officer out of fear of retribution. A society in which we can be sent to prison for shooting a home intruder who invades without a warrant or even warning, just because they happen to have a badge and made a mistake on the address. There are some bright spots. Marriage equality has won. The falling tree may not have hit the ground, but gravity took over years ago and the conclusion is foregone. But in almost all areas, the world has become a scarier and more depressing place.

I also don't write about civil liberties as much, because I have grown increasingly disillusioned and fed up with all sides. It is absolutely wrong to judge someone for the color of their skin, or for the person they love. But that cuts both ways, and as someone who has been judged for being a white male by my supposed allies, my willingness to get involved has decreased over time. Yes, I understand that I have white privilege, and any automatic judgement I get for my skin is nothing compared to the judgement that a transgender person of color gets. But time and time again I see a level of automatic hate coming from the non-cisgendered community that almost approaches the level of hate (that I've fought against) from the fundamentalist religious faction.

Which brings me to my final point. What I HAVE been writing more about recently is code. The beauty of PHP, of HTML, of CSS ... is that they are languages of utter and complete honesty, and logic. If you write something, it's either correct or incorrect. There's no debate, there's no hatred. Certainly people might have differences of opinion on best practices, or what browser to use, but in general it's a much more pleasant area to spend my time in. Additionally, the communities are some of the least judgmental communities that exist. No one cares about who you are or what you look like. If you can write good code, or design great UX, or even just come up with good ideas ... that is all that matters. WordPress contributors are from all around the world, and almost no one brings their societal/cultural baggage with them. Code is king, and I like code.

Saturday, August 16, 2014

SVG: A More Complex Logo

My logo is extreme simple. It has two shapes and is all straight lines. Because of this simplicity, I had no trouble converting it to SVG, and the entire file ended up being four lines of code. My next challenge, then, is to convert a more complex logo, one which involves more shapes, and shapes which involve curves. My partner at Catstache has a logo which fits the bill. It's complex, has many layers, and is more than one color. So can it be done well in SVG? Lets take a look at the logo in PNG first:

As you can see there is a pen (which also is two letters), plus an ink drop, and a curved line. And this is all on a double circle. We'll need 6six different shapes to create the entire thing. Lets get started!

We first need to create the SVG wrapper code. I'm going to give it dimensions of 250 by 250. These will scale when it's displayed, but it's large enough that we won't have to use partial numbers much:

<svg version="1.1" baseProfile="full" width="250" height="250" xmlns="" xmlns:xlink= "">

Inside that code, we'll add all of our shapes. SVG does layering in order of code. The first element that you type will be on the bottom, and the last one will be on the top. So we'll start with a gray circle. To create this, I'm going to use , and put it in the center by saying that the center's y and x coordinates at both 125, and the radius is 125:

<circle cx="125" cy="125" r="125" fill="rgb(24,24,24)" />

This gives us: (JSFiddle)

Next up is the white border. Since this isn't on the outside, we need another circle, slightly smaller. It needs a white border, and transparent fill.

<circle cx="125" cy="125" r="115" fill="transparent" stroke="white" stroke-width="4" />

Adding this gives us: (JSFiddle)

Now that we have the background done, we need to start on the shapes. I'm going to do the pen first. I'm going to create a line using , and it will have two segments, all straight. The way this is created is really odd. You basically use letters as commands, inside the "d" attribute. "M" with coordinates is where the line starts, then "L" with coordinates means it moves to those new coordinates. A line with 2 segments has 3 points. So we'll use an "M" and two "L"s.

<path d="M192 50 L170 111 L186 117" stroke-width="4" stroke="white" fill="transparent" />

Adding this gives us: (JSFiddle)

The bottom portion of the pen shape consists of 4 segments, which means five coordinates. We'll use another , this time with an "M" and four "L"s.

<path d="M183 125 L167 170 L163 161 L146 175 L166 117" stroke-width="4" stroke="white" fill="transparent" />

Adding this gives us: (JSFiddle)

Next up, we need the ink drop. When I researched the shape, I found out that it is possible to make an ink drop. It's extremely complex though, so we are going to simply slightly and use an ellipsis. At most resolutions, it will be a negligible difference anyway. I'm also going to rotate it, to get the long radius angled towards the pen tip. This shape is similar to the circle, in that we declare the coordinates of the center. The difference is that there is an x radius and a y radius. Also, we are rotating 15 degrees, which is another attribute.

<ellipse transform="rotate(15)" cx="183" cy="150" rx="3" ry="5" fill="white" />

Adding this gives us: (JSFiddle)

Finally, we need to create the curving trail that the pen has already left. This is the most complex part. SVG has several ways to do curves, and to be honest I don't really fully understand them all. But the easiest is a method in which you define 4 points to make a single arc. We still use the , and still use the "d" attribute. Instead of an "L" command, we use a "Q" to create the curve. For this specific shape, we'll need to combine several arcs. After playing around for about a half hour, I got a long that looks very similar to the goal.

<path d="M130,193 C81,208 132,153 71,170 Q32,181 49,158" stroke-width="2" stroke="white" fill="transparent" />

Adding this gives us: (JSFiddle)

Success! The final code ends up being:

<svg version="1.1" baseProfile="full" width="250" height="250" xmlns="" xmlns:xlink= "">
<circle cx="125" cy="125" r="125" fill="rgb(24,24,24)" />
<circle cx="125" cy="125" r="115" fill="transparent" stroke="white" stroke-width="4" />
<path d="M192 50 L170 111 L186 117" stroke-width="4" stroke="white" fill="transparent" />
<path d="M183 125 L167 170 L163 161 L146 175 L166 117" stroke-width="4" stroke="white" fill="transparent" />
<ellipse transform="rotate(15)" cx="183" cy="150" rx="3" ry="5" fill="white" />
<path d="M130,193 C81,208 132,153 71,170 Q32,181 49,158" stroke-width="2" stroke="white" fill="transparent" />

Wednesday, August 6, 2014

Creating SVG with

Over the past few days, I've been exploring the SVG image format, and I converted my own logo, with great results. I decided to try my hand at a more complex logo, and I decided that instead of typing, saving, and refreshing the browser, I'd use I chose this testbed over my normal testbed due to it's live updating capability.

I'll go into detail another time about the new logo, but suffice to say I got it working. To test in a webpage, I really wanted to just take the codepen that I'd created and embed it. They have a nifty feature where you can write JS or CSS in one 'pen, and embed the whole 'pen into another. Turns out this wonderful recursion doesn't work with inline SVGs though. It would be a great feature to have, though, I think. Apparently the creators of CodePen agree (and are also VERY timely with feature request responses. The ability to embed inline SVG 'pens into another 'pen is now on the feature shortlist!

Monday, August 4, 2014

SVG vs PNG Logo Results

Earlier today I wrote about the method I used to convert my website logo from a scalar PNG to a vector SVG file. I wanted to share the results with you.I opened the site up in Firefox, and then CTRL+ zoomed in as far as possible. Then I screenshot'd a before and after:

Scalar PNG Logo:

Scalar PNG Logo:

Another nice feature is a size reduction of the image file. I went from 604B to 294B, which is a better than 50% reduction! Granted, both files are incredible tiny, but I've tested with a more complex logo and the reduction is even better, down from 2340B to 704B.

Converting Logo to Scalable SVG


When coming up with a logo, I took inspiration from the first letter of my name: A. I played around with many variations, and eventually came up with a symbol which resembles an A but isn't exactly the same.

I took my sketches out ideas, and went into to come up with a sharp looking PNG icon. I started out large, at 500px by 500px, and then resized down to come up with an icon which looks decently sharp (I've played a gray background under it to make it easier to see):

I plugged it into my website (my WIP website which has been sitting on my localhost for 6 months now, awaiting the availability of, and left it there.

Recently I built a site for my partner at Catstache, and when I tested it on a high-res screen, her logo looked terrible. I realized the problem was that it was the only thing on the site that wasn't vector. I immediately remembered my own logo, and sure enough when I tested, it too looked blurry when zoomed in. I set out to rebuild it in a vector format.


I chose SVG as my format because it's the mist widely support vector format. Every web browser will correctly render an SVG image, and it'll look sharp at any size. The issue is that one has to either build the image with a vector program (which I don't have) or code it manually, which sounds complex. Given my lack of Photoshop, I looked into coding it by hand.

To my surprise, I found that it's actually incredibly simple. You basically imagine a grid, starting from the top-left, and moving down. You define shapes, and give them an X and Y coordinate (higher being further right and down). That's it. I broke my logo into two polygon shapes, and defined each breakpoint.

<svg version="1.1" baseProfile="full" width="50" height="50" >
    <polygon points="15 5, 11 20, 39 20, 35 5" fill="white"/>
    <polygon points="10 25, 5 45, 15 45, 16.5 39, 33.5 39, 35 45, 45 45, 40 25" fill="white"/>

This ends up appearing as:

You should be able to see it, and if you zoom this page, it should stay super sharp. And only 4 lines of code. Success!

EDIT: I just viewed this post on my Galaxy S4, and the difference between the PNG and the SVG is enormous. The SVG is far sharper.

Saturday, August 2, 2014

Mindstate - New Song By Computer Magic

Computer Magic just released a new song, for free as usual. Have I ever mentioned that I love free music?

If you like it, go old school and buy a cassette or vinyl (I can say from experience that the vinyl looks great ... it's part of my collection of vinyl records that I'll be able to listen to someday when I get a record player).


Yes normally I don't recommend buying things, just like I said a long long time ago I'll never put ads on here. However, I'm not getting paid by Computer Magic, and I doubt she knows I exist; this is just a recommendation based on my own music likes.

Tuesday, July 29, 2014

First WP Bug Report

I reported my first bug with WordPress today. I created a new development site,, to test out my plugins with WP 4.0. Admin Classic Borders works perfectly, but I found an odd occurrence with Featured Galleries. Using it seemed to break the post editing screen.

I tested and found that the problem is a change in the header above the editor for 4.0. When this new version of WP is released, the header will become sticky, and it'll follow as you scroll down the page. It works by using JS to detect when a user starts to scroll, and changing the header from normal positioning to fixed, which lets it follow you. When a user scrolls upwards, the fixed positioning is eventually removed.

The problem occurs when you are scrolled down enough to cause the fixed positioning to kick in, and then suddenly are at the top of the page, without scrolling up. The can occur when remove a metabox, such as featured image. This causes the page to shrink suddenly, but doesn't trigger the JS to fix the header. I'm glad, because it's a problem with the new header code, not with my gallery.

Hopefully I found it early enough to be fixed before 4.0 comes out. You can follow along, and read more about it, here:

EDIT: Ticket was just assigned to the 4.0 milestone, meaning it has to be fixed before 4.0 can be released.

Friday, July 18, 2014

WordPress Media Selector - Mobile

WordPress 4.0 is coming along quite nicely, with Beta 2 being due soon. One area I'm very excited about is a makeover of the mobile version of the Media Selector. This is the popup that lets users insert media (pictures, video, etc) into posts. On the phone is currently looks very broken, so there's a big push right now to give it an overhaul. This is what you'd see on a phone right now, with WordPress 3.9:

As you can see, everything is squished because of how narrow the screen on a phone is. To address the problem, two major changes have been made. If the sidebar is removed, and the options a the top are changed from text links to a dropdown menu, everything gets a lot nicer. Throw in some CSS to make sure all the images are in a nice looking grid, and suddenly you have this:

Two changes can make a huge difference in the usability. I'm very excited about this change, along with everything else that is coming down the pipeline regarding media. WP just keeps getting better.

Daft Punk

Over the past year, Daft Punk has exploded in popularity. Random Access Memories and Get Lucky both won awards, and in fact for a while I couldn't go more than a few days without hearing them on the radio. While I do get a flash of hipster-like jealousy every once in a while, I am overall very very happy that they have finally achieved this level of recognition.

One small thing that I have a problem with though, is that everyone loves Get Lucky and ignores the rest of the album. There are some incredible songs, including a couple I think are even better than Lucky. Case in point, Beyond. The words are moving, but the end just hits you like a wave of pure eargasm. Take a listen.

Friday, July 11, 2014

WordPress Plugin Update

A while back, I wrote about an idea for a plugin that I was going to try and write. It would add a folder system to WordPress's media capabilities. As I later explained, this was somewhat beyond my abilities at that point. I have since, however, written two separate plugins, which are currently up on the WordPress repository.

Admin Classic Borders

In WP 3.8, the admin backend of WordPress was completely redesigned. Taking queues from Windows 8, WP was made "cleaner", which means flatter and with less borders. Overall I think it looks good, but I like borders between items. I think borders make a site or app easier to use by cleanly dividing items.

To address what I perceive as shortcomings with the new design, I wrote some custom CSS to re-add borders, along with a few other things. Admin Classic Borders is simply a plugin wrapper for that CSS, along with a settings page to let users customize.

It's currently has a 5-star rating an almost 1000 downloads, which I think says quite a bit for my school of design thought. My second plugin, Featured Galleries, is a little more in-depth, so I'll discuss it in a separate post.

Thursday, July 10, 2014

The Great Sagas

Posted by George Takei today. Worth a read.

Wednesday, July 9, 2014

To Be [Creepy] or Not To Be [Creepy]

One interesting thing that happened during my recent vacation made me question my definition of being creepy. I'll explain what happened first, and then what I did about it. The latter is what I'm wondering if is creepy. Story time:

During the airplane ride to Venice, I sat several seats away from girl who I'd never seen before. This isn't really significant because the entire plane was filled with guys and girls I'd never seen before. We both got off the plane and if I'd never seen her again then she would have been just another random person. But I did. The next day, in fact, as I was boarding the ship. I pointed her out to my wife and said, 'Hey look, she was on the airplane with us!'. Interesting coincidence, I wonder if we'll see her a third time.

Well, we did. Then a fourth. Then a fifth. Then a sixth. Seemed like every day we'd see airplane girl somewhere around the ship, or around town in the ports we visited. Which was kind of amazing because we were talking private tours with a private tour guide, not the ship-booked tours. Couple days before the end of the cruise, we had sighting 14. My wife and I were taking great amusement in watching this number grow, and I felt kind of odd that this person I'd never met, never talked to, and would never see again, had become such a major part of each day. Where will we see airplane girl today? So I decided to let her in on the game.

I walked up and said (paraphrasing) .... Hello! We've never met, but you were on the same airplane as me coming over. My wife and I keep seeing you around, over and over ... 14 times in fact. It's kind of become a game, where will we see airplane girl today. I felt kind of weird though, talking about you, with you having no idea, so I figured, what the heck, I'll never see you again, the cruise is almost over, I'll say hi. So hello!

She actually took it quite well. She seemed surprised, but laughed and we talked for a few minutes about where we were from, and how much fun the cruise had been, etc. And then I took my leave. I did see her one more time, bring the total airplane girl sightings up to 15, but she didn't notice me (despite passing within 2ft), and so I know nothing more about her than that she too is from the USA.

So my question is, would it have been more creepy to continue to keep track of how many times we saw her, without telling her? Or was it more creepy to go up and talk to a random stranger and say, hi, I've been watching you. I'm not sure. But it doesn't really matter I guess, because I'm the type of person that will go up and say hi, 99% of the time. Also if by some cosmic coincidence you happen to read this, airplane girl, I'm sorry if I creeped you out, but thank you for making my vacation more enjoyable.

Image Sharing Online

How do you share your images with friends and family? If someone asked me years ago, I'd have said Photobucket. I was the only person I knew who used it, but that didn't bother me. Problem is that Photobucket got increasing slow/laggy. Way too much scripting and fancy animations, and the design wasn't anything special either. Plus it cost money to get the full capabilities. So where else to turn .... Flickr? Picasa? Truth is, I stopped using photo sharing sites entirely. Facebook happened. I can share images there, much more easily. I don't have to worry about who will see the images, and I can sort into albums. So that is where I ended up for a while.

As time has gone on though, I've become somewhat disillusioned with Facebook. The interface for viewing could be nicer, and I can't sort into sub-albums. Google+ Photos has a spectacular interface, and there's a program to bulk upload. But again, no sub-albums. However, there's a new (or shall I say reborn) player in town. Flickr.

I used to hate Flickr. The design, frankly, sucked. However, it got a complete makeover recently (thank you Marissa Mayer!):

More importantly, I can organize photos into albums AND sub-albums. This means that I can create a 2014 Cruise album, with photos organized into albums inside based on the day/location. One for Rome, one for Athens, one for Istanbul, etc etc.

Tuesday, July 8, 2014

Belated Honeymoon

Soooo I just got back from my belated honeymoon. My wife and I got married in April, but we made an unconventional choice to postpone our honeymoon. The reason was that some of her extended family had booked a Mediterranean cruise. Her grandma offered to pay for us to go, as her wedding present. So, a few days by ourselves in April, or 2 weeks in the Mediterranean? I think the choice was obvious.

Granted, that meant combining our honeymoon with a family trip. But we had our own room, and spent a lot of time by ourselves. We only really combined as a group for the offshore tours. The evenings were on the ship itself, and it was pretty amazing. People close to me will tell you that I've wanted to go on a cruise for a looonggg time. The problem has always been that A. My family couldn't afford it, and B. My brother has a phobia of boats/ships. I've also always been fascinated by Roman and Greek empires (love history). So it was kind of perfect.

In 2 weeks, we visited Venice, Athens, Istanbul (Constantinople), Mykonos, Naples, Rome, Florance, a beach town in France who's name I forget, and Barcelona. There is wayyyy too much to really discuss here, so I'll just hit a few highlights. Seeing the Hagia Sofia in Istanbul was incredible. It's a museum now, and you can go explore it. The Amalfi coast is utterly epic. Massive cliffs ... pictures don't do it justice. Leaning tower of Piza is way more impressive in person that pictures. And a lot more.

The ship was awesome, despite being old. I was disappointed a bit by the entertainment and food options, and several of our traveling companions who've been on more cruises confirmed that this wasn't the greatest ship in the world. But despite being 30 years old, it was in great condition, and it was really fun going to visit my grandmother-in-law's cabin to use her balcony (we had only a window, but she had the Presidential Suite) to watch the sunsets.

From my engineering perspective, besides the leaning tower I think the best part was Barcelona. The city is laid out on this angled grid, with very wide streets and very wide sidewalks. It's quite unique, and a great place for any transportation engineer to visit.

I feel like I'm leaving 90% out, but that's okay. I might make additional posts about specific things, but I just wanted to write up a little summary. I'll be putting up a few more pictures as well in the coming days. I've been super swamped at work the past 2 days, catching up from the past 2 weeks, so I haven't really had much time.

Wednesday, June 11, 2014

Apps for Office

MS Office has long been the gold standard when it comes to office productivity software. In terms of both marketshare and the software itself, Microsoft has achieved complete success. The problem the company faces is becoming a victim of it's own success. How does one keep making money from a mature product in a saturated market?

Microsoft's primary strategy is moving customers to a subscription model, which I've written about subscription models before. Another way to keep customers at the table, though, is to improve one's product, and any product can be improved (or so the company wants you to believe!). To that end, the current version of MS Office has a whole host of changes. Most are utterly meaningless (UI flattening, conditional formatting improvements, etc). One has the potential to be very useful, though.

"Apps for Office" are small web applications that run inside MS Office. The idea is to allow developers to use the flexibility of web technologies to help improve information world flow inside an Office document. Some cool examples would be interactive maps in Excel, live stock price tickers, and a Flickr image search box.

With these in mind, I began exploring the Office Javascript API, which is the layer of javascript that lets my Office App talk to Office itself. My initial app idea was called Quick Contacts. The idea being that you'd store your contact information in Excel. Last Name, First Name, Phone, Email, and then as many custom columns as you'd like. (Projects, Location, Company, Title, etc). The app would be a sidebar app which would contain a simple textbox on top. Upon typing from the user, the letters in the textbox would be instantly searched for in the sheet, matching and finding contacts.

What I failed to take into account is that the Javascript API doesn't work. You can't tell the address of the currently selected cell (A14 for example). You can't even tell the currently selected sheet. That means that if a user has multiple sheets, then they can no longer use the app, because it'll pull from the sheet that was mapped, not the current sheet. I questioned the official support forum and was told about some complex hacks, but I have zero desire to spend a large amount of time on something that should be a simple if statement. The idea of Apps for Office is great. Maybe in Office 2016 they'll include a working version.

Wednesday, May 21, 2014

What Happened

Well, my last post (a long long longgggg while ago) mentioned that I was changing over to a new blog. This didn't happen. Long story short, it was supposed to be tied in to my new website (, but my new employer wanted me to redesign their website. I hadn't finished, so I used that as a development area. And it's still not finished. Months later.

It's going to be done by the end of this month though, so I can FINALLY get everything transferred over. So, just a recap of things that happened that I was interested in and would have wrote about since my last post:

Xbox One and PS4!

I got a Twitter account!

I got a new job!

I got MARRIED!!!!!!!!

I moved to a new city.

Marriage Equality is spreading like wildfire.

I've gotten really involved with WordPress... two plugins, I'm on a core plugin team, and I've submitted several improvement tickets.

I've gotten involved with StackOverflow as well.

And a lot more. Anyway, I'm still alive.