<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://www.wajciak.net/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.wajciak.net/" rel="alternate" type="text/html" /><updated>2026-03-13T10:53:15+01:00</updated><id>https://www.wajciak.net/feed.xml</id><title type="html">wajciak.net</title><subtitle>Wajciak&apos;s useless little page.</subtitle><author><name>Wajciak</name><email>Wajciak at wajciak.net</email></author><entry><title type="html">Interviewing for Google SRE Team</title><link href="https://www.wajciak.net/2010/08/29/interviewing-for-google-sre-team/" rel="alternate" type="text/html" title="Interviewing for Google SRE Team" /><published>2010-08-29T12:06:09+02:00</published><updated>2010-08-29T12:06:09+02:00</updated><id>https://www.wajciak.net/2010/08/29/interviewing-for-google-sre-team</id><content type="html" xml:base="https://www.wajciak.net/2010/08/29/interviewing-for-google-sre-team/"><![CDATA[<p>A few months back, out of the blue, I was contacted by Google regarding job openings on <abbr>SRE</abbr> team. SRE stands for Site Reliability Engineering. This team is basically responsible for operation and scalability of Google services and apps. This sounded like a dream gig.</p>

<p>Long story short, I did not get the job, but it was a very cool experience. I am not going to get into too much detail about topics talked about as it would not be right on my part. I did not sign any NDA’s or anything, but still, you will find out details and questions when you actually interview with Google.</p>
<p style="text-align: center;"><img src="/assets/2010/08/29/Google-Dublin-1.jpg" alt="Google Dublin" style="float: left; margin-right: 1em;" /></p>
<p>It all started by getting a cold mail from a Google recruiter in California, asking me if I would be interested in job position on SRE Team. I thought, “why not”? I was gearing up to get a new job anyways; I agreed. So the recruiter calls, standard conversation about what I have done, what I want to do, etc. It all concluded with some technical questions. The questions were easy and anyone doing UNIX system administration should know the answers. It’s public knowledge that Google runs mostly Linux on frontend. Probably some custom version. Who knows… So, the questions were heavily biased towards Linux and not towards say, Solaris or some BSD UNIX. I was told by the recruiter that I got answers right and that the interview notes would go to the hiring committee, which would decide if and how to proceed further.</p>

<p>I was very pleased to find out a week later that they would like to schedule another phone interview, this time with an SRE engineer in Zurich. I was told this would be a heavily technical interview. So I did a little bit of preparation by searching the web and trying to find out what to expect. Needless to say, I did not find much of anything useful. A lot of webpages I came across mentioned questions such as “Why are man hole covers round?” There was none of those questions during any of the interviews. All interviews I had with Google were technical.</p>

<p>Another week later, the phone call from SRE engineer came. I was little anxious. The first thing the engineer said was that he was interested in how I think and encouraged me to think aloud. That was actually very cool. Being used to interviewers that asked canned questions and expect canned answers, this was definitely refreshing. We talked for about an hour. Questions ranged from system administration to how certain protocols worked, system libraries, networking, automation, the whole nine yards.</p>

<p>I asked him some questions. One of them was something along the lines “What should a good SRE be like” or something like that. I was told that hiring for SRE’s is very difficult, because most of the traits they look for in SRE’s are not taught in schools. Those traits come from experience, constant learning, simply busting ass in the IT field, so to speak.</p>

<p>The interview was a very pleasant experience and I had a very good feeling about it. Again, I was told by the engineer that interview notes would go to the hiring committee that would decide on what to do next. I was told that there would be either another phone interview, or I would be turned down.</p>
<p style="text-align: center;"><img src="/assets/2010/08/29/Google-Dublin-2.jpg" alt="Google Dublin" style="float: left; margin-right: 1em;" /></p>
<p>About a week later, I was contacted by the recruiter in California, informing me that they wanted me to come onsite. I was very surprised. I did feel confident about the interview with Zurich engineer, but I certainly did not anticipate to be invited onsite. Not so soon, anyways. From reading on the net, you pretty much get grilled mercilessly bunch of times over the phone before Google has you to come onsite.</p>

<p>So, off I went to Dublin. I was put in a pretty nice hotel, courtesy of Google. The next day I was to go through 5 interviews, each about an hour long. I was pretty anxious, as doing 5 interviews in a row is pretty nerve wrecking. Never mind this was at Google. I am not a Google fanboy, but it is well known, that Google hires only some of the best.
I was told to basically go through everything I learned, ever! Yeah, that’s pretty wide scope. So I went through algorithms, protocols, TCP/IP packet structures, OSI model, you name it. Just to be sure, to be sure.</p>

