Recently in Tech Category

I have a lot of toys. So many toys, in fact, that I'm running out of places to keep them. I moved into a tiny 1 bedroom apartment that has very cheap rent a while ago simply because I thought that rent was a waste of money that I could be spending on things that blink. As a result, I have so many things that blink that I have to unplug some of them when I want to use my vacuum cleaner or my power goes out. Maybe it's time to to work on my money prioritization. That sounds like a downer, though, so in the meanwhile, here's a list of my favorite gadgets. These aren't so much computer related - I'm not even going to mention my Shuttle XPC (fully rigged out for gaming, crazy as that may sound), my Dell XPS (totally riced out. Seriously, backlit speakers that you can change the color to? That's freaking awesome in a completely horrible way), all my LCD's, or laptops, or whatever. Yes, all those things are awesome, but they aren't really worth blogging about. These things are.

  •  Drobo, by Data Robotics. These guys rock. I've got 2 Drobo's along with the DroboShare (the device that adds network connectivity), and I cannot rant enough about how impressed I am. I sent an email to Data Robotics shortly after I got my Drobo with a bunch of questions I had, and they responded by asking me to come to their office and meet with some of their engineers. They stayed pretty late after hours to answer my questions, and even gave me a $2000 Amazon Gift Certificate when I did a code bounty for porting Firefly iTunes server. Please note that they don't give money to everyone that ports code - this was specifically to kick off the Development and to encourage more people to port applications. Money aside, there is no NAS I would recommend over Drobo. I can SSH into it, therefore it is win.
  • Panasonic PT-AX200U. I bought this with the code bounty gift certificates from Data Robotics. As I mentioned earlier, I've got a tiny apartment, so I'm all about conserving space. Even in my miniscule living room, this projector manages to have a 100" throw on the opposite wall. The lens shift made positioning it a breeze. It's one of the best projectors in it's price range for gaming, although it's blacks could use some work. I haven't yet picked out a screen for it, but I've been told that some screens can help quite a bit.
  • Sony STRDG820. It was a complete bitch getting this thing set up, but I'm betting it was user error as I'd never set up a receiver before. This was also purchased with the code bounty gift certificates. Other than the initial setup, it's pretty cool. I like being able to reprogram the input names to obscene words. Yes, I am that childish. Never try to play my PS3.
  • Apple iPhone. Say what you will, it's still neat. I'm not an iTard, but show me something currently on the market that's better? I never talk on the phone, I just use it for SMS/GPS/whatever. Yes, I've seen Android. No, I don't plan on buying an Android phone anytime soon. I don't like being an early adopter. I've got a MobileMe account, and I had no complaints until today. I can't sync up my Contacts on any of my computers due to an "inconsistancy." Whatever.
  • Amazon Kindle. I didn't expect to like this as much as I do. I bought it simply because I wanted to hack it - it runs busybox linux on ARM, and I thought "gee, wouldn't it be neat if I could get a terminal running on it?" I was not expecting to fall in love. I'm thinking about donating a lot of the books and buying the ebook format for the Kindle just to free up space for more gadgets. Have you ever noticed the people bitching about the Kindle are the ones that don't own one? Once someone gets a chance to spend a few days with the Kindle, they will find themselves falling in love as well. If nothing else, you get a web browser that works over the Sprint network with no monthly fees. And the shiny! (If you don't know what I'm referencing, go find someone that has a Kindle and look at the scroll bar. Oooo. Shiny.)


Nnngh, tired. I spent last night porting the firefly itunes server (mt-daapd) over to the drobo. It was a bit harder than I expected, but then again, I didn't really expect it to work right, and it does. Most of the effort was just getting all the third party libs compiled/installed for linux-arm, but there were a few old calls made by mt-daapd that weren't portable, so I had to substitute newer functions and comment out part of the configure script. I've got it running on my Drobo at home, and it appears to be working without any problems at all. Yay! Data Robotics was also offering a bounty for getting this ported providing no functionality was lost, so I'm looking forward to talking to them about this. :)

Drobo!

| | Comments (8) | TrackBacks (0)

I received my 2 Drobo's + DroboShare in the mail on Friday, and I've been spending the weekend setting them up. So far, I am so in love. DroboApps sound pretty cool, and I'm about to start messing with them to see what I can do. Here's some randomness about the drobo.

