Tuesday, January 31, 2012

Why your recruitment practices are terrible

For some reason, my inbox and LinkedIn have blown up with messages from recruiters. In general, their attempts at getting my attention have been terrible, here is why:
  • You work for a recruiting company verses an actual company, staffing firms are a major turn off, if you are working for someone else, get an email address with that company. 
  • You have 500+ connections on LinkedIn. This basically says to me all you want is to extend your network and I don't want you bother my network the same way you are bothering me. I also see you've connected with someone else I know, I'll ask them how you've helped them, chances are, you haven't. 
  • You company website is terrible, like 1990's terrible. If you are so good at hiring, hire a web developer for your own firm to get your site up to date. 
  • Your connection emails are boring, where is the excitement and inspiration?
  • You are trying to hire me based on something I've already done. If I want the same job, I likely know people in my sector and will work for another opportunity through my own network of people I trust verses someone I've just met and is selling me so they can get the referral bonus. At least offer something new and exciting in the email, sell me. 
  • You are trying to hire me given a dollar amount, I can ask for this myself and I am not leaving or coming for money. 
  • You left the job details out of the initial note and made reference to the missing data in the communication. This shows you are not paying attention to detail and you've made me feel like I am one of 100 emails you've send today verses a great find. Google has solved the problem of reminding you to attach documents, remember to use it. 
  • You haven't referenced my goals in your communication to me, this matters to me. 
  • You're approaching hiring me as a staffing solution because I've been in consulting. I want to hear about exactly what I'd be working on. I've been down that path before. 
  • If I've actually responded to you and I don't get an email back, then that's a winning conversation. Again, you likely are trying to just get access to my network on LinkedIn and is why I replied without accepting to add you to my network. 
That's mostly it. If I've offended you as a recruiter, I am sorry, but you likely need to assess your practices at that point and think about why I haven't responded and try again.

See also:

Saturday, January 21, 2012

HTTP caching in Google App Engine (Python)

I wanted to add some HTTP caching in the browser on the Google App Engine, didn't see much for write ups, here is what I did

Static Content

Static content is straight forward, you can reference the following in the configuration documents: Static File Handlers. This will set the basic static content expiry, for example:
default_expiration: "1d"
This sets the default for all static content, and then per URL file handler:
- url: /static
  static_dir: static
  expiration: "1d"
This will define a per handler expiration. In my case, they are the same.

Response Caching

For any request to your application, you might want to cache that response in request handler implementation. To do so, you can add the response headers as follows:
self.response.headers["Expires"] = util.get_expiration_stamp(60)
self.response.headers["Content-Type"] = "application/json"
self.response.headers["Cache-Control: max-age"] = 60
self.response.headers["Cache-Control"] = "public"
self.response.out.write(template.render(_path, _template_values))
Note the expires implementation, this needs to be a valid date formatted string. The following is the implementation:
class GMT(datetime.tzinfo):
    def utcoffset(self, dt):
        return datetime.timedelta(hours=10) # + self.dst(dt)
    def tzname(self, dt):
        return "GMT"
    def dst(self, dt):
        return datetime.timedelta(0) 

class Util(object):
    def get_expiration_stamp(self,seconds):
        gmt = GMT() 
        delta = datetime.timedelta(seconds=seconds)
        expiration = self.get_current_time()
        expiration = expiration.replace(tzinfo=gmt) 
        expiration = expiration + delta
        EXPIRATION_MASK = "%a, %d %b %Y %H:%M:%S %Z"
        return expiration.strftime(EXPIRATION_MASK)
See Also:

Friday, January 20, 2012

gzip verses 7zip, 7zip wins

Just had to compress a large file again. I asked was gzipping better than 7zip? So I did both.
  • The base file directory took up 34.37 GB. 
  • I am running Mac OS X 10.6.8. 
  • I installed p7zip (brew install p7zip).
  • Two commands:
    • 7z a largefile.7z large_file_directory
    • tar czvf largfile.tar.gz large_file_directory
  • Resulting sizes:
    • 7zip = 22.43 GB
    • gzip = 25.07 GB