<p>The next day I got up, put on pair of nicer jeans, casual shoes and casual dress shirt. That was an advice from the recruiter. No dress pants or anything like that. The point was to fit in, I guess. I arrived at the Google offices, checked in at the reception. The building was nice, everything was casual, no ties to be seen - whew! There was a big projection screen, showing cool location on Google Earth. In the offices there were game consoles in the areas for relaxing, pool tables… Almost like what you see on <a href="http://www.youtube.com/results?search_query=Google+office+zurich">Youtube</a>.</p>

<p>I was taken to one of the meeting rooms, where different interviewers would take turns at wrecking my brain :-). I went through 3 interviews before lunch. Many, many things were covered and all interviews overlapped in things discussed. But if I was to sum them up: system administration, networking, troubleshooting. Again, I was asked to think aloud. The atmosphere was very relaxed.</p>

<p>Then I was taken for a lunch by one of the Google employees. This guy did not interview me. The whole point was to experience the culture of working at Google. I am not much of a food guy. I eat to stay alive. But damn, the food was good.</p>

<p>We chatted about different things. Mostly about Google, of course. This guy told me he went through over 10 phone interviews, before being invited onsite. Another thing I learned was that most of the tech guys used to be “the computer guy” in past jobs. The best. But at Google, they are all good and there is a lot of competition going on among people. On one hand, that’s good. I think it motivates geeks. On the other hand, I think it creates ego driven mistrust.</p>

<p>After lunch I headed for the final two interviews. Again they overlapped, but to sum them up: coding/scripting and “tell me more about yourself - technically”. Both of them went smooth. At the end I left Google offices feeling pretty hopeful about the whole day.</p>

<p>Week or so later, I got a call from the recruiter, telling me they would not be making an offer at that time. Fair enough. I did not feel disappointed. I was not dying to get the job but I was bumming a little bit. The thought of working at Google with very bright people… But on the other hand, I like to have some life. Having 5 minute or whatever response time when on call, can become old very quickly. I guess one can’t have it all.</p>

<p>I did not ask the recruiter why they were not making an offer. I do not know why. I thought about interviews. To be honest one of them was not completely stellar. It was with one of those people that will make you feel that they know more about something than you do. But hey, that’s how things are.</p>

<p>Overall it was very cool. I look at it as a little geek party. Except in the end you might get a job, or you might not. I found it to be a very good experience. I learned a thing or two. So I guess, thumbs up to Google for the interview experience and maybe in my next lifetime…. :-)</p>

<p>Whoa, as I finished typing this, email from Google came in to rate the interview process…</p>

<p>Interesting <a href="http://www.sage.org/lists/sage-members-archive/2005/msg02937.html">post</a> about SRE</p>

<p><a href="http://research.google.com/pubs/pub32583.html">Engineering reliability into websites</a></p>

<p><a href="http://www.youtube.com/watch?v=y31STIrwtlk">Working as an SRE</a></p>]]></content><author><name>Wajciak</name><email>Wajciak at wajciak.net</email></author><category term="rants" /><category term="it" /><category term="google" /><category term="sre" /><category term="jobhunting" /><summary type="html"><![CDATA[How Google SRE interview might look like]]></summary></entry><entry><title type="html">Backfire 10.03 on WHR-HP-G54DD</title><link href="https://www.wajciak.net/2010/06/03/backfire-10-03-on-whr-hp-g54dd/" rel="alternate" type="text/html" title="Backfire 10.03 on WHR-HP-G54DD" /><published>2010-06-03T09:54:25+02:00</published><updated>2010-06-03T09:54:25+02:00</updated><id>https://www.wajciak.net/2010/06/03/backfire-10-03-on-whr-hp-g54dd</id><content type="html" xml:base="https://www.wajciak.net/2010/06/03/backfire-10-03-on-whr-hp-g54dd/"><![CDATA[<p>A little while ago <a href="http://backfire.openwrt.org/10.03/">OpenWRT 10.03 Backfire</a> came out. I decided to take it for a spin. Until now I had been running OpenWRT 8.09. The other 8.09.X releases were to very stable for me. Backfire has been pretty stable so far on my <a href="http://www.buffalo-technology.com/products/wireless/wireless-g-mimo-performance/whr-hp-g54dd-wireless-g-mimo-performance-router-with-dd-wrt/">Buffalo WHR-HP-G54DD</a>.</p>

