Archive for category Work
I like my lists. I also like to keep them simple. Sites like, rememberthemilk.com, todoist.com and other are great for people that like that level of record keeping. The problem I have with them is that I spend more time organizing my todo’s that actually doing the todo’s. It’s actually a character flaw of mine, I like to monkey with features so I endlessly tinker. I actually enjoy installing new software just to see how the developer implemented standard features, or even new ones. Like a graphic designer trolling the web looking for inspiration.
When Gina Trapani put this out, I loved it! I do a fair amount of work from the command line so it was always available, but then I also do work on my desktop. Which brings me to my number one annoyance with computers, task switching. Yes, it’s really not a huge thing, but nothing annoys me more than trying to flip through my apps looking for what I was doing 10 seconds ago then totally forgetting what I was doing in the first place. For some odd reason task switching is a trigger for my ADD to kick in at high volume.
Now I found this little gem so I can keep my todo’s even more conveniently located. I haven’t tried it out yet but here’s hoping I can remember it when I get home.
I’ve been complaining that I can’t run Linux at work since they moved to the new VPN. I’ve tried time and again to get it to work but it is a proprietary system that only has a client for OSX and Winders. I’ve been using Win7, which all in all isn’t too bad, for about the last year. I was talking with one of the newer guys that got a shiny new MacBook Pro when he started about building our project. I told him that when I kick off a build I generally have about 17 minutes of browsing the web time since the build process basically renders the computer almost unusable. He was dumbfounded that it too me 17 minutes to build our project because it only took him around 3 minutes for a full clean and build. Surely he was misinterpreting what I was doing, there is no way the build times could be that different, hey, it’s all just Java.. Sure enough, he showed me and the project built faster than I had ever seen.
He started up IntelliJ in less than 20 seconds and I got pissed. Usually when I get in in the morning the first thing I do is start up IntelliJ, then I go get coffee, go to the bathroom then commando crawl back to my desk just in time for IntelliJ to have started up and begun indexing my project. I immediately put in a request for a Mac.
I got my shiny new MacBook Pro a couple weeks later and eagerly started setting up my development environment on it. I gleefully flipped the bird at my old PC every time I ran the native command line or built one of my projects. So far everything has been going swimmingly, I have completely transferred all my work to the Mac and I’ve been working off it exclusively for the past couple of weeks. There are only a couple of things that make me raise and eyebrow about how the Mac works
1) What the hell did Apple do to the Unix file system?? What is this /Library and /System and other odd folders doing in my root? Best just to delete them since they look erroneous (joking.. don’t really do this, it really messes with your system)
2) Task switching, I know it’s a little nit picky, but I seriously can’t Cmd+tab to a minimized program? Why show it in the list if selecting it isn’t going to do anything.
3) Does everything seriously cost money on a Mac? I guess the notion of Free as in beer hasn’t made it’s way here yet. Yes, I’m a bit on the cheap side, but hey, I use a free operating system I’m not going to pay $5.99 for a better task switcher for my work Mac.
4) The command and control keys need to be put into a ring and only one of them gets out alive. Seriously Apple, which one is it going to be? It seems Apple wanted to replace the control key at a system level with command but all the application developers disagreed and continued to use the control key for all their shortcut commands. This is an area of endless frustration for me, it usually takes me 3 tried to copy anything then another 2 to paste it.
Thats it for now, I’ll be sure to post some more annoyances in the future. So far I like the Mac better than my PC, but it isn’t as perfect as the Mac fan-boys would lead you to believe.
I am stuck on a Win7 machine at work. I used to run Linux on it but then the company changed their VPN to this Windows and sorta-Mac supported only solution. I had to dump the penguin so I could have access outside the office, kinda important that. So yeah, other than my world passing me by at half the normal pace there is little difference, oh wait no, that’s completely inaccurate. The thing I miss above all else is the command line. I tried to replace it with the Windows Powershell but I seriously didn’t feel like learning everything from scratch, I did give it a concerted try though.
Just for comparison, take all the nifty bash/zsh commands you love and enjoy on a daily basis, now rename all of them, and don’t get cute by naming them something easy to remember. No, use something long, and make sure there are plenty of hyphens. Now take all the options you were used to passing to those commands and rename them too, almost there hang with me. Now close your eyes and just mash your head against the keyboard to get a rough idea of what it feels like to replace the Linux command line with Powershell.
Well I did what any self respecting Linux lover would do when relegated to Win-land, I installed Cygwin. Yes, that bastardization of *nix on a Windows shell. Or something, I couldn’t come up with anything snarky there. Regardless, running Cygwin offers a glimpse of home without actually letting you get there. It’s slow sure, but it offers enough familiarity that I actually enjoy using it over the endless point and click of a standard Windows user experience. The standard cygwin command line is terrible, running RXVT native makes it manageable. However, I just found Mintty! It’s sort of like Putty (based on some Putty code I gather) and with the proper amount of tweaking can actually result in a likeable experience. Couple that with screen and I hardly miss Linux…who am I kidding, I still go home at night and just poke around my laptop (running Xubuntu) just to feel better about myself.
I have a good number of servers I have to keep track of at work, and they all have rather long domain names, and I really haven’t gotten used to the subnetting at my job yet. So what is one to do? Well, I did what any concerned Linux user would do, I aliased all of then in my hosts file. Sort of like this:
192.168.125.133 dev1 192.168.125.137 dev2 10.6.8.201 uat1 10.6.8.202 uat2
I can hear you say already, “Jeff, just memorize them, there are only 4!”, yeah, ok, this is only about 1/16 of the aliases I have, so that becomes a bit more difficult. So here is my conundrum, do I continue with the aliases, or do I go cold-turkey and try to memorize them. The upside of aliasing is that I can fly when I am at my machine, its a no brainer to scp or ssh to a machine, but then I look like a total retard when I am at someone else’s computer, “What do you mean you don’t know the IP or domain name of your dev server!?”.
So therein lies the subject of my pondering..
A reoccurring issue with web development has always been cross-browser checking. Does the site work and layout correctly in Firefox, Internet Explorer, Chrome, Safari, Opera, blah blah. A huge problem with doing all my development on Linux is that I can’t easily check Internet Explorer on Windows. Most of the rest of my team also decline to use Windows and most of them use Apple (a whole other debate, but I will skip that for now). Our clients are totally Window’s shops so this presents a problem. We have tried running VM’s locally, but this has its own issues such as resource usage on your local machine. You start up a VM and watch all your RAM go bye bye.
The solution I have for this now, which seems to work alright, is to run another box with a decent amount of RAM and let everyone RDP into it for testing. This coupled with the virtual machines that Microsoft provides for testing has been working very well.
I have been working to implement a Google custom search engine into a clients website. I have had to pour through the documentation to fully understand how it works and I am both impressed and revolted simultaneously. I keep getting the feeling that this stuff was originally developed by people that are obscenely smarter than I am. Its obviously brilliant, but like any brilliance, its usually offset by some other glaring omission.
First off, the search API from Google. Why is the primary search API deprecated and the recommended replacement not even out of labs yet? So let me get this straight, I can either use the API that will EOL’d at some unknown time by Google without warning, or I can use the unstable labs API that could and most likely will change in the future. Sounds like a call from the client complaining that their site is broken just waiting to happen.
Second, the API is written in a way that leaves massive holes of undocumented functionality. Usually when you document an API you include ALL the functionality so people can fully utilize all the features. So I am continually finding blogs and other bastions of literary excellence revealing ‘hidden’ features of the Google search API. I have implemented a fair amount of the code I have found on these sites and I am still flabbergasted as to why Google would just leave this stuff out of their documentation.
I am going to be writing up an article on implementing a Google custom search engine over the next few days, one, so I can remember if I have to do it again in the future, good documentation is sparse on this subject, and two so others can refer to it and hopefully avoid some of the frustration I have gone through to get this to work.
I have been coding for over a decade now and one thing about other coders has never ceased to annoy me. In defense of my rant, I present two snippets of HTML code, see if you can pick out the difference and the source of my exasperation, I’ll leave it up to you to make the determination as to which is the good and which is bad:
<div id="content"> <div id="content-wrapper"> <h1 class="layout-indent">Page Title</h1> <div class="separator thick-separator"> <div class="thick-separator-cap thick-separator-left-cap"> </div> <div class="thick-separator-cap thick-separator-right-cap"> </div> </div> <div class="layout-indent"> <div class="yui3-g"> <div class="yui3-u-1-3"> <a href="#" class="link action-link ">Filler Text....<br /> <img class="link-arrow" src="img.png" alt="" /> </a> <div class="clear"> </div> </div> </div> </div> </div> </div>
<div id="content"><div id="content-wrapper"> <h1 class="layout-indent">Page Title</h1> <div class="separator thick-separator"> <div class="thick-separator-cap thick-separator-left-cap"> </div> <div class="thick-separator-cap thick-separator-right-cap"> </div></div><div class="layout-indent"> <div class="yui3-g"><div class="yui3-u-1-3"> <a href="#" class="link action-link ">Filler Text.... <br /><img class="link-arrow" src="img.png" alt="" /></a> <div class="clear"> </div></div></div></div></div></div>
The structure of these snippets is identical, they probably layout the same between browsers too. I guarantee you that if anyone ever had to make a change, the first one would be far and away easier to change. So why do people still insist on editing spaghetti code? This isn’t just an HTML issue, it happens in every coding language I have ever encountered. I just want to say to people, “Would it kill you to use the tab and enter key from time to time?”, its as if not indenting their code will somehow make them work faster. “Look boss, I saved 2.78 seconds last week, by not formatting my code!!” In my opinion it really shows that someone [programmer] has pride in their work if they spend the extra few minutes documenting and formatting their code.
I enjoy running Linux, not only because I am sort of a fanboy about it, but I have been running it long enough to be much more proficient in it when compared to anything else. There are things that drive me nuts about it, just there are with anything. In my job, I am a front-end/UI developer. Not a designer, mind you, I am not terribly good at dreaming up good user interfaces, but I am good at implementing them. This is in the web-based world also I have to add. So that brings me to the biggest gripe I have about my profession, browser differences, or more specifically Internet Explorer.
I have the pleasure of being able to run Linux on my workstation, but I still have to keep a Window partition around so I can reboot occasionally and check my work in Internet Explorer. Usually there aren’t a lot of issues to correct for it to layout right in IE, but sometime there are major problems and I find myself spending the whole day in Windows. *sigh… I guess you can never really escape
There’s nothing like, fixing a huge bug in a nationally visible app that has stumped developers both in the US and India…that I introduced. 😛
Should I be proud, or hiding under my desk?
Here is the situation, I need to move a website running from server A to server B. Server A is starting to show its age and need some upgrades (hard drives, RAM, and OS). I needed to move a very important web site from server A to server B, so we can take down A for an extended period of time. So after using my best buddy rsync, all the files are in place on server B, all I need to do is point all the services that used to point to server A now will be pointed at server B. Easy right?
Try number 1; Rsynced all files to server B, flipped the switch and realized that something was wrong with the SMTP server, and I would need to flip it back to make the corrections. 1 day lost..
Try number 2; Rsynced all files to server B (there are people actively adding files to this server throughout the day); flipped the switch, and realized that I never installed a custom backup program that was running on server A, crap, I can’t find the source, flip it back to do some searching. Another day lost..
Try number 3; Flipped the switch, then found that the version of PHP installed on the new server had some issues with the CMS software, and I forgot to rsync the files over before I flipped the switch, crap! Flip it back to do some research on the issue. 1 week lost while I tracked down the issue with PHP 5..
Try number 4; Rsynced all the files to server B, flipped the switch…waited for the other shoe to drop…crawled out from under my desk and looked around, everything was running, nothing was broken..I am fully up and running on server B now.
I really should have written down everything that was required since I am going to have to move the site back to server A soon…