See Also: I'm so tired... of disks

Saturday, January 14, 2012

I'm so tired... of disks

I'm pretty sure when Lennon and McCartney wrote "I'm so tired" they were talking about disks, those things we store data on in computers. I agree with them, I am so tired of disks.

  • My first issue with them is I don't have disks that are larger than a terabyte. So a lot of my personal and work related archives are spread all over. I don't want to buy disks, that's what normal people do, I wait for second hand disks when people get ride of their computers and then make use of them. I have 3 personal USB drives, one machine with two drives in it with about 100GB each. Managing the files across each and rsyncing is getting too hard to remember what is where. 
  • My second issue is my work machine is around 300GB in size. For work, there are a lot of large files. Data feeds, databases, virtual machines, huge source code repositories, etc. I can't keep it all on one drive, so I have to use many external drives, usually around 500GB to move data on an off of. 
  • My third issue is dealing with disk inside of virtual machine. Not only am I limited on disk space on my local machine, on the virtual machine I need to manage disk space. I have to clean off data, resize partitions (which increases the image on the host machine). 
  • My fourth issue is waiting on file transfers. I don't even know what a USB transfer rate is, but it sucks when you are moving 70GB of data. Oh, and it's awesome transferring from USB drive to USB drive. I hate network transfers too, waiting to upload something to S3 or even via torrent is slow (unless there are a lot of people involved which isn't usually my case, this share feature is cool though). 
  • My fifth issue is compression computation time. It takes a long time to tar+gzip a 70GB file. Then the compressed file and the original file take up space. I am usually tar+gzipping to archive something large to roll back to. So I need to keep both for at least a little while. 

I know there are answers to all these problems, the problem is I am cheap and lazy. I don't want to pay for faster disks like SSD. I don't want a faster internet connection, remember, I am cheap. Hadoop has a distributed copy, that's sweet, but I don't have a distributed file system with my virtual machine image on it to distcp to another distributed file system (at least that is how I think it works).

My last big idea was to use the empty air space around us everywhere to store data. For example, you can store data in the space around you in a room. But, I was laughed out of the bar when I threw that out, and IBM is shrinking the bit size, so I can wait for that.

Sunday, January 8, 2012

Recently returned HP 2000-350US due to wireless

My dad bought two HP 2000-350US laptops for himself and my sister for christmas. Out of the box, the laptop wouldn't stay connected to his wireless at his house, so I told him to return them.

Before we did, I tried a wireless network signal extender because we though the issue was isolated to one area of the house, it wasn't, the laptops would lose connection when about 15 feet away from the router.

I also tried this homemade wireless signal extender, didn't help (but fun to make):

I updated the laptop wireless drives, no help. My sister sat on the phone with support, no help, they told her to reboot the router, please.

I have no idea what the root issue was, but I didn't care. There is no reason any device shouldn't "just work" out of the box when attaching to a router, it's 2012. When we returned the laptops, the looks I got from the salesman, the return guy and his manager were all the same, "what are you an idiot?". I wanted to punch everyone, but I didn't.

Regardless of my rant, I wanted to share the links and details in case anyone else was searching, I found a few threads online of people having similar issues with the same machine and wireless hardware.

Support threads:
Driver update:
In summary, nothing worked. My dad got two Acer to replace the HP and so far so good.

See also:

Tuesday, January 3, 2012

Tablet and wireless keyboard

I had the chance to use a tablet with a keyboard today. I found myself reaching for the mouse or touch pad, but instead i had to touch the screen to click or move the pointer. Not a bad experience but an experience at that. Ill also note this tablet + keyboard combo was on a samsung tablet not an ipad.

That said i wanted to try and blog from my ipad, so this post is sourced from that device. Its my first major typing attempt and honestly its not too hard to type fast on the on board keyboard.

Confession: I had to spell check this post on a normal computer because blogger didn't support the spellchecker on the ipad browser. The notes application on the ipad also didn't have a spellchecker. Maybe I disabled it, seemed odd.

Share on Twitter