<p>The only hickup during upgrade was <em>opkg.conf</em> file. I could not install any additional software. I found <a href="https://dev.openwrt.org/ticket/7088">a bug report</a> that was fairly similar to what I was experiencing. So I ended up having to change some parts of my <em>opkg.conf</em> file:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="go">src/gz packages http://downloads.openwrt.org/backfire/10.03/brcm-2.4/packages
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
</span></code></pre></div></div>

<p>After that software install process worked just fine.</p>]]></content><author><name>Wajciak</name><email>Wajciak at wajciak.net</email></author><category term="buffalo" /><category term="openwrt" /><category term="wireless" /><summary type="html"><![CDATA[How to get OpenWRT onto Buffalo WHR-HP-G54DD]]></summary></entry><entry><title type="html">My wardriving rig</title><link href="https://www.wajciak.net/2009/10/20/my-wardriving-rig/" rel="alternate" type="text/html" title="My wardriving rig" /><published>2009-10-20T18:23:53+02:00</published><updated>2009-10-20T18:23:53+02:00</updated><id>https://www.wajciak.net/2009/10/20/my-wardriving-rig</id><content type="html" xml:base="https://www.wajciak.net/2009/10/20/my-wardriving-rig/"><![CDATA[<p>…consists of <a href="http://uk.asus.com/products.aspx?l1=24&amp;l2=164&amp;l3=0&amp;l4=0&amp;model=2283&amp;modelmenu=2">Asus EEE 901</a> and <a href="http://www.nokia.co.uk/find-products/all-phones/nokia-n810/specifications">Nokia N810</a>. Why do I bother? Because I can, I guess.</p>

<p>N810’s GPS capabilities kinda suck. It takes a quite a while to lock on the satellites. But other than that, it does the job. To make the whole setup happen I used: EEE 901 running <a href="http://www.ubuntu.com">Ubuntu</a>, N810, <a href="http://www.mysql.com">mySQL</a> server, <a href="http://www.kismetwireless.net">Kismet</a> and <a href="http://www.gpsdrive.de">GPSdrive</a>.</p>

<p>Here are the high level steps to take to get it all going:</p>

<ol>
  <li>Configure <em>usbnet</em> on the laptop</li>
  <li>Configure <em>usbnet</em> on N810 and test connectivity with the laptop</li>
  <li>Configure <em>gpsd</em> on N810</li>
  <li>Install and configure mySQL, Kismet and GPSdrive</li>
  <li>Enjoy&lt;</li>
</ol>

<p>To configure <em>usbnet</em> on the laptop edit <em>/etc/network/interfaces</em> and add following:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="go">mapping hotplug
script grep
map usb0
auto usb0
iface usb0 inet static
address 192.168.2.14
netmask 255.255.255.0
broadcast 192.168.2.255
</span></code></pre></div></div>

<p>Now onto configuring <em>usbnet</em> on N810. By default my N810 was not loading <em>usbnet</em> module on boot. <a href="/assets/2009/10/20/usbnet.txt">This</a> simple script addresses this issue. I found it somewhere on the Internet while researching all this. Simply put the script in <em>/etc/init.d</em> directory with proper ownership and permissions and create symlinks to it from <em>/etc/rc2.d</em> so it runs on boot automatically. For example:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">/ #</span><span class="w"> </span><span class="nb">chmod </span>755 /etc/init.d/usbnet
<span class="gp">/ #</span><span class="w"> </span><span class="nb">chown </span>root:root /etc/init.d/usbnet
<span class="gp">/ #</span><span class="w"> </span><span class="nb">ln</span> <span class="nt">-s</span> /etc/init.d/usbnet /etc/rc2.d/S99usbnet
</code></pre></div></div>

<p>One thing to note about the script is that it’s calling <em>insmod</em> twice to load <em>usbnet</em> driver. For whatever reason, it fails if it is called only once. At this point you should have connectivity between the laptop and N810. That can be tested using <em>ping</em> command.</p>

<p>I noticed that <em>gpsd</em> that came with <a href="http://www.maemo.org">Maemo</a> only listened for incoming connections on <em>127.0.0.1</em> which was no good. Why? Because GPSdrive running on EEE will be connecting to <em>gpsd</em> process running on N810 and listening on port <em>2947</em>. And so will Kismet. That all will happen over <em>usbnet</em> connection already set up.</p>

