Hotel

Oracle put me in a suite for tonight, before my interview with them tomorrow.
A goddamn suite.
It has two bedrooms with king sized beds. Each has its own TV and its own full bathroom. The beds have 4 huge fluffy pillows and a nice side pillow.
The suite has a huge living room area with nice couches and armchairs, a big-screen TV, and a DVD player.
The suite also has a full kitchen, complete with stove, microwave, fridge, toaster, and sink… and fully stocked with cookware and dishes.

Seriously, WTF.
This is either the most amazing thing ever, or the most wasteful thing ever. I mean, I’m going to be in the room for all of 9 hours before I leave for the interview tomorrow morning… but holy crap is it nice. I’m half tempted to switch bedrooms halfway through the night just because they’ll end up changing both sets of sheets anyway tomorrow after I check out… but meh.
Also, from the airport, there was this huge, awesome sedan car waiting for me to drive me here. So comfy.

On the plus side, this is a whole lot less stressful now that I have a job offer that I actually want and would be totally happy with. I no longer feel like the upcoming interview is do-or-die, so I suppose that’s a good thing.

I should sleep soon. Tomorrow is a full all-you-can-eat buffet breakfast. Oh how they spoil us candidates.

Recent life

Life has been odd lately.

Monday night was coding until 7 AM. Tuesday night was another all-nighter, coding until the checkpoint on Wednesday morning. Then was more coding until Wednesday night, when I tried to get a decent amount of sleep. Still, it wasn’t enough, since I had to get up for work at 7 and ended up leaving early because I was starting to have trouble reading lines of code like “x = 5;”

Also, in the past 2 days, I have received two job offers. One is with a company I really, really like (in California), and will likely take unless something better comes up, or unless I decide to remain in Pittsburgh. I dunno.

Wheee things have been so surreal lately… likely due to the recent lack of sleep.
Here’s looking forward to late November, when I can start getting back to a normal sleep schedule.




Edit: Continuing the trend of not getting enough sleep, it is now almost 2:30 AM and I’m coding. Wheee.

OS

Last night I was up coding until 7 AM. A lot of the time was spent fixing compiler errors, and then tracking down a bug caused by using the wrong variable in one place, causing page table entries to get overridden… causing problems later.

Today, it was my turn to have a huge bug in my code, and mine was a conceptual error (although, to be fair, it was one both of us missed).
We decided to start the first two tasks for the kernel by writing a kernelland fork function, which works much like the user version. The user version copies over all of memory except for kernel memory, creating a new kernel stack for the child and putting only the necessary stuff on there (IRET foo and registers).
I did the same thing for the kernel version, except I don’t copy any memory (since there is nothing in userspace yet). I create a new kstack and copy over only the necessary values… the return address (to return to the previous calling function) and registers.

See the problem yet?

Turns out I forgot to take into account that execution in kernelland uses the kstack… and so maybe continuing execution in kernelland (as we do by using the same return address) would need things on the stack. As a result, we kept getting the strangest errors where memory was being overridden in various ways (since the function we return to expects certain things at esp+16, and expects ebp+4 to have arguments and such). So yeah. That bug took a good 3 hours to track down. Oops.

I had a Google interview today. I feel like I did well at the data structures/coding portion, but I completely bombed the algorithms part. It seriously makes me wonder how I managed to get an A in algo class. Or maybe I’ve just forgotten everything since then. Meh.

Whee… now it’s time to debug userspace exec and fork. Fun fun fun?

Edit: 5:30 AM. Looks like it’s going to be another all-nighter. We really should start working more earlier in the week so we’re not stuck doing a bunch of stuff the night of the deadline.

Edit edit: 6 AM and fork works! Huzzah. Turns out the problem wasn’t at all in my code (which was surprisingly, given the complexity of the mapping of multiple physical pages into and out of a virtual address space, correct the first time) but rather with the TLB keeping around “stale” entries. Oops. Now let’s get exec working (and maybe bed after that).

Edit edit edit: 9 AM. Mission failed. We didn’t manage to get exec working (although it now does return to userland and run for a bit, albeit incorrectly, before being context-switched away and page faulting on its next run). Hopefully we’ll have it done today.