% ssh root@drobo Warning: Permanently added 'drobo.local' (RSA) to the list of known hosts. root@drobo.local's password:


Welcome to Embedded Linux
_ _
| ||_|
| | _ ____ _ _ _ _
| || | _ \| | | |\ \/ /
| || | | | | |_| |/ \
|_||_|_| |_|\____|\_/\_/

A Data Robotics Product.

http://www.drobo.com/

BusyBox v1.1.2 (2007.06.18-15:03+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

~ $ help

Built-in commands:
-------------------
. : alias bg break cd chdir continue echo eval exec exit export
false fg getopts hash help jobs kill local pwd read readonly
return set shift times trap true type ulimit umask unalias unset
wait [ [[ addgroup adduser arping ash basename busybox cal cat
chgrp chmod chown chroot clear cmp comm cp crond crontab date
dd delgroup deluser df dmesg dos2unix du dumpleases e2fsck echo
egrep env expr false fdisk fgrep find free fsck fsck.ext2 fsck.ext3
ftpget ftpput fuser getopt grep gzip halt head hexdump hostname
httpd ifconfig inetd init insmod ip kill killall klogd last less
ln logger login logread losetup ls lsmod md5sum mdev mkdir mke2fs
mkfs.ext2 mkfs.ext3 mknod mkswap more mount mv netstat nice nohup
od passwd patch pidof ping poweroff ps pwd rdate readprofile
realpath reboot renice reset rm rmdir rmmod route seq sh sleep
sort stat strings stty su swapoff swapon switch_root sync sysctl
syslogd tail tar tee telnet telnetd test tftp time top touch
traceroute true udhcpc udhcpd umount uname uniq unix2dos unzip
uptime usleep vi watch watchdog wc wget which who xargs yes
~ $ cd /
/ $ uname -a
Linux Drobo 2.6.12.6-arm1 #1 Tue May 20 14:32:03 PDT 2008 armv5tejl unknown
/ $ ps w
PID Uid VmSize Stat Command
1 root 328 S init
2 root SWN [ksoftirqd/0]
3 root SW< [events/0]
4 root SW< [khelper]
5 root SW< [kthread]
11 root SW< [kblockd/0]
14 root SW [khubd]
49 root SW [pdflush]
50 root SW [pdflush]
52 root SW< [aio/0]
51 root SW [kswapd0]
165 root SW [scsi_eh_0]
166 root SW [scsi_eh_1]
172 root SW [mtdblockd]
189 root SW [scsi_eh_2]
190 root SW [usb-storage]
195 root SWN [jffs2_gcd_mtd1]
197 root 812 S /bin/sh
231 root 624 S dropbear
242 root 576 S < udevd --verbose
276 root 308 S udhcpc -b -i egiga0 -s /etc/udhcpc.sh
287 root 700 S /bin/ntpclient -l -h pool.ntp.org
288 root 308 S /bin/sh /usr/local/lock_rtc_to_wall_clock.sh
310 root 172 S sleep 3600
311 root 1964 S /usr/sbin/sledd
344 root 2060 S usr/sbin/smbd -s /etc/smb.conf
346 root 2064 S usr/sbin/smbd -s /etc/smb.conf
347 root 1548 S usr/sbin/nmbd -s /etc/smb.conf
382 root 2708 S < usr/sbin/smbd -s /etc/smb.conf
451 root 1216 S dropbear
452 root 844 S -sh
459 root 776 R ps w
/ $ df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/root 14336 8896 5440 62% /
/dev/shm 20480 0 20480 0% /dev/shm
/dev/sdb1 2147480808 70076 2147410732 0% /mnt/DroboShares/Drobo
/dev/sda1 2147480808 1909210880 238269928 89% /mnt/DroboShares/Drobo1
/ $ dmesg
ARM 2005q3-2)) #1 Tue May 20 14:32:03 PDT 2008
CPU: ARM926EJ-Sid(wb) [41069260] revision 0 (ARMv5TEJ)
CPU0: D VIVT write-back cache
CPU0: I cache: 32768 bytes, associativity 1, 32 byte lines, 1024 sets
CPU0: D cache: 32768 bytes, associativity 1, 32 byte lines, 1024 sets
Machine: MV-88fxx81
Using UBoot passing parameters structure
Sys Clk = 166666667, Tclk = 166666667
mvUbootVer: 0x10a080b
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 32768
DMA zone: 32768 pages, LIFO batch:15
Normal zone: 0 pages, LIFO batch:1
HighMem zone: 0 pages, LIFO batch:1
Built 1 zonelists
Kernel command line: console=ttyS0,115200 mtdparts=phys_mapped_flash:2m(kernel),14m@2m(root_fs) root=/dev/mtdblock1 rw ip=169.254.213.234:169.254.205.62:::DB88FXX81:egiga0:none
PID hash table entries: 1024 (order: 10, 16384 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 128MB 0MB 0MB 0MB = 128MB total
Memory: 126208KB available (2975K code, 495K data, 100K init)
Calibrating delay loop... 332.59 BogoMIPS (lpj=1662976)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
mv_init: New Board ID GPIO value: 0x400

CPU Interface
-------------
SDRAM_CS0 ....base 00000000, size 128MB
SDRAM_CS1 ....disable
SDRAM_CS2 ....disable
SDRAM_CS3 ....disable
PEX0_MEM ....base e0000000, size 128MB
PEX0_IO ....base f2000000, size 1MB
PCI0_MEM ....base e8000000, size 128MB
PCI0_IO ....base f2100000, size 1MB
INTER_REGS ....base f1000000, size 1MB
DEVICE_CS0 ....no such
DEVICE_CS1 ....base f4000000, size 16MB
DEVICE_CS2 ....no such
DEV_BOOCS ....base f8000000, size 8MB
CRYPTO ENG ....base f0000000, size 64KB

Marvell Development Board (LSP Version 1.10.3.patch5_DB_NAS)-- RD-88F5182-NAS-2 Soc: 88F5182 A2

Detected Tclk 166666667 and SysClk 166666667
Marvell USB EHCI Host controller #0: c04e3b00
Marvell USB EHCI Host controller #1: c04e3a40
pexBarOverlapDetect: winNum 2 overlap current 0
mvPexInit:Warning :Bar 2 size is illigal
it will be disabled
please check Pex and CPU windows configuration
PCI: bus0: Fast back to back transfers enabled
PCI: bus1: Fast back to back transfers enabled
SCSI subsystem initialized
usbcore: registered new driver usbfs
usbcore: registered new driver hub
Use the XOR engines (offloading) for enhancing the following functions:
o RAID 5 Xor calculation
o kernel memcpy
o kenrel memzero
o copy user to/from kernel buffers
Number of XOR engines to use: 1
cesadev_init(c000f668)
Fast Floating Point Emulator V0.9 (c) Peter Teichmann.
inotify device minor=63
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
JFFS2 version 2.2. (C) 2001-2003 Red Hat, Inc.
Initializing Cryptographic API
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
ttyS0 at MMIO 0x0 (irq = 3) is a 16550A
io scheduler noop registered
io scheduler deadline registered
Marvell Gigabit Ethernet Driver 'egiga':
o Ethernet descriptors in DRAM
o DRAM SW cache-coherency
o Checksum offload enabled
o Loading network interface 'egiga0'
STRIP: Version 1.3A-STUART.CHESHIRE (unlimited channels)
Intergrated Sata device found
scsi0 : Marvell SCSI to SATA adapter
scsi1 : Marvell SCSI to SATA adapter
physmap flash device: 1000000 at f4000000
phys_mapped_flash: Found 1 x16 devices at 0x0 in 8-bit bank
Intel/Sharp Extended Query Table at 0x0031
Using buffer write method
cfi_cmdset_0001: Erase suspend on write enabled
0: offset=0x0,size=0x20000,blocks=128
2 cmdlinepart partitions found on MTD device phys_mapped_flash
Creating 2 MTD partitions on "phys_mapped_flash":
0x00000000-0x00200000 : "kernel"
0x00200000-0x01000000 : "root_fs"
ehci_platform ehci_platform.4523: EHCI Host Controller
ehci_platform ehci_platform.4523: new USB bus registered, assigned bus number 1
ehci_platform ehci_platform.4523: irq 17, io mem 0x00000000
ehci_platform ehci_platform.4523: park 0
ehci_platform ehci_platform.4523: USB 0.0 initialized, EHCI 1.00, driver 10 Dec 2004
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ehci_platform ehci_platform.16781: EHCI Host Controller
ehci_platform ehci_platform.16781: new USB bus registered, assigned bus number 2
ehci_platform ehci_platform.16781: irq 12, io mem 0x00000000
ehci_platform ehci_platform.16781: park 0
ehci_platform ehci_platform.16781: USB 0.0 initialized, EHCI 1.00, driver 10 Dec 2004
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
ohci_hcd: 2004 Nov 08 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
USB Universal Host Controller Interface driver v2.2
usb 1-1: new high speed USB device using ehci_platform and address 2
usbcore: registered new driver usblp
drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver
Initializing USB Mass Storage driver...
scsi2 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
md: linear personality registered as nr 1
md: raid0 personality registered as nr 2
md: raid1 personality registered as nr 3
md: raid5 personality registered as nr 4
raid5: measuring checksumming speed
arm4regs : 378.000 MB/sec
8regs : 267.600 MB/sec
32regs : 310.400 MB/sec
raid5: using function: arm4regs (378.000 MB/sec)
md: md driver 0.90.1 MAX_MD_DEVS=256, MD_SB_DISKS=27
NET: Registered protocol family 2
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
NET: Registered protocol family 1
NET: Registered protocol family 17
egiga0: link down
IP-Config: Guessing netmask 255.255.0.0
IP-Config: Complete:
device=egiga0, addr=169.254.213.234, mask=255.255.0.0, gw=255.255.255.255,
host=DB88FXX81, domain=, nis-domain=(none),
bootserver=169.254.205.62, rootserver=169.254.205.62, rootpath=
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
UNMOUNT HFS+ : s_id = [mtdblock1]
VFS: Mounted root (jffs2 filesystem).
Freeing init memory: 100K
egiga0: link up<5>, full duplex<5>, speed 1 Gbps<5>
ufsd: module license 'Commertial product' taints kernel.
ufsd: driver loaded
UFSD version 6.03 (Nov 22 2007, 14:00:04)
NTFS read/write support included
$Id: ufsdvfs.c,v 1.125 2007/11/16 14:19:33 shura Exp $
ufsd: address 0xbf031918
Vendor: TRUSTED Model: USB Mass Storage Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 05
SCSI device sda: 4294967160 512-byte hdwr sectors (2199023 MB)
sda: assuming drive cache: write through
SCSI device sda: 4294967160 512-byte hdwr sectors (2199023 MB)
sda: assuming drive cache: write through
sda: sda1
Attached scsi disk sda at scsi2, channel 0, id 0, lun 0
Attached scsi generic sg0 at scsi2, channel 0, id 0, lun 0, type 0
Vendor: TRUSTED Model: USB Mass Storage Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 05
SCSI device sdb: 4294967160 512-byte hdwr sectors (2199023 MB)
sdb: assuming drive cache: write through
SCSI device sdb: 4294967160 512-byte hdwr sectors (2199023 MB)
sdb: assuming drive cache: write through
sdb: sdb1
Attached scsi disk sdb at scsi2, channel 0, id 0, lun 1
Attached scsi generic sg1 at scsi2, channel 0, id 0, lun 1, type 0
usb-storage: device scan complete
UNMOUNT HFS+ : s_id = [sdb1]
scsi: unknown opcode 0xea
UNMOUNT HFS+ : s_id = [sda1]
/ $ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:5000 *:* LISTEN
tcp 0 0 *:5001 *:* LISTEN
tcp 0 0 *:139 *:* LISTEN
tcp 0 0 *:22 *:* LISTEN
tcp 0 0 *:445 *:* LISTEN
tcp 0 0 drobo.local:445 trollop.local:62710 ESTABLISHED
tcp 0 0 drobo.local:22 succubus.local:56748 ESTABLISHED
tcp 0 0 drobo.local:5000 trollop.local:62704 ESTABLISHED
tcp 0 0 drobo.local:2227 trollop.local:56666 TIME_WAIT
tcp 0 0 drobo.local:2228 trollop.local:56666 TIME_WAIT
tcp 0 0 drobo.local:5001 trollop.local:62705 ESTABLISHED
tcp 0 0 drobo.local:5001 trollop.local:62706 ESTABLISHED
udp 0 0 drobo.local:1025 ibendit.com:123 ESTABLISHED
udp 0 0 localhost:1026 *:*
udp 0 0 drobo.local:137 *:*
udp 0 0 *:137 *:*
udp 0 0 drobo.local:138 *:*
udp 0 0 *:138 *:*
udp 0 0 *:5002 *:*


DNS for girls.

| | Comments (1) | TrackBacks (0)
Igor was having problems understanding what a root nameserver did, so I gave him this explanation. I am proud of this.

freebsdgirl: think of them like a directory service at the mall.
freebsdgirl: you want to know if sephora has chanel no 5 perfume, so you go to the mall, look at the directory service to find out where sephora is, and then you walk to sephora and ask them directly if they have chanel no 5.

I'm going to be moving the site over to a new server soon. Plans are being made for blog.freebsd.org, as well. More about that (and the company that's going to be hosting me and blog.freebsd.org) in a bit. It's pager week for me at IronPort, so I'm tired and busy.

The ipmitool that comes by default with OSX sucks. I needed to use ipmitool for work, and I couldn't find any OSX ipmitool packages anywhere, so I rolled my own. If anyone else is interested, I have a copy of it here. gunzip it, copy it to /usr/local/bin, and move your /usr/bin/ipmitool elsewhere as /usr/bin is before /usr/local/bin in $PATH by default. Enjoy.

I was trying to explain why people should twitter to a group of geeks that don't live here, and I came to a sickening conclusion. I am turning into one of the Silicon Valley Borg. In light of this realization, here is my guide to becoming one of us (or rather, warning signs depending on how you see it).

  1. Start reading Valleywag. It's a casual affair at first. You check it once every week or two. Maybe you only search for references to your employer. After a while, you add it to your RSS reader.
  2. You start recognizing names. Names of people that no one cares about unless they also live in the valley. You may not have had a clue who Robert Scoble or iJustine was before, but now you're following them on...
  3. Twitter. You can't adequately explain to anyone that doesn't use Twitter already why it's a good idea, but you can't help but create your own account. You start out only updating a few times from your web browser, but then you discover twhirl. Now you've got instant updates of Scoble, your friends, and...
  4. Gizmodo, where you're scouring anything related to cell phones so you can figure out what's going to set you aside from all of the local iPhone wielding weenies. The iPhone is so trendy, it's untrendy. After all, you're watching Gizmodo and Valleywag for rumors as to when the 3G iPhone is going to be released. 60 days is what they are saying now. You're going to laugh at all the people with their 2G iPhones. Clearly, you will be superior as 2G is not nearly enough G's. You need those G's to send... uh... lots of text messages to update your twitter status! That is, until you start feeling dissatisfied with Twitter. Tweeting just isn't enough for you, anymore, so you create an account on...
  5. Tumblr. You get confused about what you're supposed to be posting where, especially if you already have a blog entirely separate from all of this, so you try to post different content to each site until you run out of things to talk about entirely. In an attempt to drum up content that you think would be relevant to your valley peers, you sit on BART thinking about Mahalo (which, lets face it, no one really cares about), Yahoo!/Microsoft mergers, expensive escorts, and...
  6. Facebook. As soon as you get home from your job which is probably at Google, since they seem to employ a good portion of the tech force here (let's hope you're not at Yahoo!), you start browsing jobs at Facebook, because you know it's the next big thing. You don't know how they are making money, but most people said the same of Google, too. How many people are driving around in expensive cars here due to getting on on the GOOG stock early on? Sadly, Google stock is starting to tank, so it's time to drop it like it's hot.
  7. Update your twitter status, check to see if you have any new friends on Facebook, then go to Valleywag's happy hour. Pretend to recognize everyone there. Eventually, you will. That's when you should really start feeling scared. After enough time, you'll have forgotten that there is in fact a world outside of Silicon Valley. Don't feel bad - from what I remember, you won't be missing all that much.

SCO and pants.

| | Comments (0) | TrackBacks (0)

If you haven't heard the news yet, SCO got fucked. Heh. Point and laugh. I nearly fell over laughing when I read this:

According to Judge Kimball's ruling, Microsoft paid SCO approximately $16 million for license rights and Sun paid approximately $10 million. SCO neglected to turn over the licensing fees to Novell, which "gave SCO its first profitable year in history," Kimball notes.

Props to Kimball.

Today, I'm working on capacity planning. Capacity planning is by far one of my least favorite aspects of my jobs. It's an exercise in futility, in my opinion. It reminds me of shopping for pants. I find the perfect cute pair, and then I'm reminded of how much soda i drink, leading to the question "Will these pants fit me a year from now?" Capacity planning for large networks like I'm responsible for now is the exact same way. Will this number of servers still properly support my butt after so many late night coding sessions? Hmm.

My MacBook Pro desperately needs to get wiped. Unfortunately, the motorcycle accident did do some damage, as I can't get the DVD drive to work. I could just hook up an external USB CDROM drive that I've got, but I've had limited success with it when installing FreeBSD on a desktop. I don't really want it to crap out halfway through the installation and leave me without a working laptop.

Do any of y'all (y'all referring to local bay area friends, of course) run OSX Server? I could install over the network if I had access to a computer running OSX Server. That would be fantastic.

You know how to find me.

This is highly unlike anything I usually write, and it's going to sound preachy, even cheesy, but bear with me.

Today, I was talking to a few friends in a NetBSD chat forum. A few of the guys were discussing their respective careers, until I became a bit indignant when one wrote "I've learned that using my voice is the path to destruction... being a yes-man is the way to go."

This is not what IT is all about. You may think I'm wrong; maybe I'm just an idealist. I still think that IT is about breaking all the rules. If you're just another yes-man, you'll never do anything innovative. You'll never get your own Wikipedia entry. I wonder if you'll ever even really be satisfied with your own life.

There's a fair number of people in IT that did what they were told all of their lives. They got straight A's in high school, went to Ivy league colleges, got their CS degrees, and continued on to get good, well-paying jobs in corporate America. A lot of these are yes-men. However, when it comes to innovation, these people fall into the minority.

So many of us have never fit into that mold. When we were younger, we didn't play sports. We didn't have many friends. We were told that we had to get good grades in school so we could go on to a good college and get a good career. All hail, society. We ignored this. We spent most of our time on our computers. Our parents didn't understand what we were working towards. We probably didn't really have much a plan either, but we were driven to do more - to learn more than we felt our schools could teach us. We were truly a unique generation. We broke the mold and still succeeded. You could get the good job, have a career more lucrative than anyone ever could have dreamed for you, but break all the rules doing it.

Maybe you got kicked out of high school, or perhaps you just got bored and dropped out. You were probably in Honors/AP classes, but you were flunking out of all of them because you spent all of your time programming or messing around on your computer instead of doing your homework. College? Doubtful. Maybe you got your GED. Maybe you even tried a community college for a while, but our generation was lucky enough to be able to hop onto the dot com bubble before it burst. You didn't need formal education to get a job, you just needed the knowledge to do the job. High school didn't prepare you for this, but all those hours you spent late at night in the dark on your computer certainly did. You probably made more at your first job than your parents currently do combined. You won.

So what's up with this "yes-man" ideal? What happened to breaking the rules? Let's face it: providing that you have the skill, they need you more than you need them. Why become a yes-man when you became what you are now by telling so many people no when you were younger? Why are you so scared?

I mean, look at corporate dress code. The majority of us go to work in t-shirts and jeans. There's a few companies that require business casual in their IT department, but these are the exception to the rule. Think about your parents and how their work environment was when you were growing up. People working skilled jobs such as these had to wear collared shirts, sometimes even suits. You could not get paid as much as we do without making a concession when it came to your wardrobe. We changed this. Our generation changed so many expectations when it came to the work environment, this being one of the most minor examples. It's rare to find an IT company that doesn't have a game room, or at least a foosball table. Do you think people really had that kind of luxury 20 years ago? 15 years ago? Do you think if we had just rolled over and said yes that we would have these luxuries?

We have more responsibilities now than we did when we were younger. We have so much more to lose. We have families. We have a 401(k). Don't lose yourself, though. Remember how you got to where you are. Be proud of breaking the rules. Becoming a yes-man isn't about growing up. It's about giving up.