<p>So, I downloaded <em>gpsd_2.37-6_armel.deb</em> and <em>libgps17_2.37-6_armel.deb</em> packages for Debian and manually replaced the original files on N810. To extract the files from deb packages I used the following commands:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">ar vx &lt;deb_package&gt;</span><span class="w">
</span><span class="gp">tar zxvf &lt;file_extracted_by_previous_command&gt;</span><span class="w">
</span></code></pre></div></div>

<p>According to this <a href="http://andrew.daviel.org/N810-FAQ.html#gpsd">N810 faq</a> GPS chip is normally turned off to save power. So I normally start it up using this <a href="/assets/2009/10/20/warwalk.txt">warwalk</a> script. <em>Navicore-gpsd-helper</em> will then in turn take care of starting <em>gpsd</em>.</p>

<p>Finally, install mySQL, Kismet and GPSdrive. There is some configuration to be done to Kismet before it can be used. At minimum you will need to set the following settings in <em>/etc/kismet/kismet.conf</em>:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">suiduser=&lt;username&gt;</span><span class="w">
</span><span class="go">source=rt2500,ra0,RT2860STA
gps=true
gpsbox=192.168.2.15:2947
</span></code></pre></div></div>

<p><em>Source</em> is specific to your hardware. The above should work on EEE 901. Of course, substitute _<username>_ for your username. You will also need to set _gps=_ to _true_ and set the host running _gpsd_, which in this case is N810.</username></p>

<p>Test Kismet by firing it up. You will need to use sudo to run Kismet. I did not want to type my password every time I ran kismet to I SUID-ed kismet and kismet_server:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">wajciak@azrael:~$</span><span class="w"> </span><span class="nb">sudo chmod </span>4755 /usr/bin/kismet
<span class="gp">wajciak@azrael:~$</span><span class="w"> </span><span class="nb">sudo chmod </span>4755 /usr/bin/kismet_server
</code></pre></div></div>

<p>Once kismet is running it should start hopping channels and reporting found wireless networks.</p>

<p>We are almost there. Install mySQL and GPSdrive. GPSdrive will needed to use mySQL to store WLAN data. After installing GPSdrive you will need to create database to store GPS and Kismet data:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">wajciak@azrael:~$</span><span class="w"> </span>/usr/bin/geoinfo <span class="nt">-create-db</span> <span class="nt">-fill-defaults</span> <span class="nt">-db-user</span><span class="o">=</span>root db-password<span class="o">=</span>
</code></pre></div></div>

<p>The above will create <em>geoinfo</em> database used by <em>gpsdrive</em> and populate it with tables. You will also have to create mySQL user that GPSdrive will use to connect to the database. You will need to specify this user in <em>~/.gpsdrive/gpsdriverc</em> so GPSdrive can access_ geoinfo_ database.</p>

<p>This should pretty much do it. The setup operates as follows:</p>

<ol>
  <li>Connect N810 and laptop. This will automatically bring up USB networking</li>
  <li>Run <em>warwalk</em> script on N810 to turn on GPS chip and start <em>gpsd</em></li>
  <li>Start Kismet on the laptop</li>
  <li>Start GPSdrive. It will detect running Kismet and connect to mySQL database</li>
</ol>

<p>Normally I start GPSdrive using the following:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="go">gpsdrive --geometry 1025x550 -M pda -a -b zbox
</span></code></pre></div></div>

<p>Optionally if you have festival lite (<em>flite</em>) installed you can append -e to the above command and it GPSdrive will do some talking.</p>

<p>Also, if you do not like having stuff all over your filesystem, you can move <em>geoinfo</em> database directory to your home directory and make a symlink to it from <em>/var/lib/mysql</em>.</p>

<p>As far as maps are concerned, I found this <a href="http://gtm.tel.uva.es/ztep/maps/dmap.htm">very cool page</a> that will generate Google maps for you to use with GPSdrive.</p>]]></content><author><name>Wajciak</name><email>Wajciak at wajciak.net</email></author><category term="eee" /><category term="n810" /><category term="wardriving" /><summary type="html"><![CDATA[Wardriving rig with Asus EEE and Nokia N810]]></summary></entry><entry><title type="html">Dynamic DNS with joker.com and OpenWRT</title><link href="https://www.wajciak.net/2009/07/13/dynamic-dns-with-joker-com-and-openwrt/" rel="alternate" type="text/html" title="Dynamic DNS with joker.com and OpenWRT" /><published>2009-07-13T00:12:31+02:00</published><updated>2009-07-13T00:12:31+02:00</updated><id>https://www.wajciak.net/2009/07/13/dynamic-dns-with-joker-com-and-openwrt</id><content type="html" xml:base="https://www.wajciak.net/2009/07/13/dynamic-dns-with-joker-com-and-openwrt/"><![CDATA[<p>I recently switched some of my domains to <a href="http://www.joker.com">Joker.com</a>. One of the nice things Joker has is capability to dynamically update DNS records. I was going to use <a href="http://ez-ipupdate.com/">ez-ipupdate</a>, but my OpenWRT router did not have enough free memory to install the package.</p>

<p>It rummaging through FAQ on Joker website it turns out I can update entries using <em>wget</em> in a cron job as well. All it takes is to set up cron entry that looks something like this:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">0 * * * * wget "http://svc.joker.com/nic/update?username=BLAH&amp;amp;</span><span class="nv">password</span><span class="o">=</span>BLAH&amp;amp<span class="p">;</span><span class="nb">hostname</span><span class="o">=</span>myhost.example.com<span class="s2">" &gt; /dev/null 2&gt;&amp;1
</span></code></pre></div></div>

<p>Username and password are supplied by Joker when setting up DDNS.</p>]]></content><author><name>Wajciak</name><email>Wajciak at wajciak.net</email></author><category term="dns" /><category term="openwrt" /><summary type="html"><![CDATA[Dynamic DNS with Joker.com and OpenWRT]]></summary></entry><entry><title type="html">Flashing Buffalo WHR-HP-G54DD with OpenWRT</title><link href="https://www.wajciak.net/2009/04/01/flashing-buffalo-whr-hp-g54dd-with-openwrt/" rel="alternate" type="text/html" title="Flashing Buffalo WHR-HP-G54DD with OpenWRT" /><published>2009-04-01T15:55:43+02:00</published><updated>2009-04-01T15:55:43+02:00</updated><id>https://www.wajciak.net/2009/04/01/flashing-buffalo-whr-hp-g54dd-with-openwrt</id><content type="html" xml:base="https://www.wajciak.net/2009/04/01/flashing-buffalo-whr-hp-g54dd-with-openwrt/"><![CDATA[<p>While back I got me one of <a href="http://www.buffalotech.com/products/wireless/wireless-g-high-power/wireless-g-high-power-router-and-access-point-whr-hp-g54/">these</a> wireless routers from <a href="http://www.buffalotech.com">Buffalo</a>. It came pre-installed with dd-wrt. So I replaced it with most recent one from <a href="http://www.dd-wrt.com/">dd-wrt</a> website. I was not very happy with it, so I replaced it with <a href="http://www.openwrt.org">OpenWRT</a>.</p>

<p>OpenWRT 8.09RC1 worked reasonable well for me. Recently OpenWRT 8.09 final came out and after looking up reflashing instructions for 373rd time it was time to make my own quick note on it.</p>

<p>Here are the steps:</p>

<ol>
  <li>Configure wired interface on the laptop.</li>
  <li>Flash</li>
</ol>

<p>Configure the wired interface on laptop with <em>192.168.11.2/24</em> address. When the router boots, there is a small window during which it is configured with <em>192.168.11.1</em> address. During that window new firmware has to be uploaded.</p>

<p>So in the terminal window on the laptop, execute the following command:</p>

<div class="language-terminal highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="go">echo -e "binary\nrexmt 1\ntimeout 60\ntrace\nput openwrt-brcm-2.4-squashfs.trx\n" | tftp 192.168.11.1
</span></code></pre></div></div>

<p>and power-cycle the router. If the command times out, repeat the procedure. If the upload starts successfully, you will see the progress in the terminal window. Once the upload is complete, router will reboot itself and you can configure it by pointing the browser to <em>192.168.1.1</em>. Please note that this time it is <em>192.168.1.1</em>.</p>

<p>Relevant linkage:</p>

<p><a href="http://wiki.openwrt.org/OpenWrtDocs/Installing">http://wiki.openwrt.org/OpenWrtDocs/Installing</a></p>]]></content><author><name>Wajciak</name><email>Wajciak at wajciak.net</email></author><category term="buffalo" /><category term="openwrt" /><summary type="html"><![CDATA[Flashing Buffalo WHR-HP-G54DD with OpenWRT]]></summary></entry></feed>